monolit yapıdan mikroservis mimarisine dönüşüm

Ocak 2022 — Haziran 2023

bizigo şirketinde çalıştığım ikinci büyük projeydi. şirketin mevcut kurumsal seyahat planlama platformunu monolit yapıdan mikroservis tabanlı bir yapıya dönüştürmek için çalıştık.

bu bir dönüşüm projesiydi. amacımız monolit yapıda çalışan mevcut web uygulamasını frontend ve bff api olarak iki ana parçaya ayırmak, bff servisinin de diğer mikroservislerle iletişim kurduğu bir yapı oluşturmaktı.

bu projede yer aldığım başlıca alanlar şunlardı:

backend ve frontend tarafı birbirinden ayrıldı.

frontend’in ihtiyaç duyduğu veriler farklı mikroservisler üzerinden bff servisine taşındı. böylece frontend’in doğrudan farklı servislerle konuşması yerine sadece bff api endpointleri üzerinden ilerlemesi sağlandı.

bazı sql sorguları baştan yazıldı. özellikle read-heavy çalışan kısımlar daha iyi performans ve daha fazla kontrol için dapper’a taşındı.

sql üzerinde yapılan bazı full-text search işlemleri elasticsearch’e taşındı. bu senaryolar için custom analyzer tanımlandı ve sql tarafındaki arama yükü azaltıldı.

uçak ve otel arama sonuçları dinamik olarak elasticsearch’e yazılıp buradan okunmaya başlandı. bu sayede hem arama hızı iyileşti hem de provider’lara yapılan gereksiz istekler azaltıldı.

listeleme ve filtreleme senaryolarında elasticsearch daha aktif kullanılmaya başlandı. filtre seçeneklerinin önemli bir kısmı elasticsearch tarafında üretildiği için sql sorguları sadeleşti ve listeleme performansı arttı.

mevcut mail template’leri yeniden düzenlendi ve ilgili mikroservislerle entegre edildi.

bazı rezervasyon akışı verileri database üzerinden yönetilmek yerine redis’e taşındı.

çoklu dil seçeneklerinin bazı kısımları redis üzerinden yönetilecek hale getirildi.

bu geliştirmeler sayesinde frontend ve backend takımlarının birbirinden daha bağımsız çalışabilmesi mümkün oldu. frontend tarafı bff api üzerinden beslendiği için arayüz değişiklikleri daha hızlı ve daha kontrollü yapılabilir hale geldi.

aynı zamanda sistemin performansı iyileşti, problem tespiti kolaylaştı ve deploy süreçleri daha parçalı yönetilebilir hale geldi. mikroservis yapısı sayesinde problemli veya değişiklik yapılan kısımlar ayrı ayrı deploy edilebildi. blue-green deployment ile de bu geçişlerin kullanıcı tarafında kesinti hissi yaratmadan yapılması hedeflendi.