Smart Maple
mikroservis

Monolitten Mikroservise Geçiş Stratejisi: Karar ve Uygulama Rehberi [2026]

Mehmet Kurtipek
February 15, 2026
7 min read
mikroservis
monolith
mimari geçiş
strangler fig
ddd
microservices

Monolitik Mimari: Niçin Başlıyor, Niçin Sona Eriyor

Yazılım projeleri neredeyse her zaman monolitik başlar. Tüm kod, bir uygulamada. Basit, hızlı, yönetilesi kolay.

Başlangıç aşamasında mükemmel. Bir geliştirici, tüm sistemi anlar. Veri tutarlılığı kolay. Dağıtım basit (bir dosya).

Ama yazılım büyüdükçe, monolitin sınırları ortaya çıkar.

Ölçekleme Sorunu: Bir özelliği yüksek trafiği işlemek için ölçeklemek istiyorsunuz. Ama monoliti ölçekleniyorsunuz—tüm uygulamayı. Kaynak israfı.

Dağıtım Sorunu: Her değişiklik, tüm sistemi etkileyebilir. Bir ekip, satış özellik geliştiriyor; başka ekip, rapor modülü. Beraber çalışmak, birbirinin kodunu kırma riski var. Dağıtım süreci, sıkı koordinasyon gerektirir.

Teknoloji Bağlılığı: Monoliti Java'da yazdıysanız, tüm yenilikler Java'ya bağlı. Python'da harika bir kütüphane varsa, kullanamazsınız.

Ekip Yapısı: "Bu modül, kimin sorumluluğu?" muğlak hale gelir. Her ekip, kodu birbirine sokan bağımlılıklar yaratabilir.

Bu sorunları çözmek için, kuruluşlar mikroservisleri düşünmeye başlıyor.

Monolitik vs Mikroservis: Karşılaştırma

Boyut Monolith Microservices
Mimarisi Tek parça Birçok küçük hizmet
Dağıtım Bir dosya Her hizmet, kendi dağıtımı
Skalabilite Tüm sistem ölçeklenir Gerekli hizmet ölçeklenir
Teknoloji Bir stack Her hizmet kendi stack'ı olabilir
Veri Yönetimi Merkezi DB Her hizmetin DB'si olabilir
İletişim In-process çağrısı Network/REST/gRPC
Öğrenme Eğrisi Basit Karmaşık
Operasyonel Karmaşıklık Düşük Yüksek
Network Hataları Az Daha fazla
Distributed Debugging Kolay Zor

Mikroservislerin avantajı: Esneklik, bağımsız ölçekleme, teknoloji çeşitliliği.

Dezavantajı: Operasyonel karmaşıklık, dağıtılmış sistem zorlukları, artan ağ gecikme.

Mikroservis Mimarisi Ne Zaman Mantıklı?

Mikroservislere geçme kararı, basit değil. Eğer sistem yeterince büyük ve karmaşıklıkla bağlı değilse, monolith daha iyidir.

Mikroservis mantıklı olabilir:

  1. Bağımsız Ekipler: En az 3-5 ekip, farklı özellikler üzerinde çalışıyor, birbirinin kodu kesişmemeleri gerekiyor.

  2. Farklı Skalabilite Gereksinimleri: Bazı modüller yüksek trafiği işlemeli (örneğin, arama), bazıları az (örneğin, admin paneli).

  3. Farklı Teknoloji Gereksinimleri: Bazı modüller Python'da iyi (data processing), bazıları Go'da (API sunucusu).

  4. Bağımsız Dağıtım: Bir özelliği, diğer özellikleri etkilemeden yayımlamak istiyorsunuz.

  5. Yüksek Güvenilirlik: Bir modülün hatası, tüm sistemi kırmamalı.

Eğer bu koşullar yok ise, monolith daha iyi.

Amazon'dan ünlü söz: "Microservices is a solution to an organizational problem, not a technical problem." Yani, eğer ekip sorununuz yoksa, teknoloji sorununuz da yoktur.

Strangler Fig Pattern: Güvenli Geçiş

Tüm monoliti bir anda mikroservislere dönüştürmek, çok riskli. Strangler Fig pattern, bu riski minimize eder.

Desen, budak bitkilerinden ilham alır. Budak bitkisi, ağacı sararak, kademeli olarak onu denetim altına alır. Eski sistem, yavaş yavaş yeni sistem tarafından sarılır.

Adımlar:

  1. Yeni Mikservisi İnşa Et: Monoliti parçalamaya çalışmadan, yeni hizmet, monolite paralel olarak yazılır.

  2. Routing Ekle: İstek, ya monolite ya da yeni hizmete yönlendirilir. Başında, küçük oranda trafiği yeni hizmete gönder (yüzde 5 gibi).

  3. Yavaş Artır: Trafiği kademeli olarak artır. Yüzde 10, sonra yüzde 25. Sorun yoksa, yüzde 100'e çık.

  4. Monoliti Boş Bırak: Mikservis tüm trafiği aldığında, monolitin o kısmı devre dışı bırakılır.

  5. Tekrarlama: Sonraki mikservis, aynı pattern.

Avantaj: Düşük risk, tersine alma kolay, üretim ortamında test etme.

Dezavantaj: Paralel sistemler çalıştırmanın maliyeti, veri senkronizasyonu karmaşık.

Domain-Driven Design: Hizmet Sınırlarını Belirlemek

Mikroservislerin başarısı, hizmet sınırlarının doğru belirlenmesine dayanır. Kötü sınırlar, microservises'in avantajlarını kaybettirmektedir.

Domain-Driven Design (DDD), alan modelleme yöntemi. İşletme alanını çeşitli "bounded context"'lere ayırır.

Örnek: E-Commerce

Bounded Context'ler:

  • Ürün Katalog: Ürünler, kategoriler, fiyatlar
  • Sepet: Alışveriş sepeti, ödeme hazırlığı
  • Ödeme: Ödeme işleme, parasal işlemler
  • Kargo: Sipariş göndericileri, teslimat takibi
  • Kullanıcı: Hesap, profil, tercihler

Her bounded context, bir mikservis olabilir. İçinde tutarlı olmayı ("Ürün Katalog", kendi ürün ID'sini ve fiyatını yönetir). Arası, açık API aracılığıyla iletişim.

Sınırlar, teknoloji tarafından değil, işletme alanı tarafından belirlenmelidir. DDD eğitimi, bir investmentdir, ama bunu doğru yapmak uzun vadede tasarruf yaratır.

Veri Yönetimi: Dağıtılmış Sistem Zorlukları

Monolitte, tüm veri merkezi veritabanında. Bir işlem, atomik'tir—ya tümü başarılı, ya tümü başarısız.

Mikroservislerde, her hizmetin DB'si olabilir. İşlem, dağıtılır:

Senaryo: Müşteri, satın alıyor. Sepet -> Ödeme -> Envanter -> Kargo.

Sorun: Ödeme başarılı, ama envanter update başarısız? Tutarsızlık.

Çözüm 1: Saga Pattern

İşlemi adımlar halinde yönet. Her adım, başarılı veya başarısız olabilir. Başarısız olursa, geri alma (compensating transaction) yapıl.

Örneğin:

  • Ödeme başarılı -> Envanter update -> Başarısız -> Ödeme geri al.

Zorluğu: Geri almayı yönetmek karmaşık, asenkron işlemler.

Çözüm 2: Event Sourcing

Tüm değişiklikleri olaylar olarak kaydet. Herhangi bir hizmet, ilgilendiği olaylara subscribe olabilir.

Örneğin:

  • "Ödeme Alındı" olayı -> Envanter hizmeti bunu işle.

Avantaj: Veri tutarlılığı sağlanabilir, audit trail otomatiği.

Dezavantaj: Olay akış yönetimi karmaşık, veri tasarımı zor.

Veri yönetimi, mikroservislerin en zor kısmıdır.

Ekip Yapısı ve Conway's Law

"Sistem mimarisi, kuruluşun iletişim yapısını yansıtır." (Conway's Law)

Mikroservislere geçmekse, ekip yapısını da değiştirmek gerekebilir. İdeal model:

  • Her mikroservis, bir ekip tarafından sahiplenir
  • Ekip, kendi repo, kendi dağıtım, kendi hızlı geliştirme
  • Cross-team koordinasyon, minimal (API contracts üzerinden)

Bu yapı, "two-pizza rule" ile tanınır: Ekip, bir pizza ile beslenebilecek kadar küçük olmalı (yani, 5-10 kişi).

Eski monolitik ekip yapısında, bu değişiklik yapılmayıp mikservis alındıysa, sistem başarısız olacaktır.

Geçiş Planı: Gerçekçi Takvim

Monolitten Mikroservislere geçiş, yıllar alır:

Hazırlık Aşaması (3-6 ay): Domain modeling, ekip yapısını belirle, altyapı (container, orchestration) hazırlama.

Pilot Phase (3-6 ay): İlk 1-2 mikroservis, strangler fig ile, üretim ortamında test.

Genişleme (12-24 ay): Kalan microservices, kademeli olarak; monolit parçası parçası devre dışı bırakılır.

İyileştirme (Devam Eden): Monitoring, veri tutarlılığı, ekip yeterliliği iyileştirmeler.

Toplam: 18-36 ay, orta boylu sistem için.

Maliyeti: 500K - 2M USD, ekip saati, araçlar, altyapı.

Yaygın Hatalar: Nelerden Kaçınması Gerekir

  1. Çok Erken Mikroservise Gitme: Sistem yeterince büyük değilse, karmaşıklık üretim verimliliğini azaltır.

  2. Hizmet Sınırları Yanlış: DDD yapılmayıp, teknik gereksinimle sınırlar belirlenmesi, çok veri transferi yaratır.

  3. Veri Yönetimini Görmezden Gelme: Dağıtılmış işlem, sonradan eklenmediği, tutarsızlık problems.

  4. Operasyonel Altyapı Olmadan Başlama: Container orchestration, monitoring, logging olmadan, üretimde kaos.

  5. Ekip Yapısını Değiştirmemek: Halen monolitik ekipse, microservices başarısız.

  6. Tüm Özellikleri Hemen Dönüştürme: Pilot, başarılı proofs sonra genişletilmeli.

  7. Network Hataları Görmezden Gelme: Dağıtılmış sistem, network hataları artışlatır. Retry, timeout, circuit breaker gereklidir.

Alternatif: Monolith'i Modernize Etmek

Akılda tutması gereken: Mikroservislere geçmek, tek seçenek değildir. Modüler monolith, iyi tasarlanmış, çoğu yerde yeterlidir.

Amazon, Netflix gibi gigantlerin tümü ölçekte mikroservise gitti. Ama Basecamp gibi şirketler, monolitik Rails uygulamasıyla başarılı.

Seçim, ihtiyaca göre. Eğer monolitik iyi çalışıyorsa, "çöp olmayan şeyi düzeltme" uygulanmalı.

Ancak, sistem büyürse, ölçekleme sorunları ortaya çıkarsa, o zaman geçiş konuşmaya değerdir.

Microservices Başarısızlığı: Yaygın Nedenler

Mikroservisleri alan şirketlerin yüzde 30'u başarısız oluyor. Neden?

  1. Erken Geçiş: Sistem yeterince büyük değilken, mikroservislere gitmek, karmaşıklığı artırır, kazanç sağlamaz.

  2. Zayıf Mimari: Hizmetler, kötü şekilde sınırlandırılıyor. Çok veri transfer, network latency, tutarsızlık.

  3. Operasyonel Hazırlık: Container orchestration (Kubernetes), monitoring, logging altyapısı olmadan, kaos. Mikroservislerin sayısı arttıkça, işletme karmaşıklaşır.

  4. Ekip Yeterliği: Eğitim olmadan, geliştirici, asenkron iletişim, dağıtılmış sistem tasarımı hatası yapabilir.

  5. Veri Tutarlılığı Çözümsüzlüğü: Distributed transaction problemi çözülmediyse, tutarsızlık yaratır.

Başarının anahtarı: Doğru zamanında başla (sistem büyümüşse), iyi tasarla (DDD), altyapı hazırla (DevOps), eğit (ekip).

Başlangıç: Karar Almak

Mikroservislere geçme kararı:

  1. Mevcut Durumu Değerlendir: Sistem kaç sene?

Kaç ekip? Dağıtım zamanı kaç? Teknoloji sınırlamalar?

  1. Ihtiyaçları Tanımlama: Ölçekleme problemi mi? Ekip koordinasyonu mu? Teknoloji çeşitlilik mi?

  2. Alternatif Değerlendir: Monolitik refactoring, modülerleştirme. Mikroservislere gitme zorunlu mu?

  3. Pilot Planla: "Birinci hizmet nedir? Strangler fig nasıl uygulanır? Kaç aydır?"

  4. Altyapı Hazırla: Container, orchestration, monitoring, logging.

  5. Ekip Eğit ve Yapısını Değiştir: DDD, asenkron iletişim, dağıtılmış sistem tasarımı eğitimi.

Sonuç: Doğru Sorduğunuzda Doğru Cevap

Mikroservislerin cazip olması, herkesi "my system needs microservices" düşün yapar. Ancak bu, doğru soru sorulmadığında, pahalı bir hataya dönüşebilir.

Doğru soru: "İşletmemin sorunu nedir? Teknoloji sorunudur, yoksa organizasyon problemi midir? Mikroservisleri çözüm mü?"

Cevap, her kuruluş için farklı.

Daha geniş bağlam için, Kurumsal Yazılım Bakım ve Modernizasyon rehberimizi okuyun. Legacy Sistem Modernizasyonu, büyük sistem dönüşümü stratejilerini açıklar.

Yazılım mimarinizi değerlendirmek ve geçiş stratejisi planlı istiyorsanız, Smart Maple danışmanları yardımcı olabilir. Sistem analizi, DDD modelleme, geçiş planını oluşturabiliriz. Ziyaret edin smart-maple.com adresini daha fazla bilgi için.

Related Articles

March 1, 2026

Yazılım Yaşam Döngüsü Yönetimi (ALM): Uçtan Uca Rehber [2026]

ALM Nedir ve Neden Önemli? ALM (Application Lifecycle Management), yazılımın doğumundan, yaşamından ve ölümüne kadarki tüm süreci yönetmektir. Şöyle hayal edin: * Doğum: İşletmenin "Bu özellik gerekli" dediğinde, yazılım düşünülür. * Gebelik: Gereksinimler tanımlanır, tasarlanır, geliştirme yapılır. * Doğum: Yazılım, üretim ortamında canlı alınır. * Hayat: Bakım, güncellemeler, iyileştirmeler yapılır. * Yaşlanma: Hata oranı artıyor, bakım maliyeti yükseli. Modernizasyon düşünülür. *

Read More
February 28, 2026

Pazaryeri Entegrasyon Yazılımı: Trendyol, Hepsiburada ve Amazon Türkiye [2026]

Türkiye'de satış yapmak artık tek bir kanal üzerinden imkansız hale geldi. 2026 yılında, e-ticaret satışlarının yüzde 70-80'i üçüncü taraf pazaryerlerinde gerçekleşmektedir. Trendyol, Hepsiburada, Amazon Türkiye, N11, GittiGidiyor gibi platformlar, artık e-ticaret işletmelerinin hayatı değiştirebilecek bölümüdür. Ancak bu fırsat, bir sorunla birlikte gelir: her pazaryerini ayrı ayrı yönetmek, manuel olarak ürün yükleme, fiyat güncelleme, sipariş takibi imkansızdır. Büyüyen işletmeler için paza

Read More
February 27, 2026

Yapay Zeka Projesi Maliyet Analizi: Bütçe, Ekip ve ROI Hesaplama

Yapay zeka projelerine yatırım yapma kararı alan işletmeler için en kritik soru şudur: "Ne kadar maliyetli olacak?" Bu soruya net bir cevap vermek, proje kapsamından ekip bileşimine, bulut altyapısından veri yönetimine kadar birçok faktörün analiz edilmesini gerektirir. Bu rehber, yapay zeka projelerinin gerçekçi bütçelendirilmesi için bir yol haritasıdır. Yapay Zeka Projesi Maliyet Bileşenleri Bir yapay zeka projesinin toplam maliyeti, beş ana kategoriye ayrılır: insan kaynakları ve pers

Read More