Wiem, że można by było to dać do innego działu, ale jestem ciekaw stricte jak to wygląda/powinno wyglądać w Go. Piszę już komercyjnie do dość długo w tym języku. Spotkałem się z kilkoma podejściami jak powinno się pisać/trzymać kod. Najczęściej, to co ja widzę, to podejście MVC, albo DDD. Dodam, że większość projektów to "mikroserwisy". Jedno i drugie ma jakieś swoje plusy i minusy. Jak wygląda to u was w kodzie? Może macie jeszcze inne podejście? W jakich przypadkach używacie danego podejścia do pisania kodu?
Nie piszę w Go, ale czemu nie oba? MVC nie wyklucza DDD ani DDD nie wyklucza MVC. To są zupełnie inne części aplikacji, więc nie powinny ze sobą kolidować w najmniejszym stopniu.
- Uważam że Go to takie lepsze C, używanie go do innych projektów niż infra wywołuje u mnie napady agresji.
- MVC to sposób organizacji kodu programu w kontekście interfejsu użytkownika, DDD to sposób organizacji i pracy z kodem domeny. Oba wzorce są od siebie niezależne. Jest jeszcze Clean architecture i CQS i oczywiście architektura heksagonalna.
Ogólnie nowe projekty w Javie kierują się w stronę architektury heksagonalnej, z DDD jako metodą organizacji kodu w domenie.
UI jest zepchnięty na ubocze, i tam w odpowiednim adapterze np. REST endpoint można już stosować wzorzec MVC (Controller + DTOsy typu Request/Response).
Architektura jest zazwyczaj niezależna od języka. Ale w pewnych technologia istnieją frameworki które sporo rzeczy ułatwiają (słynny Spring Boot).
Wydaje mi się że w Go ludzie cenią prostotę, i raczej pisali by aplikacje korzystając z architektury warstwowej i mikroORM'ów. No ale to moja opinia.
Jeżeli znasz Javę to spróbuj popatrzeć na jakieś przykłady np. https://blog.allegro.tech/2020/05/hexagonal-architecture-by-example.html
Ale w Go też na pewno jest dużo artykułów na ten temat. Niestety te wszystkie wzorce trochę idą w poprzek tego z czego Go jest mocne, hyper wielowątkowości go routines everywhere...
No właśnie niby niezależne, ale potem widzę jedno, albo drugie. I jak ktoś stworzył projekt a'la MVC, to potem strasznie się złości jak chce przemycić coś z DDD. Mam wrażenie, że ludzie MVC/DDD sprowadzają do pewnego nazewnictwa i organizacji katalogów.
Jest jeszcze Clean architecture i CQS i oczywiście architektura heksagonalna.
A Clean Architecture to nie jest coś bardzo zbliżonego do heksagonalnej? Właściwie to heksagonalna jest podzbiorem Clean Architecture ?
Poza tym rzeczywiście Go to chyba nie język do aplikacji biznesowych...
0xmarcin napisał(a):
- Uważam że Go to takie lepsze C, używanie go do innych projektów niż infra wywołuje u mnie napady agresji.
Ja od prawie 5 lat piszę biznesowe aplikacje w Go i nie widzę powodu, abym miał z tym większe problemy. Bawi mnie stwierdzenie "nie znam się, ale się wypowiem".