• Członkowie 36 postów
    23 czerwca 2025 22:15

    Cześć,

    chciałem zapytać jak podchodzicie do budowy mikroserwisów w FastAPI, Jak wygląda u Was architektura całej aplikacji, z jakich libek / dodatków korzystacie? Jak dzielicie aplikacje na serwisy? Rozumiem, ze każdy serwis wdrażacie na fizycznie innym sprzęcie lub przynajmniej oddzielnym VPS / serwerze?

    Jak budujecie API Gateway? W postaci reverse proxy? Jakiś NGINX czy coś podobnego?

    W FastAPI można użyć takiego grupowania (ale czy to dobre podejście w mikroserwisach??):

    from fastapi import FastAPI
    
    from student_mgt import student_main
    from faculty_mgt import faculty_main
    from library_mgt import library_main
    
    app = FastAPI()
    
    app.mount("/student", student_main.student_app)
    app.mount("/faculty", faculty_main.faculty_app)
    app.mount("/library", library_main.library_app)
    

    Jak serwujecie pliki z assetami, szczególnie zdjęciami?

    Korzystacie z load balancerów?

    Czy używacie czystej architektury? Tak/nie i dlaczego? :)

    Jak u Was komunikują się serwisy między sobą? gRPC czy inne, starsze rozwiązania?

    Jak obsługujecie "wspólną" autoryzację?

    Czy korzystacie z jednej DB czy kilku/wielu? Dlaczego?

    Jak testujecie całą appkę?

    Mam nadzieje, że ktoś się pochwali swoimi doświadczeniami w tym temacie ;)

  • 23 czerwca 2025 23:03

    Jak nie potrzeba to nie budujemy. Jak potrzeba to są wynalazki typu GraphQL Hive albo Apollo Federation to lepienia GraphQL'a. Albo można to polepić w kolejnym serwisie JSONowym. Z przodu i tak NGINX.

    Podpisane URL'e do CDN'a

    Jak potrzeba.

    JSON między serwisami, GraphQL na zewnątrz, dla klientów.

    Dedykowana usługa np. Keycloak + JWT.

    Wspólna baza danych dla mikroserwisów IMHO zaprzecza idei separacji usług. Powinieneś móc zastąpić serwis nową jego wersją używającą innych technologii, przepinając adresy w API. A w razie potrzeby zrobić rollback i skierować ruch ponownie na stary.

    Klient API w Pythonie i/lub klikacz po stronie w Playwrightcie.

    Source: Duży ecommerce mający 44 mikroserwisy. Osobiście nienawidziłem tego projektu bo w praktyce mikroserwisy dają korzyści jak każda osoba w zespole odpowiada za swoje serwisy. Faktycznie człowiek robiąc ficzer X musiał samemu zmieniać np. 7 serwisów.