Girişimlerin mikro hizmet mimarisi hakkında bilmesi gerekenler
Mikro hizmetler olarak da bilinen mikro hizmet mimarisi, yazılım çözümleri mühendisliğinin ayırt edici, ancak giderek daha popüler bir yoludur. Her büyüklükteki şirketin daha çevik olmasının en etkili yollarından biridir.
Mikro hizmet mimarisi ilkeleri, yazılım geliştirmeye yönelik tek parça yaklaşımın tam tersidir. Tek bir çok katmanlı araçlar paketi olarak bir uygulama oluşturmak yerine, mikro hizmetler kullanılarak oluşturulan yazılım, mümkün olduğunca modüler olacak şekilde tasarlanmıştır.
Mikro hizmetlere giriş
En basit haliyle, mikro hizmetler mimarisi yaklaşımı kullanılarak oluşturulmuş bir uygulamayı ayrı hizmetlerin bir koleksiyonu olarak düşünün. API’ler aracılığıyla bağlandı. Tamamen modüler ve bağımsız. Monolith yaklaşımı kullanılarak oluşturulmuşsa, aynı yazılımın karmaşıklıkları olmadan tek bir uygulama oluşturmak için birlikte çalışmak.
Peki mikro hizmet mimarisi nedir?
Mikro hizmet tabanlı mimarinin şu ana kadar net bir tanımı yok. Kavramın kendisi çeviktir. İşletmelerin ihtiyaçları doğrultusunda tasarlanmıştır. Her işletme bir sonraki ile aynı ihtiyaçlara sahip değildir. Bir girişimin, bir kuruluştan farklı ihtiyaçları vardır.
Mikro hizmetlerin bir avantajı, uyarlanabilir olmalarıdır. Kuruluşların ihtiyaçları etrafında benzersiz ve güçlü bir şekilde esnek. İş liderleri, DevOps ekiplerinin uygulamaları monolitik yaklaşımı benimsediklerinden daha hızlı oluşturmasını sağlayabilir.
Mikro hizmetler, kuruluşların yeni bir düşünme biçimi benimsemesini gerektirir.
Her teknoloji uygulamasını tek bir platform veya ürün olarak düşünmek yerine, daha küçük hizmetlerden oluşan bir koalisyon olarak görülmeleri gerekir. Her biri bağımsızdır. Birlikte tek bir uygulama yaparlar. Bir özelliği değiştirmek, temeldeki kod tabanını etkilemez çünkü etkili bir şekilde, tek bir temel kod tabanı yoktur. Her birinin kendine ait olması, bu sayısız parçanın toplamını daha çevik, ölçeklenebilir ve güçlü kılar.
Mikro hizmetler mimarisi nasıl çalışır?
Bu konuyla ilgili bir teknoloji uzmanı olan Martin Fowler, mikro hizmetleri “iş kapasitesi, otomatikleştirilmiş, uç noktalardaki zeka ve dillerin ve verilerin merkezi olmayan kontrolü” etrafında dağıtılan bağımsız hizmetler paketi olarak açıklıyor.
Bu gevşek bağlı teknoloji koalisyonundaki her hizmet bağımsızdır. Birini değiştirmek, uygulamanın tamamı üzerindeki genel etkiyi hesaplamak anlamına gelmez. API’ler, bağımsız hizmetler arasında etkileşimin gerekli olduğu noktalarda tüm sistemin birlikte çalışmasını sağlar.
Birden çok ekip, herhangi bir temel kod tabanını etkilemeden farklı hizmetler üzerinde uzaktan ve bağımsız olarak çalışabilir. Genellikle, bir uygulama mikro hizmetler yaklaşımı kullanılarak sıfırdan oluşturulduğunda, her hizmetin kendi kod tabanı vardır. Her hizmet, bir iş ihtiyacına uygun olarak kendi işlevini yerine getirir.
Mikro hizmetlerin avantajları ve dezavantajları
Öncelikle mikro hizmetlerin avantajlarını ele alalım.
- Hataları belirlemek daha kolay. Daha küçük hizmetler doğal olarak daha küçük kod tabanlarına sahip olacak ve monolitik kuzenlerden daha az karmaşık olacaktır. Hataları tespit etmeyi ve çözmeyi kolaylaştırır.
- Azaltılmış bağımlılık endişeleri. Uygulamalar monolith yaklaşım kullanılarak oluşturulduğunda, genellikle şirketleri belirli kodlama dillerine ve teknoloji satıcılarına katı bir şekilde bağlı kalmaya zorlar. Mikro hizmetler yaklaşımıyla artık durum böyle değil. Şirketler farklı dillerde farklı hizmetler yazabilir ve her hizmette ayrı ayrı teknoloji yığınının her katmanında çok daha geniş bir teknoloji tedarikçisi yelpazesini daha kolay bir şekilde deneyebilirler.
- Anlaşılması daha kolay. Monolit sistemler büyüdükçe karmaşıklık içinde büyürler. Yaratıcılarını büyütüyorlar ve herkesin anlaması giderek zorlaşıyor. Performans ve kullanıcı deneyimi aynı zamanda zarar görür. Mikro hizmet çözümleri, anlaşılması çok daha kolay ve daha kullanıcı dostudur.
Bununla birlikte, mikro hizmetler mükemmel değildir ve şirketlerin dikkate alması gereken birkaç dezavantaj vardır.
- Dikkate alınacak birden çok veritabanı ve bazen çok çeşitli bulut tabanlı veri merkezlerinden çalışan hizmetler.
- Uzaktan aramaların gecikmeden etkilenmemesi için daha fazla kod yazmak gerekebilir .
- Savunacak daha çok şey var. Monolitik bir sistemle, savunmanın bu kadar karmaşık olması gerekmez. Mikro hizmet yaklaşımıyla, her bir sistemin tek bir uygulama olarak çalışmasını sağlayan API’ler gibi savunmaya ihtiyacı vardır.
- Mikro hizmetleri birlikte dağıtmak karmaşık olabilir. Yararları ve avantajları ne olursa olsun, her şeyin olması gerektiği gibi etkili bir şekilde birlikte çalışmasını sağlamak için daha fazla planlama gerektirir.
Mikro hizmetler mimarisi ilkeleri
Fowler’a göre, bazı zorluklara rağmen mikro hizmetler hızla “kurumsal uygulamalar oluşturmak için varsayılan stil” haline geliyor.
Red Hat (artık IBM’in bir parçası) anketi, şirketlerin üçte ikisinin (% 69) eski uygulamaları yeniden tasarlamak için mikro hizmet ilkelerini kullandığını doğruladı.
Açıkçası, mikro hizmetler yeni başlayanlar ve kurumsal kuruluşlar için kalıcıdır. Eski sistemleri yeniden inşa etmeye yönelik diğer girişimlerin aksine, bu durum ilgi çekiyor ve geliştiriciler arasında kıdemli iş liderleri kadar popüler.
Mikro hizmetlerin arkasındaki temel ilkelerden bazıları şunlardır:
- İş ihtiyaçları için tasarlanmış sistemler. Eksiksiz bir çözüm olarak bir araya gelen ayrı bileşenlerle sorunları çözen yazılım.
- Yönlendirme basittir, klasik UNIX sisteminden farklı değildir. Veriler, borular aracılığıyla verileri işleyen ve mantığı uygulayan akıllı uç noktalara akar ve tüm sistemin birlikte etkili bir şekilde çalışmasını sağlar.
- Merkezi olmayan bir yaklaşım, her mikro hizmet uygulamasının başarısı için gereklidir. O olmadan, başka bir monolitiniz veya ikisi arasında bir meleziniz olur.
- Başarısız olma olasılığı daha düşüktür. Mimari içindeki bir veya iki hizmet başarısız olabilir, ancak sistem bir bütün olarak çalışmaya devam edecektir. Mikro hizmetler daha dirençli ve esnektir, bu da onları indirmeyi çok daha zor hale getirir.
Mikro hizmetler ve Monolitik mimari
Mikro hizmetler SOA’dan (Servis Odaklı Mimari) gelişti; dağıtım aşamasında çoğu için sonuçta başarısız olan bir şey.
SOA’nın aksine, mikro hizmetler yaklaşımı daha esnektir ve bu nedenle daha başarılıdır. Monolitik mimariden farklı kılan şey budur. Monolitik yaklaşım, kullanıcıların ihtiyaç duyduğundan çok daha karmaşık bir yazılıma yol açar. Asi ve düzensiz bir canavar olan bir kod tabanıyla. Kusurlar ve hatalar, monolit sistemleri ölçeklendirmeyi ve düzeltmeyi zorlaştırır.
İş liderleri monolitik yaklaşımdan uzaklaşıyor. Çevikliğe veya inşa-ölç-öğren geri bildirim döngülerine izin vermez. Genellikle daha pahalıdır ve desteklemeye devam etmek zordur. Uygulama güncellemeleri, fikir oluşturmadan uygulamaya kadar uzun zaman alabilir. Kodun bir bölümünde yapılan değişikliklerin tüm uygulama boyunca dikkatlice eşlenmesi gerekir.
Mikro hizmetlerde durum tam tersidir. Küçük değişiklikler hızlı bir şekilde uygulanabilir. Maliyetler düşük tutulur. Şirketler, her birinin ne yaptığı konusunda endişelenmesi gerekmeyen birden fazla geliştirme ekibiyle çalışabilir. İletişim ve geliştirme süreçleri basitleştirilmiştir.
Monolitik ve mikro hizmetleri seçmek söz konusu olduğunda, daha yeni, daha çevik yaklaşımın birçok avantajı vardır ve her büyüklükteki şirketin ürünlerini güçlendirmek için neden benimsediğini görebiliriz.