folder Tahribat.com Forumları
linefolder Programlama Genel
linefolder Micro Frontend Hakkında



Micro Frontend Hakkında

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    Merhaba Mürit ve Mürideler,

     

    Bir projemiz var çok önceden monorepo olarak geliştirmeye başladığımız. Backend kısmı tamamen microservice mimarisi ile yazdık fakat frontend tarafta proje büyüdüğü için PR işlemleri, unit test işlemleri ya da deploy işlemlerinde bir takım sıkıntılar yaşıyoruz. Tamamen ekrandaki her modülün farklı bir uygulama olarak çalışmasına geçiş yapacağız. Buradaki mimari araştırmalarım ile (daha önce de bu yapıyı intertech de görmüştüm) micro frontend yaklaşımına biraz soğuk bakmaya başladım. Artı ve Eksilerini düşününce işin içinden çıkamıyorum.

     

    Framework olarak React kullanıyoruz ve tüm ekip React biliyor. Monolitic bir app var elimizde normal React-Redux-Redux Saga şeklinde geliştirilen bir proje.

     

    Bu projeyi micro frontend'e çevirmekte bir problem yok fakat performans olarak ciddi kayıplara sebep olacağımızı düşünüyorum. Micro frontend olarak yazdığımızda ekrandaki tüm kodlar tekrar tekrar render olacak şekilde tasarlanmak zorunda (mimari gereği) yani Single Page Application (SPA) mantığına ters geliyor bana. O zaman MVC den farkı ne burada biraz kafam karışıyor. Bir de maliyet olarak SPA daha az maliyetli geliyor bana. Micro frontend olarak tasarladığımda aynı buttonu ya da componentleri alt projelerde de kullanacağım ve sıfırdan tekrar yazılacak. Genel bir tasarımsal değişiklik ya da başka bir durum olduğunda tüm kod yapıları değişmeli.

    Hadi bu componentleri bir şekilde paket haline getirdik ve UI kit olarak local package manager üzerinden yönettik diyelim. State management ne olacak? Proje SPA olmadığı için herhangi bir state management yöntemini nasıl kullanacağım ki? Sonuçta ekran içerisindeki fragmentler farklı farklı projeler. 

     

    Yani bu şekilde düşündüğümde bana micro frontend backend gibi mantıklı gelmiyor. Daha fazla iş, Kod tekrarı, Performans gibi konularda çok geride kalıyor. Buradaki tek avantaj projelerin yatayda parçalanması ve deployment süreçleri.

     

    Bu konudaki yorumlarınızı çok merak ediyorum.


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    manglerman
    manglerman's avatar
    Kayıt Tarihi: 30/Aralık/2003
    Erkek

    microfrontend yapısını ilk kez duydum. biraz inceledim. ŞAHSİ GÖRÜŞÜM => bana aşırı gereksiz geldi.

    frontend dediğin tek bir proje tek bir  katman olması lazım benim gözümde.

    blazora bulaştığımdan beri mvc bile hammaliye gelmeye başladı hatat.

    araştırdığım kadarıyla tam microfrontend mimarisini uygulayacağım dersen, backendde harcadığın eforun daha fazlasını harcayacakmışsın gibi geliyor.

    frontendde testlerini ufak bir araştırmayla selenium csharp webdriver ile yapabilrsni bence.

    onun haricinde hangi ortam hızlıysa veya duruma göre hangi ortamda daha hızlı kod geliştirebileceksen ona yönlenebilirsin.

    ben frontenddeki razor componentlerini ve servisleri bot ile oluşturuyorum coremodel'deki Name,Id,IsDeleted, vb core fieldlardan sadece Name alanını frontendde alacak şekilde razor hazır bottan geliyor.

    modele yeni fieldlar ekleyeceksem blazorun bir güzelliği olarak sadece 1 yerde o modelin o field'ine atama yapıp işimi bitiriyorum.

     

    biraz hızlı yazdım dediklerim karışmış olabilir.

    kolay gelsin.


    türk kızlarından sabun yapalım, rus kızları elini yıkasın.:)
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    Hocam peki proje büyüdü devasa bir kod var. Sürekli confilict yaşanıyor bu gibi durumları nasıl çözüyorsun? Proje büyüdükçe kod kalitesi de düşüyor yönetmesi zorlaşıyor. Bunu nasıl çözüyorsun? Son olarak da deployment sorunu var. Mesela React ile proje geliştiriyorsun versiyon çıkman gerekiyor. Versiyonu çıktın diyelim dosyaları değiştirdiğin anda (deployment olduğu anda) biri ekranlarda bir işlem yaptığında hata alır sayfayı yenilemesi gerekiyor. Bunu nasıl çözüyorsun?


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    end
    end's avatar
    Kayıt Tarihi: 16/Ekim/2016
    Erkek

    Buyuk ekiplerle gelistirilen buyuk uygulamalar icin mantiklidir. Yeni ekleyecegin seylerde butun uygulamanin cortlamayacagini bilirsin, kafan rahat olur. ayrica bahsettigin dependency conflict sorununu da cozer.

    monolit projelerde bazen yeni bir kutuphane eklemek istedigin oluyor, ve o yeni kutuphane projende hali hazirda kullandigin baska bir projenin bagimli oldugu paketin daha guncel veya daha eski surumune bagimli olabiliyor, kullanamiyorsun haliyle; digerini etkiliyor cunku. Sorunu cozebilmek icin butun ilgili yerleri guncellemen gerekiyor, corba gibi oluyor kafan. Ayrica react disinda farkli farkli frameworkler kullanmana da olanak taniyor bu yapi.

     

    Projen kucuk-orta olcekliyse cok da luzumlu degil bence. 


    0x0480 takilin madem ﷽﷽﷽
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Retro
    by_Tet
    by_Tet's avatar
    Kayıt Tarihi: 22/Mayıs/2012
    Erkek

    Şuan büyük bir firmanın mf yapısını yapıyoruz. Sanılandan çok daha farklı yaklaşımlar var. Birkaç aya büyük bir dökümantasyon hazırlamayı planlıyorum


    iyibu! yeniden..
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    manglerman
    manglerman's avatar
    Kayıt Tarihi: 30/Aralık/2003
    Erkek
    MhmdAlmz bunu yazdı

    Hocam peki proje büyüdü devasa bir kod var. Sürekli confilict yaşanıyor bu gibi durumları nasıl çözüyorsun? Proje büyüdükçe kod kalitesi de düşüyor yönetmesi zorlaşıyor. Bunu nasıl çözüyorsun? Son olarak da deployment sorunu var. Mesela React ile proje geliştiriyorsun versiyon çıkman gerekiyor. Versiyonu çıktın diyelim dosyaları değiştirdiğin anda (deployment olduğu anda) biri ekranlarda bir işlem yaptığında hata alır sayfayı yenilemesi gerekiyor. Bunu nasıl çözüyorsun?

    teker teker gitmeye çalışayım hocam.

    1-) Hocam peki proje büyüdü devasa bir kod var. Sürekli confilict yaşanıyor bu gibi durumları nasıl çözüyorsun? 

     => aynı ekipteki arkadaşlar sürekli olarak aynı frontendi değiştirmiyorlar. Zaten yukarıda da bahsettiğim gibi bir servis ekleneceği zaman bu servisi kendi yazdığım bot ile ekliyorum. böylece o service ait aşağıdakilerin hepsi otomatik olarak ekleniyor

        - Service Interface
        - Service Implementation
        - Service Client Implementation (controller'i consume etmek için)
        - API Controller
        - Model
        - Generic Repository Implementation
        - Core Model için (Name) Blazor RAZOR CRUD sayfası
    dolayısıyla bir modele yeni bir field ekleneceği zaman sadece o sayfada küçük bir değişiklik yapılıyor businesslogic ler zaten servis katmanında yapılıyor ve aynı anda aynı serviste GENELDE tek kişi çalışıyor. buna rağmen conflict olursa kişilerle konuşup resolve ediyoruz şimdiye kadar büyük sıkıntıyla karşılaşmadık.

    2-) Proje büyüdükçe kod kalitesi de düşüyor yönetmesi zorlaşıyor. Bunu nasıl çözüyorsun? 

    => proje büyüse bile kod kalitesi düşmüyor. kod kalitesi hep standart çünkü core işlemlerin hepsi zaten standart şekilde bot ile üretiliyor. yeni eklenen servisleri de mecburen aynı servisin interface'ine eklemek zorunda kalıyor. kod bunu zorunlu kılıyor. ayrıca .net core da DI zorunlu olduğu için biz kod kalitesinden yana sıkıntı çekmiyoruz. he dersenk yazılımcıalr kötü bu mimaride saçma kod yazıyorlar onu liderin takip ve tespit etmesi gerekecek.

     

    3-) Son olarak da deployment sorunu var. Mesela React ile proje geliştiriyorsun versiyon çıkman gerekiyor. Versiyonu çıktın diyelim dosyaları değiştirdiğin anda (deployment olduğu anda) biri ekranlarda bir işlem yaptığında hata alır sayfayı yenilemesi gerekiyor. Bunu nasıl çözüyorsun?

    => biz genelde müşterilere 10 dklık bir publish için 30 dk maintenance randevusu alıyoruz. sıkıntı çıkarsa manuel müdahil olmak için. şu anda azure CI/CD lerini kullanıyoruz. bazı küçük projelerde iisten copy paste ile yayına alıyoruz. Blazor ekrandaki kesintiyi 5 kez deniyor ve bağlanabilrise kaldığı yerden devam ediyor sıkıntı olmuyor. ama MVC tarzı siteler sıkıntı her halükarda refresh gerekli.

     

     

     

     


    türk kızlarından sabun yapalım, rus kızları elini yıkasın.:)
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    Bilemedim ya arafta kaldım. Projemiz aslında stabil ve iyi fakat bayağı büyümeye başladı proje. Bazen ana yapılarda değişiklikler meydana geliyor ve projenin anası ağlıyor. Hatta bir paket değiştirdik geçenlerde React 0.67 çektik projeyi yükselttik projenin genelinde bir değişiklik yapmak zorunda kaldık. Bundan dolayı ekip 3 gün boyunca çalışamadı sadece core ekip çalıştı diğerleri çalışmanın bitmesini bekledi gibi gibi.. Proje micro olsaydı bu yaşanmazdı ama bilemedim... Araştırmaya devam edeceğim. 

     

    https://www.youtube.com/watch?v=w58aZjACETQ&ab_channel=JackHerrington

     

    Şu adamın videolarını izliyorum bir şeyler ortaya çıkıca konuyu güncellemeye devam edeceğim. Farklı yaklaşımları olan varsa ve bizimle paylaşabilirse çok sevinirim.


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Reskam
    Reskam's avatar
    Kayıt Tarihi: 14/Mayıs/2012
    Erkek

    selamlar hocalar bende bu soruya paralel bir soru sorayım ;

    FE tarafında anlık 50 K / Request per second  gibi bir durum olduğunu varsayalım bu noktada nodejs bu yükü kaldıramıyoru bu noktada nasıl bir çözüm izliyorsunuz ? Micro frontend ile mi ?



    Memento Mori
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Elif - Efe
    rakkoc
    rakkoc's avatar
    Kayıt Tarihi: 19/Aralık/2003
    Homo
    MhmdAlmz bunu yazdı

    Hocam peki proje büyüdü devasa bir kod var. Sürekli confilict yaşanıyor bu gibi durumları nasıl çözüyorsun? Proje büyüdükçe kod kalitesi de düşüyor yönetmesi zorlaşıyor. Bunu nasıl çözüyorsun? Son olarak da deployment sorunu var. Mesela React ile proje geliştiriyorsun versiyon çıkman gerekiyor. Versiyonu çıktın diyelim dosyaları değiştirdiğin anda (deployment olduğu anda) biri ekranlarda bir işlem yaptığında hata alır sayfayı yenilemesi gerekiyor. Bunu nasıl çözüyorsun?

    Benzer sorunlar yaşıyorduk (angular) sonra yöntemi söyle değiştirdik.

    /var/ProjectName/v1/ çalışmakta olan version.

    /var/ProjectName/v1.1/ yeni version.

    v1.1 klasoru upload'u bittikten sonra bilgi işlemci apache den vHost path'i guncelliyor, Ayni sekilde backend makinelerinde de güncelleme farkli bir porttan ayağı kalkıyor. Prodda herseyin doğru tanımlandığı vs test edildikten sonra ngnix ve apache restart edilip yeni config ile ayağı kaldırılınıyor. Bu sayede güncelleme süresinde kesinti service restart süresine düşüyor. (cloud flare gibi bir ön yüz var ise oradan cache leri pure etmek de gerekiyor tabi)

     


    Bu aralar fazla yogunum. Unuttugum seyler oluyorsa affola. DM vs atın.
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Elif - Efe
    rakkoc
    rakkoc's avatar
    Kayıt Tarihi: 19/Aralık/2003
    Homo
    Reskam bunu yazdı

    selamlar hocalar bende bu soruya paralel bir soru sorayım ;

    FE tarafında anlık 50 K / Request per second  gibi bir durum olduğunu varsayalım bu noktada nodejs bu yükü kaldıramıyoru bu noktada nasıl bir çözüm izliyorsunuz ? Micro frontend ile mi ?


    bunun çok farkli çözümleri olabilir. Örneğin bi loadbalancer ile paylaşım yapilabilir. Burada senin yapina hangisi uyacaktir ona bakmak lazim.


    Bu aralar fazla yogunum. Unuttugum seyler oluyorsa affola. DM vs atın.
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    yolbulucu
    yolbulucu's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Homo

    inertia ya baktin mi ? 


    29.99cm, titanyum kaplamalı, çift damarlı, su ve yağ soğutmalı.
Toplam Hit: 1937 Toplam Mesaj: 15
micro-frontend