For learning purposes, i'm trying to implement a small project using (buzzword warning!) microservices. There are plenty of resources online talking about the 'macro' microservice world -integration, orchestration, service discovery, health checking, topology, etc., however I've found that there is little to no information about internal implementations.
The best one i've stumbled across so far is this diagram from Martin Fowler's site. He details one possible internal configuration utilizing a facade pattern with a service encapsulating a domain and repository.
However, after having a hard time trying to implement these patterns myself, and after looking at various other opinions, apparently these kinds of abstractions don't fit in well with Go's general philosophy of taking the most straightforward approach?
My initial thought is that most of the time there is simply no need for these kinds of abstractions given the nature of microservices, assuming they have been properly partitioned into specific and limited bounded contexts; if a service is just a few hundred loc, then you're better off rewriting a tightly coupled ball of mud then designing the perfect abstractions just for the sake of testing/reusability.
Broadly speaking, is this the case? Are there other patterns that might better fit the Go paradigm for designing the internals of a microservice? I'm not necessarily "indoctrinated" into any particular dogma, but I am interested in reading the various viewpoints.