Cześć. To będzie mój pierwszy projekt z wykorzystaniem architektury mikroserwisów, także proszę Was o wyrozumiałość. Poczytałem trochę na ten temat, także o podejściu DDD ale mam nadal kilka pytań w zakresie praktycznego zaprojektowania aplikacji wykorzystującej mikroserwisy w ASP Net Core. Chodzi o dobre praktyki bazując na doświadczeniu osób obeznanych w tym temacie. Mój projekt nie będzie jakiś duży, powiedzmy na start 6-7 serwisów ale z możliwością dołożenia nowych. Mimo wielkości projektu nie chcę tworzyć monolitu tylko wejść w mikroserwisy. Moje pytania są zadawane w kontekście projektu ASP Net Core:
- czy powinienem stworzyć kilka serwisów pod jedną solucją (solution) czy może nowe solution dla każdego serwisu? Nie mówimy tu też o GitHubie, chodzi mi o Visual Studio
- jeśli kilka serwisów pod jedną solucją to jak wygląda kwestia deployowania? Czytałęm o dobrej praktyce, wg której każdy serwis to oddzielna aplikacja niezależna od innych i deployowana oddzielnie.
- czy API Gateway powinno działać jako oddzielna aplikacja czy może jednak być podpięte pod jakiś istniejący solution i reszta solutions by też z niego korzystała?
- czy mikroserwisy , które utworzę powinny być konteneryzowane czy może nie jest to konieczne?
- czy mikroserwisy można zdeployować na produkcji bez kontenerów?
- cała aplikacja będzie de facto korzystała z jednej bazy danych na jednym serwerze - mamy tam wszystkie potrzebne dane do działania apki. Czytałem jednak, że wg dobrych praktyk każdy serwis powinien mieć swoją bazę danych. Pytanie - czy mogę, przeciwnie do dobrych praktyk, używać jednej bazy danych dla wszystkich serwisów (każdy z serwisów będzie ciągnął dane z innych tabel, nie będą współdzieliły)?
- niejako nawiązanie do pkt.7 - czy ma sens stworzenie dedykowanego serwisu, który będzie pobierał dane z bazy potrzebne moim wszystkim serwisom? Wtedy każdy serwis pobierałby dane używając API z jednego miejsca - tego właśnie serwisu z danymi. Czy może lepiej, żeby każdy serwis miał oddzielne połączenie z bazą danych i niezależnie funkcjonował, w oderwaniu od mikroserwisu z danymi?
Dziękuje z góry za odpowiedzi. Próbuję sam ogarnąć te mikroserwisy, nikt nie robił w firmie tego przede mną więc nie mam wypracowanego wzorca. Mam nadzieję, że podpowiecie mi jak zrobić to z praktycznego punktu widzenia.