Microservice Mimarilerine Giriş
Monolith Application Nedir?
- Birkaç ayda bir yeni release veya versiyon çıkarılan,
- Çok çeşitli modül ve işlevselliğe sahip olan,
- 50 den fazla ekiple çalışan,
- Hata ayıklama problemlerinin büyük bir zorlukta olduğu,
- Yeni bir teknoloji veya yeni bir sürüme yükseltmenin zor olduğu bir projede çalışmışsınızdır.
Bu ve buna benzer durumlar monolith bir projenin tipik özellikleridir.
Monolith Uygulama;
- Büyük boyutta uygulama
- Uzun süreli döngüler
- Büyük takımlar gibi etkenlerle karakterize edilir.
Tipik zorlukları şunlardır:
- Ölçeklenebilirlik zorlukları
- Yeni tknlojiye geçme sorunları
- Otomasyon test zorlukları
- Cihaz patlamasına uyarlama
Microservices
Microservice mimarileri , Monolith mimarileri ile ölçeklenebilirlik ve yenilikçi zorluklara bir çözüm olarak gelişti.
Microservice Mimarisi Temel Yapısı
Monolith bir proje aşağıdaki gibi görünürdü, tek bir uygulama , büyük bir veritabanı:
Aşağıda, Microservices Mimarisi kullanılarak uygulama geliştirildiğinde aynı uygulamanın nasıl göründüğünü göstermektedir.
Microservice Mimarileri, mesajlarla etkileşim içinde olan çok sayıda küçük, iyi tasarlanmış, bileşenler içerir.
Microservislerin Avantajları
- Yeni teknolji uayarlamaları daha kolay hale geliyor.
- Yeni versiyon ve release çıkarma işlemleri kolaylaşıyor.
- Bulutla ölçeklendirmeyi kolay hale getiriyor.
Mikroservisler kolay gibi görünse de bazı zorlukları bulunmaktadır. Bazı zorlukları inceleyelim:
- Hızlı Kurulum gerekli: Her bir mikro hizmeti ayarlamak için bir ay harcayamazsınız. Hızlı bir şekilde mikro hizmetler oluşturabilmelisiniz.
- Otomasyon: Tek parça yerine birkaç küçük parça olduğundan, her şeyi otomatikleştirmeniz gerekir – Yapılar, Dağıtım, İzleme vb.
- Görünürlük: Dağıtım ve bakımını yapmak için birkaç küçük bileşene sahipsiniz. Belki 100 veya belki 1000 bileşen. Sorunları otomatik olarak izleyebilmeli ve tanımlayabilmelisiniz. Tüm bileşenlerin etrafında mükemmel görünürlük gerekir.
- Sınırlı Bağlam: Bir mikro hizmetin sınırlarını belirlemek kolay bir iş değildir. Domain Drive Design’dan Sınırlı Bağlamlar iyi bir başlangıç noktasıdır. Etki alanını anlamanız belirli bir süre içinde gelişir. Mikro hizmet sınırlarının gelişmesini sağlamalısınız.
- Yapılandırma Yönetimi: Ortamlarda yüzlerce bileşen için yapılandırmaları korumanız gerekir. Bir Yapılandırma Yönetimi çözümüne ihtiyacınız olacak
- Dinamik Ölçek Yukarı ve Ölçek Aşağı: Mikro hizmetlerin avantajları, yalnızca uygulamalarınız bulutta kolayca yukarı ve aşağı ölçeklenebiliyorsa gerçekleşecektir.
- Kart Paketi: Çağrı zincirinin altındaki bir mikro servis başarısız olursa, diğer tüm mikro servisler üzerinde etki yaratabilir. Mikro hizmetler Tasarım tarafından hataya dayanıklı olmalıdır.
- Hata ayıklama: Soruşturma gerektiren bir sorun olduğunda, farklı bileşenlerde birden çok hizmete bakmanız gerekebilir. Merkezileştirilmiş Günlük Kaydı ve Gösterge Tablosu, sorunların hata ayıklamasını kolaylaştırmak için çok önemlidir.
- Tutarlılık: Aynı sorunu çözen çok çeşitli araçlara sahip olamazsınız. İnovasyonu teşvik etmek önemli olmakla birlikte, ayrıca mikro hizmetleri uygulamak / yaymak / izlemek için kullanılan diller, platformlar, teknoloji ve araçlar etrafında merkezi olmayan bir yönetişime sahip olmak da önemlidir.
Mikro Hizmet Mimarileri ile Karşılaşılan Sorunlara Çözümler
Spring Boot
Bize aşağıdaki özellikleri sağlar:
- gömülü sunucular (kaplarla kolay dağıtım)
- metrikler (izleme)
- sağlık kontrolü (izleme)
- harici yapılandırma
Spring Cloud
Spring Cloud, bulutlara mikro hizmetlerinizi etkinleştiren çözümler sunar. Netflix (Netflix OSS) tarafından sağlanan bazı Cloud çözümlerinden yararlanır ve geliştirir.
Önemli Spring Cloud Modulleri:
Dinamik olarak ölçek yukarı ve aşağı şekilde değiştirme duurmlarını birlikte kullanabilme:
- Naming Server (Eureka)
- Ribbon (Client Side Load Balancing)
- Feign (Easier REST Clients)
Görünürlük ve izleme:
- Zipkin Distributed Tracing
- Netflix API Gateway
Yapılandırma Yönetimi:
- Spring Cloud Config Server
Hata Toleransı:
- Hystrix
Bir sonraki yazı ile Spring boot ile Forex servisi oluşturmaya çalışacağız.