ਜਾਣੋ ਕਿ Linus Torvalds ਅਤੇ Linux kernel ਨੇ ਆਧੁਨਿਕ ਇੰਫ੍ਰਾਸਟਰੱਕਚਰ ਨੂੰ ਕਿਵੇਂ ਆਕਾਰ ਦਿੱਤਾ—ਅਤੇ ਕਿਉਂ ਖੁੱਲ੍ਹਾ-ਸਰੋਤ ਇੰਜੀਨੀਅਰਿੰਗ ਸਰਵਰਾਂ, ਕਲਾਉਡ ਅਤੇ DevOps ਲਈ ਡਿਫ਼ਾਲਟ ਬਣ ਗਈ।

ਇੰਫ੍ਰਾਸਟਰੱਕਚਰ ਦੇ ਚੋਣ صرف “IT ਫੈਸਲੇ” ਨਹੀਂ ਹੁੰਦੇ। ਇਹ ਇਸ ਗੱਲ ਨੂੰ ਨਿਰਧਾਰਤ ਕਰਦੇ ਹਨ ਕਿ ਤੁਸੀਂ ਕਿੰਨੀ ਤੇਜ਼ੀ ਨਾਲ ਸ਼ਿਪ ਕਰ ਸਕਦੇ ਹੋ, ਤੁਹਾਡਾ ਪ੍ਰਾਡਕਟ ਕਿੰਨਾ ਭਰੋਸੇਯੋਗ ਚਲਦਾ ਹੈ, ਗ੍ਰਾਹਕ ਡੇਟਾ ਕਿੰਨੀ ਸੁਰੱਖਿਅਤ ਹੈ, ਅਤੇ ਵੱਡੇ ਪੈਮਾਨੇ 'ਤੇ ਚਲਾਉਣ ਦੀ ਲਾਗਤ ਕਿੰਨੀ ਹੋਏਗੀ। ਇਹਨਾਂ ਗੱਲਾਂ ਦਾ ਪ੍ਰਭਾਵ ਉਹਨਾਂ ਟੀਮਾਂ 'ਤੇ ਵੀ ਪੈਂਦਾ ਹੈ ਜੋ ਡਾਇਰੈਕਟ ਸਰਵਰ ਨੂੰ ਛੂੰਹਦੀਆਂ ਨਹੀਂ—ਉਦਾਹਰਨ ਲਈ ਪ੍ਰੋਡਕਟ, ਡੇਟਾ, ਸੁਰੱਖਿਆ ਅਤੇ ਇੰਜੀਨੀਅਰਿੰਗ ਪ੍ਰਬੰਧਨ—ਜਦੋਂ ਡਿਪਲੋਇਮੈਂਟ ਸਲੋ ਹੁੰਦੇ ਹਨ, ਘਟਨਾਵਾਂ ਵਾਰ-ਵਾਰ ਹੋਦੀਆਂ ਹਨ, ਜਾਂ ਵਾਤਾਵਰਣ drift ਕਰਦੇ ਹਨ।
Linux kernel ਓਹ ਮੁੱਖ ਹਿੱਸਾ ਹੈ ਓਪਰੇਟਿੰਗ ਸਿਸਟਮ ਦਾ ਜੋ ਹਾਰਡਵੇਅਰ ਨਾਲ ਗੱਲ ਕਰਦਾ ਹੈ ਅਤੇ ਮੁਲਭੂਤ ਕੰਮ ਸੰਭਾਲਦਾ ਹੈ: CPU ਸਮਾਂ, ਮੈਮੋਰੀ, ਸਟੋਰੇਜ, ਨੈੱਟਵਰਕਿੰਗ ਅਤੇ ਪ੍ਰੋਸੈਸ ਇਨਸੋਲੇਸ਼ਨ। ਜੇ ਕੋਈ ਐਪ ਫਾਇਲ ਖੋਲ੍ਹਣੀ, ਪੈਕਟ ਭੇਜਣਾ, ਜਾਂ ਦੂਜਾ ਪ੍ਰੋਸੈਸ ਸ਼ੁਰੂ ਕਰਨਾ ਚਾਹੁੰਦੀ ਹੈ, ਉਹ ਆਖ਼ਰਕਾਰ kernel ਨੂੰ ਇਹ ਕੰਮ ਕਰਨ ਲਈ ਕਹਿ ਰਹੀ ਹੁੰਦੀ ਹੈ।
ਇਕ Linux distribution (distro) kernel ਦੇ ਨਾਲ ਉਹ ਸਾਰਾ ਕੁਝ ਹੁੰਦਾ ਹੈ ਜੋ ਤੁਹਾਨੂੰ ਇੱਕ ਸਿਸਟਮ ਚਲਾਉਣ ਅਤੇ ਮੈਨੇਜ ਕਰਨ ਲਈ ਚਾਹੀਦਾ ਹੈ: ਕਮਾਂਡ-ਲਾਈਨ ਟੂਲ, ਲਾਇਬ੍ਰੇਰੀਆਂ, ਪੈਕੇਜ ਮੈਨੇਜਰ, init ਸਿਸਟਮ ਅਤੇ ਡਿਫ਼ਾਲਟ কਨਫਿਗਰੇਸ਼ਨ। Ubuntu, Debian ਅਤੇ Red Hat Enterprise Linux ਦਿਸਟ੍ਰੋਜ਼ ਹਨ। ਇਹ ਵੇਖਣ ਵਿੱਚ ਵੱਖਰੇ ਹੋ ਸਕਦੇ ਹਨ, ਪਰ ਉਹੋ ਜਿਹਾ kernel ਬੁਨਿਆਦ ਸਾਂਝਾ ਕਰਦੇ ਹਨ।
ਇਹ ਪੋਸਟ ਤਿੰਨ ਧਾਰਣਾਵਾਂ ਨੂੰ ਜੋੜਦੀ ਹੈ ਜੋ ਸਮਝਾਉਂਦੀਆਂ ਹਨ ਕਿ Linux ਆਧੁਨਿਕ ਇੰਫ੍ਰਾਸਟਰੱਕਚਰ ਦੇ ਕੇਂਦਰ ਵਿੱਚ ਕਿਉਂ ਬੈਠਾ ਹੈ:
ਤੁਹਾਨੂੰ kernel ਡਿਵੈਲਪਰ ਹੋਣ ਦੀ ਲੋੜ ਨਹੀਂ ਕਿ ਇੱਥੇ ਮੁੱਲ ਪ੍ਰਾਪਤ ਕਰੋ। ਇਹ ਲੇਖ ਲਿਖਿਆ ਗਿਆ ਹੈ:
ਜੇ ਤੁਸੀਂ ਕਦੇ ਪੁੱਛਿਆ ਹੈ “ਕਿਉਂ ਸਭ ਕੁਝ Linux 'ਤੇ ਚਲਦਾ ਹੈ?” ਤਾਂ ਇਹ ਇੱਕ ਪ੍ਰਯੋਗਿਕ ਸ਼ੁਰੂਆਤ ਹੈ।
Linux ਕਿਸੇ ਕਾਰਪੋਰੇਟ ਰਣਨੀਤੀ ਵੱਜੋਂ ਜਾਂ "ਕੰਪਿਊਟਿੰਗ ਬਦਲਣ" ਦੇ ਮਹਾਨ ਯੋਜਨਾ ਵੱਜੋਂ ਸ਼ੁਰੂ ਨਹੀਂ ਹੋਇਆ। ਇਹ ਇੱਕ ਵਿਅਕਤੀ ਦੀ ਜਰੂਰਤ ਤੋਂ ਸ਼ੁਰੂ ਹੋਇਆ: Linus Torvalds, ਇੱਕ ਫਿਨਿਸ਼ ਕੰਪਿਊਟਰ ਸਾਇੰਸ ਵਿਦਿਆਰਥੀ, ਉਹਨਾਂ ਚਾਹੁੰਦੇ ਸਨ ਇੱਕ Unix-ਜੈਸੀ ਸਿਸਟਮ ਜਿਸਨੂੰ ਉਹ ਸਮਝ ਸਕਣ, ਟਿੰਕਰ ਕਰ ਸਕਣ ਅਤੇ ਆਪਣੇ PC 'ਤੇ ਚਲਾ ਸਕਣ।
ਉਸ ਸਮੇਂ Unix ਸਿਸਟਮ ਯੂਨੀਵਰਸਿਟੀਆਂ ਅਤੇ ਸਰਵਰਾਂ ਵਿੱਚ ਵਿਆਪਕ ਤੌਰ 'ਤੇ ਵਰਤੇ ਜਾਂਦੇ ਸਨ, ਪਰ ਉਹ ਮਹਿੰਗੇ ਅਤੇ ਅਕਸਰ ਖਾਸ ਹਾਰਡਵੇਅਰ ਨਾਲ ਜੁੜੇ ਹੁੰਦੇ ਸਨ। ਪੀਸੀ 'ਤੇ ਬਹੁਤੇ ਲੋਕ ਸਧਾਰਣ ਓਐਸ ਚਲਾਉਂਦੇ ਸਨ ਜੋ Unix-ਸਟਾਈਲ ਦੇ ਟੂਲ ਅਤੇ ਡਿਜ਼ਾਈਨ ਦੀ ਪੇਸ਼ਕਸ਼ ਨਹੀਂ ਕਰਦੇ ਸਨ।
Torvalds OS ਸੰਕਲਪਾਂ ਬਾਰੇ ਸਿੱਖ ਰਹੇ ਸਨ ਅਤੇ MINIX ਵਰਤ ਰਹੇ ਸਨ (ਇਕ ਛੋਟਾ Unix-ਜੈਸਾ ਸਿੱਖਿਆ ਪ੍ਰਦ ਸਿਸਟਮ)। ਇਹ ਸਿੱਖਣ ਲਈ ਵਰਤਯੋਗ ਸੀ, ਪਰ ਦਿਨ-ਪ੍ਰਤੀ ਦਿਨ ਟੈਸਟ ਕਰਨ ਲਈ ਸੀਮਿਤ ਸੀ। ਉਸਦਾ ਪਹਿਲਾ ਟੀਚਾ ਪ੍ਰਾਇਕਟਿਕ ਸੀ: ਇੱਕ ਅਜਿਹਾ ਕੁਝ ਬਣਾਉਣਾ ਜੋ ਉਸਦੀ ਨਿੱਜੀ ਵਰਤੋਂ ਲਈ ਅਨੁਕੂਲ ਹੋਵੇ—ਖਾਸ ਕਰਕੇ ਇੱਕ ਸਿੱਖਣ ਪ੍ਰੋਜੈਕਟ ਵਜੋਂ—ਅਤੇ ਜੋ ਉਸਦੇ ਹਾਰਡਵੇਅਰ 'ਤੇ ਚੰਗਾ ਕੰਮ ਕਰੇ।
ਹਰ ਕੋਈ ਨਹੀਂ ਜਾਣਦਾ ਕਿ Linux ਕਿੰਨੀ ਤੇਜ਼ੀ ਨਾਲ ਸਾਂਝਾ ਉਪਰਾਲਾ ਬਣ ਗਿਆ। ਸ਼ੁਰੂ ਵਿੱਚ ਹੀ, Torvalds ਨੇ ਆਪਣੇ ਪ੍ਰੋਜੈਕਟ ਬਾਰੇ ਆਨਲਾਈਨ ਪੋਸਟ ਕੀਤਾ ਅਤੇ ਪ੍ਰਤੀਕਿਰਿਆ ਮੰਗੀ। ਲੋਕਾਂ ਨੇ ਜਵਾਬ ਦਿੱਤਾ: ਕੁਝ ਨੇ ਟੈਸਟ ਕੀਤਾ, ਕੁਝ ਸੁਧਾਰ ਸੁਝਾਏ, ਅਤੇ ਹੋਰਾਂ ਨੇ ਕੋਡ ਯੋਗਦਾਨ ਦਿੱਤਾ।
ਇਹ "open source" ਜਿਸ ਤਰ੍ਹਾਂ ਇੱਕ ਪੋਲਿਸ਼ਡ ਮੂਵਮੈਂਟ ਦੇ ਤੌਰ 'ਤੇ ਨਹੀਂ ਸੀ; ਇਹ ਜਿਆਦਾ ਇੱਕ ਜਨਤਕ ਇੰਜੀਨੀਅਰਿੰਗ ਗੱਲਬਾਤ ਵਾਂਗ ਲੱਗਦਾ ਸੀ:
ਸਮੇਂ ਦੇ ਨਾਲ, ਉਹ ਵਿਕਾਸ ਸਟਾਈਲ ਇੱਕ ਪਛਾਣਯੋਗ ਮਾਡਲ ਬਣ ਗਿਆ: ਬਹੁਤ ਸਾਰੇ ਯੋਗਦਾਨਕਾਰ, ਸਪੱਸ਼ਟ maintainership, ਅਤੇ ਫੈਸਲੇ ਤਕਨੀਕੀ ਮੇਰਿਟ ਅਤੇ ਅਸਲ-ਦੁਨੀਆ ਦੀ ਵਰਤੋਂ ਦੁਆਰਾ ਚਲਾਏ ਜਾਂਦੇ ਹਨ।
Linux ਇੱਕ ਨਿੱਜੀ Unix-ਜੈਸੀ kernel ਪ੍ਰੋਜੈਕਟ ਵਜੋਂ ਸ਼ੁਰੂ ਹੋਇਆ, ਪਰ ਇਹ ਸ਼ੁਰੂ ਤੋਂ ਹੀ ਖੁੱਲ੍ਹੇ ਸਹਿਯੋਗ ਨਾਲ ਆਕਾਰ ਦਿੱਤਾ ਗਿਆ। ਇਹ ਜੋੜ—ਮਜ਼ਬੂਤ ਤਕਨੀਕੀ ਦਿਸ਼ਾ ਨਾਲ ਚੌੜੀ ਭਾਗੀਦਾਰੀ—ਉਸੀ ਟੋਨ ਨੂੰ ਸੈੱਟ ਕਰਦਾ ਹੈ ਜਿਸ ਨਾਲ Linux kernel ਅਜੇ ਵੀ ਬਣਾਇਆ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਇਸ ਕਾਰਨ ਇਹ ਇੱਕ ਵਿਦਿਆਰਥੀ ਦੇ ਪ੍ਰਯੋਗ ਤੋਂ ਆਧੁਨਿਕ ਸਰਵਰਾਂ ਅਤੇ ਕਲਾਉਡ ਇੰਫ੍ਰਾਸਟਰੱਕਚਰ ਦੇ ਆਧਾਰ ਤੱਕ ਪੈਮਾਨਾ 'ਤੇ ਵਧ ਸਕਿਆ।
ਲੋਕ ਅਕਸਰ ਕਹਿੰਦੇ ਹਨ “Linux ਇੱਕ ਓਐਸ ਹੈ,” ਪਰ ਜਦੋਂ ਇੰਜੀਨੀਅਰ Linux ਦੀ ਗੱਲ ਕਰਦੇ ਹਨ, ਉਹ ਆਮ ਤੌਰ 'ਤੇ ਅਰਥ ਲੈਂਦੇ ਹਨ Linux kernel। kernel ਉਹ ਮੁੱਖ ਪ੍ਰੋਗ੍ਰਾਮ ਹੈ ਜੋ ਹਾਰਡਵੇਅਰ ਦੇ ਸਭ ਤੋਂ ਨਜ਼ਦੀਕ ਬੈਠਦਾ ਹੈ ਅਤੇ ਫੈਸਲਾ ਕਰਦਾ ਹੈ ਕਿ ਮਸ਼ੀਨ ਦੇ ਸਰੋਤਾਂ ਨੂੰ ਕਿਵੇਂ बाँਟਿਆ ਜਾਵੇ।
ਅਮਲੀ ਪੱਧਰ ਤੇ, kernel ਕੁਝ ਮੁਢਲੀ ਜਿੰਮੇਵਾਰੀਆਂ ਲਈ ਜ਼ਿੰਮੇਵਾਰ ਹੁੰਦਾ ਹੈ:
ਜੇ ਤੁਸੀਂ ਇੱਕ ਵੈੱਬ ਸੇਵਾ, ਡੇਟਾਬੇਸ, ਜਾਂ CI ਰਨਰ ਚਲਾ ਰਹੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਲਗਾਤਾਰ ਇਹਨਾਂ kernel ਫੈਸਲਿਆਂ 'ਤੇ ਨਿਰਭਰ ਹੋ—even ਜੇ ਤੁਸੀਂ ਕਦੇ kernel ਨੂੰ “ਛੂਹ” ਨਹੀਂ ਕੀਤਾਂ।
ਜੋ ਕੁਝ ਲੋਕ “ਇੱਕ OS” ਵਜੋਂ ਮਹਿਸੂਸ ਕਰਦੇ ਹਨ, ਉਹ ਜ਼ਿਆਦਾਤਰ ਯੂਜ਼ਰ ਸਪੇਸ ਵਿੱਚ ਹੁੰਦਾ ਹੈ: Bash ਵਰਗੇ ਸ਼ੈਲ, ps ਅਤੇ grep ਵਰਗੇ ਯੂਟਿਲਿਟੀ, ਸਿਸਟਮ ਸੇਵਾਵਾਂ, ਪੈਕੇਜ ਮੈਨੇਜਰ, ਅਤੇ ਐਪਲੀਕੇਸ਼ਨ। ਸਰਵਰਾਂ 'ਤੇ, ਯੂਜ਼ਰ ਸਪੇਸ ਆਮ ਤੌਰ 'ਤੇ ਕਿਸੇ distribution ਤੋਂ ਆਉਂਦਾ ਹੈ (Ubuntu, Debian, RHEL ਆਦਿ)।
ਇੱਕ ਸਧਾਰਣ ਯਾਦ ਰੱਖਣ ਦਾ ਤਰੀਕਾ: kernel ਰੈਫਰੀ ਹੈ; ਯੂਜ਼ਰ ਸਪੇਸ ਟੀਮਾਂ ਖੇਡ ਰਹੀਆਂ ਹਨ। ਰੈਫਰੀ ਗੋਲ ਨਹੀਂ ਕਰਦਾ, ਪਰ ਨਿਯਮ ਲਾਗੂ ਕਰਦਾ ਹੈ, ਸਮਾਂ ਪ੍ਰਬੰਧਨ ਕਰਦਾ ਹੈ, ਅਤੇ ਖਿਡਾਰੀਆਂ ਨੂੰ ਇੱਕ-ਦੂਜੇ ਨੂੰ ਪਰੇਸ਼ਾਨ ਕਰਨ ਤੋਂ ਰੋਕਦਾ ਹੈ।
kernel ਚੋਣਾਂ ਅਤੇ ਅਪਡੇਟ ਸਥਿਰਤਾ, ਪ੍ਰਦਰਸ਼ਨ ਅਤੇ ਸੁਰੱਖਿਆ 'ਤੇ ਪ੍ਰਭਾਵ ਪਾਉਂਦੇ ਹਨ:
ਇਸੇ ਲਈ “ਸਿਰਫ ਇੱਕ OS ਅਪਡੇਟ” ਕਈ ਵਾਰ ਕੰਟੇਨਰ ਬਿਹੇਵਿਅਰ, ਨੈੱਟਵਰਕ ਥਰੂਪੁੱਟ, ਜਾਂ ਘਟਨਾ ਦੇ ਖ਼ਤਰੇ ਨੂੰ ਬਦਲ ਸਕਦਾ ਹੈ—ਕਿਉਂਕਿ ਓਹਲੇ kernel ਹੀ ਅੰਤ ਵਿੱਚ ਫੈਸਲਾ ਕਰ ਰਿਹਾ ਹੁੰਦਾ ਹੈ।
Linux “ਹਰੇਕ-ਕਿਸੇ-ਨੇ-ਸਭ ਕੁਝ ਛੂੰਹਿਆ” ਨਾਲ ਨਹੀਂ ਬਣਦਾ। ਇਹ ਇੱਕ ਅਨੁਸ਼ਾਸਿਤ ਵਰਕਫਲੋ ਰਾਹੀਂ ਤਿਆਰ ਹੁੰਦਾ ਹੈ ਜੋ ਖੁੱਲ੍ਹਾਪਨ ਨੂੰ ਜ਼ਿੰਮੇਵਾਰੀ ਨਾਲ ਬੈਲੈਂਸ ਕਰਦਾ ਹੈ।
ਜ਼ਿਆਦਾਤਰ ਬਦਲਾਵ ਇੱਕ ਪੈਚ ਵਜੋਂ ਆਉਂਦੇ ਹਨ: ਇੱਕ ਛੋਟੀ, ਕੇਂਦਰਤ ਸੋਧ ਜੋ ਦੱਸਦੀ ਹੈ ਕਿ ਕੀ ਬਦਲਦਾ ਹੈ ਅਤੇ ਕਿਉਂ। ਯੋਗਦਾਨਕਾਰ ਪੈਚ ਭੇਜਦੇ ਹਨ ਚਰਚਾ ਅਤੇ ਸਮੀਖਿਆ ਲਈ, ਆਮ ਤੌਰ 'ਤੇ ਜਨਤਕ ਚੈਨਲਾਂ 'ਚ, ਜਿੱਥੇ ਹੋਰ ਡਿਵੈਲਪਰ ਧਾਰਨਾਵਾਂ 'ਤੇ ਪ੍ਰਸ਼ਨ ਪੁੱਛ ਸਕਦੇ ਹਨ, ਸੁਧਾਰ ਸੁਝਾ ਸਕਦੇ ਹਨ, ਜਾਂ ਐਜ ਕੇਸ ਪਕੜ ਸਕਦੇ ਹਨ।
ਜੇ ਬਦਲਾਵ ਸਵੀਕਾਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਉਹ ਸਿੱਧਾ Linus Torvalds ਕੋਲ ਨਹੀਂ ਜਾਂਦਾ। ਪਹਿਲਾਂ ਇਹ ਭਰੋਸੇਯੋਗ ਰਿਵਿਊਅਰਾਂ ਦੀ ਇੱਕ ਲੜੀ ਰਾਹੀਂ ਜਾਂਦਾ ਹੈ।
Linux ਨੂੰ ਸਬਸਿਸਟਮਾਂ ਵਿੱਚ ਵੰਡਿਆ ਗਿਆ ਹੈ (ਉਦਾਹਰਨ: ਨੈੱਟਵਰਕਿੰਗ, ਫ਼ਾਈਲ ਸਿਸਟਮ, ਮੇਮੋਰੀ ਮੈਨੇਜਮੈਂਟ, ਖਾਸ ਹਾਰਡਵੇਅਰ ਡਰਾਈਵਰ)। ਹਰ ਸਬਸਿਸਟਮ ਦਾ ਇੱਕ ਜਾਂ ਇੱਕ ਤੋਂ ਵਧੇਰੇ maintainers ਹੁੰਦੇ ਹਨ—ਉਹ ਲੋਕ ਜੋ ਉਸ ਖੇਤਰ ਦੀ ਕੁਆਲਟੀ ਅਤੇ ਦਿਸ਼ਾ ਲਈ ਜ਼ਿੰਮੇਵਾਰ ਹਨ।
ਇੱਕ maintainer ਦੀ ਨੌਕਰੀ "ਸਿਰਫ਼ ਬਾਸ" ਹੋਣ ਦੀ ਬਜਾਏ "ਸੰਪਾਦਕ-ਿਨਚਰ" ਵਾਂਗ ਹੁੰਦੀ ਹੈ। ਉਹ:
ਸਬਸਿਸਟਮ ਓਨਰਸ਼ਿਪ Linux ਨੂੰ ਸਕੇਲ ਕਰਨਯੋਗ ਬਣਾਊਂਦਾ ਹੈ: ਵਿਸ਼ੇਸ਼ਜ્ઞાન ਆਪਣੇ ਖੇਤਰ 'ਤੇ ਧਿਆਨ ਕੇਂਦਰਿਤ ਕਰਦੇ ਹਨ, ਸਾਰੇ ਫੈਸਲੇ ਇੱਕ ਹੀ ਬੋਤਲ-ਗਰਦ ਰਾਹੀਂ ਨਹੀਂ ਲੰਘਦੇ।
Linux ਦੀ ਸਮੀਖਿਆ ਸੱਭਿਆਚਾਰ ਨੌਕ-ਨੁਕਸਾਨ ਵਾਲੀ ਲੱਗ ਸਕਦੀ ਹੈ: ਸਟਾਈਲ ਨਿਯਮ, ਸਪੱਸ਼ਟ commit ਸੁਨੇਹੇ, ਅਤੇ ਸਬੂਤ ਦੀ ਮੰਗ। ਨਤੀਜਾ ਇਹ ਹੈ ਕਿ ਘੱਟ regressions ਹੁੰਦੀਆਂ ਹਨ (ਜਦੋਂ ਇੱਕ “fix” ਦੂਜੇ ਚੀਜ਼ ਨੂੰ ਭੰਗ ਕਰ ਦੇਵੇ)। ਕਠੋਰ ਮਿਆਰ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਪਹਿਲਾਂ ਪਕੜ ਲੈਂਦੇ ਹਨ—ਜਦੋਂ ਉਹ ਮਿਲੀਅਨਾਂ ਸਿਸਟਮਾਂ ਤੱਕ ਜਾ ਚੁੱਕਦੇ ਹਨ—ਤਾਂ ਕਿ ਪ੍ਰੋਡਕਸ਼ਨ ਟੀਮਾਂ ਨੂੰ ਅਪਡੇਟ ਦੇ ਬਾਅਦ ਹੈਰਾਨੀ ਨਾਲ ਡੀਬੱਗ ਨਾ ਕਰਨਾ ਪਵੇ।
Linux ਇੱਕ ਨਿਯਮਤ ਰੀਲੀਜ਼ ਰਿਥਮ ਅਨੁਸਾਰ ਚਲਦਾ ਹੈ। ਨਵੇਂ ਫੀਚਰ main development line ਵਿੱਚ ਆਉਂਦੇ ਹਨ, ਜਦਕਿ Long-Term Support (LTS) kernels ਸਾਲਾਂ ਤੱਕ ਅਨੁਭਵੀ ਸਥਿਰਤਾ ਅਤੇ ਸੁਰੱਖਿਆ ਫਿਕਸਾਂ ਲਈ ਮੈਨਟੇਨ ਕੀਤੇ ਜਾਂਦੇ ਹਨ।
LTS ਉਹ ਟੀਮਾਂ ਲਈ ਹਨ ਜੋ ਪੇਦੇਦਾਰਤਾ ਨੂੰ ਮਹੱਤਵ ਦਿੰਦੀਆਂ ਹਨ: ਕਲਾਉਡ ਪਲੇਟਫਾਰਮ, ਏੰਟਰਪ੍ਰਾਈਜ਼ ਅਤੇ ਡਿਵਾਈਸ ਨਿਰਮਾਤਾ ਜੋ ਇੱਕ ਸਥਿਰ ਬੇਸ ਚਾਹੁੰਦੇ ਹਨ ਬਿਨਾਂ ਨਿਰਤੇਂ ਨਵੀਂ ਵਰਜਨਾਂ ਦੇ ਪਿੱਛੇ ਦੌੜਨ ਦੇ। ਇਹ ਨਵੀਨਤਾ ਅਤੇ ਆਪਰੇਸ਼ਨਲ ਸੁਰੱਖਿਆ ਦਰਮਿਆਨ ਇੱਕ ਪ੍ਰਯੋਗਿਕ ਸਮਝੌਤਾ ਹੈ।
Linux ਨੇ ਕਿਸੇ ਇੱਕ killer ਫੀਚਰ ਦੀ ਵਜ੍ਹਾ ਨਾਲ ਸਰਵਰਾਂ 'ਤੇ “ਜਿੱਤ” ਨਹੀਂ ਕੀਤੀ। ਇਹ ਉਹ ਸਮਾਂ ਸੀ ਜਦੋਂ ਸਰਵਰ ਟੀਮਾਂ ਦੀਆਂ ਲੋੜਾਂ ਨਾਲ ਇਹ ਵਧੀਆ ਮਿਲਦਾ ਸੀ: ਭਰੋਸੇਯੋਗ ਨੈੱਟਵਰਕਿੰਗ, ਸਚਮੁਚ ਮਲਟੀਯੂਜ਼ਰ ਡਿਜ਼ਾਇਨ, ਅਤੇ ਲੰਮੇ ਸਮੇਂ ਚੱਲਣ ਦੀ ਸਮਰੱਥਾ।
ਸ਼ੁਰੂ ਤੋਂ, Linux ਨੇ Unix-ਸਟਾਈਲ ਉਮੀਦਾਂ ਨੂੰ ਗੰਭੀਰਤਾ ਨਾਲ ਲਿਆ—permissions, processes ਅਤੇ ਨੈੱਟਵਰਕਿੰਗ ਮੁੱਖ ਚਿੰਤਾਵਾਂ ਸਨ। ਇਹ ਵੰਡ ਸਾਂਝੀ ਮਸ਼ੀਨਾਂ ਲਈ ਮਹੱਤਵਪੂਰਨ ਸੀ, ਜਿੱਥੇ ਬਹੁਤਾਂ ਲੋਕ ਲੌਗਿਨ ਕਰਦੇ, ਨੌਕਰੀਆਂ ਚਲਾਉਂਦੇ, ਅਤੇ ਸਿਸਟਮ ਨੂੰ ਸਥਿਰ ਰਹਿਣ ਦੀ ਲੋੜ ਹੁੰਦੀ ਸੀ।
ਉੱਤੋਂ ਵੀ ਮਹੱਤਵਪੂਰਨ: Linux ਆਮ x86 ਹਾਰਡਵੇਅਰ 'ਤੇ ਚੰਗਾ ਚੱਲਦਾ ਸੀ। ਕੰਪਨੀਆਂ commodity ਹਿੱਸਿਆਂ ਤੋਂ ਸਮਰੱਥ ਸਰਵਰ ਤਿਆਰ ਕਰ ਸਕਦੀਆਂ ਸਨ ਬਦਲੇ ਵਿੱਚ ਖਾਸ ਸਿਸਟਮ ਖਰੀਦਣ ਦੀ ਲੋੜ ਘੱਟ ਹੁੰਦੀ ਸੀ। ਇਹ ਖ਼ਰਚਾ ਫ਼ਰਕ ਅਸਲੀ ਸੀ, ਖਾਸ ਤੌਰ 'ਤੇ ਉਹ ਸੰਸਥਾਵਾਂ ਲਈ ਜਿਨ੍ਹਾਂ ਨੂੰ "ਵੱਧ ਸਰਵਰ" ਦੀ ਲੋੜ ਸੀ ਨਾ ਕਿ "ਇੱਕ ਵੱਡਾ ਸਰਵਰ"।
ਸਿਰਫ kernel ਇੱਕ ਸਰਵਰ ਪਲੇਟਫਾਰਮ ਨਹੀਂ ਬਣਾਉਂਦਾ। Linux distributions ਨੇ ਗ੍ਰਹਿਣ ਨੂੰ ਪ੍ਰਯੋਗਿਕ ਬਣਾਇਆ—ਇੰਸਟਾਲਰ, ਡਰਾਈਵਰ, ਸਿਸਟਮ ਟੂਲ ਅਤੇ ਇਕਸਾਰ ਅਪਡੇਟ ਮਕੈਨਿਜ਼ਮ ਪੈਕੇਜ ਕਰਕੇ। ਉਹ ਪੇਦਾਵਾਰ ਰੀਲੀਜ਼ ਚੱਕਰ ਅਤੇ ਸਪੋਰਟ ਵਿਕਲਪ ਵੀ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ—ਕਮਿਊਨਿਟੀ-ਚਲਿਤ distros ਤੋਂ ਲੈ ਕੇ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਦਿੱਤੇ ਜਾਣ ਵਾਲੇ ਵਿਕਲਪ ਤੱਕ—ਤਾਂ ਕਿ ਟੀਮਾਂ ਲਚਕੀਲਾਪਣ ਅਤੇ ਲੰਬੀ ਮਿਆਦ ਦੀ ਸੰਭਾਲ ਦੇ ਵਿਚਕਾਰ ਟਰੇਡ-ਆਫ ਚੁਣ ਸਕਣ।
Linux ਇੱਕ ਵਾਰ "ਸੁਰੱਖਿਅਤ ਚੋਣ" ਬਣ ਗਿਆ, ਤਾਂ ਇਹ ਵਰਤੇ ਜਾਣ ਵਾਲੇ ਆਮ ਕੰਮਾਂ ਰਾਹੀਂ ਫੈਲਿਆ:
ਇੱਕ ਵਾਰ Linux ਇਹਨਾਂ ਰੋਜ਼ਾਨਾ ਕੰਮਾਂ ਲਈ "ਸੁਰੱਖਿਅਤ ਚੋਣ" ਬਣ ਗਿਆ, ਤਾਂ ਇੱਕ ਬਹਾਲੀ ਚੱਕਰ ਨੇ ਮਦਦ ਕੀਤੀ: ਵੱਧ ਉਪਭੋਗਤਾਵਾਂ ਨਾਲ ਵੱਧ ਫਿਕਸ, ਬਿਹਤਰ ਹਾਰਡਵੇਅਰ ਸਪੋਰਟ, ਅਤੇ ਵੱਧ ਟੂਲিং—ਜੋ ਅਗਲੀ ਗ੍ਰਹਿਣ ਨੂੰ ਹੋਰ ਆਸਾਨ ਬਣਾਉਂਦਾ ਗਿਆ।
ਕਲਾਉਡ ਪ੍ਰਦਾਤਿਆਂ ਦਾ ਖਾਸ ਕੰਮ ਹੈ: ਵੱਡੀਆਂ ਮਸ਼ੀਨਾਂ ਦੀ ਫਲੀਟ ਨੂੰ ਇਕ ਪ੍ਰੋਗਰਾਮਯੋਗ ਸਰਵਿਸ ਵਾਂਗ ਚਲਾਉਣਾ। ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਉਹਨਾਂ ਨੂੰ ਹਰ ਪੱਧਰ 'ਤੇ ਆਟੋਮੇਸ਼ਨ, ਗਾਹਕਾਂ ਵਿਚਕਾਰ ਮਜ਼ਬੂਤ ਇਨਸੋਲੇਸ਼ਨ, ਅਤੇ CPU, ਮੈਮੋਰੀ, ਸਟੋਰੇਜ ਅਤੇ ਨੈੱਟਵਰਕਿੰਗ ਦੀ ਕੂਸ਼ਲ ਵਰਤੋਂ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ ਤਾਂ ਕਿ ਲਾਗਤ ਨਿਰਧਾਰਿਤ ਰਹੇ।
Linux ਇਸ ਕੰਮ ਲਈ ਬਹੁਤ موزੂਨ ਹੈ ਕਿਉਂਕਿ ਇਹ ਸਕੇਲ 'ਤੇ ਪ੍ਰਬੰਧਿਤ ਹੋਣ ਲਈ ਬਣਿਆ ਹੈ। ਇਹ ਸਕ੍ਰਿਪਟਬਲ, ਰਿਮੋਟ-ਫ੍ਰੈਂਡਲੀ ਅਤੇ ਸਾਫ਼ ਇੰਟਰਫੇਸ (ਫਾਇਲਾਂ, ਪ੍ਰੋਸੈਸ, ਪਰਮੀਸ਼ਨ, ਨੈੱਟਵਰਕ) ਦੇ ਆਧਾਰ 'ਤੇ ਤਿਆਰ ਹੈ ਜਿਸ 'ਤੇ ਆਟੋਮੇਸ਼ਨ ਟੂਲ ਨਿਰਭਰ ਕਰ ਸਕਦੇ ਹਨ। ਜਦੋਂ ਤੁਸੀਂ ਹਰ ਮਿੰਟ ਹਜ਼ਾਰਾਂ ਇੰਸਟੈਂਸ ਸੁਨਭਾਲ ਰਹੇ ਹੋ, “ਆਟੋਮੇਸ਼ਨ ਨਾਲ ਚੰਗਾ ਕੰਮ ਕਰਦਾ ਹੈ” ਇੱਕ ਸਹੂਲਤ ਨਹੀਂ—ਓਹ ਪੂਰਾ ਉਤਪਾਦ ਹੈ।
ਵਰਚੁਅਲਾਈਜ਼ੇਸ਼ਨ ਇੱਕ ਭੌਤਿਕ ਸਰਵਰ ਨੂੰ ਬਹੁਤ ਸਾਰੇ ਅਲੱਗ ਮਸ਼ੀਨ ਵਾਂਗ ਕਰ ਦਿੰਦਾ ਹੈ। ਧਾਰਨਾਤਮਕ ਤੌਰ 'ਤੇ, ਇਹ Linux ਨਾਲ ਚੰਗੀ ਤਰ੍ਹਾਂ ਮਿਲਦਾ ਹੈ ਕਿਉਂਕਿ kernel ਪਹਿਲਾਂ ਹੀ ਜਾਣਦਾ ਹੈ ਕਿ ਸਰੋਤਾਂ ਨੂੰ ਕਿਵੇਂ ਲਾਂਟਣਾ ਅਤੇ ਸੀਮਤ ਕਰਨਾ ਹੈ, ਕੰਮ ਨੂੰ ਨਿਆਂਸੰਗਤ ਤਰੀਕੇ ਨਾਲ ਸ਼ੈਡਿਊਲ ਕਰਨਾ ਹੈ, ਅਤੇ ਹਾਰਡਵੇਅਰ ਸਮਰੱਥਾਵਾਂ ਨੂੰ ਨਿਯੰਤਰਿਤ ਤਰੀਕੇ ਨਾਲ ਪ੍ਰਗਟ ਕਰਨਾ ਹੈ।
Linux ਆਮ ਤੌਰ 'ਤੇ ਹਾਰਡਵੇਅਰ ਅਤੇ ਵਰਚੁਅਲਾਈਜ਼ੇਸ਼ਨ ਸੁਧਾਰਾਂ ਨੂੰ ਤੇਜ਼ੀ ਨਾਲ ਅਪਣਾਉਂਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਪ੍ਰਦਾਤਾ ਪ੍ਰਦਰਸ਼ਨ ਉੱਚਾ ਰੱਖ ਸਕਦੇ ਹਨ ਅਤੇ ਗਾਹਕਾਂ ਲਈ ਪਹੁੰਚਯੋਗਤਾ ਨਿਰਧਾਰਿਤ ਰੱਖ ਸਕਦੇ ਹਨ।
Multi-tenant ਕਲਾਉਡ ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਬਹੁਤ ਸਾਰੇ ਗਾਹਕ ਇੱਕੋ ਹਾਰਡਵੇਅਰ ਵਰਤਦੇ ਹਨ। Linux namespaces ਅਤੇ control groups (cgroups) ਵਰਗੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਰਾਹੀਂ ਇਸ ਘਣਤ� ਵਿੱਚ ਸਹਾਇਤਾ ਕਰਦਾ ਹੈ—ਇਹ ਵਰਕਲੋਡਾਂ ਨੂੰ ਅਲੱਗ ਕਰਦੇ ਹਨ ਅਤੇ ਸਰੋਤਾਂ ਲਈ ਸੀਮਾਵਾਂ ਸੈੱਟ ਕਰਦੇ ਹਨ ਤਾਂ ਕਿ ਇੱਕ noisy workload ਆਪਣੇ neighbors ਨੂੰ overwhelm ਨਾ ਕਰ ਸਕੇ।
ਉੱਪਰ ਇਸਦੇ, Linux ਕੋਲ ਇੱਕ ਪੱਕੀ ਸੁਰੱਖਿਆ ਮਾਡਲ (ਯੂਜ਼ਰ, ਗਰੁੱਪ, ਪਰਮੀਸ਼ਨ, capabilities) ਅਤੇ ਇੱਕ ਨੈੱਟਵਰਕਿੰਗ ਸਟੈਕ ਹੈ ਜੋ ਹਿੱਸਿਆਂ ਵਿਚ ਵੰਞਾ ਕੀਤਾ ਜਾ ਸਕਦਾ ਅਤੇ ਮਾਨੀਟਰ ਕੀਤਾ ਜਾ ਸਕਦਾ—ਇਹ ਦੋਹਾਂ ਜਰੂਰੀ ਹਨ ਜਦੋਂ ਵੱਖ-ਵੱਖ ਸੰਸਥਾਵਾਂ ਇੱਕਸਾਥ ਚਲ ਰਹੀਆਂ ਹੁੰ।
ਵੱਡੇ ਕਲਾਉਡ ਪਲੇਟਫਾਰਮ ਅਕਸਰ ਕਸਟਮ kernel ਵਰਤਦੇ ਹਨ। ਮਕਸਦ ਅਕਸਰ "Linux ਬਦਲਣਾ" ਨਹੀਂ ਹੈ, ਬਲਕਿ "Linux ਨੂੰ ਟਿਊਨ ਕਰਨਾ" ਹੁੰਦਾ ਹੈ: ਖਾਸ ਸੁਰੱਖਿਆ hardening, ਹਾਰਡਵੇਅਰ ਲਈ ਪ੍ਰਦਰਸ਼ਨ ਅਪਟੀਮਾਈਜ਼ੇਸ਼ਨ, ਵੀਖ-ਯੋਗਤਾ ਲਈ ਸੁਧਾਰ, ਜਾਂ ਆਪਣੇ ਸ਼ਡਿਊਲ 'ਤੇ fixes ਨੂੰ ਬੈਕਪੋਰਟ ਕਰਨਾ। ਇਹ ਦੱਸਦਾ ਹੈ ਕਿ Linux ਇੱਕ ਸਥਾਨਕ ਆਧਾਰ ਹੋਣ ਦੇ ਨਾਲ-ਨਾਲ ਇੱਕ ਤਲ-ਅਨੁਕੂਲ ਇੰਜਣ ਵੀ ਹੋ ਸਕਦਾ ਹੈ।
ਕੰਟੇਨਰ ਨੂੰ ਸੋਚਣ ਲਈ ਇੱਕ ਉਪਯੋਗੀ ਤਰੀਕਾ ਹੈ: ਪ੍ਰੋਸੈਸ ਇਨਸੋਲੇਸ਼ਨ + ਪੈਕੇਜਿੰਗ। ਇੱਕ ਕੰਟੇਨਰ ਇੱਕ ਛੋਟਾ VM ਨਹੀਂ ਹੈ ਜਿਸਦਾ ਆਪਣਾ kernel ਹੋਵੇ। ਇਹ ਤੁਹਾਡੀ ਐਪ (ਅਤੇ ਉਸ ਦੀਆਂ ਫਾਇਲਾਂ) ਵਧੀਆ Linux ਪ੍ਰੋਸੈਸਾਂ ਵਜੋਂ ਚਲ ਰਹੀ ਹੁੰਦੀ ਹੈ, ਪਰ ਸੰਭਾਲੇ ਹੋਏ ਸੀਮਾਵਾਂ ਅਤੇ ਸੀਮਾਵਾਂ ਨਾਲ।
Linux ਕੰਟੇਨਰ ਸੰਭਵ ਕਰਨ ਲਈ ਕੁਝ ਮੁੱਖ ਫੀਚਰ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ, ਖ਼ਾਸ ਕਰਕੇ:
Namespaces: ਇਹ ਨਿਰਧਾਰਤ ਕਰਦੀਆਂ ਹਨ ਕਿ ਇੱਕ ਪ੍ਰੋਸੈਸ ਕੀ “ਦੇਖ” ਸਕਦਾ ਹੈ। ਇੱਕ ਪ੍ਰੋਸੈਸ ਨੂੰ ਆਪਣੀ PID ਦਿਸ਼ਾ, ਨੈੱਟਵਰਕ ਅਤੇ ਮਾਊਂਟਡ ਫਾਇਲਸਿਸਟਮਾਂ ਦਾ ਕੁਝ ਮੂਲ ਦਰਸਾਉਂਦੀ ਦਿੱਖ ਮਿਲ ਸਕਦੀ ਹੈ। ਇਸ ਤਰ੍ਹਾਂ ਕੰਟੇਨਰ ਦੇ ਅੰਦਰ ਤੁਸੀਂ "PID 1" ਤੇ ਇੱਕ ਨਿੱਜੀ ਨੈੱਟਵਰਕ ਇੰਟਰਫੇਸ ਦੇਖ ਸਕਦੇ ਹੋ—ਹਾਲਾਂਕਿ ਇਹ ਅਜੇ ਵੀ ਇੱਕੋ ਹੋਸਟ ਮਸ਼ੀਨ ਉੱਤੇ ਚੱਲ ਰਿਹਾ ਹੈ।
cgroups (control groups): ਇਹ ਨਿਰਧਾਰਤ ਕਰਦੇ ਹਨ ਕਿ ਇੱਕ ਪ੍ਰੋਸੈਸ ਕੀ “ਵਰਤ” ਸਕਦਾ ਹੈ। ਉਹ CPU, ਮੈਮੋਰੀ ਅਤੇ ਹੋਰ ਲਈ ਸੀਮਾਵਾਂ ਅਤੇ ਲੇਖਾ-ਜੋਖਾ ਸੈੱਟ ਕਰਦੇ ਹਨ। ਬਿਨਾਂ cgroups ਦੇ, "noisy neighbor" ਐਪ ਹੋਰ ਵਰਕਲੋਡਾਂ ਨੂੰ ਭੁਖਾ ਕਰ ਸਕਦੀ ਸੀ।
ਲੈਅਰਡ ਫਾਇਲਸਿਸਟਮਾਂ ਵਰਗੀਆਂ ਸਮਰਥਕ ਚੀਜ਼ਾਂ ਅਤੇ ਕੰਟੇਨਰ ਇਮੇਜਜ਼ ਲਈ Linux capabilities ਜੋ ਹਰ ਚੀਜ਼ ਨੂੰ root ਵਜੋਂ ਚਲਾਉਣ ਤੋਂ ਰੋਕਦੀਆਂ ਹਨ ਮਿਲਾ ਕੇ, ਤੁਸੀਂ ਇੱਕ ਪ੍ਰਯੋਗਿਕ, ਹਲਕਾ-ਫੁulka ਇਨਸੋਲੇਸ਼ਨ ਮਾਡਲ ਪ੍ਰਾਪਤ ਕਰਦੇ ਹੋ।
Kubernetes ਆਪੇ ਵਿੱਚ ਕੰਟੇਨਰ ਚਲਾਉਣ ਦੀ ਜਾਦੂ ਨਹੀਂ ਕਰਦਾ। ਹਰ worker node 'ਤੇ ਇਹ Linux ਦੇ predictable ਬਿਹੇਵਿਅਰ 'ਤੇ ਨਿਰਭਰ ਹੈ:
ਇਸ ਲਈ ਜਦ Kubernetes "ਇੱਕ ਪੋਡ ਸਡਿਊਲ ਕਰਦਾ ਹੈ," ਫਰਮਾਇਸ਼ ਆਖ਼ਰਕਾਰ ਉਸ ਥਾਂ 'ਤੇ ਲਾਗੂ ਹੁੰਦੀ ਹੈ ਜਿੱਥੇ ਗਿਣਤੀ ਹੁੰਦੀ ਹੈ: worker ਮਸ਼ੀਨ ਦੇ Linux kernel ਉੱਤੇ।
ਜੇ ਤੁਸੀਂ ਸਮਝਦੇ ਹੋ ਕਿ Linux 'ਤੇ ਪ੍ਰੋਸੈਸ, ਫਾਇਲਾਂ, ਪਰਮੀਸ਼ਨ, ਨੈੱਟਵਰਕਿੰਗ ਅਤੇ ਰਿਸੋਰਸ ਲਿਮਿਟਸ ਕਿਵੇਂ ਕੰਮ ਕਰਦੇ ਹਨ, ਤਾਂ ਕੰਟੇਨਰ ਰਹਸਮੀ ਨਹੀਂ ਰਹਿੰਦੇ। Docker ਜਾਂ Kubernetes ਸਿੱਖਣਾ ਫਿਰ ਹੁੰਦਾ ਹੈ ਹੁਕਮਾਂ ਨੂੰ ਯਾਦ ਕਰਨ ਤੋਂ ziyada Linux ਮੂਲਭੂਤ ਤੱਤਾਂ ਨੂੰ ਇਕ ਸੰਰਚਿਤ ਤਰੀਕੇ ਨਾਲ ਲਾਗੂ ਕਰਨ ਵੱਲ।
DevOps ਮੁੱਖ ਤੌਰ 'ਤੇ ਡਿਲਿਵਰੀ ਦੀ ਰਫ਼ਤਾਰ ਅਤੇ ਸੁਰੱਖਿਆ ਬਾਰੇ ਹੈ: ਬਦਲਾਵ ਬਾਰ-ਬਾਰ ਭੇਜੋ, ਜਦ ਕੁਝ ਤੋਟ ਹੋਵੇ ਤਾਂ ਤੇਜ਼ੀ ਨਾਲ ਠੀਕ ਕਰੋ, ਅਤੇ ਨੁਕਸਾਨ ਛੋਟਾ ਰੱਖੋ। Linux ਇਸ ਲਕੜੀ ਦੇ ਨਾਲ ਫਿੱਟ ਹੁੰਦਾ ਹੈ ਕਿਉਂਕਿ ਇਹ ਇੱਕ ਪ੍ਰੋਗਰਾਮਯੋਗ, ਨਿਰੀਖਣ ਯੋਗ ਸਿਸਟਮ ਵਜੋਂ ਡਿਜ਼ਾਇਨ ਕੀਤਾ ਗਿਆ ਹੈ—ਇੱਕ ਐਸਾ ਸਿਸਟਮ ਜਿਸਨੂੰ ਤੁਸੀਂ ਲੈਪਟੌਪ, VM ਜਾਂ ਸਰਵਰ ਫਲੀਟ 'ਤੇ ਇੱਕੋ ਤਰੀਕੇ ਨਾਲ ਕੰਟਰੋਲ ਕਰ ਸਕਦੇ ਹੋ।
Linux ਆਟੋਮੇਸ਼ਨ ਨੂੰ ਵਾਸਤੇ ਉਪਯੋਗ ਬਣਾਉਂਦਾ ਹੈ ਕਿਉਂਕਿ ਇਸਦੀਆਂ ਰੋਜ਼ਾਨਾ ਬਿਲਡਿੰਗ-ਬਲਾਕ ਸਕ੍ਰਿਪਟ-ਫ੍ਰੈਂਡਲੀ ਹਨ। ਸ਼ੈੱਲ, ਮਿਆਰੀ ਯੂਟਿਲਿਟੀ ਅਤੇ "ਇੱਕ ਕੰਮ ਚੰਗੀ ਤਰ੍ਹਾਂ ਕਰੋ" ਟੂਲ ਸੰਸਕ੍ਰਿਤੀ ਨਾਲ ਤੁਸੀਂ ਸਧਾਰਣ ਭਾਗਾਂ ਤੋਂ ਵਰਕਫਲੋassemble ਕਰ ਸਕਦੇ ਹੋ: ਸੇਵਾ ਪ੍ਰੋਵਿਜਨ ਕਰੋ, ਲੌਗ ਰੋਟੇਟ ਕਰੋ, ਡਿਸਕ ਸਥਿਤੀ ਦੀ ਜਾਂਚ ਕਰੋ, ਪ੍ਰੋਸੈਸ ਰੀਸਟਾਰਟ ਕਰੋ, ਜਾਂ smoke ਟੈਸਟ ਚਲਾਓ।
ਅੰਦਰੂਨੀ ਤੌਰ 'ਤੇ, Linux ਇਹ ਵੀ ਨਿਰਧਾਰਤ ਕਰਦਾ ਹੈ ਕਿ ਸੇਵਾਵਾਂ ਕਿਵੇਂ ਵਰਤਣ:
apt, dnf/yum ਆਦਿ) ਤਾ ਕਿ ਇੰਸਟਾਲ ਅਤੇ ਅਪਗਰੇਡ ਦੁਹਰਾਏ ਜਾ ਸਕਣDevOps ਟੀਮਾਂ ਆਮ ਤੌਰ 'ਤੇ ਇੱਕ (ਜਾਂ ਦੋਹਾਂ) approaches 'ਤੇ ਆਉਂਦੀਆਂ ਹਨ:
Linux ਦੋਹਾਂ ਨੂੰ ਚੰਗੀ ਤਰ੍ਹਾਂ ਸਹਾਰਦਾ ਹੈ ਕਿਉਂਕਿ ਫਾਇਲਸਿਸਟਮ ਲੇਆਉਟ, ਸੇਵਾ ਪਰੰਪਰਾਵਾਂ ਅਤੇ ਪੈਕੇਜਿੰਗ ਇਕਸਾਰ ਹਨ।
ਆਟੋਮੇਸ਼ਨ ਤਦ ਹੀ ਮੁੱਲ ਵਾਲੀ ਹੈ ਜਦ ਸਿਸਟਮ predictable ਤਰੀਕੇ ਨਾਲ ਵਰਤੋਂ ਕਰਦੇ ਹਨ। Linux kernel ਦੀ ਸਥਿਰਤਾ ਕੰਮ-ਕਾਜੀਆਂ ਵਿੱਚ ਅਦੁੱਠੇ ਅਚੰਭਿਆਂ ਨੂੰ ਘਟਾਉਂਦੀ ਹੈ (ਨੈੱਟਵਰਕਿੰਗ, ਸਟੋਰੇਜ, ਸ਼ੈਡਿਊਲਿੰਗ), ਜਿਸ ਨਾਲ ਡਿਪਲੋਇਮੈਂਟ ਅਤੇ ਰੋਲਬੈਕ ਘੱਟ ਜੋਖਮ ਵਾਲੇ ਬਣ ਜਾਂਦੇ ਹਨ।
ਇਸੇ ਤਰ੍ਹਾਂ ਨਜ਼ਰਦਾਰੀ ਵੀ ਬਰਾਬਰ ਜ਼ਰੂਰੀ ਹੈ: Linux ਡੀਬੱਗਿੰਗ ਅਤੇ ਪ੍ਰਦਰਸ਼ਨ ਵਿਸ਼ਲੇਸ਼ਣ ਲਈ ਮਜ਼ਬੂਤ ਟੂਲ ਦਿੰਦਾ ਹੈ—ਲੌਗ, ਮੈਟਰਿਕਸ, ਟਰੇਸਿੰਗ, ਅਤੇ ਆਧੁਨਿਕ kernel ਫੀਚਰ ਜਿਵੇਂ eBPF—ਤਾਂ ਜੋ ਟੀਮਾਂ ਤੇਜ਼ੀ ਨਾਲ ਪੁੱਛ ਸਕਣ “ਕੀ ਬਦਲਿਆ?” ਅਤੇ “ਕਿਉਂ ਫੇਲ ਹੋਇਆ?” ਅਤੇ ਫਿਰ ਠੀਕ ਕਰਨ ਵਾਲੀ ਸੋਧ ਨੂੰ ਆਟੋਮੇਸ਼ਨ ਵਿੱਚ ਵਾਪਸ ਦਰਜ ਕਰ ਸਕਣ।
Linux "open source" ਹੈ, ਜਿਸਦਾ ਅਰਥ ਹੈ ਕਿ ਸੋర్స్ ਕੋਡ ਪਬਲਿਕ ਤੌਰ 'ਤੇ ਉਪਲਬਧ ਹੈ ਅਤੇ ਲਾਇਸੈਂਸ ਅਨੁਸਾਰ ਲੋਕ ਇਸਨੂੰ ਵਰਤ, ਪੜ੍ਹ, ਸੋਧ ਅਤੇ ਸਾਂਝਾ ਕਰ ਸਕਦੇ ਹਨ। ਇਹ "ਮੁਫ਼ਤ-of-charge" ਤੋਂ ਵੱਖਰਾ ਹੈ। ਕਈ Linux ਹਿੱਸੇ ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ $0 ਹੋ ਸਕਦੇ ਹਨ, ਪਰ ਸੰਸਥਾਵਾਂ ਫਿਰ ਵੀ ਇੰਜੀਨੀਅਰਿੰਗ ਸਮਾਂ, ਸੁਰੱਖਿਆ ਕੰਮ, ਲੰਬੀ ਮਿਆਦ ਸਮਰਥਨ, ਸਰਟੀਫਿਕੇਸ਼ਨ, ਟ੍ਰੇਨਿੰਗ ਅਤੇ ਕਈ ਵਾਰ ਕਮਰਸ਼ੀਅਲ distributions ਲਈ ਅਸਲ ਪੈਸਾ ਖਰਚ ਕਰਦੀਆਂ ਹਨ।
ਕੰਪਨੀਆਂ Linux 'ਤੇ ਸਹਿਯੋਗ ਸਦਕਾ ਨਹੀਂ ਕਰਦੀਆਂ—ਉਹ ਇਹ ਇਸ ਲਈ ਕਰਦੀਆਂ ਹਨ ਕਿਉਂਕਿ ਇਹ ਕਾਰਗਰ ਹੈ।
ਪਹਿਲਾਂ, ਸਾਂਝੀ ਰਖ-ਰਖਾਅ ਲਾਗਤ ਘਟਾਉਂਦੀ ਹੈ। ਜਦ ਹਜ਼ਾਰਾਂ ਸੰਸਥਾਵਾਂ ਇੱਕੋ kernel 'ਤੇ ਨਿਰਭਰ ਹੁੰਦੀਆਂ ਹਨ, ਤਾਂ ਦਸਾਂ ਪ੍ਰਾਈਵੇਟ forks ਨੂੰ ਸੰਭਾਲਣ ਦੀ ਤੁਲਨਾ ਵਿੱਚ ਇੱਕ ਸਾਂਝੇ ਨੀਂਹ ਨੂੰ ਸੁਧਾਰਨਾ ਸਸਤਾ ਪੈਂਦਾ ਹੈ। ਬੱਗ ਫਿਕਸ ਅਤੇ ਪ੍ਰਦਰਸ਼ਨ ਸੁਧਾਰ ਸਾਰਿਆਂ ਲਈ ਲਾਭਕਾਰੀ ਹੁੰਦੇ ਹਨ, ਸਹਿਯੋਗੀ ਸਮੇਤ।
ਦੂਜਾ, ਇਹ ਨਵੀਨਤਾ ਨੂੰ ਤੇਜ਼ ਕਰਦਾ ਹੈ। ਹਾਰਡਵੇਅਰ ਵੇਂਡਰ, ਕਲਾਉਡ ਪ੍ਰਦਾਤਾ, ਅਤੇ ਸੌਫਟਵੇਅਰ ਕੰਪਨੀਆਂ ਇਕ ਵਾਰੀ ਫੀਚਰ ਸ਼ਾਮਿਲ ਕਰ ਸਕਦੀਆਂ ਹਨ ਅਤੇ ਇਸਦੇ ਵਿਆਪਕ ਅਪਣਾਉਣ ਦਾ ਲਾਭ ਲੈ ਸਕਦੀਆਂ ਹਨ; ਵੱਖ-ਵੱਖ ਗਾਹਕਾਂ ਨਾਲ ਅਲੱਗ-ਅਲੱਗ ਇੰਟੀਗ੍ਰੇਸ਼ਨ ਕਰਨ ਦੀ ਜ਼ਰੂਰਤ ਨਹੀਂ ਰਹਿੰਦੀ।
ਤੀਜਾ, ਇਹ ਨੌਕਰੀ ਦੀ ਲਾਈਨ ਪੈਦਾ ਕਰਦਾ ਹੈ। ਜੋ ਇੰਜੀਨੀਅਰ upstream ਵਿੱਚ ਯੋਗਦਾਨ ਦਿੰਦੇ ਹਨ, ਉਹਨੀਆਂ ਦੀਆਂ ਸਕਿਲਾਂ ਵੱਖ-ਵੱਖ ਨੌਕਰੀਆਂ 'ਤੇ ਲਾਗੂ ਹੁੰਦੀਆਂ ਹਨ। ਕੰਪਨੀਆਂ ਲਈ, upstream ਅਨੁਭਵ ਵਾਲਾ ਕੋਈ ਭਰਤੀ ਕਰਨਾ अक्सर ਪ੍ਰੋਡਕਸ਼ਨ ਮੁੱਦਿਆਂ ਨੂੰ ਘੱਟ ਸਪਰਾਈਜ਼ ਦੇਂਦਾ ਹੈ।
"Upstream" ਮੁੱਖ Linux ਪ੍ਰੋਜੈਕਟ ਹੈ ਜਿੱਥੇ ਬਦਲਾਵ ਸਮੀਖਿਆ ਅਤੇ ਮਰਜ ਹੁੰਦੇ ਹਨ। "Downstream" ਉਹ ਹੈ ਜਿੱਥੇ ਉਹ ਕੋਡ ਪੈਕੇਜ ਹੋ ਕੇ ਉਤਪਾਦਾਂ ਵਿੱਚ ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ—ਜਿਵੇਂ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਡਿਸਟ੍ਰੋ, ਐਂਬੈਡਡ ਸਿਸਟਮ, appliances, ਜਾਂ ਕਲਾਉਡ ਇਮੇਜ।
ਅਮਲੀ ਤੌਰ 'ਤੇ, ਸਮਝਦਾਰ ਕੰਪਨੀਆਂ ਜ਼ਿਆਦਾਤਰ fixes upstream ਭੇਜਦੀਆਂ ਹਨ। ਇੱਕ ਬਦਲਾਵ ਨੂੰ downstream-ਕੇਵਲ ਰੱਖਣ ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਤੁਹਾਨੂੰ ਹਰ ਨਵੇਂ kernel ਰੀਲੀਜ਼ ਤੇ ਉਸਨੂੰ ਦੁਬਾਰਾ ਲਗਾਉਣਾ ਪਵੇਗਾ, conflicts ਹੱਲ ਕਰਨੇ ਪੈਣਗੇ, ਅਤੇ ਜੋਖਮ ਇੱਕੱਲੇ ਵਾਹੇ ਨੂੰ ਸੰਭਾਲਣਾ ਪਏਗਾ। Upstreaming ਪ੍ਰਾਈਵੇਟ ਰਖ-ਰਖਾਅ ਨੂੰ ਸਾਂਝੇ ਰਖ-ਰਖਾਅ ਵਿੱਚ ਬਦਲ ਦਿੰਦਾ ਹੈ—open-source ਇੰਜੀਨੀਅਰਿੰਗ ਵਿੱਚ ਇਹ ਸਪੱਸ਼ਟ ਕਾਰੋਬਾਰੀ ਫ਼ਾਇਦਾ ਹੈ।
Linux ਸੁਰੱਖਿਆ ਇਸ ਮੰਨਤਖਿਆ 'ਤੇ ਆਧਾਰਿਤ ਨਹੀਂ ਕਿ ਸੌਫਟਵੇਅਰ "ਪਰਫੈਕਟ" ਹੋ ਸਕਦਾ ਹੈ। ਇਹ ਅਸਲ ਵਿੱਚ ਮੁੱਦੇ ਤੇਜ਼ੀ ਨਾਲ ਲੱਭਣ, ਤੇਜ਼ੀ ਨਾਲ ਠੀਕ ਕਰਨ, ਅਤੇ ਉਹ fixes ਵਿਆਪਕ ਤੌਰ 'ਤੇ ਭੇਜਣ 'ਤੇ ਨਿਰਭਰ ਹੈ। ਇਹ ਮਨੋਭਾਵ ਇੱਕ ਕਾਰਨ ਹੈ ਕਿ Linux ਸਰਵਰ, ਕਲਾਉਡ ਇੰਫ੍ਰਾਸਟਰੱਕਚਰ, ਅਤੇ DevOps ਭਾਰੀ ਮਾਹੌਲਾਂ ਵਿੱਚ ਵਿਸ਼ਵਾਸ ਜਿੱਤਦਾ ਜਾ ਰਿਹਾ ਹੈ।
ਜਦ vulnerabilities ਮਿਲਦੀਆਂ ਹਨ, ਤਦ ਇੱਕ ਜਾਣ-ਪਹਿਚਾਣ ਵਾਲਾ ਰਸਤਾ ਹੈ: ਜ਼ਿੰਮੇਵਾਰ ਖੁਲਾਸਾ, ਸਹਯੋਗੀ ਫਿਕਸ, ਅਤੇ ਤੇਜ਼ ਪੈਚ ਰਿਲੀਜ਼। kernel ਕਮਿਊਨਿਟੀ 'ਚ ਸਪੱਸ਼ਟ ਪ੍ਰਕਿਰਿਆਵਾਂ ਹਨ ਜਿੱਥੇ ਮੁੱਦੇ ਰਿਪੋਰਟ ਕੀਤੇ ਜਾਂਦੇ ਹਨ, ਚਰਚਾ ਹੁੰਦੀ ਹੈ (ਕਦੇ-ਕਦੇ ਨਿੱਜੀ ਤਰੀਕੇ ਨਾਲ ਜਦ ਤੱਕ ਫਿਕਸ ਤਿਆਰ ਨਾ ਹੋਵੇ), ਅਤੇ ਫਿਰ ਪੈਚ ਅਤੇ advisories ਜਾਰੀ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ।
ਉੱਤੋਂ ਹੀ ਮਹੱਤਵਪੂਰਨ ਹੈ ਕਿ ਬਦਲਾਵ ਕਿਵੇਂ ਸਵੀਕਾਰ ਹੁੰਦੇ ਹਨ। Kernel ਕੋਡ ਨੂੰ maintainers ਦੁਆਰਾ ਜੋ ਖਾਸ ਸਬਸਿਸਟਮ ਵਿੱਚ ਨਿਪੁੰਨ ਹਨ ਉਹ ਸਮੀਖਿਆ ਕਰਦੇ ਹਨ (ਨੈੱਟਵਰਕਿੰਗ, ਫਾਈਲਸਿਸਟਮ, ਮੇਮੋਰੀ, ਡਰਾਈਵਰ)। ਉਹ ਸਮੀਖਿਆ ਸੱਭਿਆਚਾਰ ਬੱਗ ਨੂੰ ਖਤਮ ਨਹੀਂ ਕਰਦਾ, ਪਰ ਇਸ ਨਾਲ ਜੋਖਿਮ ਭਰੇ ਬਦਲਾਵ ਘੱਟ ਹੁੰਦੇ ਹਨ ਅਤੇ ਮੁੱਦੇ ਜਸ਼ਨ ਤੋਂ ਪਹਿਲਾਂ ਪਕੜੇ ਜਾਣ ਦੀ ਸੰਭਾਵਨਾ ਵੱਧ ਜਾਂਦੀ ਹੈ।
ਅਸਲ ਦੁਨੀਆਂ ਦੀ ਸੁਰੱਖਿਆ ਲਈ ਗਤੀ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਜਦ ਕੋਈ ਕਮੀ ਜਨਤਕ ਹੋ ਜਾਂਦੀ ਹੈ (ਅਤੇ ਕਈ ਵਾਰ ਜਨਤਕ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ), ਹਮਲਾਵਰ ਤੇਜ਼ੀ ਨਾਲ ਕੰਮ ਕਰਦੇ ਹਨ। ਇਕ ਸਿਸਟਮ ਜੋ ਵਿਸ਼ਵਾਸਯੋਗ ਤਰੀਕੇ ਨਾਲ ਅਪਡੇਟ ਲਾਗੂ ਕਰ ਸਕਦਾ ਹੈ—ਬਿਨਾਂ ਨਾਟਕ ਦੇ—ਉਹ ਸਿਸਟਮ ਅਕਸਰ ਉਹ ਬਿਹਤਰ ਹੋਵੇਗਾ ਜੋ ਕਦੇ-ਕਦੇ ਹੀ ਅਪਡੇਟ ਕਰਦਾ ਹੈ।
Linux ਨੂੰ ਵਿਆਪਕ ਤਾਇਨਾਤੀ ਤੋਂ ਵੀ ਫਾਇਦਾ ਹੁੰਦਾ ਹੈ। ਮੁੱਦੇ ਵੱਖ-ਵੱਖ ਭਾਰੀਆਂ ਵਰਕਲੋਡਾਂ ਹੇਠਾਂ surfaced ਹੁੰਦੇ ਹਨ, ਅਤੇ fixes ਬਹੁਤ ਸੀ ਮਾਹੌਲਾਂ 'ਚ ਟੈਸਟ ਹੁੰਦੇ ਹਨ। ਇੱਥੇ ਪੈਮਾਨਾ ਇੱਕ ਫੀਡਬੈਕ ਲੂਪ ਹੈ: ਵੱਧ ਉਪਭੋਗਤਾਵਾਂ ਦਾ ਮਤਲਬ ਹੋ ਸਕਦਾ ਹੈ ਵੱਧ ਬੱਗ ਰਿਪੋਰਟ, ਵੱਧ ਨਜ਼ਰ, ਅਤੇ ਤੇਜ਼ ਦੁਹਰਾਵ।
LTS kernel (ਜਾਂ ਉਹ distro ਜੋ LTS ਨੂੰ ਟ੍ਰੈਕ ਕਰਦਾ ਹੈ) ਪ੍ਰੋਡਕਸ਼ਨ ਵਰਕਲੋਡ ਲਈ ਵਰਤੋ।
ਕਰਨਲ ਅਤੇ ਆਵਸ਼ਯਕ ਯੂਜ਼ਰ-ਸਪੇਸ ਕੰਪੋਨੈਂਟਾਂ ਨੂੰ ਨਿਯਮਤ ਤਰੀਕੇ ਨਾਲ ਅਪਡੇਟ ਰੱਖੋ; ਪੈਚਿੰਗ ਨੂੰ ਕੇਵਲ ਐਮਰਜੈਂਸੀ ਕੰਮ ਨਾਂ ਮੰਨੋ—ਇਹ ਰੋਜ਼ਾਨਾ ਰਖ-ਰਖਾਅ ਵਾਂਗ ਵਿਹਾਰ ਕਰੋ।
ਅਟੈਕ ਸਤਹ ਘਟਾਓ: ਅਣ-ਚਾਹੀ ਸੇਵਾਵਾਂ ਬੰਦ ਕਰੋ, ਲੋੜ ਤੋਂ ਵੱਧ ਪੈਕੇਜ ਹਟਾਓ, ਅਤੇ ਜ਼ਰੂਰੀ ਨਾ ਹੋਣ ਵਾਲੇ kernel ਮੌਡੀਊਲਾਂ ਨੂੰ ਲੋਡ ਕਰਨ ਤੋਂ ਬਚੋ।
Open source ਆਡਿਟਿੰਗ ਅਤੇ ਜਵਾਬਦੇਹੀ ਵਿੱਚ ਸਹਾਇਤਾ ਕਰਦਾ ਹੈ—ਪਰ ਇਹ ਸੁਰੱਖਿਆ ਦੀ ਗੈਰੰਟੀ ਨਹੀਂ ਦਿੰਦਾ। ਸੁਰੱਖਿਆ ਅੱਛੇ ਡਿਫ਼ਾਲਟ, ਸਮੇਂ ਤੇ ਪੈਚਿੰਗ, ਧਿਆਨਪੂਰਵਕ ਸੰਰਚਨਾ, ਅਤੇ ਅਨੁਸ਼ਾਸਿਤ ਓਪਰੇਸ਼ਨਾਂ 'ਤੇ ਨਿਰਭਰ ਕਰਦੀ ਹੈ। Linux ਮਾਡਲ ਸਭ ਤੋਂ ਵਧੀਆ ਤਦੋਂ ਕੰਮ ਕਰਦਾ ਹੈ ਜਦ ਇੰਜੀਨੀਅਰਿੰਗ ਪ੍ਰਕਿਰਿਆ ਲਗਾਤਾਰ ਰਖ-ਰਖਾਅ ਨਾਲ ਮਿਲਦੀ ਹੈ।
Linux ਸਰਵਰਾਂ ਅਤੇ ਕਲਾਉਡ ਵਰਕਲੋਡ ਲਈ ਸ਼ਾਨਦਾਰ ਡਿਫੌਲਟ ਹੈ, ਪਰ ਇਹ ਹਰੇਕ ਮਹੌਲ ਜਾਂ ਹਰ ਟੀਮ ਲਈ ਸਹੀ ਜਵਾਬ ਨਹੀਂ ਹੈ। ਮੁੱਖ ਗੱਲ ਇਹ ਵੱਖਰਾ ਕਰਨੀ ਹੈ "Linux ਲੋਕਪ੍ਰਿਆ ਹੈ" ਅਤੇ "Linux ਸਾਡੇ ਬਾਹਰੀ ਪਾਬੰਦੀਆਂ ਨੂੰ ਫਿੱਟ ਹੈ"।
ਕੁਝ ਵਰਕਲੋਡ ਅਮਲੀ ਸੀਮਾਵਾਂ ਨੂੰ ਛੂਹਦੇ ਹਨ ਜੋ ਵਿਚਾਰਧਾਰਾ ਨਾਲ ਸਬੰਧਤ ਨਹੀਂ:
Linux "ਸਧਾਰਣ" ਮਹਿਸੂਸ ਹੋ ਸਕਦਾ ਹੈ ਜਦ ਤਕ ਤੁਸੀਂ ਡਿਫ਼ਾਲਟ ਤੋਂ ਬਾਹਰ ਜਾਣਾ ਨਾ ਚਾਹੋ:
ਜੇ ਤੁਹਾਡਾ ਲਕੜੀ ਫੀਚਰ ਭੇਜਣਾ ਹੈ, ਨਾ ਕਿ ਸਰਵਰ ਚਲਾਉਣਾ, ਤਾਂ managed services ਬਹੁਤ ਸਾਰੀ OS-ਸਤਹ ਦੀ ਮੁਰੰਮਤ ਘਟਾ ਦਿੰਦੇ ਹਨ: managed databases, serverless functions, ਜਾਂ hosted Kubernetes ਪਲੇਟਫਾਰਮ। ਤੁਸੀਂ ਹਾਲਾਂਕਿ ਹੇਠਾਂ Linux ਤੋਂ ਲਾਭ ਉਠਾਵੋਗੇ, ਪਰ ਤੁਹਾਨੂੰ kernels ਪੈਚ ਕਰਨ ਜਾਂ ਡਰਾਈਵਰ ਮੁੱਦਿਆਂ ਦੇ ਪਿੱਛੇ ਨਹੀਂ ਭੱਜਣਾ ਪਏਗਾ।
ਇਸੇ ਤਰ੍ਹਾਂ, ਇੰਫਰਾਸਟਰੱਕਚਰ ਨੂੰ ਅਬਸਟ੍ਰੈਕਟ ਕਰਨ ਵਾਲੇ ਪਲੇਟਫਾਰਮ ਦਿਨ-ਰੋਜ਼ ਦੀ "Linux ਪਲੰਬਿੰਗ" ਦੀ ਜ਼ਰੂਰਤ ਘਟਾ ਸਕਦੇ ਹਨ। ਉਦਾਹਰਨ ਲਈ, Koder.ai ਇੱਕ vibe-coding ਪਲੇਟਫਾਰਮ ਹੈ ਜੋ ਟੀਮਾਂ ਨੂੰ ਚੈਟ ਇੰਟਰਫੇਸ ਤੋਂ ਵੈੱਬ, ਬੈਕਅੈਂਡ ਅਤੇ ਮੋਬਾਇਲ ਐਪ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ, ਫਿਰ ਵੀ ਅਸਲੀ ਡਿਪਲੋਯਬਲ ਸੌਫਟਵੇਅਰ ਪੈਦਾ ਕਰਦਾ ਹੈ (ਫਰੰਟਐਂਡ 'ਤੇ React, ਬੈਕਅੈਂਡ 'ਤੇ Go + PostgreSQL, ਮੋਬਾਇਲ ਲਈ Flutter)। Linux ਬੁਨਿਆਦੀ ਗਿਆਨ ਵਧੀਆ ਰਹਿੰਦਾ—ਪਰ ਐਸੋ ਜਿਹੇ ਟੂਲ ਤੁਹਾਡੇ ਉੱਤੇ boilerplate ਵਾਤਾਵਰਣ ਸੈਟਅੱਪ ਕਰਨ ਦੀ ਜ਼ਿੰਮੇਵਾਰੀ ਘਟਾ ਸਕਦੇ ਹਨ ਅਤੇ ਤੁਹਾਨੂੰ ਉਤਪਾਦ ਵਿਵਹਾਰ ਤੇ ਤੇਜ਼ੀ ਨਾਲ ਦੁਹਰਾਉਣ ਦੀ ਆਜ਼ਾਦੀ ਦੇ ਸਕਦੇ ਹਨ, ਫਿਰ ਡਿਪਲੋਏਮੈਂਟ ਸਨੈਪਸ਼ੌਟ ਰੋਲਬੈਕ ਲਈ ਇੱਕ ਸਾਫ਼ ਰਸਤਾ ਦੇਂਦੇ ਹਨ।
ਜਦ ਤੁਸੀਂ ਵਾਤਾਵਰਣ 'ਤੇ ਕਬਜ਼ਾ ਰੱਖਦੇ ਹੋ ਅਤੇ portability ਨੂੰ ਮਹੱਤਵ ਦਿੰਦੇ ਹੋ, ਤਾਂ Linux ਚੁਣੋ। ਜਦ ਵੈਂਡਰ ਟੂਲਿੰਗ, ਲੈਗਸੀ ਐਪਸ, ਜਾਂ ਵਿਸ਼ੇਸ਼ ਹਾਰਡਵੇਅਰ ਇਸਦਾ ਹੁਕਮ ਦਿੰਦੇ ਹਨ, ਤਾਂ ਵਿਕਲਪ ਚੁਣੋ। ਸੰਦੇਹ ਹੋਵੇ ਤਾਂ ਛੋਟੇ proof-of-concept ਨਾਲ ਦੋ ਰਾਹਾਂ ਦੀ ਪਾਇਲਟ ਕਰੋ ਅਤੇ ਆਪਰੇਸ਼ਨਲ ਕੋਸ਼ਿਸ਼ (ਪੈਚਿੰਗ, ਮਾਨੀਟਰਿੰਗ, ਟ੍ਰਬਲਸ਼ੂਟਿੰਗ) ਦਾ ਦਸਤਾਵੇਜ਼ ਬਣਾਓ ਪਹਿਲਾਂ ਕਿ ਤੁਸੀਂ ਪੂਰਾ ਫੈਸਲਾ ਕਰੋ।
ਤੁਹਾਨੂੰ kernel ਡਿਵੈਲਪਰ ਬਣਨ ਦੀ ਲੋੜ ਨਹੀਂ ਕਿ Linux ਤੋਂ ਲਾਭ ਮਿਲੇ। ਕਲਾਉਡ ਅਤੇ DevOps ਕੰਮ ਲਈ ਮੰਤਵ ਪ੍ਰਯੋਗਿਕ ਫਲੂਏਂਸੀ ਹੈ: ਜਾਣਨਾ ਕਿ ਮਸ਼ੀਨ 'ਤੇ ਕੀ ਹੋ ਰਿਹਾ ਹੈ, ਕਿਵੇਂ ਇੰਨੀ ਚੇਜ਼ ਨੂੰ ਸੇਫ਼ ਤਰੀਕੇ ਨਾਲ ਬਦਲਣਾ ਹੈ, ਅਤੇ ਜਦ ਇਹ ਭੁੱਲ ਕਰੇ ਤਾਂ ਕਿਵੇਂ ਡੀਬੱਗ ਕਰਨਾ ਹੈ।
ਕੁਝ ਬੁਨਿਆਦੀ ਧਾਰਣਾਵਾਂ ਨਾਲ ਸ਼ੁਰੂ ਕਰੋ ਜੋ ਹਰ ਥਾਂ ਆਉਂਦੀਆਂ ਹਨ:
ps, top, ਸਿਗਨਲ, systemd ਬੁਨਿਆਦੀ (systemctl status/start/stop)ss, curl, dig, ਬੁਨਿਆਦੀ ਫਾਇਰਵਾਲ ਧਾਰਨਾdf, du), ਲੌਗ ਅਤੇ ਰੋਟੇਸ਼ਨchmod/chown, sudo, ਅਤੇ ਕਿਉਂ “ਸਿੱਧਾ root ਵਜੋਂ ਚਲਾਉਣਾ” ਗਲਤ ਨਤੀਜੇ ਦੇ ਸਕਦਾ ਹੈਇੱਕ ਛੋਟੀ, ਅਸਲ ਪ੍ਰੋਜੈਕਟ ਚੁਣੋ ਅਤੇ ਉਸ 'ਤੇ ਦੋਹਰਾਓ:
journalctl, /var/log/* ਵਰਤੋ, ਅਤੇ ਇਹ ਸਿੱਖੋ ਕਿ "request failed" ਨੂੰ ਕਿਸ ਤਰ੍ਹਾਂ ਕਿਸ਼ੇ ਨਿਰ্দਿਸ਼ਟ ਸੇਵਾ ਤੱਕ ਟਰੈੱਸ ਕਰਨਾ ਹੈ।ਜੇ ਤੁਸੀਂ ਦਸਤਾਵੇਜ਼ ਜਾਂ onboarding ਸੰਭਾਲਦੇ ਹੋ, ਆਪਣੀਆਂ ਕਾਰਜ-ਕਦਮਾਂ ਨੂੰ ਅੰਦਰੂਨੀ ਸਰੋਤਾਂ ਨਾਲ ਜੋੜੋ ਜਿਵੇਂ /docs, ਛੋਟੇ how-tos ਨੂੰ /blog 'ਤੇ ਸਾਂਝਾ ਕਰੋ, ਅਤੇ ਇਹ ਸਪੱਸ਼ਟ ਕਰੋ ਕਿ ਸਪੋਰਟ ਜਾਂ ਯੋਜਨਾਂ ਵਿੱਚ ਕੀ ਸ਼ਾਮਿਲ ਹੈ।
ਇੱਕ ਪ੍ਰਯੋਗਿਕ ਤਰੀਕਾ Linux ਗਿਆਨ ਨੂੰ ਮਜਬੂਤ ਕਰਨ ਦਾ ਇਹ ਹੈ ਕਿ ਇਸਨੂੰ ਉਹਨਾਂ delivery workflows ਨਾਲ ਜੁੜਿਆ ਜਾਵੇ ਜੋ ਤੁਸੀਂ ਪਹਿਲਾਂ ਹੀ ਵਰਤਦੇ ਹੋ: ਇ앱 ਬਣਾਉਣਾ, ਭੇਜਣਾ, ਅਤੇ ਚਲਾਉਣਾ। ਜੇ ਤੁਸੀਂ ਤੇਜ਼ ਪੈਮਾਨੇ 'ਤੇ ਪ੍ਰੋਟੋਟਾਈਪ ਕਰ ਰਹੇ ਹੋ (ਉਦਾਹਰਨ ਲਈ, Koder.ai ਵਰਤ ਕੇ ਚੈਟ ਤੋਂ ਇੱਕ ਸਰਵਿਸ ਜਨਰੇਟ ਅਤੇ ਦੁਹਰਾਉਣਾ), ਤਾਂ ਹਰ ਇਟਰੈਸ਼ਨ ਨੂੰ Linux ਦੀ ਉਹ surface area ਅਭਿਆਸ ਕਰਨ ਦਾ ਮੌਕਾ ਮੰਨੋ—ਪ੍ਰੋਸੈਸ ਲਾਈਫਸਾਈਕਲ, ਲੌਗ, ਪੋਰਟ, ਰਿਸੋਰਸ ਲਿਮਿਟਸ, ਅਤੇ ਰੋਲਬੈਕ ਅਨੁਸ਼ਾਸਨ।
Linux ਨੂੰ ਸਮਝਣਾ ਕਲਾਉਡ ਅਤੇ DevOps ਫੈਸਲਿਆਂ ਨੂੰ ਇੰਜੀਨੀਅਰਿੰਗ ਚੋਣਾਂ ਬਣਾਉਂਦਾ ਹੈ—ਅਨੁਮਾਨ ਨਹੀਂ। ਤੁਸੀਂ ਜਾਣੋਗੇ ਕਿ ਇੱਕ ਟੂਲ ਸਿਸਟਮ 'ਤੇ ਕੀ ਬਦਲਦਾ ਹੈ, ਕਿਵੇਂ ਉਸਨੂੰ ਡੀਬੱਗ ਕਰਨਾ ਹੈ, ਅਤੇ ਕਦੋਂ ਇੱਕ "ਸਧਾਰਨ" ਕਨਫਿਗਰੇਸ਼ਨ ਜੋਖਮ ਲੁਕਾ ਰਿਹਾ ਹੈ।
Linux kernel ਉਹ ਮੁੱਖ ਪ੍ਰੋਗ੍ਰਾਮ ਹੈ ਜੋ CPU, ਮੈਮੋਰੀ, ਸਟੋਰੇਜ, ਨੈੱਟਵਰਕਿੰਗ ਅਤੇ ਪ੍ਰੋਸੈਸ ਇਨਸੋਲੇਸ਼ਨ ਨੂੰ ਸੰਭਾਲਦਾ ਹੈ। ਇੱਕ Linux distribution (Ubuntu, Debian, RHEL ਆਦਿ) ਨੂੰ ਇੱਕ ਪੂਰਾ ਸਿਸਟਮ ਚਲਾਉਣ ਲਈ ਲੋੜੀਂਦੇ ਯੂਜ਼ਰ-ਸਪੇਸ ਟੂਲਾਂ (ਸ਼ੈਲ, ਲਾਇਬ੍ਰੇਰੀਆਂ, ਪੈਕੇਜ ਮੈਨੇਜਰ, init ਸਿਸਟਮ) ਨਾਲ kernel ਦੇ ਨਾਲ ਪੈਕੇਜ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
ਕਰਨਲ ਦਾ ਵਿਵਹਾਰ ਨਿਰਧਾਰਤ ਕਰਦਾ ਹੈ ਕਿ ਸਭ ਕੁਝ ਕਿੰਨਾ ਭਰੋਸੇਯੋਗ ਅਤੇ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਚਲਦਾ ਹੈ: ਡਿਪਲੋਇਮੈਂਟ, ਘਟਨਾਵਾਂ ਤੋਂ ਬਚਾਅ, ਪ੍ਰਦਰਸ਼ਨ ਅਤੇ ਸੁਰੱਖਿਆ ਕੰਟਰੋਲ ਸਾਰਿਆਂ ਦਾ ਆਧਾਰ kernel-ਸਤਹ ਦੇ ਸ਼ੈਡਿਊਲਿੰਗ, ਨੈੱਟਵਰਕਿੰਗ, ਸਟੋਰੇਜ I/O ਅਤੇ ਇਨਸੋਲੇਸ਼ਨ 'ਤੇ ਹੁੰਦਾ ਹੈ। ਜੇਕਰ ਤੁਸੀਂ ਕਦੇ “ਸਰਵਰ ਨੂੰ ਛੂੰਹਦੇ” ਨਹੀਂ, ਫਿਰ ਵੀ ਧੀਮੇ ਰੋਲਆਊਟ ਜਾਂ noisy-neighbor ਮੁੱਦੇ ਆਮ ਤੌਰ 'ਤੇ OS/kernel ਚੋਣਾਂ ਅਤੇ ਡਿਫ਼ਾਲਟ ਵੱਲ ਵਾਪਸ ਜਾਂਦੇ ਹਨ।
ਇਹ ਕਿਸੇ ਕੋਰਪੋਰੇਟ ਰਣਨੀਤੀ ਵੱਜੋਂ ਸ਼ੁਰੂ ਨਹੀਂ ਹੋਇਆ—ਉਹ ਆਪਣੇ ਪੀਸੀ 'ਤੇ ਇੱਕ Unix-ਜੈਸੀ ਸਿਸਟਮ ਚਲਾਉਣ ਅਤੇ ਸਿੱਖਣ ਲਈ ਬਣਾਉਣਾ ਚਾਹੁੰਦਾ ਸੀ। ਜ਼ਰੂਰੀ ਮੋੜ ਸੀ ਜਲਦੀ ਹੀ ਹੋਈ ਜਨਤਕ ਸਹਿਯੋਗ: ਉਸਨੇ ਕੰਮ ਕਰਦੀਆਂ ਕੋਡ ਸਾਂਝੀਆਂ ਕੀਤੀਆਂ, ਪ੍ਰਤੀਕਿਰਿਆ ਮੰਗੀ, ਪੈਚ ਸਵੀਕਾਰ ਕੀਤੇ ਅਤੇ ਤੇਜ਼ ਤਰੱਕੀ ਕੀਤੀ—ਇਹ ਉਹ ਟੋਨ ਸੀ ਜਿਸਨੇ ਲੰਮੀ ਮਿਆਦ ਲਈ kernel ਦੇ ਖੁੱਲ੍ਹੇ ਇੰਜੀਨੀਅਰਿੰਗ ਮਾਡਲ ਨੂੰ ਸਥਾਪਿਤ ਕੀਤਾ।
ਇਹ ਖੁੱਲ੍ਹੇ ਰਿਵਿਊ ਪਾਈਪਲਾਈਨ ਰਾਹੀਂ ਬਣਦਾ ਹੈ:
ਇਹ ਢਾਂਚਾ ਪ੍ਰੋਜੈਕਟ ਨੂੰ ਖੁੱਲ੍ਹਾ ਰੱਖਦਾ ਹੈ ਪਰ ਇੱਕੋ ਸਮੇਂ ਗੁਣਵੱਤਾ ਅਤੇ ਜ਼ਿੰਮੇਵਾਰੀ ਵੀ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ।
LTS (Long-Term Support) kernels ਤੇਜ਼ ਫੀਚਰ ਚੇਂਜ ਦੀ ਬਜਾਏ ਪੇਦੇਦਾਰਤਾ ਲਈ ਬਣਾਏ ਜਾਂਦੇ ਹਨ। ਇਹ ਸਾਲਾਂ ਤੱਕ ਸੁਰੱਖਿਆ ਅਤੇ ਅਸਥਿਰਤਾ ਫਿਕਸਾਂ ਨੂੰ ਬੈਕਪੋਰਟ ਕਰਦੇ ਹਨ, ਜਿਸ ਨਾਲ ਪ੍ਰੋਡਕਸ਼ਨ ਮਾਹੌਲਾਂ ਨੂੰ ਮੁੜ-ਨਿਰੰਤਰ ਵੱਡੀਆਂ ਵਰਜਨ ਅੱਪਗ੍ਰੇਡਾਂ ਦਾ ਪਤਾ ਨਹੀਂ ਲਗਣਾ ਪੈਂਦਾ ਪਰ ਉਹ ਅਜੇ ਵੀ ਪੈਚ ਅਤੇ ਸਮਰਥਿਤ ਰਹਿੰਦੇ ਹਨ।
ਇਹ ਸ਼ੁਰੂ ਤੋਂ ਹੀ ਸਰਵਰ ਟੀਮਾਂ ਦੀਆਂ ਲੋੜਾਂ ਨਾਲ ਮਿਲਦਾ ਗਿਆ: ਮਜ਼ਬੂਤ ਨੈੱਟਵਰਕਿੰਗ, ਮਲਟੀਯੂਜ਼ਰ ਡਿਜ਼ਾਇਨ, ਅਸਥਿਰਤਾ ਅਤੇ ਆਮ x86 ਹਾਰਡਵੇਅਰ 'ਤੇ ਚਲਣ ਦੀ ਸਮਰੱਥਾ। Distributions ਨੇ kernel ਨੂੰ ਇੰਸਟਾਲ, ਅਪਡੇਟ ਅਤੇ ਸਪੋਰਟ ਕਰਨ ਲਾਇਕ ਬਣਾਇਆ, ਅਤੇ ਰੋਜ਼ਾਨਾ ਵਰਕਲੋਡ (web hosting, ਡੇਟਾਬੇਸ, ਸਟੋਰੇਜ, ਰਾਊਟਿੰਗ/ਫਾਇਰਵਾਲ) ਦੀ ਵਾਰ-ਵਾਰ ਵਰਤੋਂ ਨੇ ਇਕੋ-ਇਕੋ ਚੋਣ ਨੂੰ ਹੋਰ ਮਜ਼ਬੂਤ ਕੀਤਾ।
ਕਲਾਉਡ ਪ੍ਰਦਾਤਾ ਨੂੰ ਵੱਡੇ ਫਲੀਟਾਂ ਨੂੰ ਇੱਕ ਪ੍ਰੋਗਰਾਮਯੋਗ ਸਰਵਿਸ ਵਾਂਗ ਚਲਾਉਣਾ ਹੁੰਦਾ ਹੈ। ਇਸਦਾ ਮਤਲਬ ਹੈ ਆਟੋਮੇਸ਼ਨ ਹਰ ਲੇਅਰ 'ਤੇ, ਗਾਹਕਾਂ ਦੇ ਵਿਚਕਾਰ ਮਜ਼ਬੂਤ ਇਨਸੋਲੇਸ਼ਨ ਅਤੇ CPU, ਮੈਮੋਰੀ, ਸਟੋਰੇਜ ਅਤੇ ਨੈੱਟਵਰਕਿੰਗ ਦੀ ਕੁਸ਼ਲ ਵਰਤੋਂ ਤਾਂ ਕਿ ਲਾਗਤ ਅਨੁਮਾਨਤ ਰਹੇ। Linux ਇਸ ਕੰਮ ਲਈ ਖਾਸ ਤੌਰ 'ਤੇ موزੂਨ ਹੈ—ਇਹ ਸਕ੍ਰਿਪਟਯੋਗ, ਰਿਮੋਟ-ਫ੍ਰੈਂਡਲੀ ਅਤੇ ਸਾਫ਼ ਇੰਟਰਫੇਸ (ਫਾਇਲਾਂ, ਪ੍ਰੋਸੈਸ, ਅਧਿਕਾਰ, ਨੈੱਟਵਰਕ) ਦੇ ਆਧਾਰ 'ਤੇ ਬਣਿਆ ਹੈ ਜਿਸ 'ਤੇ ਆਟੋਮੇਸ਼ਨ ਟੂਲ ਨਿਰਭਰ ਕਰ ਸਕਦੇ ਹਨ।
ਕੰਟੇਨਰ ਆਮ Linux ਪ੍ਰੋਸੈਸ ਹਨ ਜਿਨ੍ਹਾਂ ਨੂੰ ਸੀਮਾਵਾਂ ਨਾਲ ਚਲਾਇਆ ਜਾਂਦਾ ਹੈ।
Kubernetes ਹਰ worker ਨੋਡ 'ਤੇ ਇਨ੍ਹਾਂ kernel ਪ੍ਰਿਮਿਟਿਵਜ਼ ਤੇ ਨਿਰਭਰ ਹੈ: ਰਿਸੋਰਸ ਲਿਮਿਟਸ cgroups ਨਾਲ ਮੇਪ ਹੋਦੇ ਹਨ ਅਤੇ ਪੋਡ ਨੈੱਟਵਰਕਿੰਗ ਆਖ਼ਰਕਾਰ Linux ਨੈੱਟਵਰਕਿੰਗ ਫੀਚਰਾਂ 'ਤੇ ਆਧਾਰਤ ਹੁੰਦੀ ਹੈ।
ਆਮ ਸਮੱਸਿਆਵਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹਨ:
ਜੇ OS ਮੈਨੇਜਮੈਂਟ ਤੁਹਾਡੀ ਕੋਰ ਅਹਿਮੀਅਤ ਨਹੀਂ ਹੈ, ਤਾਂ managed services (managed databases, serverless, hosted Kubernetes) ਬਹੁਤ ਸਾਰਾ OS-ਸਤਰ ਦਾ ਕੰਮ ਘਟਾ ਸਕਦੇ ਹਨ।
ਪ੍ਰਯੋਗਿਕ ਫਲੂਏਂਸੀ 'ਤੇ ਧਿਆਨ ਦਿਓ:
ps, top, ਸਿਗਨਲ, systemd ਬੁਨਿਆਦੀਆਂ (systemctl status/start/stop)ss, curl, dig, ਬੁਨਿਆਦੀ ਫਾਇਰਵਾਲ ਸੰਕਲਪdf, du), ਲੌਗ ਅਤੇ ਰੋਟੇਸ਼ਨchmod/chown, sudo, ਅਤੇ ਕਿਉਂ “ਸਿੱਧਾ root ਵਜੋਂ ਚਲਾਉਣਾ” ਗਲਤ ਹੁੰਦਾ ਹੈਹੱਥ-ਅਨੁਭਵ ਲਈ ਛੋਟੀ ਪ੍ਰੋਜੈਕਟਾਂ 'ਤੇ ਕੰਮ ਕਰੋ: VM ਚਲਾਉਣਾ, SSH ਹਾਰਡਨ ਕਰਨਾ, ਇੱਕ ਸਰਵਿਸ ਇੰਸਟਾਲ ਕਰਨਾ, ਇੱਕ 컨테이너 ਡਿਪਲੋਏ ਕਰਨਾ, ਲੌਗਾਂ ਪੜ੍ਹਨਾ (journalctl, /var/log/*) ਅਤੇ ਸੁਰੱਖਿਅਤ ਅਪਡੇਟ ਅਭਿਆਸ।