6. Maintainability
● Changes in one area of an application should affect
as few other places as possible
● Adding features should not require large code-base
changes
● Adding new ways to interact with the application
should require as few changes as possible
● Debugging should require as few work-arounds and
"just this once" hacks as possible
● Testing should be relatively easy
https://dave.cheney.net/practical-go/presentations/qcon-china.html
7. Hexagonal Architecture/ Clean Architecture / Port and Adapters
● Entity
● Value Object
● Domain Event
● Aggregate
● Service
● Repository
8. Where read more
● Kat Zien: How Do You Structure Your Go Apps
● Peter Bourgon: Go for Industrial Programming
● Ben Johnson: Standard Package Layout
● Marcus Olsson: gh: marcusolsson/goddd
12. Microservices design principles
● Single purpose
● Loose coupling
● High cohesion
● Is not a service in small number of lines of code
● Is not a service that is built with new technology
● Is not a service that has to be built from scratch
14. Go microservice toolkits statistics rating
● The most popular project is go-kit/kit
● The newest project is NYTimes/gizmo
● The project with more commits is koding/kite
● The project with biggest average contribution period is rsms/gotalk
● The project with more tags is micro/go-micro
● The project made by most notable top contributors is koding/kite
● The project with best errors resolving rate is micro/go-micro
● The project with more commits by day is koding/kite
● The project with the most active number of forkers is NYTimes/gizmo
● The project with biggest number of returning contributors is go-kit/kit
https://docs.google.com/spreadsheets/d/1d0WcI5ahmJdysyyHeZB9CVlolXF027UlY1fTPbyiFCE/edit?usp=sharing
15. Go microservice toolkits features
● Service Discovery
● Load Balancing
● Message Encoding
● Request / Response
● Async Messaging
● Pluggable Interfaces
https://github.com/micro/go-micro#features