Containers: asosiy tushunchalar, afzallik va o'ziga xosliklari
Internetni izlab konteynerlar haqida o'zbek tilida ma'lumot topaolmadim. O'zim yaxshiroq tushunish va o'zbek tilida umumiy tushuncha izlaganlar uchun manba bo'lsin deb Konteynerlar haqida qisqacha yozishni maqsad qildim.
So'nggi vaqtlarda konteynerlar haqiqa juda ko'p gapirilmoqda va IT sanoatida umumiy standardga aylanib ulgurdi. Xo'sh konteynerlar nima? Ular nega bunchalik mashhurlikka erishdi? Konteynerlar jozibador xususiyatlarini qisqacha quyidagicha sanashimiz mumkin:
- Konteynerlar infrastrukturani avtomatlashtirishni yanada osonlashtiradi;
- Barqarorlikkni ta'minlash osonlashadi;
- Resurslarni tejaydi, kam xarajat qilib ko'p uskunalar imkoniyatidan maksimal foydalanishga erishiladi;
- Konteynerlar tizimning ishonchliligini oshiradi, xatoliklarni kamaytiradi;
- va eng asosiysi, "meni kompyuterimda ishlayapti, lekin serverda ishlamayapti" degan klassik muammoni bartaraf etadi.
Hozirgi virtual serverlarda nima muammo bor?
Amaliyotdan vaziyat: Python dasturi TLS protokolini amalga oshiradigan umumiy umumiy kutubxonaga rusxat berilishini talab qiladi. Odatda server dasturchi (kod yozuvchi - developer)ga berilishidan oldin sistem admin kerakli paketni o'rnatadi.
Klassik dasturiy ta'minotning asosiy kamchiligi shundaki, biror paketning unga bog'liq boshqa kichik dasturlari anyi vaqt bilan bog'liqdir. Asosiy operatsion tizimga (OT) biron bir yangilanish yoki qo'shimcha paketlar o'rnatilsa, shu dasturda xatolik /buzilish vujudga kelishi mumkin. Masalan, Sistem adminstratorlar linux serverning operatsion tizimini xavfsizlik talablariga javob berish uchun yangiladi (update / patching), buning natijasida TLS kutubxonasidan TLS 1.0 qo'llab-quvvatlanadigan protokol sifatida olib tashlandi. (yangilanish avtomatik bo'ladi, agarda biror versiyaga paket quflangan (versionlocked) bo'lmasa, shu paket yangilanadi. Bu o'rnatilgan Python dasturini buzadi, chunki u tarmoq so'rovlari uchun TLS 1.0 protokolidan foydalanishishi kerak. Python buzilmasligi uchun operatsion sistemani update qilmaslik kerak bo'lib qoladi, yoki kamida ma'lum turdagi paketni eski versiyada qoldirish kerak. Nima uchun bitta Pythonni deb yangilangan paketning afzalliklaridan foydalanmasligimiz kerak?
Sistem adminstatorlar "yangilanishdan keyin dastur ishlamay qoldi, iltimos orqaga qaytaringlar" mazmunidagi shikoyatlarni. Bundan muammolar kelib chiqmasligi uchun juda ko'p test qilinadi - bu esa keraksiz vaqt va resurs sarfidir. Bitta serverda bir nechta dasturlarni saqlash ko'pincha qiyinlashadi va har qanday o'rnatish yoki yangilash tashkilot dasturlaridan birini buzishi mumkin.
Mana shu yuqoridagi muammo konteynerlarning kashf etilishiga sabab bo'ldi. Konteynerlar - operatsion tizim ustiga qurilgan alohida qatlam shaklida bo'lib, loyiha uchun alohida qobiq yaratadi. Bitta serverda esa bir biriga xalaqit bermaydigan darajada bir qancha konteynerlarni joylashtirish mumkin. Ya'ni A dastur B dasturning faoliyatiga umuman xalaqit bermaydi. B dastur joylashgan konteynerda yoki operatsion tizimdagi yangilanish A dasturning qobig'iga ta'sir qilmaydi.