Mikro Frontend Nedir, Avantajları ve Dezavantajları Nelerdir?

Selim KURT
4 min readJun 11, 2024

--

Sample Micro-Fronend Architecture

Mikro Frontend Nedir?

Mikro Frontend, geleneksel monolitik web uygulamaları yerine bir web uygulamasını birçok küçük, bağımsız parçalara bölen ve her bir parçayı ayrı bir frontend uygulaması olarak ele alan bir mimari yaklaşımdır. Bu yapı, büyük ve karmaşık uygulamaların daha yönetilebilir, esnek ve ölçeklenebilir olmasını sağlar.

Mikro Frontend mimarisinde, her bir parça farklı bir ekibin sorumluluğunda geliştirilebilir ve bakımı yapılabilir. Örneğin, bir e-ticaret uygulamasında sepet, ödeme işlemleri, ürün kataloğu ve kullanıcı profili gibi farklı ekranlar Mikro Frontend parçaları olarak ayrılabilir. Bu parçalar bağımsız ekipler tarafından geliştirilir ve genellikle bir ana uygulama içinde birleştirilerek son kullanıcıya sunulur.

Bu yaklaşım, ekipler arasında bağımsızlık ve özerklik sağlayarak hızlı bir şekilde geliştirme ve güncelleme yapılmasını mümkün kılar. Ayrıca, farklı teknolojilerin kullanılmasına olanak tanıyarak ekiplerin kendi tercih ettikleri teknolojileri kullanmasına izin verir ve kaynakları verimli kullanma ve ölçeklendirme açısından kolaylık sağlar.

Ancak, Mikro Frontend mimarisi karmaşıklığı da artırabilir. İletişim ve koordinasyon gereksinimleri doğabilir, bu da yönetim ve entegrasyon açısından zorluklar çıkarabilir. Bu nedenle, bu yapının proje ihtiyaçları ve ekibin deneyimi göz önünde bulundurularak uygulanması önemlidir.

Avantajları

  • Bağımsız Geliştirme İmkanı: Mikro Frontend mimarisi, farklı ekiplerin bağımsız olarak çalışmasına izin verir. Her Mikro Frontend parça, kendi başına geliştirilebilir, test edilebilir ve birbirinden bağımsız farklı ekiplere paylaştırılabilir. Bu yaklaşım, paralel geliştirme süreçleri sağlar ve ekipler arasında daha iyi işbirliği imkanı sunar.
  • Hızlı Geliştirme Döngüleri: Mikro Frontend yapıyı kullanan projeler, küçük ve bağımsız parçalardan oluştuğu için hızlı geliştirme döngülerine olanak tanır. Bir Mikro Frontend parçanın güncellenmesi veya yeni bir özellik eklenmesi, uygulamanın tamamının yeniden inşa edilmesini gerektirmez. Bu yaklaşım, daha hızlı aksiyon alma ve daha hızlı bir şekilde yeni özelliklerin projeye entegre edilip canlı ortama sürülmesi anlamına gelir.
  • Teknolojik Çeşitlilik: Her bir Mikro Frontend parça, kendi teknolojik yaklaşımını seçebilir. Bu yöntemle, farklı teknolojik becerilere sahip ekiplerin bir araya gelmesini sağlar. Örneğin, projenin herhangi bir mikro parçası Angular kullanan bir ekip tarafından geliştirilirken, diğer bir mikro parçası ise ReactJS kullanan bir ekip tarafından geliştirilebilir. Bu şekilde, geliştiricilere teknolojik özgünlük sağlarken proje geliştirme esnasında da ekiplere esneklik sağlar.
  • Uygulama Ölçeklenebilirliği: Mikro Frontend yaklaşımı, uygulamanın birbirinden farklı mikro parçalarını bağımsız olarak ölçeklendirmeye izin verir. Bu yöntemle, projedeki belirli bir bölümün tahmini geliştirme eforlarını öngörme, teknolojik güncelleme maliyeti gibi konularda ölçeklendirmeyi mümkün kılar.
  • Modüler Geliştirme: Mikro Frontend yapıyı kullanan projeler modüler bir yapıya sahiptir. Her bir parça, belirli bir işlevselliği temsil eder ve bu modüler yapı, kodun daha iyi anlaşılmasını, bakımını ve genişletilmesini sağlar. Bir mikro parçanın bakımı, değiştirilmesi veya güncellenmesi, diğer mikro parçalara minimum etki yapar.
  • Ekip İşbirliği: Mikro Frontend mimarisi, farklı ekiplerin bir araya gelerek uygulama geliştirmesini kolaylaştırır. Her bir ekip, kendi Mikro Frontend parçasını geliştirir ve bunlar daha sonra bir araya getirilerek bir bütün oluşturulur. Böylece büyük ölçekli projelerdeki karmaşıklığı azaltırken ekip işbirliği performansınıda önemli ölçüde arttırır.
  • Teknik Borçlanma Azaltma: Mikro Frontend parçalar, teknolojik borcu azaltmaya yardımcı olabilir. Yani, eski veya kötü tasarlanmış bir bölümü güncellemek veya değiştirmek için diğer bölümleri etkilemeye gerek kalmaz. Uygulamanın genel kalitesini ve sürdürülebilirliğini artırır.
  • Bağımsız Hata Ayıklama: Mikro Frontend parçalar, bir hata durumunda kolay analiz edilebilir. Ayrıca bir Mikro Frontend yapının hata alması, diğer Mikro Frontend parçaları etkilemez. Bu yaklaşım hataların daha hızlı tespit edilip çözülmesine de olanak tanır.

Dezavantajları

  1. Gereksiz Proje Büyüklüğü ve Karmaşıklığı: Küçük ölçekli projelerde veya basit web uygulamalarında, Mikro Frontend mimarisinin uygulanması gerekmeyebilir. Bu tip projelerde, mikro yapı kullanmanın getirdiği ek karmaşıklık ve altyapı maliyeti, elde edilen avantajlardan daha fazla olabilir.
  2. Yazılım Geliştirme Ekosistemi: Ekipler ağırlıklı olarak aynı teknolojik yaklaşımı kullanıyorsa ve her bir ekibin bağımsız geliştirme imkanları sınırlıysa, bu mimari yaklaşım gerekli olmayabilir. Teknolojik çeşitlilik avantajı, küçük geliştirme kitle ve ortamlarında pek hissedilmeyebilir.
  3. Eğitim ve Öğrenme Süreci: Ekiplerin Mikro Frontend yaklaşımını benimsemesi ve etkin bir şekilde kullanabilmesi için belirli bir öğrenme süreci gerektirebilir. Eğer ekip bu değişikliği hızlı bir şekilde benimsemekte zorlanıyorsa, daha basit bir monolitik yaklaşım daha uygun olabilir.
  4. Ekip Büyüklüğü ve Yetenekleri: Mikro Frontend mimarisi, farklı uzmanlık alanlarına sahip ekiplerin uyum içinde çalışmasını gerektirir. Eğer bir organizasyon, farklı uzmanlık alanlarından oluşan küçük bir ekibe sahipse veya uzmanlık eksikliği yaşıyorsa, bu mimari yaklaşım daha fazla sorun yaratabilir.
  5. Performans Optimizasyon Sorunları: Mikro Frontend mimarisi, bir uygulamanın farklı parçalarını birleştirerek çalıştığı için bazı durumlarda performans sorunlarına yol açabilir. Özellikle, her bir mikro yapının ayrı bir HTTP isteğiyle yüklenmesi durumunda sayfa yükleme süreleri artabilir ya da değişiklik gösterebilir.
  6. Ekip İletişimi ve Koordinasyon Zorlukları: Mikro Frontend mimarisi, ekipler arasında etkileşimi ve koordinasyonu zorunlu kılar. Eğer iletişim ve koordinasyon sorunları yaşanıyorsa, bu mimari model uygulandığında sorunlar daha belirgin hale gelebilir. Bu sorunlarla beraber ürün geliştirme faaliyetleri yavaşlar.
  7. Teknolojik Borç ve Uyum Sorunları: Teknolojik borç yeni trend teknolojik gelişmeleri projeye entegre edebilme sürecine denir. Eğer mevcut bir monolitik uygulama üzerinde çalışılıyorsa ve geçiş süreci sırasında oluşacak teknolojik borç ve uyum sorunları, Mikro Frontend yapının getirdiği avantajları aşacaksa bu durumda bu mimari yapıya geçiş önerilmeyebilir.
  8. Test Edebilme ve Test Senaryo Karmaşıklığı: Mikro Frontend mimarisi, test ve entegrasyon testlerinin yönetilmesini zorlaştırabilir. Her bir mikro yapının bağımsız olarak test edilmesi ve tüm mikro parçaların birleştirildikten sonra bir bütün olarak tekrar bir teste tabi tutulması gerektiği için test edebilme ve test senaryo süreçlerini daha karmaşık bir hale getirebilir.

Mikro Frontend mimarisi, dinamik ve hızla değişen geliştirme ortamında büyük ölçekli web uygulamaları geliştirmek için önemli bir araçtır. Ancak, her proje ve organizasyon farklıdır; bu nedenle bu mimari yaklaşımın uygunluğu dikkatlice değerlendirilmelidir.

Okuduğunuz için teşekkürler

Her zaman gelişmek için yer olduğunu anlıyorum. Lütfen düşüncelerinizi paylaşmaktan çekinmeyin.

--

--

Selim KURT

Software Developer - Mobile & Web Developer #react #reactnative #nextjs #frontend #digitaltransformation #javascript