Container öncesinden anlatmaya başlar isek, Kullandığımız bilgisayarlarda bir çok program aynı anda çalışmaktaydı. Küçük bir forum sitemizin olduğunu varsayarsak, aynı Sanal (veya gerçek makine içinde) Hem Veri tabanı sunucumuz hem Web Server yazılımımız hem Forum Yazılımımız hem de Diğer bütün işleri yönetmek için bir çok program içermekteydi. Bu yapı bize interaktif ve oldukça performanslı bir deneyim sunuyordu ancak.
Her Programın dependencyleri olması ve dependenclerinin birbiri ile çakışması gibi olaylar sıklıktan yaşanmaktaydı. Örnek vermek gerekirse, yaptığınız bir java 6- Java 8 güncellemesi Web Severınızın down olmasına yapmamanız kullandığınız kuyruk yapısının yeni versiyonunu kullanamamanıza yol açabiliyordu. Sistemde aynı anda 6 farklı python versiyonun yüklü olması ve zaman zaman bu farklılıklar nedeni ile yaşadığımız downtimelar da oldukça fazla idi. Containerlar sayesinde kendi iç yapılarında işlemler yaptıkları için problemsiz çalışmaktadırlar. İstediğimiz kadar farklı dependency destekleyen servisi Containerlar yardımı ile kullanabilir hale geldik. Dependency çakışmalarının önüne geçmiş oluyoruz.
Tek bir servise olan aşırı yüklenme sebebi ile bütün bir sistemimiz down olmaktaydı. Containerlarımıza Resource limitleri vererek ve yazdığımız servislerde limitlere uygun yapılar kurarak sorunun üstesinden gelmekteyiz.
Containerlarımız üzerinde gelişirme yaptığımız ve mümkünse bütün sistemin bir kopyasında geliştirme yaptığımız için Work on My Machine durumu ile karşılaşma olasılığımızı ciddi oranda azaltırız.
Containerlarımızı kolay bir şekilde Scale edebiliyoruz. Swarm gibi Kubernetes gibi araçlar ile bu durumu sağlayabildiğimiz gibi basit bir load balancing mekanizması kurarak da işlemimizi gerçekleştirebiliriz.
En kolay Deployment yöntemlerinden biridir. Containerların hazılanması ve deploymentı saniyeler seviyesinde ve doğru mekanizmalar ile 0 downtime ile yaşanamaktadır.
Şimdilik bu kadar. Yazı güncellenecektir.