ਬਹੁ-ਕਿਰਾਏਦਾਰ SaaS ਪੈਟਰਨ, ਟੇਨੈਂਟ ਅਲੱਗਤਾ ਲਈ ਟਰੇਡ-ਆਫਜ਼ ਅਤੇ ਸਕੇਲਿੰਗ ਰਣਨੀਤੀਆਂ ਬਾਰੇ ਜਾਣੋ। ਵੇਖੋ ਕਿ AI-ਉਤਪੰਨ ਆਰਕੀਟੈਕਚਰ ਕਿਸ ਤਰ੍ਹਾਂ ਡਿਜ਼ਾਈਨ ਅਤੇ ਸਮੀਖਿਆ ਨੂੰ ਤੇਜ਼ ਕਰਦੇ ਹਨ।

ਬਹੁ-ਕਿਰਾਏਦਾਰੀ ਦਾ ਮਤਲਬ ਹੈ ਇਕ ਹੀ ਚੱਲ ਰਹੇ ਸਿਸਟਮ ਤੋਂ ਇੱਕ ਸੌਫਟਵੇਅਰ ਉਤਪਾਦ ਕਈ ਗਾਹਕਾਂ (ਟੇਨੈਂਟਾਂ) ਨੂੰ ਸਰਵਿਸ ਕਰਦਾ ਹੈ। ਹਰ ਟੇਨੈਂਟ ਨੂੰ ਐਸਾ ਲੱਗਦਾ ਹੈ ਕਿ ਉਨ੍ਹਾਂ ਦੀ "ਆਪਣੀ ਐਪ" ਹੈ, ਪਰ ਪਿੱਛੇ ਦਾ ਢਾਂਚਾ—ਜਿਵੇਂ ਵੈੱਬ ਸਰਵਰ, ਕੋਡਬੇਸ ਅਤੇ ਅਕਸਰ ਡੇਟਾਬੇਸ—ਸ਼ੇਅਰ ਹੁੰਦੇ ਹਨ।
ਇੱਕ ਸਹਾਇਕ ਦਿਮਾਗੀ ਮਾਡਲ ਇੱਕ ਅਪਾਰਟਮੈਂਟ ਬਿਲਡਿੰਗ ਹੈ। ਹਰ ਕਿਸੇ ਕੋਲ ਆਪਣਾ ਬੰਦ ਯੂਨਿਟ ਹੁੰਦਾ ਹੈ (ਉਨ੍ਹਾਂ ਦਾ ਡੇਟਾ ਅਤੇ ਸੈਟਿੰਗਸ), ਪਰ ਤੁਸੀਂ ਬਿਲਡਿੰਗ ਦੀ ਲਿਫਟ, ਪਲੰਬਿੰਗ ਅਤੇ ਮੇਂਟਨੈਂਸ ਟੀਮ ਸਾਂਝੀ ਕਰਦੇ ਹੋ (ਐਪ ਦੀ ਕਮਪਿਊਟ, ਸਟੋਰੇਜ ਅਤੇ ਓਪਰੇਸ਼ਨ)।
ਜ਼ਿਆਦਾਤਰ ਟੀਮਾਂ ਬਹੁ-ਕਿਰਾਏਦਾਰ SaaS ਇਸ ਲਈ ਨਹੀਂ ਚੁਣਦੀਆਂ ਕਿ ਇਹ ਫੈਸ਼ਨ ਹੈ—ਉਹ ਇਸ ਲਈ ਚੁਣਦੀਆਂ ਹਨ ਕਿ ਇਹ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਹੈ:
ਦੋ ਪ੍ਰਮੁੱਖ ਫੇਲਿਅਰ ਮੋਡ ਹਨ ਸੁਰੱਖਿਆ ਅਤੇ ਪਦਰਥਸ਼ੀਲਤਾ।
ਸੁਰੱਖਿਆ 'ਤੇ: ਜੇ ਟੇਨੈਂਟ ਬਾਉਂਡਰੀਆਂ ਹਰ ਥਾਂ ਪ੍ਰ-Enforce ਨਹੀਂ ਹੁੰਦੀਆਂ, ਤਾਂ ਇੱਕ ਬੱਗ ਡੇਟਾ ਲੀਕ ਕਰ ਸਕਦੀ ਹੈ। ਇਹ ਲੀਕ ਆਮ ਤੌਰ 'ਤੇ ਡਰਾਉਣ ਵਾਲੀ ਹੈਕਿੰਗ ਨਹੀਂ ਹੁੰਦੀਆਂ—ਜ਼ਿਆਦਾਤਰ ਆਮ ਗਲਤੀਆਂ ਹੁੰਦੀਆਂ ਹਨ ਜਿਵੇਂ ਗੁਮ ਹੋਇਆ ਫਿਲਟਰ, ਗਲਤ-ਕਨਫ਼ਿਗਰ ਕੀਤਾ ਪਰਮਿਸ਼ਨ ਚੈਕ, ਜਾਂ ਬੈਕਗ੍ਰਾਊਂਡ ਜੌਬ ਜੋ ਟੇਨੈਂਟ ਸੰਦਰਭ ਬਿਨਾਂ ਚਲਦਾ ਹੈ।
ਪਦਰਥਸ਼ੀਲਤਾ 'ਤੇ: ਸਾਂਝੇ ਸਰੋਤਾਂ ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਇੱਕ ਵਿਆਸਤ ਟੇਨੈਂਟ ਹੋਰਾਂ ਨੂੰ ਸਲੋ ਕਰ ਸਕਦਾ ਹੈ। ਉਹ "ਨੋਇਜ਼ੀ ਨੇਬਰ" ਪ੍ਰਭਾਵ ਧੀਮੀ ਕ્વੈਰੀਜ਼, ਬਰਸਟ ਵਰਕਲੋਡ ਜਾਂ ਇੱਕ ਗਾਹਕ ਦੁਆਰਾ ਅਣੁਪਾਤੀ API ਖਪਤ ਵੱਗੇ ਦਿਖ ਸਕਦਾ ਹੈ।
ਇਹ ਲੇਖ ਉਹ ਬੁਨਿਆਦੀ ਇਲਾਕੇ ਵੇਖਦਾ ਹੈ ਜੋ ਟੀਮਾਂ ਉਪਯੋਗ ਕਰਦੀਆਂ ਹਨ ਤਾਂ ਕਿ ਉਹਨਾਂ ਜੋਖਮਾਂ ਨੂੰ ਪ੍ਰਬੰਧਿਤ ਕੀਤਾ ਜਾ ਸਕੇ: ਡੇਟਾ ਅਲੱਗਤਾ (ਡੇਟਾਬੇਸ, ਸਕੀਮਾ, ਜਾਂ ਪਿੰਗਤੀਆਂ), ਟੇਨੈਂਟ-ਅਗਾਹ ਪਹਿਚਾਨ ਅਤੇ ਪਰਮਿਸ਼ਨ, ਨੋਇਜ਼ੀ-ਨੇਬਰ ਨਿਯੰਤਰਣ, ਅਤੇ ਸਕੇਲਿੰਗ ਅਤੇ ਬਦਲਾਵ ਪ੍ਰਬੰਧਨ ਲਈ ਓਪਰੇਸ਼ਨਲ ਪੈਟਰਨ।
ਬਹੁ-ਕਿਰਾਏਦਾਰੀ ਇਕ ਸੋਚ ਹੈ ਕਿ ਤੁਸੀਂ ਕਿਸ ਸਪੀਕਟਰਮ 'ਤੇ ਬੈਠਦੇ ਹੋ: ਟੇਨੈਂਟਾਂ ਵਿਚਕਾਰ ਕਿੰਨਾ ਸਾਂਝਾ ਕਰਦੇ ਹੋ ਬਨਾਮ ਹਰ ਟੇਨੈਂਟ ਲਈ ਕਿੰਨਾ ਨਿਰਧਾਰਤ ਕਰਦੇ ਹੋ। ਹਰੇਕ ਆਰਕੀਟੈਕਚਰ ਪੈਟਰਨ ਹੇਠਾਂ ਇੱਕ ਇਸ ਲਾਈਨ ਦਾ ਵੱਖਰਾ ਨੁਕਤਾ ਹੈ।
ਇੱਕ ਪਾਸੇ, ਟੇਨੈਂਟ ਲਗਭਗ ਸਭ ਕੁਝ ਸਾਂਝਾ ਕਰਦੇ ਹਨ: ਇੱਕੋ ਹੀ ਐਪ ਇਨਸਟੈਂਸ, ਇੱਕੋ ਹੀ ਡੇਟਾਬੇਸ, ਇੱਕੋ ਹੀ ਕਿਊ, ਇੱਕੋ ਹੀ ਕੈਸ਼—ਟੇਨੈਂਟ ID ਅਤੇ ਐਕਸੈਸ ਨਿਯਮਾਂ ਨਾਲ ਲਾਜ਼ਮੀ ਤੌਰ 'ਤੇ ਵੱਖਰੇ। ਇਹ ਆਮ ਤੌਰ 'ਤੇ ਸਭ ਤੋਂ ਸਸਤਾ ਅਤੇ ਚਲਾਉਣ ਵਿੱਚ ਆਸਾਨ ਹੁੰਦਾ ਹੈ ਕਿਉਂਕਿ ਤੁਸੀਂ ਕੈਪੈਸਿਟੀ ਪੂਲ ਕਰਦੇ ਹੋ।
ਦੂਜੇ ਪਾਸੇ, ਟੇਨੈਂਟਾਂ ਨੂੰ ਆਪਣਾ "ਟੁਕੜਾ" ਮਿਲਦਾ ਹੈ: ਵੱਖਰੇ ਡੇਟਾਬੇਸ, ਵੱਖਰੇ ਕਮਪਿਊਟ, ਕਈ ਵਾਰੀ ਵੱਖਰੀਆਂ ਡਿਪਲੋਇਮੈਂਟਾਂ। ਇਹ ਸੁਰੱਖਿਆ ਅਤੇ ਨਿਯੰਤਰਣ ਵਧਾਉਂਦਾ ਹੈ, ਪਰ ਓਪਰੇਸ਼ਨਲ ਓਵਰਹੈੱਡ ਅਤੇ ਲਾਗਤ ਵਧਾਉਂਦਾ ਹੈ।
ਅਲੱਗਤਾ ਘਟਾਉਂਦੀ ਹੈ ਕਿ ਇੱਕ ਟੇਨੈਂਟ ਹੋਰ ਦਾ ਡੇਟਾ ਐਕਸੈਸ ਕਰ ਸਕੇ, ਉਹਨਾਂ ਦੀ ਪ੍ਰਦਰਸ਼ਨ ਬਜਟ ਖਾ ਸਕੇ, ਜਾਂ ਅਸਧਾਰਣ ਵਰਤੋਂ ਦੇ ਪੈਟਰਨਾਂ ਨਾਲ ਪ੍ਰਭਾਵਿਤ ਹੋ ਸਕੇ। ਇਹ ਕੁਝ ਆਡਿਟ ਅਤੇ ਕੰਪਲਾਇੰਸ ਲੋੜਾਂ ਨੂੰ ਪੂਰਾ ਕਰਨਾ ਵੀ ਆਸਾਨ ਬਣਾਉਂਦਾ ਹੈ।
ਪ੍ਰਭਾਵਸ਼ੀਲਤਾ ਉਸ ਵੇਲੇ ਵਧਦੀ ਹੈ ਜਦੋਂ ਤੁਸੀਂ ਖਾਲੀ ਸਮਰੱਥਾ ਨੂੰ ਕਈ ਟੇਨੈਂਟਾਂ 'ਤੇ ਵੰਡ ਦਿੰਦੇ ਹੋ। ਸਾਂਝਾ ਢਾਂਚਾ ਤੁਹਾਨੂੰ ਘੱਟ ਸਰਵਰ ਚਲਾਉਣ, ਸਧਾਰਨ ਡਿਪਲੋਇਮੈਂਟ ਪਾਈਪਲਾਈਨ ਰੱਖਣ ਅਤੇ ਕੁੱਲ ਮਾਂਗ ਦੇ ਆਧਾਰ 'ਤੇ ਸਕੇਲ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।
ਤੁਹਾਡਾ "ਸਹੀ" ਸਥਾਨ ਫ਼ਿਲਾਸਫੀਕਲ ਨਹੀਂ—ਇਹ ਸੀਮਾਵਾਂ ਨਾਲ ਚਲਾਇਆ ਜਾਂਦਾ ਹੈ:
ਦੋ ਸਵਾਲ ਪੁੱਛੋ:
ਜੇ ਇੱਕ ਟੇਨੈਂਟ ਗਲਤ ਵਰਤਦਾ ਹੈ ਜਾਂ ਸੰਕਟ ਵਿੱਚ ਆ ਜਾਂਦਾ ਹੈ ਤਾਂ ਉਸ ਦਾ ਬਲਾਸਟ ਰੇਡੀਅਸ ਕੀ ਹੈ?
ਉਸ ਬਲਾਸਟ ਰੇਡੀਅਸ ਨੂੰ ਘਟਾਉਣ ਦੀ ਕਾਰੋਬਾਰੀ ਲਾਗਤ ਕੀ ਹੈ?
ਜੇ ਬਲਾਸਟ ਰੇਡੀਅਸ ਬਹੁਤ ਛੋਟਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਤਾਂ ਵੱਧ ਨਿਰਧਾਰਤ ਕੰਪੋਨੈਂਟ ਚੁਣੋ। ਜੇ ਲਾਗਤ ਅਤੇ ਗਤੀ ਜ਼ਿਆਦਾ ਮਹੱਤਵਪੂਰਨ ਹਨ ਤਾਂ ਵੱਧ ਸਾਂਝਾ ਰੱਖੋ—ਅਤੇ ਸਾਂਝੇ ਹੋਣ ਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਣ ਲਈ ਮਜ਼ਬੂਤ ਐਕਸੈਸ ਕੰਟਰੋਲ, ਰੇਟ ਲਿਮਿਟ ਅਤੇ ਪ੍ਰਤੀ-ਟੇਨੈਂਟ ਮਾਨੀਟਰਿੰਗ ਵਿੱਚ ਨਿਵੇਸ਼ ਕਰੋ।
ਬਹੁ-ਕਿਰਾਏਦਾਰੀ ਇਕ ਹੀ ਆਰਕੀਟੈਕਚਰ ਨਹੀਂ—ਇਹ ਉਨ੍ਹਾਂ ਤਰੀਕਿਆਂ ਦਾ ਇੱਕ ਸੈੱਟ ਹੈ ਜਿਨ੍ਹਾਂ ਨਾਲ ਗਾਹਕਾਂ ਵਿਚਕਾਰ ਢਾਂਚਾ ਸਾਂਝਾ (ਜਾਂ ਨਾ) ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਸਭ ਤੋਂ ਵਧੀਆ ਮਾਡਲ ਇਹ ਨਿਰਭਰ ਕਰਦਾ ਹੈ ਕਿ ਤੁਹਾਨੂੰ ਕਿੰਨੀ ਅਲੱਗਤਾ ਦੀ ਲੋੜ ਹੈ, ਤੁਸੀਂ ਕਿੰਨੇ ਟੇਨੈਂਟ(expect) ਕਰਦੇ ਹੋ, ਅਤੇ ਤੁਹਾਡੀ ਟੀਮ ਕਿੰਨਾ ਓਪਰੇਸ਼ਨਲ ਓਵਰਹੈੱਡ ਸਹਿ ਸਕਦੀ ਹੈ।
ਹਰ ਗਾਹਕ ਨੂੰ ਆਪਣਾ ਐਪ ਸਟੈਕ ਮਿਲਦਾ ਹੈ (ਜਾਂ ਘੱਟੋ-ਘੱਟ ਆਪਣਾ ਅਲੱਗ ਰਨਟਾਈਮ ਅਤੇ ਡੇਟਾਬੇਸ)। ਇਹ ਸੁਰੱਖਿਆ ਅਤੇ ਪਦਰਸ਼ਨ ਲਈ ਸਭ ਤੋਂ ਆਸਾਨ ਹੈ, ਪਰ ਆਮ ਤੌਰ 'ਤੇ ਹਰ ਟੇਨੈਂਟ ਲਈ ਸਭ ਤੋਂ ਮਹਿੰਗਾ ਅਤੇ ਤੁਹਾਡੇ ਓਪਰੇਸ਼ਨਾਂ ਨੂੰ ਸਕੇਲ ਕਰਨ ਵਿੱਚ ਮੰਝਿਲੀ ਕਰ ਸਕਦਾ ਹੈ।
ਸਾਰੇ ਟੇਨੈਂਟ ਇੱਕੋ ਹੀ ਐਪ ਅਤੇ ਡੇਟਾਬੇਸ 'ਤੇ ਚੱਲਦੇ ਹਨ। ਲਾਗਤ ਆਮ ਤੌਰ 'ਤੇ ਸਭ ਤੋਂ ਘੱਟ ਹੁੰਦੀ ਹੈ ਪਰ ਤੁਹਾਨੂੰ ਹਰ ਥਾਂ ਟੇਨੈਂਟ ਸੰਦਰਭ ਲਈ ਬਹੁਤ ਧਿਆਨ ਰੱਖਣਾ ਪੈਂਦਾ ਹੈ (ਕਵੇਰੀਆਂ, ਕੈਸ਼ਿੰਗ, ਬੈਕਗ੍ਰਾਊਂਡ ਜੌਬ, ਐਨਾਲਿਟਿਕਸ ਐਕਸਪੋਰਟ)। ਇੱਕ ਗਲਤ ਫਿਲਟਰ ਸਾਰੀ ਟੇਨੈਂਟ ਟੋਪਲਾਈਨ ਲਈ ਡੇਟਾ ਲੀਕ ਬਣ ਸਕਦਾ ਹੈ।
ਐਪ ਸਾਂਝੀ ਹੈ, ਪਰ ਹਰ ਟੇਨੈਂਟ ਦਾ ਆਪਣਾ ਡੇਟਾਬੇਸ (ਜਾਂ ਡੇਟਾਬੇਸ ਇੰਸਟੈਂਸ) ਹੁੰਦਾ ਹੈ। ਇਹ ਇਨਸਿਡੈਂਟਾਂ ਲਈ ਬਲਾਸਟ-ਰੇਡੀਅਸ ਕੰਟਰੋਲ ਵਧਾਉਂਦਾ ਹੈ, ਟੇਨੈਂਟ-ਸਤਰੀ ਬੈਕਅੱਪ/ਰੀਸਟੋਰ ਨੂੰ ਆਸਾਨ ਬਣਾਂਦਾ ਹੈ, ਅਤੇ ਕੰਪਲਾਇੰਸ ਵਿਚਾਰਾਂ ਨੂੰ ਸਧਾਰਨ ਕਰ ਸਕਦਾ ਹੈ। ਵਪਾਰਕ-ਥ੍ਰੇਡ ਇਹ ਹੈ ਕਿ ਵੱਧ ਡੇਟਾਬੇਸ ਪ੍ਰੋਵਿਜ਼ਨ, ਮਾਨੀਟਰ, ਮਾਈਗਰੇਟ ਅਤੇ ਸੁਰੱਖਿਅਤ ਕਰਨੇ ਪੈਂਦੇ ਹਨ।
ਕਈ SaaS ਉਤਪਾਦ ਮਿਲੇ-ਜੁਲੇ ਅਪ੍ਰੋਚ ਵਰਤਦੇ ਹਨ: ਜ਼ਿਆਦਾਤਰ ਗਾਹਕ ਸਾਂਝੇ ਢਾਂਚੇ 'ਤੇ ਰਹਿੰਦੇ ਹਨ, ਜਦਕਿ ਵੱਡੇ ਜਾਂ ਨਿਯੰਤਰਤ ਟੇਨੈਂਟਾਂ ਨੂੰ ਨਿਰਧਾਰਤ ਡੇਟਾਬੇਸ ਜਾਂ ਨਿਰਧਾਰਤ ਕਮਪਿਊਟ ਮਿਲਦਾ ਹੈ। ਹਾਈਬ੍ਰਿਡ ਅਕਸਰ ਵਰਤੋਂਯੋਗ ਅੰਤ-ਸਟੇਟ ਹੁੰਦਾ ਹੈ, ਪਰ ਇਸ ਲਈ ਸਪੱਸ਼ਟ ਨਿਯਮ ਲੋੜਦੇ ਹਨ: ਕੌਣ ਯੋਗ ਹੈ, ਕੀ ਲਾਗਤ ਹੈ, ਅਤੇ ਅਪਗ੍ਰੇਡ ਕਿਵੇਂ ਰੋਲ ਆਊਟ ਹੋਣਗੇ।
ਜੇ ਤੁਸੀਂ ਹਰ ਪੈਟਰਨ ਦੇ ਅੰਦਰ ਅਲੱਗਤਾ ਤਕਨੀਕਾਂ ਦੀ ਗਹਿਰਾਈ ਚਾਹੁੰਦੇ ਹੋ ਤਾਂ ਹੋਰ ਲੇਖ ਵੇਖੋ।
ਡੇਟਾ ਅਲੱਗਤਾ ਇੱਕ ਸਧਾਰਨ ਸਵਾਲ ਦਾ ਉਤਰ ਹੈ: "ਕੀ ਇੱਕ ਗਾਹਕ ਕਿਸੇ ਹੋਰ ਦਾ ਡੇਟਾ ਕਦੇ ਦੇਖ ਸਕਦਾ ਹੈ ਜਾਂ ਪ੍ਰਭਾਵਿਤ ਕਰ ਸਕਦਾ ਹੈ?" ਤਿੰਨ ਆਮ ਪੈਟਰਨ ਹਨ, ਹਰ ਇੱਕ ਵੱਖਰੇ ਸੁਰੱਖਿਆ ਅਤੇ ਓਪਰੇਸ਼ਨਲ ਨਤੀਜੇ ਦਿੰਦਾ ਹੈ।
tenant_id)ਸਾਰੇ ਟੇਨੈਂਟ ਇੱਕੋ ਹੀ ਟੇਬਲਾਂ ਸਾਂਝੀਆਂ ਕਰਦੇ ਹਨ, ਅਤੇ ਹਰ ਰੋ ਵਿੱਚ tenant_id ਕਾਲਮ ਹੋਂਦਾ ਹੈ। ਇਹ ਛੋਟੇ ਤੋਂ ਮੱਧਮ ਟੇਨੈਂਟਾਂ ਲਈ ਸਭ ਤੋਂ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਮਾਡਲ ਹੈ ਕਿਉਂਕਿ ਇਹ ਇੰਫਰਾਸਟਰੱਕਚਰ ਘਟਾਉਂਦਾ ਹੈ ਅਤੇ ਰਿਪੋਰਟਿੰਗ ਅਤੇ ਐਨਾਲਿਟਿਕਸ ਨੂੰ ਸਧਾਰਨ ਰੱਖਦਾ ਹੈ।
ਜੋਖਮ ਵੀ ਸਿੱਧਾ ਹੈ: ਜੇ ਕਿਸੇ ਵੀ ਕਵੇਰੀ ਨੇ tenant_id ਨਾਲ ਫਿਲਟਰ ਕਰਨਾ ਭੁੱਲ ਗਿਆ, ਤਾਂ ਡੇਟਾ ਲੀਕ ਹੋ ਸਕਦਾ ਹੈ। ਇਨ੍ਹਾਂ ਦਾ ਨਿਵਾਰਣ ਕਰਨ ਲਈ:
(tenant_id, created_at) ਜਾਂ (tenant_id, id)) ਤਾਂ ਕਿ ਟੇਨੈਂਟ-ਸਕੋਪਡ ਕਵੇਰੀਜ਼ ਤੇਜ਼ ਰਹਿਣ।ਹਰ ਟੇਨੈਂਟ ਨੂੰ ਆਪਣਾ ਸਕੀਮਾ ਮਿਲਦਾ ਹੈ (ਿਜਾਂ tenant_123.users, tenant_456.users)। ਇਹ ਰੋ-ਲੇਵਲ ਸਾਂਝੇ ਹੋਣ ਨਾਲੋਂ ਵਧੀਕ ਅਲੱਗਤਾ ਦਿੰਦਾ ਹੈ ਅਤੇ ਟੇਨੈਂਟ ਐਕਸਪੋਰਟ ਜਾਂ ਟੇਨੈਂਟ-ਵਿਸ਼ੇਸ਼ ਟਿ੍ਯੂਨਿੰਗ ਆਸਾਨ ਕਰ ਸਕਦਾ ਹੈ।
ਟਰੇਡ-ਆਫ਼ ਓਪਰੇਸ਼ਨਲ ਓਵਰਹੈੱਡ ਹੈ। ਮਾਈਗ੍ਰੇਸ਼ਨ ਬਹੁਤ ਸਾਰੀਆਂ ਸਕੀਮਾਜ਼ 'ਤੇ ਚੱਲਣੀਆਂ ਪੈਂਦੀਆਂ ਹਨ, ਅਤੇ ਫੇਲਿਯਰਜ਼ ਹੋਰ ਕੰਪਲਿਕੇਟ ਹੋ ਸਕਦੇ ਹਨ: ਤੁਸੀਂ 9,900 ਟੇਨੈਂਟਾਂ ਨੂੰ ਸਫਲਤਾਪੂਰਕ ਮਾਈਗਰੇਟ ਕਰ ਸਕਦੇ ਹੋ ਪਰ 100 'ਤੇ ਫਸ ਸਕਦੇ ਹੋ। ਮਾਨੀਟਰਿੰਗ ਅਤੇ ਟੂਲਿੰਗ ਜ਼ਰੂਰੀ ਹਨ—ਤੁਹਾ਼ਦੀ ਮਾਈਗ੍ਰੇਸ਼ਨ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਸਪੱਸ਼ਟ ਰੀਟ੍ਰਾਈ ਅਤੇ ਰਿਪੋਰਟਿੰਗ ਮੈਕਾਨਿਜ਼ਮ ਚਾਹੀਦੇ ਹਨ।
ਹਰ ਟੇਨੈਂਟ ਨੂੰ ਵੱਖਰਾ ਡੇਟਾਬੇਸ ਮਿਲਦਾ ਹੈ। ਅਲੱਗਤਾ ਮਜ਼ਬੂਤ ਹੁੰਦੀ ਹੈ: ਐਕਸੈਸ ਬਾਉਂਡਰੀਆਂ ਸਪਸ਼ਟ ਹੋਂਦੀਆਂ ਹਨ, ਇੱਕ ਟੇਨੈਂਟ ਦੇ ਨੋਇਜ਼ੀ ਕਵੇਰੀਜ਼ ਹੋਰਾਂ ਨੂੰ ਘੱਟ ਪ੍ਰਭਾਵਿਤ ਕਰਦੀਆਂ ਹਨ, ਅਤੇ ਇੱਕ ਹੀ ਟੇਨੈਂਟ ਨੂੰ ਬੈਕਅੱਪ ਤੋਂ ਰੀਸਟੋਰ ਕਰਨਾ ਜ਼ਿਆਦਾ ਸਾਫ਼ ਹੁੰਦਾ ਹੈ।
ਲਾਗਤ ਅਤੇ ਸਕੇਲਿੰਗ ਮੁੱਖ ਨੁਕਸ ਹਨ: ਵੱਧ ਡੇਟਾਬੇਸ ਮੈਨੇਜ ਕਰਨੇ, ਵੱਧ ਕਨੈਕਸ਼ਨ ਪੂਲ, ਅਤੇ ਸੰਭਵ ਤੌਰ 'ਤੇ ਵੱਧ ਅਪਗ੍ਰੇਡ/ਮਾਈਗ੍ਰੇਸ਼ਨ ਕੰਮ। ਕਈ ਟੀਮ ਇਹ ਮਾਡਲ ਉੱਚ-ਮੁੱਲ ਵਾਲੇ ਜਾਂ ਨਿਯਮਤ ਟੇਨੈਂਟਾਂ ਲਈ ਰਿਜ਼ਰਵ ਕਰਦੀਆਂ ਹਨ, ਜਦਕਿ ਛੋਟੇ ਟੇਨੈਂਟ ਸਾਂਝੇ ਇੰਫਰਾਸਟਰੱਕਚਰ 'ਤੇ ਰਹਿੰਦੇ ਹਨ।
ਅਸਲ ਸਿਸਟਮ ਆਮ ਤੌਰ 'ਤੇ ਇਨ੍ਹਾਂ ਪੈਟਰਨਾਂ ਨੂੰ ਮਿਲਾ ਕੇ ਵਰਤਦੇ ਹਨ। ਇੱਕ ਆਮ ਰਾਹ ਇਹ ਹੈ ਕਿ ਸ਼ੁਰੂਆਤ ਰੋ-ਲੈਵਲ ਅਲੱਗਤਾ ਨਾਲ ਹੁੰਦੀ ਹੈ, ਫਿਰ ਵੱਡੇ ਟੇਨੈਂਟਾਂ ਨੂੰ ਸਕੀਮਾ ਜਾਂ ਡੇਟਾਬੇਸ ਵਿੱਚ "ਗ੍ਰੈਜੂਏਟ" ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
ਸ਼ਾਰਡਿੰਗ ਇੱਕ ਪਲੇਸਮੈਂਟ ਲੇਅਰ ਸ਼ਾਮਿਲ ਕਰਦੀ ਹੈ: ਫੈਸਲਾ ਕਿ ਕਿਸ ਡੇਟਾਬੇਸ ਕਲਸਟਰ 'ਤੇ ਟੇਨੈਂਟ ਰਹੇਗਾ (ਰੀਜਨ, ਸਾਈਜ਼ ਟੀਅਰ, ਜਾਂ ਹੈਸ਼ਿੰਗ ਦੁਆਰਾ)। ਮੁੱਖ ਗੱਲ ਇਹ ਹੈ ਕਿ ਟੇਨੈਂਟ ਪਲੇਸਮੈਂਟ ਨੂੰ ਸਪੱਸ਼ਟ ਅਤੇ ਬਦਲਣ ਯੋਗ ਬਣਾਇਆ ਜਾਵੇ—ਤਾਂ ਜੋ ਤੁਸੀਂ ਟੇਨੈਂਟ ਨੂੰ ਬਿਨਾਂ ਐਪ ਨੂੰ ਦੁਬਾਰਾ ਲਿਖੇ ਮੂਵ ਕਰ ਸਕੋ, ਅਤੇ ਨਵੇਂ ਸ਼ਾਰਡ ਜੋੜ ਕੇ ਸਕੇਲ ਕਰ ਸਕੋ।
ਬਹੁ-ਕਿਰਾਏਦਾਰੀ ਅਸਲ ਵਿੱਚ ਹੈਰਾਨ ਕਰਨ ਵਾਲੇ ਆਮ ਤਰੀਕਿਆਂ ਨਾਲ ਫੇਲ ਹੁੰਦੀ ਹੈ: ਇੱਕ ਗੁੱਮ ਹੋਇਆ ਫਿਲਟਰ, ਇਕ ਕੈਸ਼ ਕੀ ਜੋ ਟੇਨੈਂਟਾਂ ਵਿਚਕਾਰ ਸਾਂਝੀ ਹੋ ਗਈ, ਜਾਂ ਇੱਕ ਐਡਮਿਨ ਫੀਚਰ ਜੋ ਬੇ-ਧਿਆਨ ਹੋ ਕੇ ਪੁਛਦਾ ਹੈ ਕਿ ਕਿਸ ਲਈ ਰਿਕਵੈਸਟ ਹੈ। ਹੱਲ ਕੋਈ ਇਕ ਵੱਡੀ ਸੁਰੱਖਿਆ ਵਿਸ਼ੇਸ਼ਤਾ ਨਹੀਂ—ਇਹ ਪਹਿਲੇ ਬਾਈਟ ਤੋਂ ਆਖਰੀ ਡੇਟਾਬੇਸ ਕਵੇਰੀ ਤੱਕ ਇੱਕ ਸਥਿਰ ਟੇਨੈਂਟ ਸੰਦਰਭ ਹੈ।
ਜ਼ਿਆਦਾਤਰ SaaS ਉਤਪਾਦ ਇੱਕ ਪ੍ਰਾਇਮਰੀ ਪਹਚਾਣ ਤੇ ਠਹਿਰਦੇ ਹਨ ਅਤੇ ਹੋਰ ਸਿਗਨਲ ਸਹੂਲਤ ਵਜੋਂ ਮੰਨਦੇ ਹਨ:
acme.yourapp.com ਉਪਭੋਗਤਿਆਂ ਲਈ ਆਸਾਨ ਹੈ ਅਤੇ ਟੇਨੈਂਟ-ਬ੍ਰਾਂਡਡ ਅਨੁਭਵਾਂ ਨਾਲ ਚੰਗਾ ਕੰਮ ਕਰਦਾ ਹੈ।tenant_id ਸ਼ਾਮਿਲ ਕਰਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਤਬਦੀਲੀ ਕਰਨਾ ਮੁਸ਼ਕਲ ਹੁੰਦਾ ਹੈ।ਇੱਕ ਸਿੰਗਲ ਤਥ੍ਯ ਸ੍ਰੋਤ ਚੁਣੋ ਅਤੇ ਹਰ ਥਾਂ ਉਸ ਨੂੰ ਲੌਗ ਕਰੋ। ਜੇ ਤੁਸੀਂ ਕਈ ਸਿਗਨਲ (ਸਬਡੋਮੇਨ + ਟੋਕਨ) ਸਹਾਇਕ ਹੋ, ਤਾਂ ਪ੍ਰਾਥਮਿਕਤਾ ਨਿਰਧਾਰਤ ਕਰੋ ਅਤੇ ਅਸਪਸ਼ਟ ਬੇਨਤੀਆਂ ਨੂੰ ਢੱਕ ਦਿਓ।
ਅਚਛਾ ਨਿਯਮ: ਜਦੋਂ ਤੁਸੀਂ tenant_id ਹੱਲ ਕਰ ਲੈਂਦੇ ਹੋ, ਤਾਂ ਨੀਚਲੇ ਸਾਰੇ ਹਿੱਸੇ ਨੂੰ ਇਹ ਇੱਕ ਹੀ ਸਥਾਨ (ਰਿਕਵੈਸਟ ਕ.context) ਤੋਂ ਪੜ੍ਹਨਾ ਚਾਹੀਦਾ ਹੈ, ਨਾ ਕਿ ਮੁੜ ਤੋਂ ਨਿਕਾਲਿਆ ਜਾਵੇ।
ਆਮ ਗਾਰਡਰੇਲਾਂ ਵਿੱਚ ਸ਼ਾਮਿਲ ਹਨ:
tenant_id ਨੂੰ ਰਿਕਵੈਸਟ ਕ.context ਵਿੱਚ ਜੁੜਦਾ ਹੈtenant_id ਨੂੰ ਪੈਰਾਮੀਟਰ ਵਜੋਂ ਲੈਣਾ ਲਾਜ਼ਮੀ ਬਣਾਉਂਦੇ ਹਨhandleRequest(req):
tenantId = resolveTenant(req) // subdomain/header/token
req.context.tenantId = tenantId
return next(req)
ਪ੍ਰਮਾਣਿਕਤਾ (ਉਪਭੋਗਤਾ ਕੌਣ ਹੈ) ਨੂੰ ਅਧਿਕਾਰ (ਉਹ ਕੀ ਕਰ ਸਕਦੇ ਹਨ) ਤੋਂ ਵੱਖ ਕਰੋ।
ਆਮ SaaS ਭੂਮਿਕਾਵਾਂ Owner / Admin / Member / Read-only ਹੁੰਦੀਆਂ ਹਨ, ਪਰ ਕੁੰਜੀ ਏਹ ਹੈ ਕਿ ਸਕੋਪ: ਇੱਕ ਉਪਭੋਗਤਾ Tenant A ਵਿੱਚ Admin ਹੋ ਸਕਦਾ ਹੈ ਅਤੇ Tenant B ਵਿੱਚ Member। ਅਧਿਕਾਰਾਂ ਨੂੰ ਪ੍ਰਤੀ-ਟੇਨੈਂਟ ਸਟੋਰ ਕਰੋ, ਗਲੋਬਲ ਨਹੀਂ।
ਕ੍ਰਾਸ-ਟੇਨੈਂਟ ਐਕਸੈਸ ਨੂੰ ਇੱਕ ਟੌਪ-ਟੀਅਰ ਇਨਸਿਡੈਂਟ ਵਜੋਂ ਲਓ ਅਤੇ ਇਸਨੂੰ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਤਰੀਕੇ ਨਾਲ ਰੋਕੋ:
ਜੇ ਤੁਸੀਂ ਵੱਧ ਓਪਰੇਸ਼ਨਲ ਚੈੱਕਲਿਸਟ ਚਾਹੁੰਦੇ ਹੋ ਤਾਂ ਆਪਣੇ ਇੰਜੀਨੀਅਰਿੰਗ ਰਨਬੁੱਕਾਂ ਵਿੱਚ ਇਹ ਨਿਯਮ ਜੋੜੋ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਆਪਣੇ ਕੋਡ ਨਾਲ ਵਰਜਨ ਕੀਤਾ ਰੱਖੋ।
ਡੇਟਾਬੇਸ ਅਲੱਗਤਾ ਸਿਰਫ਼ ਅੱਧੀ ਕਹਾਣੀ ਹੈ। ਬਹੁਤ ਸਾਰੇ ਅਸਲ ਬਹੁ-ਕਿਰਾਏਦਾਰ ਘਟਨਾ ਉਸ ਐਪ ਦੇ ਆਲੇ-ਦੁਆਲੇ ਦੇ ਸਾਂਝੇ ਪਲੰਬਿੰਗ: ਕੈਸ਼, ਕਿਊ, ਅਤੇ ਸਟੋਰੇਜ ਵਿੱਚ ਹੁੰਦੇ ਹਨ। ਇਹ ਲੇਅਰ ਤੇਜ਼ ਅਤੇ ਸਹੂਲਤ-ਭਰਪੂਰ ਹਨ ਅਤੇ ਅਕਸਰ ਅਜਿਹੇ ਢੰਗ ਨਾਲ ਗਲਤੀ ਨਾਲ ਗਲੋਬਲ ਬਣ ਜਾਂਦੇ ਹਨ।
ਜੇ ਕਈ ਟੇਨੈਂਟ Redis ਜਾਂ Memcached ਸਾਂਝਾ ਕਰਦੇ ਹਨ, ਮੁੱਖ ਨਿਯਮ ਸਧਾਰਨ ਹੈ: ਕਦੇ ਵੀ ਟੇਨੈਂਟ-ਅਗਨੋਸਟਿਕ ਕੀ ਰੱਖੋ ਨਾ।
ਇੱਕ ਵਿਹਾਰਿਕ ਪੈਟਰਨ ਹਰ ਕੀ ਨੂੰ ਇੱਕ ਸਥਿਰ ਟੇਨੈਂਟ ਪਛਾਣ ਨਾਲ ਪ੍ਰੀਫਿਕਸ ਕਰਨਾ ਹੈ (ਨਾਂ ਕਿ ਈਮੇਲ ਡੋਮੇਨ, ਨਾਂ ਹੀ ਪ੍ਰਦਰਸ਼ਨ ਨਾਂ)। ਉਦਾਹਰਨ ਲਈ: t:{tenant_id}:user:{user_id}। ਇਸ ਨਾਲ ਦੋ ਕੰਮ ਹੋਂਦੇ ਹਨ:
ਇਸ ਤੋਂ ਇਲਾਵਾ ਇਹ ਨਿਰਧਾਰਤ ਕਰੋ ਕਿ ਕੀ ਗਲੋਬਲ ਤੌਰ 'ਤੇ ਸਾਂਝਾ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ (ਉਦਾਹਰਨ ਲਈ, ਪਬਲਿਕ ਫੀਚਰ ਫਲੈਗ, ਸਟੈਟਿਕ ਮੈਟਾ ਡੇਟਾ) ਅਤੇ ਇਸਨੂੰ ਦਸਤਾਵੇਜ਼ ਕਰੋ—ਅਕਸਮਾਤ ਗਲੋਬਲਜ਼ ਅਕਸਰ ਕ੍ਰਾਸ-ਟੇਨੈਂਟ ਐਕਸਪੋਜ਼ਰ ਦਾ ਸਰੋਤ ਹੁੰਦੇ ਹਨ।
ਭਾਵੇਂ ਡੇਟਾ ਅਲੱਗ ਹੋਵੇ, ਟੇਨੈਂਟ ਫਿਰ ਵੀ ਸਾਂਝੇ ਕਮਪਿਊਟ ਦੁਆਰਾ ਹੋਰਾਂ 'ਤੇ ਪ੍ਰਭਾਵ ਸਕਦਾ ਹੈ। ਕਿਨਾਰੇ ਤੇ ਟੇਨੈਂਟ-ਅਗਾਹ ਲਿਮਿਟ ਲਗਾਓ:
ਸੀਮਾ ਨੂੰ ਦਿੱਖਵਾਈ ਬਣਾਓ (ਹੈਡਰ, UI ਨੋਟਿਸ) ਤਾਂ ਕਿ ਗਾਹਕ ਸਮਝ ਸਕਣ ਕਿ throttling ਨੀਤੀ ਹੈ, ਤਕਨੀਕੀ ਖਾਮੀ ਨਹੀਂ।
ਇੱਕ ਇੱਕੋ-ਕਿਊ ਵੱਲੋਂ ਇੱਕ ਵਿਆਸਤ ਟੇਨੈਂਟ ਵਰਕਰ ਸਮੇਂ 'ਤੇ ਹਵਾਲਾ ਕਰ ਸਕਦਾ ਹੈ।
ਆਮ ਫਿਕਸ:
free, pro, enterprise)ਹਮੇਸ਼ਾ ਜੌਬ ਪੇਲੋਡ ਅਤੇ ਲੌਗ ਵਿੱਚ ਟੇਨੈਂਟ ਸੰਦਰਭ ਪ੍ਰੋਪੈਗੇਟ ਕਰੋ ਤਾਂ ਕਿ ਗਲਤ-ਟੇਨੈਂਟ ਸਾਈਡ-ਇਫੈਕਟ ਤੋਂ ਬਚਾ ਜਾ ਸਕੇ।
S3/GCS-ਜੈਹੇ ਸਟੋਰੇਜ ਲਈ ਅਲੱਗਤਾ ਆਮ ਤੌਰ 'ਤੇ ਪਾਥ ਅਤੇ ਨੀਤੀ-ਅਧਾਰਿਤ ਹੁੰਦੀ ਹੈ:
ਜੋ ਵੀ ਤੁਸੀਂ ਚੁਣੋ, ਇਹ ਨਿਸ਼ਚਿਤ ਕਰੋ ਕਿ ਉੱਪਲੋਡ/ਡਾਊਨਲੋਡ ਹਰ ਰਿਕਵੈਸਟ 'ਤੇ ਟੇਨੈਂਟ ਮਾਲਕੀ ਦੀ ਜਾਂਚ ਕਰਦਾ ਹੈ, ਸਿਰਫ UI 'ਤੇ ਨਹੀਂ।
ਬਹੁ-ਕਿਰਾਏਦਾਰ ਸਿਸਟਮ ਸਰੋਤ ਸਾਂਝਾ ਕਰਦੇ ਹਨ, ਜਿਸਦਾ ਅਰਥ ਹੈ ਕਿ ਇੱਕ ਟੇਨੈਂਟ ਅਕਸਮਾਤ (ਜਾਂ ਇਰਾਦਾ ਰੂਪ ਵਿੱਚ) ਹੋਰਾਂ ਦੀ ਉਪਭੋਗਤਾ ਨੂੰ ਵੱਧ ਖਾ ਸਕਦਾ ਹੈ। ਇਹ ਨੋਇਜ਼ੀ ਨੇਬਰ ਸਮੱਸਿਆ ਹੈ: ਇੱਕ ਹੀ ਉਚਤ ਵਰਕਲੋਡ ਹੋਰ ਸਰਵਿਸਾਂ ਲਈ ਪ੍ਰਦਰਸ਼ਨ ਨੂੰ ਘਟਾ ਦਿੰਦਾ ਹੈ।
ਕਲਪਨਾ ਕਰੋ ਕਿ ਇੱਕ ਰਿਪੋਰਟਿੰਗ ਫੀਚਰ ਇੱਕ ਸਾਲ ਦਾ ਡੇਟਾ CSV ਵਿੱਚ ਨਿਕਾਸ ਕਰ ਰਿਹਾ ਹੈ। ਟੇਨੈਂਟ A 9:00 ਵਜੇ 20 ਐਕਸਪੋਰਟ ਸ਼ਡਿਊਲ ਕਰਦਾ ਹੈ। ਉਹ ਐਕਸਪੋਰਟ CPU ਅਤੇ ਡੇਟਾਬੇਸ I/O ਭਰ ਦਿੰਦੇ ਹਨ, ਤਾਂ ਜੋ ਟੇਨੈਂਟ B ਦੇ ਆਮ ਐਪ ਸਕ੍ਰੀਨ ਟਾਈਮਆਉਟ ਹੋਣ ਲੱਗ ਜਾਂਦੇ ਹਨ—ਭਾਵੇਂ B ਕੁਝ ਅਸਧਾਰਣ ਨਹੀਂ ਕਰ ਰਿਹਾ।
ਇਸ ਨੂੰ ਰੋਕਣਾ ਖੁੱਲ੍ਹੇ ਨਿਯੰਤ੍ਰਿਤ ਸਰਹੱਦਾਂ ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ:
ਇੱਕ ਵਿਹਾਰਿਕ ਪੈਟਰਨ ਇੰਟਰਐਕਟਿਵ ਟਰੈਫਿਕ ਨੂੰ ਬੈਚ ਕੰਮ ਤੋਂ ਅਲੱਗ ਰੱਖਣਾ ਹੈ: ਉਪਭੋਗਤਾ-ਮੁੱਖੀ ਰਿਕਵੈਸਟ ਤੇਜ਼ ਲੇਨ 'ਤੇ ਰੱਖੋ, ਅਤੇ ਹੋਰ ਸਭ ਕੁਝ ਨਿਯੰਤਰਿਤ ਕਤਾਰਾਂ ਵਿੱਚ ਧੱਕੋ।
ਜਦੋਂ ਇੱਕ ਟੇਨੈਂਟ ਇੱਕ ਸੀਮਾ ਅਗੇ ਕੀਤੇ ਤਾਂ ਸੁਰੱਖਿਆ ਵਾਲੇ ਵੈਨਾਂ ਜੋੜੋ:
ਢੰਗ ਨਾਲ ਕੀਤਿਆਂ, ਟੇਨੈਂਟ A ਆਪਣੀ ਐਕਸਪੋਰਟ ਸਪੀਡ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰ ਸਕਦਾ ਹੈ ਬਿਨਾਂ ਟੇਨੈਂਟ B ਨੂੰ ਡਾਂਨ ਕਦੇ।
ਜਦੋਂ ਕੋਈ ਟੇਨੈਂਟ ਲਗਾਤਾਰ ਸਾਂਝੇ ਅਨੁਮਾਨਾਂ ਤੋਂ ਵੱਧ ਹੁੰਦਾ ਹੈ: ਲਗਾਤਾਰ ਉੱਚ throughput, ਅਣਪਛਾਤੀ spikes ਜੋ ਕਾਰੋਬਾਰੀ-ਮਹੱਤਵਪੂਰਨ ਘਟਨਾਵਾਂ ਨਾਲ ਟਾਈ ਕੀਤਾ ਹੁੰਦਾ ਹੈ, ਕਠੋਰ ਕੰਪਲਾਇੰਸ ਲੋੜਾਂ, ਜਾਂ ਜਦੋਂ ਉਨ੍ਹਾਂ ਦਾ ਵਰਕਲੋਡ ਕਸਟਮ ਟਿਊਨਿੰਗ ਮੰਗਦਾ ਹੈ। ਇੱਕ ਸਧਾਰਨ ਨਿਯਮ: ਜੇ ਹੋਰ ਟੇਨੈਂਟਾਂ ਦੀ ਰੱਖਿਆ ਲਈ ਇੱਕ ਗ੍ਰਾਹਕ ਨੂੰ ਸਥਾਈ ਤੌਰ 'ਤੇ throttle ਕਰਨਾ ਪੈਂਦਾ ਹੈ, ਤਾਂ ਇਹ ਸਮਾਂ ਹੈ ਕਿ ਉਸਨੂੰ ਨਿਰਧਾਰਤ ਸਮਰੱਥਾ (ਜਾਂ ਉੱਚ ਟੀਅਰ) 'ਤੇ ਲਿਜਾਇਆ ਜਾਵੇ, ਨਾ ਕਿ ਹਮੇਸ਼ਾ ਦੀ ਫਾਇਰਫਾਈਟਿੰਗ।
ਬਹੁ-ਕਿਰਾਏਦਾਰ ਸਕੇਲਿੰਗ "ਵੱਧ ਸਰਵਰ" ਬਾਰੇ ਘੱਟ ਅਤੇ ਇੱਕ ਟੇਨੈਂਟ ਦੀ ਵੱਧਣ ਨੂੰ ਸਭ ਨੂੰ ਹੈਰਾਨ ਨਾ ਕਰਨ ਵਾਲਾ ਬਣਾਉਣ ਬਾਰੇ ਜ਼ਿਆਦਾ ਹੈ। ਸਭ ਤੋਂ ਵਧੀਆ ਪੈਟਰਨ ਸਕੇਲ ਨੂੰ ਪੂਰਵਾਨੁਮਾਨ, ਮਾਪਯੋਗ ਅਤੇ ਵਾਪਸੀਯੋਗ ਬਣਾਉਂਦੇ ਹਨ।
ਆਪਣੇ ਵੈੱਬ/API ਟੀਅਰ ਨੂੰ ਸਟੇਟਲੈੱਸ ਬਣਾਉ: ਸੈਸ਼ਨ ਨੂੰ ਸਾਂਝੀ ਕੈਸ਼ ਵਿੱਚ ਰੱਖੋ (ਜਾਂ ਟੋਕਨ-ਅਧਾਰਿਤ ਪ੍ਰਮਾਣਿਕਤਾ ਵਰਤੋ), ਅੱਪਲੋਡਸ ਨੂੰ ਓਬਜੈਕਟ ਸਟੋਰੇਜ ਵਿੱਚ ਰੱਖੋ, ਅਤੇ ਲੰਬੇ-ਚੱਲਣ ਵਾਲੇ ਕੰਮਾਂ ਨੂੰ ਬੈਕਗ੍ਰਾਊਂਡ ਜੌਬਜ਼ 'ਤੇ ਧੱਕੋ। ਜਦੋਂ ਰਿਕਵੈਸਟ ਲੋਕਲ ਮੈਮੋਰੀ ਜਾਂ ਡਿਸਕ 'ਤੇ ਨਿਰਭਰ ਨਾ ਹੋਣ, ਤਾਂ ਤੁਸੀਂ ਲੋਡ ਬੈਲੈਂਸਰ ਪਿੱਛੇ ਇਨਸਟੈਂਸ ਜੋੜਕੇ ਤੇਜ਼ੀ ਨਾਲ ਸਕੇਲ ਕਰ ਸਕਦੇ ਹੋ।
ਇੱਕ ਵਿਕਾਰਕ ਸੁਝਾਅ: ਕਿਨਾਰੇ 'ਤੇ ਟੇਨੈਂਟ ਸੰਦਰਭ ਰੱਖੋ (ਸਬਡੋਮੇਨ ਜਾਂ ਹੈਡਰ ਤੋਂ ਨਿਕਾਲਿਆ) ਅਤੇ ਇਸਨੂੰ ਹਰ ਰਿਕਵੈਸਟ ਹੈਂਡਲਰ ਤੱਕ ਪਾਸ ਕਰੋ। ਸਟੇਟਲੈੱਸ ਦਾ ਮਤਲਬ ਟੇਨੈਂਟ-ਅਗਿਆਹ ਨਹੀਂ—ਇਹ ਉਹ ਹੈ ਕਿ ਸਰਵਰ ਸਟਿੱਕੀ (sticky) ਨਾ ਹੋਣ।
ਜ਼ਿਆਦਾਤਰ ਸਕੇਲਿੰਗ ਸਮੱਸਿਆਵਾਂ "ਇਕ ਟੇਨੈਂਟ ਵੱਖਰਾ ਹੈ" ਧਰਾਂ ਹੁੰਦੀਆਂ ਹਨ। ਹੌਟਸਪੌਟਾਂ ਲਈ ਨਜ਼ਰ ਰੱਖੋ ਜਿਵੇਂ:
ਸਮੋਥਨਿੰਗ ਤਰਕੀਬਾਂ ਵਿੱਚ ਪ੍ਰਤੀ-ਟੇਨੈਂਟ ਰੇਟ ਲਿਮਿਟ, ਕਤਾਰ-ਅਧਾਰਤ ਇਨਜੈਸ਼ਨ, ਟੇਨੈਂਟ-ਵਿਸ਼ੇਸ਼ ਰੀਡ ਪਾਥ ਲਈ ਕੈਸ਼ਿੰਗ, ਅਤੇ ਭਾਰੀ ਟੇਨੈਂਟਾਂ ਨੂੰ ਵੱਖਰੇ ਵਰਕਰ ਪੂਲਾਂ ਵਿੱਚ ਸ਼ਾਰਡ ਕਰਨਾ ਸ਼ਾਮਿਲ ਹੈ।
ਰੀਡ-ਭਾਰ ਵਾਲੇ ਵਰਕਲੋਡ (ਡੈਸ਼ਬੋਰਡ, ਖੋਜ, ਐਨਾਲਿਟਿਕਸ) ਲਈ ਰੀਡ ਰੇਪਲਿਕਾ ਵਰਤੋ ਅਤੇ ਲਿਖਾਈਆਂ ਪ੍ਰਾਇਮਰੀ 'ਤੇ ਰੱਖੋ। ਪਾਰਟੀਸ਼ਨਿੰਗ (ਟੇਨੈਂਟ, ਸਮਾਂ, ਜਾਂ ਦੋਹਾਂ ਦੁਆਰਾ) ਇੰਡੈਕਸ ਛੋਟੇ ਅਤੇ ਕਵੇਰੀਜ਼ ਤੇਜ਼ ਰੱਖਣ ਵਿੱਚ ਮਦਦ ਕਰਦੀ ਹੈ। ਮਹਿੰਗੇ ਟਾਸਕ—ਐਕਸਪੋਰਟ, ML ਸਕੋਰਿੰਗ, ਵੈੱਬਹੁੱਕਸ—ਲਈ ਐਸਿੰਗਕ ਜੌਬ ਪਸੰਦ ਕਰੋ ਅਤੇ idempotency ਰੱਖੋ ਤਾਂ ਕਿ ਰੀਟ੍ਰਾਈਜ਼ ਲੋਡ ਨੂੰ ਚਾਰ ਗੁਣਾ ਨਾ ਕਰਨ।
ਸਿਗਨਲ ਸਧਾਰਨ ਅਤੇ ਟੇਨੈਂਟ-ਅਗਿਆह ਰੱਖੋ: p95 ਲੈਟੈਂਸੀ, ਐਰਰ ਦੀ ਦਰ, ਕਤਾਰ ਡੈਪਥ, DB CPU, ਅਤੇ ਪ੍ਰਤੀ-ਟੇਨੈਂਟ ਬੇਨਤੀ ਦਰ। ਆਸਾਨ ਸੀਮਾ-ਰেখਾ ਸੈਟ ਕਰੋ (ਜਿਵੇਂ "ਕਤਾਰ ਡੈਪਥ > N 10 ਮਿੰਟ ਲਈ" ਜਾਂ "p95 > X ms") ਜੋ ਆਟੋਸਕੇਲਿੰਗ ਜਾਂ ਅਸਥਾਈ ਟੇਨੈਂਟ ਕੈਪ ਪ੍ਰਰੇਰਣਾ ਕਰੇ—ਇਸ ਤੋਂ ਪਹਿਲਾਂ ਕਿ ਹੋਰ ਟੇਨੈਂਟਾਂ ਨੂੰ ਫੀਲ ਹੋਵੇ।
ਬਹੁ-ਕਿਰਾਏਦਾਰ ਸਿਸਟਮ ਆਮ ਤੌਰ 'ਤੇ ਗਿਆਨਵਾਨੀ ਤਰੀਕੇ ਨਾਲ ਪਹਿਲਾਂ ਗਲਤ ਨਹੀਂ ਹੁੰਦੇ—ਉਹ ਆਮ ਤੌਰ 'ਤੇ ਇੱਕ ਟੇਨੈਂਟ, ਇੱਕ ਟੀਅਰ, ਜਾਂ ਇੱਕ ਨੋਇਜ਼ੀ ਵਰਕਲੋਡ ਲਈ ਫੇਲ ਹੁੰਦੇ ਹਨ। ਜੇ ਤੁਹਾਡੇ ਲੌਗ ਅਤੇ ਡੈਸ਼ਬੋਰਡ "ਕਿਹੜਾ ਟੇਨੈਂਟ ਪ੍ਰਭਾਵਿਤ ਹੋਇਆ?" ਦਾ ਸਵਾਲ ਸੈਕਿੰਡਾਂ ਵਿੱਚ ਜਵਾਬ ਨਹੀਂ ਦੇ ਸਕਦੇ, ਤਾਂ ਆਨ-ਕਾਲ ਸਮਾਂ ਅਨਡਰਸਪਂਡ ਹੋ ਜਾਂਦਾ ਹੈ।
ਟੈਲੀਮੇਟਰੀ 'ਤੇ ਇੱਕ ਸਥਿਰ ਟੇਨੈਂਟ ਸੰਦਰਭ ਰੱਖ ਕੇ ਸ਼ੁਰੂ ਕਰੋ:
tenant_id, request_id, ਅਤੇ ਇੱਕ ਸਥਿਰ actor_id (ਉਪਭੋਗਤਾ/ਸਰਵਿਸ) ਸ਼ਾਮਿਲ ਕਰੋ।tier=basic|premium) ਅਤੇ ਉੱਚ-ਸਤਰ ਐਂਡਪੌਇੰਟਾਂ ਦੁਆਰਾ ਜਾਰੀ ਕਰੋ (ਕੱਚੇ URLs ਨਹੀਂ)।ਕਾਰਡੀਨਾਲਿਟੀ ਨੂੰ ਨਿਯੰਤਰਣ ਵਿੱਚ ਰੱਖੋ: ਸਾਰੇ ਟੇਨੈਂਟਾਂ ਲਈ ਪ੍ਰਤੀ-ਟੇਨੈਂਟ ਮੈਟ੍ਰਿਕਸ ਮਹਿੰਗੇ ਹੋ ਸਕਦੇ ਹਨ। ਇੱਕ ਆਮ ਸਮਝੌਤਾ ਇਹ ਹੈ ਕਿ ਡਿਫੌਲਟ ਤੌਰ 'ਤੇ ਟੀਅਰ-ਸਤਰ ਮੈਟ੍ਰਿਕਸ ਅਤੇ ਮੰਗ 'ਤੇ ਪ੍ਰਤੀ-ਟੇਨੈਂਟ ਡ੍ਰਿਲ-ਡਾਊਨ (ਉਦਾਹਰਨ, "ਟਾਪ 20 ਟੇਨੈਂਟ ਬਾਇ ਟ੍ਰੈਫਿਕ") ਲਈ ਟਰੇਸ ਸੈਂਪਿੰਗ।
ਟੈਲੀਮੇਟਰੀ ਇੱਕ ਡੇਟਾ ਐਕਸਪੋਰਟ ਚੈਨਲ ਹੈ। ਇਸਨੂੰ ਪ੍ਰੋਡਕਸ਼ਨ ਡੇਟਾ ਵਾਂਗ ਸਲੂਕ ਕਰੋ।
ਸੰਪੂਰਨ ਤੌਰ 'ਤੇ IDs ਨੂੰ ਸਭ ਤੋਂ ਪਹਿਲਾਂ ਰੱਖੋ: ਨਾਮਾਂ, ਈਮੇਲਾਂ, ਟੋਕਨ ਜਾਂ ਕਵੇਰੀ ਪੇਲੋਡਾਂ ਦੀ ਬਜਾਏ customer_id=123 ਲਾਗ ਕਰੋ। ਲੌਗਰ/SDK ਲੇਅਰ 'ਤੇ ਰੈਡੈਕਸ਼ਨ ਅਪਲਾਈ ਕਰੋ ਅਤੇ ਆਮ ਸੀਕਰੇਟਸ (Authorization ਹੈਡਰ, API ਕੀ) ਨੂੰ ਬਲਾਕਲਿਸਟ ਕਰੋ। ਸਪੋਰਟ ਵਰਕਫਲੋਜ਼ ਲਈ ਕਿਸੇ ਵੀ ਡੀਬੱਗ ਪੇਲੋਡ ਨੂੰ ਇਕ ਵੱਖਰੀ, ਐਕਸੈਸ-ਕੰਟਰੋਲ ਕੀਤੀ ਪਰਣਾਲੀ ਵਿੱਚ ਰੱਖੋ—ਸਾਂਝੇ ਲੌਗਾਂ ਵਿੱਚ ਨਹੀਂ।
ਉਹ SLOs ਪਰਿਭਾਸ਼ਿਤ ਕਰੋ ਜੋ ਤੁਸੀਂ ਅਸਲ ਵਿੱਚ ਲਾਗੂ ਕਰ ਸਕਦੇ ਹੋ। ਪੇਮਿਯਮ ਟੇਨੈਂਟਾਂ ਨੂੰ ਤੰਗ ਲੈਟੈਂਸੀ/ਏਰਰ ਬਜਟ ਮਿਲ ਸਕਦੇ ਹਨ, ਪਰ ਸਿਰਫ ਜੇ ਤੁਸੀਂ ਨਿਯੰਤਰਣ ਵੀ ਰੱਖਦੇ ਹੋ (ਰੇਟ ਲਿਮਿਟ, ਵਰਕਲੋਡ ਅਲੱਗ ਕੀਤਾ, ਪ੍ਰਾਥਮਿਕਤਾ ਕਤਾਰਾਂ)। ਟੀਅਰ SLOs ਨੂੰ ਟਾਰਗਟ ਵਜੋਂ ਪ੍ਰਕਾਸ਼ਤ ਕਰੋ, ਅਤੇ ਉਨ੍ਹਾਂ ਨੂੰ ਟੀਅਰ ਅਤੇ ਕੁਝ ਚੁਣਿੰਦੀਆਂ ਉੱਚ-ਮੁੱਲ ਵਾਲੀਆਂ ਟੇਨੈਂਟਾਂ ਲਈ ਟਰੈਕ ਕਰੋ।
ਤੁਹਾਡੇ ਰਨਬੁੱਕਸ "ਪ੍ਰਭਾਵਿਤ ਟੇਨੈਂਟ(ਾਂ) ਦੀ ਪਛਾਣ" ਨਾਲ ਸ਼ੁਰੂ ਕਰਨ ਅਤੇ ਫਿਰ ਸਭ ਤੋਂ ਤੇਜ਼ ਅਲੱਗ ਕਰਨ ਵਾਲੀ ਕਾਰਵਾਈ ਦਰਸਾਉਣੀ ਚਾਹੀਦੀ ਹੈ:
ਓਪਰੇਸ਼ਨਲ ਤੌਰ 'ਤੇ, ਮਕਸਦ ਸਧਾਰਨ ਹੈ: ਟੇਨੈਂਟ ਦੁਆਰਾ ਪਛਾਣ ਕਰੋ, ਟੇਨੈਂਟ ਦੁਆਰਾ ਘੇਰਨ (Contain) ਕਰੋ, ਅਤੇ ਬਿਨਾਂ ਸਾਰੇ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕੀਤੇ ਬਹਾਲ ਕਰੋ।
ਬਹੁ-ਕਿਰਾਏਦਾਰ SaaS ਸ਼ਿਪਿੰਗ ਦੀ ਲੈਵ ਨੂੰ ਬਦਲ ਦਿੰਦਾ ਹੈ। ਤੁਸੀਂ ਕੋਈ "ਐਪ" ਨਾਂਹੀਂ ਡਿਪਲੋ ਕਰ ਰਹੇ—ਤੁਸੀਂ ਸ਼ੇਅਰ ਕੀਤੇ ਰਨਟਾਈਮ ਅਤੇ ਡੇਟਾ ਪਾਥਾਂ ਨੂੰ ਡਿਪਲੋ ਕਰ ਰਹੇ ਹੋ ਜੋ ਕਈ ਗਾਹਕਾਂ ਤੇ ਨਿਰਭਰ ਹਨ। ਮਨੋਰਥ ਨਵੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦੇਣ ਹੈ ਬਿਨਾਂ ਹਰ ਟੇਨੈਂਟ ਉੱਤੇ ਇਕੱਠੇ ਬਿਗ-ਬੈਂਗ ਅਪਗ੍ਰੇਡ ਫੋਰਸ ਕੀਤੇ।
ਮਿਸ਼ਰਿਤ ਵਰਜ਼ਨਾਂ ਨੂੰ ਇੱਕ ਛੋਟਾ ਵਿਂਡੋ ਲਈ ਸਹਿਣਸ਼ੀਲ ਬਣਾਉਣ ਵਾਲੇ ਡਿਪਲੋਇਮੈਂਟ ਪੈਟਰਨ ਪ੍ਰਾਥਮਿਕ ਕਰੋ (blue/green, canary, rolling)। ਇਹ ਤਦ ਹੀ ਕੰਮ ਕਰਦਾ ਹੈ ਜਦੋਂ ਤੁਹਾਡੇ ਡੇਟਾਬੇਸ ਬਦਲਾਅ ਵੀ ਸਟੇਜ ਕਿਏ ਹੋਏ ਹੋਣ।
ਇੱਕ ਵਿਹਾਰਿਕ ਨਿਯਮ ਹੈ expand → migrate → contract:
ਹੌਟ ਟੇਬਲਾਂ ਲਈ, ਬੈਕਫਿੱਲ ਨੂੰ ਅਨੁਕੂਲ ਤਰੀਕੇ ਨਾਲ ਕਰੋ (ਅਤੇ throttle) ਨਹੀਂ ਤਾਂ ਤੁਸੀਂ ਮਾਈਗ੍ਰੇਸ਼ਨ ਦੌਰਾਨ ਖੁਦ ਨੋਇਜ਼ੀ-ਨੇਬਰ ਘਟਨਾ ਬਣਾਉਂਗੇ।
ਟੇਨੈਂਟ-ਸਤਰ ਫੀਚਰ ਫਲੈਗ ਤੁਹਾਨੂੰ ਕੋਡ ਨੂੰ ਗਲੋਬਲੀ ਸ਼ਿਪ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦੇ ਹਨ ਜਦੋਂ ਕਿ ਵਿਵਹਾਰ ਨੂੰ ਚੁਣੌਤੀ ਤੌਰ 'ਤੇ ਕੁਝ ਟੇਨੈਂਟਾਂ ਲਈ ਹੀ ਐਨੇਬਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।
ਇਸ ਨਾਲ ਸਹਾਇਤਾ ਮਿਲਦੀ ਹੈ:
ਫਲੈਗ ਸਿਸਟਮ ਨੂੰ ਆਡੀਟਯੋਗ ਬਣਾਓ: ਕਿਸ ਨੇ ਕਦੋਂ ਤੇ ਕਿਸ ਟੇਨੈਂਟ ਲਈ ਅਨੁਮੋਦਿਤ ਕੀਤਾ।
ਕੁਝ ਟੇਨੈਂਟਾਂ ਦੇ ਕਵਾਂਫਿਗਰੇਸ਼ਨ, ਇੰਟੇਗ੍ਰੇਸ਼ਨ, ਜਾਂ ਵਰਤੋਂ ਪੈਟਰਨ ਲੈਗ ਹੋ ਸਕਦੇ ਹਨ। APIs ਅਤੇ ਇਵੈਂਟਾਂ ਨੂੰ ਸਾਫ਼ ਵਰਜ਼ਨਿੰਗ ਨਾਲ ਡਿਜ਼ਾਈਨ ਕਰੋ ਤਾਂ ਜੋ ਨਵੇਂ ਪ੍ਰੋਡੀ🇳ਸਰਾਂ ਪੁਰਾਣੇ ਉਪਭੋਗਤਿਆਂ ਨੂੰ ਤੋੜਨ ਨਾ।
ਅੰਦਰੂਨੀ ਉਮੀਦਾਂ:
ਟੇਨੈਂਟ ਕੰਫਿਗ ਨੂੰ ਇੱਕ ਉਤਪਾਦ ਸਤਹ ਸਮਝੋ: ਇਸਨੂੰ ਵੈਧਤਾ, ਡਿਫੌਲਟ ਅਤੇ ਚੇਨਜ ਹਿਸਟਰੀ ਦੀ ਲੋੜ ਹੈ।
ਕੰਫਿਗਰੇਸ਼ਨ ਨੂੰ ਕੋਡ ਤੋਂ ਵੱਖ ਰੱਖੋ (ਅਤੇ ਸੰਭਵ ਤੌਰ 'ਤੇ ਰਨਟਾਈਮ ਸੀਕਰੇਟਸ ਤੋਂ ਵੀ) ਅਤੇ ਜਦੋਂ ਕੰਫਿਗ ਗਲਤ ਹੋਵੇ ਤਾਂ ਇੱਕ ਸੇਫ-ਮੋਡ ਫਾਲਬੈਕ ਸਕੀਮ ਮਿਲੇ। ਇੱਕ ਹਲਕਾ-ਫਰਮਾ ਅੰਦਰੂਨੀ ਪੇਜ ਜਿਵੇਂ settings/tenants ਇੰਸੀਡੈਂਟ ਜਵਾਬ ਦੌਰਾਨ ਅਤੇ ਸਟੇਜਡ ਰੋਲਆਊਟ ਵਿੱਚ ਘੰਟੇ ਬਚਾ ਸਕਦਾ ਹੈ।
AI ਸ਼ੁਰੂਆਤੀ ਆਰਕੀਟੈਕਚਰ ਸੋਚ ਨੂੰ ਤੇਜ਼ ਕਰ ਸਕਦਾ ਹੈ ਬਹੁ-ਕਿਰਾਏਦਾਰ SaaS ਲਈ, ਪਰ ਇਹ ਇੰਜੀਨੀਅਰਿੰਗ ਫੈਸਲਾ, ਟੈਸਟਿੰਗ ਜਾਂ ਸੁਰੱਖਿਆ ਸਮੀਖਿਆ ਦਾ ਬਦਲ ਨਹੀਂ ਹੈ। ਇਸਨੂੰ ਇੱਕ ਉੱਚ-ਗੁਣਵੱਤਾ ਵਾਲਾ brainstorming ਸਾਥੀ ਸਮਝੋ ਜੋ ਡਰਾਫਟ ਬਣਾਉਂਦਾ—ਫਿਰ ਹਰ ਅਨੁਮਾਨ ਦੀ ਜਾਂਚ ਕਰੋ।
AI ਵਿਕਲਪ ਬਣਾਉਣ ਅਤੇ ਆਮ ਫੇਲ-ਮੋਡ (ਜਿਵੇਂ ਟੇਨੈਂਟ ਸੰਦਰਭ ਕਿੱਥੇ ਖੋ ਸਕਦਾ ਹੈ, ਜਾਂ ਸਾਂਝੇ ਸਰੋਤ ਕਿਵੇਂ ਅਚਾਨਕ ਪ੍ਰਭਾਵ ਪੈਦਾ ਕਰ ਸਕਦੇ ਹਨ) ਨੂੰ ਉਜਾਗਰ ਕਰਨ ਵਿੱਚ ਮਦਦਗਾਰ ਹੈ। ਇਹ ਤੁਹਾਡਾ ਮਾਡਲ ਨਿਰਧਾਰਤ ਨਹੀਂ ਕਰ ਸਕਦਾ, ਕੰਪਲਾਇੰਸ ਦੀ ਗਾਰੰਟੀ ਨਹੀਂ ਦੇ ਸਕਦਾ, ਜਾਂ ਪ੍ਰਦਰਸ਼ਨ ਨੂੰ ਵੈਰਿਫਾਈ ਨਹੀਂ ਕਰ ਸਕਦਾ। ਇਹ ਤੁਹਾਡੇ ਅਸਲ ਟ੍ਰੈਫਿਕ, ਟੀਮ ਦੀਆਂ ਤਾਕਤਾਂ, ਜਾਂ ਲੇਗੇਸੀ ਇੰਟੇਗ੍ਰੇਸ਼ਨ ਵਿੱਚ ਛੁਪੇ ਐਜ ਕੇਸ ਨਹੀਂ ਦੇਖ ਸਕਦਾ।
ਆਉਟਪੁਟ ਦੀ ਗੁਣਵੱਤਾ ਉਸ 'ਤੇ ਨਿਰਭਰ ਕਰਦੀ ਹੈ ਜੋ ਤੁਸੀਂ ਇਸਨੂੰ ਦਿੱਸਦੇ ਹੋ। ਮਦਦਗਾਰ ਇਨਪੁੱਟ ਵਿੱਚ ਸ਼ਾਮਿਲ ਹਨ:
2–4 ਉਮੀਦਵਾਰ ਡਿਜ਼ਾਈਨ ਮੰਗੋ (ਉਦਾਹਰਨ: ਡੇਟਾਬੇਸ-ਪਰ-ਟੇਨੈਂਟ, ਸਕੀਮਾ-ਪਰ-ਟੇਨੈਂਟ, ਰੋ-ਲੈਵਲ ਅਲੱਗਤਾ) ਅਤੇ ਟਰੇਡ-ਆਫ਼ ਦੀ ਇੱਕ ਸਪਸ਼ਟ ਸਾਰਣੀ ਮੰਗੋ: ਲਾਗਤ, ਓਪਰੇਸ਼ਨਲ ਜਟਿਲਤਾ, ਬਲਾਸਟ-ਰੇਡੀਅਸ, ਮਾਈਗ੍ਰੇਸ਼ਨ ਕੌਸ਼ਿਸ਼, ਅਤੇ ਸਕੇਲਿੰਗ ਸੀਮਾ। AI ਉਹ ਗੋਟਚਾਜ਼ ਲਿਸਟ ਕਰਨ ਵਿੱਚ ਚੰਗਾ ਹੈ ਜਿਨ੍ਹਾਂ ਨੂੰ ਤੁਸੀਂ ਆਪਣੀ ਟੀਮ ਲਈ ਡਿਜ਼ਾਈਨ ਪ੍ਰਸ਼ਨਾਂ ਵਿੱਚ ਬਦਲ ਸਕਦੇ ਹੋ।
ਜੇ ਤੁਸੀਂ "ਡ੍ਰਾਫਟ ਆਰਕੀਟੈਕਚਰ" ਤੋਂ ਵੱਕਰੀ ਤੌਰ 'ਤੇ ਕੰਮ ਕਰ ਰਹੇ ਪ੍ਰੋਟੋਟਾਈਪ ਵੱਲ ਜਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ vibe-coding ਪਲੇਟਫਾਰਮ ਜਿਵੇਂ Koder.ai ਤੁਹਾਡੀ ਗੱਲਬਾਤ ਰਾਹੀਂ ਉਹ ਚੋਣਾਂ ਇੱਕ ਅਸਲ ਐਪ ਸਕੈਲਟਨ ਵਿੱਚ ਬਦਲ ਸਕਦਾ ਹੈ—ਅਕਸਰ React ਫਰੰਟਐਂਡ ਅਤੇ Go + PostgreSQL ਬੈਕਐਂਡ ਨਾਲ—ਜਿਸ ਨਾਲ ਤੁਸੀਂ ਤੇਜ਼ੀ ਨਾਲ ਟੇਨੈਂਟ ਸੰਦਰਭ ਪ੍ਰੋਪੈਗੇਸ਼ਨ, ਰੇਟ-ਲਿਮਿਟ ਅਤੇ ਮਾਈਗ੍ਰੇਸ਼ਨ ਵਰਕਫਲੋਜ਼ ਦੀ ਜਾਂਚ ਕਰ ਸਕਦੇ ਹੋ। ਯੋਜਨਾ ਬਣਾਉਣ ਵਾਲੇ ਮੋਡ ਅਤੇ snapshots/rollback ਵਰਗੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇ ਲਾਭਦਾਇਕ ਹਨ ਜਦੋਂ ਤੁਸੀਂ ਬਹੁ-ਕਿਰਾਏਦਾਰ ਡੇਟਾ ਮਾਡਲਾਂ 'ਤੇ ਦੁਹਰਾਈ ਕਰ ਰਹੇ ਹੋ।
AI ਇੱਕ ਸਧਾਰਨ ਖਤਰੇ-ਮਾਡਲ ਡਰਾਫਟ ਕਰ ਸਕਦਾ ਹੈ: ਐਂਟਰੀ ਪੁਆਇੰਟ, ਟਰੱਸਟ ਬਾਉਂਡਰੀਜ਼, ਟੇਨੈਂਟ-ਸੰਦਰਭ ਪ੍ਰੋਪੈਗੇਸ਼ਨ, ਅਤੇ ਆਮ ਗਲਤੀਆਂ (ਜਿਵੇਂ ਬੈਕਗ੍ਰਾਊਂਡ ਜੌਬਾਂ 'ਤੇ ਗੁੰਮ ਅਧਿਕਾਰ ਚੈੱਕ)। ਇਸਨੂੰ PRs ਅਤੇ ਰਨਬੁੱਕਸ ਲਈ ਸਮੀਖਿਆ ਚੈੱਕਲਿਸਟ ਬਨਾਉਣ ਲਈ ਵਰਤੋ—ਪਰ ਅਸਲ ਸੁਰੱਖਿਆ ਮਾਹਿਰ ਅਤੇ ਆਪਣੀ ਘਟਨਾ ਇਤਿਹਾਸ ਨਾਲ ਵੈਰੀਫਾਈ ਕਰੋ।
ਬਹੁ-ਕਿਰਾਏਦਾਰ ਅਪ੍ਰੋਚ ਚੁਣਨਾ "ਸਭ ਤੋਂ ਵਧੀਆ ਅਭਿਆਸ" ਤੋਂ ਘੱਟ ਤੇ "ਫਿੱਟ" ਬਾਰੇ ਜ਼ਿਆਦਾ ਹੈ: ਤੁਹਾਡੀ ਡੇਟਾ ਸੰਵੇਦਨशीलਤਾ, ਤੁਹਾਡਾ ਵਾਧਾ ਦਰ, ਅਤੇ ਤੁਸੀਂ ਕਿੰਨਾ ਓਪਰੇਸ਼ਨਲ ਜਟਿਲਤਾ ਸਹਿ ਸਕਦੇ ਹੋ।
ਡੇਟਾ: ਕਿਹੜਾ ਡੇਟਾ ਟੇਨੈਂਟਾਂ ਵਿਚਕਾਰ ਸਾਂਝਾ ਹੈ (ਜੇ ਕੋਈ)? ਕਿਹੜਾ ਡੇਟਾ ਕਦੇ ਵੀ ਇਕੱਠਾ ਨਹੀਂ ਹੋ ਸਕਦਾ?
ਪਹਿਚਾਨ: ਟੇਨੈਂਟ ਪਹਿਚਾਨ ਕਿੱਥੇ ਰਹਿੰਦੀ ਹੈ (invite links, domains, SSO claims)? ਹਰ ਰਿਕਵੈਸਟ 'ਤੇ ਟੇਨੈਂਟ ਸੰਦਰਭ ਕਿਵੇਂ ਸਥਾਪਤ ਹੁੰਦਾ ਹੈ?
ਅਲੱਗਤਾ: ਆਪਣੀ ਡਿਫੌਲਟ ਅਲੱਗਤਾ ਪੱਧਰ ਨਿਰਧਾਰਿਤ ਕਰੋ (ਰੋ/ਸਕੀਮਾ/ਡੇਟਾਬੇਸ) ਅਤੇ ਛੁੱਟੀਆਂ ਦਰਜ ਕਰੋ (ਜਿਵੇਂ, ਐਂਟਰਪ੍ਰਾਈਜ਼ ਗ੍ਰਾਹਕਾਂ ਲਈ ਕਠੋਰ ਅਲੱਗਤਾ)।
ਸਕੇਲਿੰਗ: ਪਹਿਲੀ ਸਕੇਲਿੰਗ ਦਬਾਅ ਦੀ ਪਛਾਣ ਕਰੋ (ਸਟੋਰੇਜ, ਰੀਡ ਟ੍ਰੈਫਿਕ, ਬੈਕਗ੍ਰਾਊਂਡ ਜੌਬ, ਐਨਾਲਿਟਿਕਸ) ਅਤੇ ਉਸਨੂੰ ਨਿਭਾਉਣ ਲਈ ਸਭ ਤੋਂ ਸਧਾਰਨ ਪੈਟਰਨ ਚੁਣੋ।
ਸਿਫਾਰਸ਼: ਰੋ-ਲੈਵਲ ਅਲੱਗਤਾ ਨਾਲ ਸ਼ੁਰੂ ਕਰੋ + ਸਖ਼ਤ ਟੇਨੈਂਟ-ਸੰਦਰਭ ਲਾਗੂ ਕਰੋ, ਪ੍ਰਤੀ-ਟੇਨੈਂਟ throttle ਜੋੜੋ, ਅਤੇ ਉੱਚ-ਜੋਖਮ ਟੇਨੈਂਟਾਂ ਲਈ ਸਕੀਮਾ/ਡੇਟਾਬੇਸ ਅਲੱਗਤਾ ਵੱਲ ਅਪਗ੍ਰੇਡ ਰਾਹ ਨਿਰਧਾਰਤ ਕਰੋ।
ਅਗਲੇ ਕਦਮ (2 ਹਫ਼ਤੇ): ਟੇਨੈਂਟ ਬਾਉਂਡਰੀਆਂ ਲਈ ਖਤਰਾ-ਮਾਡਲ ਤਿਆਰ ਕਰੋ, ਇਕ ਐਨਡਪੌਇੰਟ 'ਤੇ ਲਾਗੂ ਕਰਨ ਲਈ ਬਹਿਸ-ਮੁਕਾਬਲਾ ਪ੍ਰੋਟੋਟਾਈਪ ਬਣਾਓ, ਅਤੇ ਸਟੇਜਿੰਗ ਨਕਲ 'ਤੇ ਮਾਈਗ੍ਰੇਸ਼ਨ ਰਿਹਰਸਲ ਚਲਾਓ। ਰੋਲਆਊਟ ਗਾਈਡ ਲਈ ਸੰਦਰਭ ਵੇਖੋ tenant-release-strategies.