mikroservisler ne demek?

Mikroservis Mimarisi

Mikroservis mimarisi, tek bir uygulama oluşturmak için küçük, özerk hizmetlerin geliştirildiği bir yazılım geliştirme yaklaşımıdır. Bu hizmetler, küçük bir ekip tarafından bağımsız olarak geliştirilebilir, konuşlandırılabilir ve ölçeklendirilebilir. Genellikle API'ler aracılığıyla iletişim kurarlar ve iyi tanımlanmış işlevsellik alanlarına odaklanırlar. Bu mimari, monolitik uygulamalara kıyasla daha çevik, ölçeklenebilir ve esnek bir yaklaşım sunar.

Temel İlkeler

Mikroservis mimarisinin temel ilkeleri şunlardır:

  • Özerklik: Her mikroservis bağımsız olarak geliştirilebilir, konuşlandırılabilir ve ölçeklendirilebilir olmalıdır. Bu, farklı ekiplerin birbirlerinden bağımsız olarak çalışmasına ve değişiklik yapmasına olanak tanır.
  • Tek Sorumluluk: Her mikroservis, iyi tanımlanmış ve tek bir işlevsellik alanına odaklanmalıdır. Bu, hizmetin daha kolay anlaşılmasını, değiştirilmesini ve test edilmesini sağlar.
  • API Odaklı: Mikroservisler genellikle API'ler aracılığıyla iletişim kurar. Bu, farklı teknolojilerin ve programlama dillerinin kullanılmasını sağlar ve hizmetler arasında gevşek bir bağlantı oluşturur.
  • Merkezi Olmayan Yönetim: Mikroservis mimarisi, merkezi bir yönetim yerine merkezi olmayan bir yönetimi teşvik eder. Her ekip, kendi hizmetlerinin teknolojilerini ve altyapısını seçme özgürlüğüne sahiptir.
  • Otomasyon: Mikroservislerin geliştirilmesi, konuşlandırılması ve yönetilmesi süreçleri mümkün olduğunca otomatikleştirilmelidir. Bu, insan hatası riskini azaltır ve süreçleri hızlandırır.
  • Hata Toleransı: Mikroservis mimarisi, hatalara karşı dayanıklı olmalıdır. Bir hizmet çöktüğünde, diğer hizmetlerin çalışmaya devam edebilmesi sağlanmalıdır.
  • Gözlemlenebilirlik: Mikroservislerin performansı ve davranışı sürekli olarak izlenmelidir. Bu, sorunların hızlı bir şekilde tespit edilmesine ve çözülmesine olanak tanır.

Monolitik Mimariden Farkları

Mikroservis mimarisi, monolitik mimari ile önemli farklılıklar gösterir:

ÖzellikMonolitik MimariMikroservis Mimarisi
Uygulama BoyutuBüyük ve karmaşıkKüçük ve bağımsız hizmetler
KonuşlandırmaTek bir birim olarak konuşlandırılırBağımsız olarak konuşlandırılabilir
ÖlçeklenebilirlikTüm uygulama ölçeklenirHer hizmet ayrı ayrı ölçeklenebilir
TeknolojiTek bir teknoloji yığını kullanılırFarklı teknolojiler kullanılabilir
GeliştirmeBüyük ekipler tarafından geliştirilirKüçük, özerk ekipler tarafından geliştirilir
Hata ToleransıBir hata tüm uygulamayı etkileyebilirBir hata diğer hizmetleri etkilemez (genellikle)
ÇeviklikDeğişiklikler daha yavaş ve riskli olabilirDeğişiklikler daha hızlı ve daha az riskli olabilir

Avantajları

  • Ölçeklenebilirlik: Her hizmet ayrı ayrı ölçeklenebildiği için, uygulamanın yalnızca ihtiyaç duyulan kısımları ölçeklenebilir.
  • Çeviklik: Küçük ve özerk ekipler, bağımsız olarak değişiklikler yapabilir ve bu değişiklikleri hızlı bir şekilde konuşlandırabilir.
  • Teknoloji Çeşitliliği: Her hizmet için en uygun teknoloji seçilebilir.
  • Hata İzolasyonu: Bir hizmetteki bir hata, tüm uygulamayı etkilemez.
  • Daha Kolay Anlaşılabilirlik: Küçük ve tek sorumluluklu hizmetler, büyük ve karmaşık uygulamalara göre daha kolay anlaşılabilir.
  • Yeniden Kullanılabilirlik: Hizmetler, farklı uygulamalar ve sistemler tarafından yeniden kullanılabilir.

Dezavantajları

  • Karmaşıklık: Mikroservis mimarisi, monolitik mimariye göre daha karmaşıktır. Hizmetler arasındaki iletişim ve koordinasyonun yönetilmesi gerekir.
  • Dağıtık Sistem Sorunları: Dağıtık sistemlerde ortaya çıkan gecikme, ağ sorunları ve veri tutarlılığı gibi sorunlarla başa çıkılması gerekir.
  • Operasyonel Zorluklar: Mikroservislerin konuşlandırılması, izlenmesi ve yönetilmesi daha zordur.
  • Geliştirme Maliyeti: Mikroservis mimarisi, başlangıçta daha yüksek bir geliştirme maliyetine sahip olabilir.
  • Veri Tutarlılığı: Birden çok hizmetin aynı verilere erişmesi ve değiştirmesi durumunda veri tutarlılığını sağlamak zor olabilir. Bu sorunu çözmek için Dağıtık İşlem (Distributed Transaction) mekanizmaları kullanılması gerekebilir.

Uygulama Desenleri (Patterns)

Mikroservis mimarilerini uygulamak için kullanılan çeşitli desenler bulunmaktadır:

  • API Gateway: İstemciler ile mikroservisler arasında bir ara katman görevi görür ve istekleri uygun hizmetlere yönlendirir.
  • Service Discovery: Hizmetlerin birbirlerini bulmasını sağlayan bir mekanizmadır.
  • Circuit Breaker: Bir hizmetin arızalandığında diğer hizmetleri korur.
  • Aggregator: Birden çok hizmetten veri toplayarak tek bir yanıt oluşturur.
  • Chained: Bir hizmetin çıktısını diğer bir hizmetin girdisi olarak kullandığı bir desen.
  • Branch: Bir isteği birden çok hizmete paralel olarak gönderir.

Teknolojiler

Mikroservis mimarisi için kullanılan çeşitli teknolojiler bulunmaktadır:

  • Konteynerleştirme: Docker gibi teknolojiler, mikroservislerin paketlenmesini ve konuşlandırılmasını kolaylaştırır.
  • Orkestrasyon: Kubernetes gibi teknolojiler, mikroservislerin yönetilmesini, ölçeklenmesini ve izlenmesini kolaylaştırır.
  • API Gateway: Kong, Apigee gibi teknolojiler, API yönetimi ve yönlendirme sağlar.
  • Service Mesh: Istio, Linkerd gibi teknolojiler, hizmetler arası iletişimi yönetir ve gözlemlenebilirlik sağlar.
  • Mesaj Kuyruğu: RabbitMQ, Kafka gibi teknolojiler, hizmetler arasında asenkron iletişim sağlar.
  • Veritabanı: Her mikroservis kendi veritabanına sahip olabilir (Veritabanı başına servis deseni) veya paylaşımlı bir veritabanı kullanabilir. SQL veya NoSQL veritabanları kullanılabilir.

Ne Zaman Kullanmalı?

Mikroservis mimarisi, aşağıdaki durumlarda faydalı olabilir:

  • Büyük ve karmaşık uygulamalar
  • Hızlı ve sık değişiklikler yapılması gereken uygulamalar
  • Farklı teknolojilerin kullanılması gereken uygulamalar
  • Ölçeklenebilirlik gereksinimleri yüksek olan uygulamalar
  • Özerk ekiplerin birlikte çalışması gereken projeler

Ancak, basit ve küçük uygulamalar için monolitik mimari daha uygun olabilir. Mikroservis mimarisi, karmaşıklığı ve operasyonel maliyetleri artırabilir.

Sonuç

Mikroservis mimarisi, modern yazılım geliştirme için güçlü bir yaklaşımdır. Ancak, dikkatli bir şekilde planlanması ve uygulanması gerekir. Doğru araçlar ve teknikler kullanılarak, mikroservis mimarisi, daha çevik, ölçeklenebilir ve esnek uygulamalar oluşturulmasını sağlayabilir. Uygulama deseni seçimi de mimarinin başarısı için kritik öneme sahiptir. Başarılı bir Yazılım Mimarisi için gerekliliklerin doğru analiz edilmesi ve uygun mimari modelinin seçilmesi önemlidir.

Kendi sorunu sor