Yazar | Abraar Syed, Karthic Rao
Tercüman | Cehalet
Bir yazılım geliştiricisi veya teknoloji meraklısı olarak, "mikro hizmetler" ve "Docker" gibi terimler sonsuzdur, ancak neden bu kadar çok abartı olduğunu hala anlamıyor musunuz?
Öyleyse, bu makaleyi okumalısınız!
2000'lerin başında, çok popüler bir yazılım mimarisi tasarım paradigması olan Servis Odaklı Mimari'nin (SOA) yükselişine tanık olduk. Kısacası, SOA, büyük ölçekli kurumsal uygulamalar oluşturmak için kullanılan bir yazılım mimarisi modelidir. Bu uygulamalar genellikle birden çok hizmetin entegrasyonunu gerektirir ve her hizmet, oluşturmak için farklı bir platform ve programlama dili kullanır. Etkileşim için iletişim mekanizması.
Aşağıda, hizmet odaklı mimarinin (SOA) basit bir örneği verilmiştir:
kilit nokta
Online mağazayı örnek alalım. Birçok e-ticaret web sitesine birden fazla cihazdan erişilebildiğini biliyoruz, bu nedenle bu web siteleri genellikle dizüstü bilgisayarlar ve mobil cihazlar için farklı kullanıcı arayüzleri sağlar.
Ayrıca, uygulamanın normal çalışmasını sağlamak için birden fazla işlemin veya hizmetin birbirine bağlı olduğunu da biliyoruz. Bu hizmetlerden bazıları hesap oluşturmaktan, ürün kataloglarını görüntülemek, alışveriş sepetlerini oluşturmak ve doğrulamaktan, fatura oluşturmaktan, siparişleri onaylamaktan, ödemeleri tamamlamaktan vb. Sorumludur.
Monolitik bir uygulamada, tüm bu hizmetler aynı uygulama katmanı üzerinde çalışır, dolayısıyla bu e-ticaret web sitesinin yazılım mimarisi aşağıdaki gibidir:
Dezavantaj
Mikro hizmet mimarisi, bir SOA uzmanlığı olarak düşünülebilir ve aynı zamanda monolitik mimarinin kusurlarının üstesinden gelebilecek alternatif bir modeldir.
Mikro hizmet mimarisinde, uygulamayı modülerleştirmeye ve onu diğer hizmetlerden veya tüm uygulamanın kendisinden bağımsız olarak oluşturulabilen, dağıtılabilen, ölçeklenebilen ve bakımı yapılabilen daha küçük bağımsız hizmetlere ayırmaya odaklanıyoruz. Bu bağımsız hizmetlere mikro hizmetler denir, bu nedenle bu mimariye mikro hizmet mimarisi adı verilir.
kilit nokta
avantaj
3. Bireysel hizmetlerin konuşlandırılmasını, hizmet yönetimini ve otomatik ölçeklendirilmesini sağlamak için tam otomatik bir dağıtım mekanizması oluşturulabilir.
Yazılım mimarisi modellerinin geliştirilmesine ek olarak, yazılım altyapımızı desteklemek ve ölçeklenebilir ürün ve hizmetlerin verimli bir şekilde yönetilmesini sağlamak için Docker ve Kubernetes gibi yeni teknolojilerin ortaya çıktığını gördük. Donanım sanallaştırmadan kapsayıcıya geçiş yaptık.
Düşünüyor olabilirsiniz, bu ne anlama geliyor?
BT altyapısının gelişimini anlamak için aşağıdaki diyagramı kullanalım:
İlk resim fiziksel bir makineyi veya bir donanım sunucusunu gösterir. Genellikle, uygulamaları oluştururken ana işletim sistemi tarafından sağlanan kaynakları kullanırız ve uygulamaları dağıtırken aynı modeli kullanırız. Peki ya uygulamayı genişletmek istersen? Bir noktada, başka bir donanım sunucusuna ihtiyacınız olabilir. Sayı artmaya devam ettikçe, maliyetler ve diğer kaynaklar (donanım ve enerji tüketimi gibi) da artacaktır.
Ayrıca merak edebilirsiniz, tüm donanım kaynaklarını ve işletim sistemlerini her zaman kullanmak gerekli mi? Tabii ki değil. O halde neden bu kadar büyük bir altyapıya ihtiyacımız var?
Bu sorun, donanım sanallaştırmasının geliştirilmesine yol açtı, böylece sanal makineler (VM) ortaya çıktı ve BT altyapısını sanal makineler aracılığıyla optimize ettik. İkinci resimde görebileceğiniz gibi, sanal makinenin tek bir fiziksel makine veya ana işletim sistemi üzerinde çalışan kendi konuk işletim sistemi vardır. Bu nedenle, çok sayıda fiziksel makine kurmak zorunda kalmadan birden fazla uygulama çalıştırabiliriz. Ana bilgisayar işletim sistemi, farklı sanal makineler arasında sistematik kaynak tahsisi ve yük dengeleme sağlayabilir.
Sanal makine, yazılım bakımının zorluğunu ve maliyetini azaltır, ancak yine de daha fazla optimize edilebilir. Örneğin, konuk işletim sistemi ortamında tüm uygulamalar beklendiği gibi çalışmayacaktır. Ek olarak, basit süreçleri çalıştırmak için bile, konuk işletim sistemi çok fazla kaynak gerektirir.
Bu sorunlar bir sonraki yeniliğe yol açtı: konteynerleştirme. İşletim sistemine özgü sanal makinelerin aksine, kapsayıcılar daha hafif oldukları için uygulamaya özeldir. Ek olarak, sanal makine birden çok işlemi çalıştırabilirken, konteyner tek bir işlem olarak çalışabilir. sonra:
BT yazılım altyapısının evrimini zaten anladık. Daha sonra, daha önce tartışılan mikro hizmet mimarisini ve kapsayıcıyı nasıl gerçekleştireceğimizi bilmek isteyebilir miyiz? Cevap: Docker.
Docker, dünyanın önde gelen yazılım konteynerleştirme platformudur. Mikro hizmetleri Docker konteynerleri olarak adlandırdığımız şeyin içine dahil eder ve ardından bağımsız bakım ve dağıtım gerçekleştirir. Her bir konteyner, belirli bir iş fonksiyonundan sorumlu olacaktır.
Docker'ı daha derinlemesine anlamak için, daha önce tartışılan e-ticaret web sitesini örnek olarak ele alalım. Hesap oluşturma, ürün kataloglarını görüntüleme, alışveriş sepetlerini oluşturma ve doğrulama gibi birden çok işletme ve hizmete sahip olduğunu biliyoruz. Mikro hizmet mimarisinde, bunların tümü mikro hizmetler olarak kabul edilebilir ve bir Docker kapsayıcısında kapsüllenebilir. Ama bunu neden yapmak istiyorsun?
Bunun nedenlerinden biri, geliştirme ve üretim ortamları arasında tutarlılığın sağlanmasıdır. Örneğin, bu uygulamayı geliştiren üç geliştirici olduğunu ve her birinin kendi geliştirme ortamına sahip olduğunu varsayalım. Bir geliştirici, kendi makinesinde Windows işletim sistemini çalıştırabilirken, ikinci geliştirici Mac OS çalıştırabilir ve üçüncü geliştirici, Linux tabanlı bir işletim sistemini tercih edecektir. Her birinin uygulamaları geliştirme ortamlarına yüklemek için saatler harcamaları ve bunları buluta dağıtmak için fazladan iş yapmaları gerekiyor. Bu süreç o kadar sorunsuz değildir ve bu uygulamaları bulut altyapısına dağıtırken aralarında her zaman sürtüşme olacaktır.
Docker ile uygulama, ana bilgisayar ortamından bağımsız yapılabilir. Mikro hizmet mimarisi nedeniyle, her hizmet artık bir Docker kapsayıcısında paketlenebilir. Docker kapsayıcısı hafiftir ve uygulamaların oluşturulabileceği, korunabileceği, yayımlanabileceği ve dağıtılabileceği kaynaklar izole edilmiştir.
avantaj
Orijinal İngilizce: https://timber.io/blog/docker-and-the-rise-of-microservices/