Photo by Julien Juanola on Unsplash

MICRO FRONTENDS

Digital Platformlar — Ölçeklenebilir Ürün Geliştirme Altyapısı

Bu konu Micro frontend ’in bir alt konusu olmasada bir ürünün ölçeklenebilir şekilde üretimi ve Backend, Frontend, DevOps ve diğer paydaşları ile hizmet vermeye hazır hale gelmesini hızlandıran, standartlaştıran altyapılara Digital Platform diyebiliriz. Bu blog yazısında bu digital platformlardan Harvested ve Foundation Platform üzerinde duracağız.

Onur Dayıbaşı
Architectural Patterns
3 min readMay 11, 2023

--

Düşünün ki şirketinizde birden fazla ekip var ve bu ekipler Enterprise bir kurumun farklı farklı ürünlerini geliştiriyor.

Diyelim ki bu ürünlerin birbirine benzemez, birbiri ile hiç alakası olmayan ürünler;

Birbirinden çok ayrı hiç bir benzerliği olmayan ürünler

Bu durum çok ütopik olurdu, genelde bir Enterprise(kurumun) içerisindeki ekipler farklı farklı ürün ihtiyaçları olsada genelde ortak işlevleri gerçekleştirirler. Örneğin

  • Dosya oluşturma
  • Bunu Onaya çıkarma
  • Kaydetme, Listemele, Sorgulama
  • vb..

Bu durumda görsel biraz daha değişiyor. O zaman ürünler çok da ayrık olmamalı, Aşağıdaki resimde bu yetenek kesişimlerini görebilirsiniz.

Birbirlerine benzer özellikleri olan

İyi tamam da gerçek dünyada yeteneklerin keşimi dışında birde bağımlılıklar olabilir, yani A ekibinin ürünü B’den bir veri, veya B, D’den bir veri kullanmak isteyebilir.

Ürünler arası bağımlılıklar.

İşte gerçek dünyada bu ürünlerin sayısı arttığında, geliştirme ekiplerin her şeyi farklı farklı yapmaması, tekerleği yeniden icat etmemesi için bu ürünlerin temelinde kullanabildikleri bir platform olması gerekir.

Bugünkü konumuza gelirsek, platformun temelde birçok ürün için temel teşkil edilen yetenekleri bir şekilde Platform içerisinde soyutlamamız gerekiyor ? Peki bu platformu hangi yöntem ile geliştirebiliriz ?

  • Harvested Platform
  • Foundation Platform

Harvested(Hasat Yoluyla) Platform

Harvested yöntemimde ana amaç platform oluşturmak olmaz, uygulama geliştirirken. Örneğin A uygulamasını geliştirirken platform oluşturmaya çalışmazsınız.

Bunun yerine iyi tasarlanmış, iyi kurgulanmış bir uygulama oluşturmaya odaklanırsınız.

Bir uygulama oluşturduktan sonra, en azından ilkiyle benzer ihtiyaçları olan başka bir uygulama oluşturursunuz. Bunu yaparken ikinci ve ilk uygulama arasındaki tekrarlara dikkat edersiniz. Yinelemeleri buldukça ortak bir alana ayırırsınız. Buna proto-platform denilebilir.

Daha fazla uygulama geliştirdikçe, her biri platform alanını daha da iyileştirir. İlk birkaç uygulama sırasında her şeyi tek bir kod tabanında tutarsınız. Bunun birkaç turundan sonra platform stabilize olmaya başlar ve sonrasında kod tabanlarını ayırabilirsiniz.

Foundation (Temel) Platform

Foundation Platform ise, üzerine inşa edilen herhangi bir uygulamadan önce inşa edilen bir platformdur.

Buradaki ana yaklaşım, platforma ihtiyaç duyan çeşitli uygulamaların ihtiyaçlarını analiz etmek ve bu ortak özellikler ve yeteneklerin ardından platformu oluşturmanızdır.

Platform tamamlandıktan sonra üzerine uygulamalar inşa edersiniz. Burada önemli olan nokta, uygulamalar üzerinde çalışmaya başlamadan önce platformun gerçekten istikrarlı bir API’ye sahip olması gerektiğidir, aksi takdirde platformda yapılan değişikliklerin uygulamalardaki zincirleme etkileri nedeniyle yönetilmesi zor olacaktır.

Martin Fowler bu yaklaşım teoride mantıklı gelse de, pratikte bunun çoğunlukla kötü işlediğini görmüş. Burada ki problem, platformun gerçek ihtiyaçlarını anlamak çok zor.

Sonuç olarak platform gerçekten ihtiyaç duyulandan çok daha fazla yeteneğe sahip oluyor. Çoğu zaman platformun yetenekleri uygulamaların gerçekten ihtiyaç duyduklarıyla eşleşmiyor.

Yani burada her ne kadar iyi analiz etsenizde ürünler esas geliştirildikçe ortak ihtiyaçların daha net çıkabileceğini anlatıyor.

Referanslar

--

--