Stratejik monolit uygulamadan mikroservislere geçiş. Kanıtlanmış yöntemler ve aşamalı yaklaşımlar kullanarak monolitik uygulamaları ölçeklenebilir mikroservislere ayrıştırıyoruz.
Başlayın
Bir monoliti mikroservislere bölmek, bir şirketin yapabileceği en yüksek riskli, en yüksek ödüllü mimari değişikliklerden biridir. Doğru hizmet sınırlarını belirleyerek, veri sahipliği zorluklarını yöneterek ve üretim iş yüklerini kesintiye uğratmadan geçişi gerçekleştirerek düzinelerce ekibe bu dönüşümde rehberlik ettik.
Orkestrasyon için Kubernetes, olay akışı için Apache Kafka, service mesh için Istio veya Linkerd ve GitOps dağıtımları için ArgoCD kullanıyoruz. Her hizmet bağımsız CI/CD'ye, kendi veri deposuna ve Jaeger ile Prometheus ile kapsamlı dağıtılmış izlemeye sahiptir.
Monolit uygulamanın ekip özerkliğini, dağıtım sıklığını veya sistem ölçeklenebilirliğini sınırladığı mühendislik organizasyonları için. Eğer sürümler ekipler arası koordinasyon gerektiriyorsa, tek bir bileşenin yükü tüm sistemi etkiliyorsa veya yeni geliştiricilerin sisteme alışması aylar sürüyorsa — ayrıştırma zamanı gelmiş demektir.
Monolitin alanlarını analiz edin, bounded contexts'leri belirleyin ve bileşenler arasındaki bağımlılıkları haritalandırın.
Hedef hizmet mimarisini tasarlayın, veri bölme işlemini planlayın ve iş değerine göre çıkarma sırasını önceliklendirin.
Paylaşılan altyapıyı oluşturun — Kubernetes, CI/CD şablonları, service mesh ve observability yığını.
Anti-corruption katmanlarını uygulayarak ve trafiği kademeli olarak yönlendirerek hizmetleri birer birer çıkarın.
Hizmet sahipliğini, on-call uygulamalarını, SLO takibini ve sürekli mimari yönetişimini tesis edin.
Monolit uygulamanızdan ölçeklenebilir, bağımsız olarak konuşlandırılabilir hizmetlere güvenli, aşamalı bir yol tasarlayalım.
Domain-driven design kullanarak bounded contexts belirleriz, en az bağımlı modüllerden başlayarak hizmetleri aşamalı olarak çıkarırız, routing için API gateways uygularız ve tüm migration süreci boyunca backward compatibility'yi sürdürürüz.
MicrocosmWorks'te monolith'ten microservices'e geçiş $25-$50/saat olarak fiyatlandırılır. Toplam yatırım, monolith'in boyutuna, bağlantı karmaşıklığına ve çıkarılacak hizmetlerin sayısına bağlıdır.
Zaman çizelgesi, monolith boyutu ve karmaşıklığına göre önemli ölçüde değişir. Genellikle ilk service'i 4-8 hafta içinde ayıklıyoruz; tam migration ise 6-18 ay sürmektedir. Artımlı yaklaşımımız, tam bir yeniden yazma gerektirmek yerine her aşamada değer sunar.
İstek-yanıt kalıpları için senkron REST veya gRPC uyguluyoruz ve olay tabanlı iletişim için Kafka veya RabbitMQ aracılığıyla asenkron mesajlaşma kullanıyoruz. Dağıtık işlemler için saga pattern kullanıyoruz ve harici yönlendirme için API gateways kullanıyoruz.
Biz database-per-service pattern'ını takip ediyoruz, servise özel tabloları aşama aşama özel veritabanlarına çıkararak. Geçiş sırasında, paylaşılan veritabanı bağımlılıklarını kademeli olarak ayırırken veri erişimini sürdürmek için veritabanı görünümlerini, CDC'yi veya API çağrılarını kullanırız.