Mikro Hizmet Mimarisine Giriş
Bu makaleye başvurarak, Microservice mimarisi ve ne zaman kullanılacağı hakkında daha iyi bir fikir edinebileceksiniz. Ayrıca bu yazı aşağıdaki içeriklerden oluşmaktadır.
◼ Makalenin kısaltmaları
◼ Giriş
◼ Mikro Hizmet Ekosistemi
◼ Monolith Mimari ve Mikro Hizmet Mimarisi
◼ Mikro Hizmetlerdeki Zorluklar
◼ Mikro hizmetler ne zaman kullanılır?
Kısaltmalar
- API : Uygulama Programlama Arayüzü
- MS : Mikro hizmet
- NoSQL: Yalnızca SQL değil
- RTE : Çalışma Zamanı Ortamı
Mikro hizmetler mimarisi , büyük bir uygulamanın modüler hizmetler paketi olarak oluşturulduğu bir uygulama geliştirme yaklaşımıdır (Bu, mikro hizmetin, uygulamanın bir hizmetler koleksiyonu olarak geliştirildiği bir tür uygulama mimarisi olduğu anlamına gelir). Her modül belirli bir iş hedefini destekler ve diğer hizmet gruplarıyla iletişim kurmak için iyi tanımlanmış basit bir arabirim kullanır. Ayrıca, java, python vb. farklı programlama dillerinde yazılabilen ve mikro hizmet mimarisinde ilişkisel ve NoSQL gibi farklı veri depolama teknolojilerini kullanan merkezi yönetim hizmetleri minimum düzeydedir.
Mikro hizmetlerin bazı temel özellikleri/özellikleri aşağıdaki gibidir.
- Son derece bakım yapılabilir ve test edilebilir
- Gevşek bağlı (bir arayüz aracılığıyla iletişim)
- Bağımsız konuşlandırılabilir
- İş yetenekleri etrafında organize
- Küçük bir ekibe aittir (çapraz işlevli ekip)
Genel olarak, Mikro hizmetler sistemi aşağıdaki listelenen varlıkları içerir. Bu varlıkların bazıları, standart yazılım geliştirmedeki aşamalardır ve bazıları, verimli bir mikro hizmet sisteminin omurgasını sağlayacak olan Mikro hizmetlere özgü süreçlerdir.
Yük dengeleyici
Yük dengeleyicinin ana sorumluluğu, gelen yükü birçok mikro hizmet örneği arasında dağıtmaktır. Temel olarak, istemci keşfi (istemci tarafı yük dengeleyici) ve sunucu keşfi (sunucu tarafı yük dengeleyici) olarak adlandırılan 2 tür yük dengeleyici vardır. İstemci keşfinde, istemci hizmet kayıt defteriyle konuşur ve yük dengeleme yapar. Bu nedenle müşterinin hizmet kayıt defterinden haberdar olması gerekir. Sunucu keşfinde, istemci yük dengeleyiciyle ve yük dengeleyici hizmet kayıt defteriyle konuşur. Bu nedenle, müşteri hizmetinin hizmet kaydından haberdar olması gerekmez. Aşağıdaki şemalara bakarak bu 2 tip yük dengeleyiciyi daha iyi anlayabilirsiniz.
Hizmet Keşfi sunucusu
Hizmet bulma işlevi, şu anda hangi mikro hizmetlerin dağıtıldığını ve hangi ana bilgisayarlara ve bağlantı noktalarına ihtiyacımız olduğunu manuel olarak takip etmek yerine, mikro hizmetlerin başlangıçta kendi kendine kaydolmasına olanak tanır. Bu nedenle MS1, MS2 ile konuşmak isterse, öncelikle peyzaja ait kayıt servisinden detayları alır ve ardından MS2 ile konuşur. Ayrıca, aynı peyzajda yukarı veya aşağı giden MS3 adlı başka bir MS olduğunda, kayıt hizmeti otomatik olarak güncellenecektir.
API Ağ Geçidi
API Ağ Geçidi bir sunucudur. Bir sisteme tek bir giriş noktasıdır. API Ağ Geçidi, dahili sistem mimarisini kapsar. Her müşteriye göre uyarlanmış bir API sağlar. Ayrıca kimlik doğrulama, izleme, yük dengeleme, önbelleğe alma, istek şekillendirme ve yönetimi ve statik yanıt işleme gibi başka sorumlulukları da vardır. API Ağ Geçidi ayrıca istek yönlendirme, oluşturma ve protokol çevirisinden de sorumludur. İstemci tarafından yapılan tüm istekler API Ağ Geçidi üzerinden gider. Bundan sonra API Ağ Geçidi, istekleri uygun mikro hizmete yönlendirir.
API Ağ Geçidi, isteği iki yoldan biriyle işler:
- İstekleri uygun hizmete yönlendirdi veya proxy yaptı.
- Bir isteği birden çok hizmete yaymak (yaymak).
Artık aynı ekosistemde farklı düğümlerde çalışan çok sayıda mikro hizmet olduğunu biliyoruz. Bu nedenle, bunları tek bir sistemde birlikte izlememiz gerekiyor. Hystrix panosu ve Spring boot yönetici panosu, izleme araçlarına bazı örneklerdir. Mikro hizmetleri izlemenin beş ilkesi vardır:
- Konteynerleri ve içlerinde ne olduğunu izleyin.
- Hizmet performansı hakkında uyarı.
- Esnek ve çok konumlu hizmetleri izleyin.
- API'leri izleyin.
- Organizasyon yapısını izleyin
Mikro hizmetlerin uygulanması farklı teknolojiler kullanılarak yapılabileceğinden, mikro hizmetleri uyguladığımızda JRE ve Node.js gibi farklı RTE'lerde çalışırlar. Ayrıca, bu mikro hizmetlerin çok dilli bir şekilde konuşlandırıldığını da biliyorsunuz. Bu nedenle, düğümler dağıtılan mikro hizmetin RTE'sini bilmez ve onu her düğüme manuel olarak yüklememiz gerekir. Ancak Konteynerleştirme söz konusu olduğunda, RTE'mizi mikro hizmetimizle paketliyoruz. Böylece mikroservisleri RTE'yi düşünmeden her yerde çalıştırabilir ve bu servisleri kolaylıkla yönetebilir ve güncelleyebiliriz.
Şalter
Mikro hizmetlerin ekosisteminde çok önemli bir varlıktır. Çoğu zaman bu bir model olarak tanımlanır. Anlamak amacıyla, bu, evinizin devre kesicisine oldukça benzer. Sizi felaketten korur ve ortaya çıkan sorunun yayılmasını durdurur. Mikro hizmetlerle ilgili olarak aynı senaryo burada (MS'de devre kesici) oluyor. İstemcinin sağlayıcı mikro hizmetine istek gönderdiğini ve yanıt gelirken bağlantı sorunu olduğunu varsayalım. Çünkü müşteri uzun süredir cevap bekliyor ve diğer servisleri de etkileyebiliyor. Kesici mimarisi olduğu için sorunlu kanal atılır ve önceki bekleme sorunu giderilir. Ayrıca Devre Kesicinin Kapalı olarak adlandırılan üç farklı Durumu vardır., Açık ve Yarı Açık.
Monolith Mimari ve Mikro Hizmet Mimarisi
Fiyat
- Monolitik : Proje ölçeklendiğinde daha yüksek
- Mikro hizmet: İlk geliştirme aşamasında daha yüksek
- Monolitik : Tüm ürün için birleşik bir kod tabanı ve veritabanı
- Mikro hizmet: Çoklu kod dosyaları; her hizmet bir taban ve bir veri deposunu yönetir
- Monolitik : Tüm kod tabanının konuşlandırılması gerekiyor
- Mikro hizmet: Her bir mikro hizmet ayrı ayrı dağıtılır
- Monolitik: Aynı kod yığını
- Mikro hizmet : Farklı yığınlar (dil, çalışma zamanı ortamı vb.)
Aşağıdaki gibi mikro hizmetler ile uğraşırken bazı zorluklar vardır.
- İşlemler arası iletişim (ağ üzerinden)
- Dağıtılmış işlemler
- Çok sayıda hizmet
- Daha fazla otomasyon gerektir
Artık mikro hizmetler ve zorlukları hakkında iyi bir anlayışa sahibiz. Mikro hizmetlerle hangi senaryoların uygun olduğunu görelim.
- Şirket hemen temiz, okunabilir bir kod oluşturmak ve teknik borçtan kaçınmak istiyor
- Şirketin mikro hizmet geliştirme için insan kaynakları var
- Şirket, kısa vadeli faydalardan çok uzun vadeli kazançlara öncelik verir.
- Geliştiricilerden oluşan bir ekip, farklı teknoloji yığınları ve araçları kullanır
- Platform yüksek düzeyde ölçeklenebilir olmalı ve farklı pazarlara yayılmalıdır.