Sam Newman (2016), Building Microservices, O′Reilly.
Architects focus on helping creating a frameworkin which the right systems can emerge, and continue to grow as we learn more.
Zoning
Zones are service boundaries. As architects, we need to worry about what happens between the zones: how services talk to each other and properly monitor the overall health of our system.
A principled approach
- Strategic goals: The key is where you organization is headed, so you need to make sure that the technology is aligned to it
- Principles: rules made in order to align what you are doing to some larger strategic goal, and will sometimes change
- Practices: set of detailed, practical guidance for performing tasks. They will often be technology specific
Practices should underpin principles. A principle stating that delivery teams control the full lifecycle of their systems may mean you have a practice stating that all services are deployed into isolated AWS accounts.
The Required Standard
We need to find the balance between optimizing for autonomy of the individual microservice without losing sight of the bigger picture. Defining clear attributes that each service should have is one way of being clear as to where the balance sits.
- Monitoring: this has to be a system-wide view, not a service-specific view
- Interfaces: picking a small number of defined interface technologies helps integrate new consumers (e.g HTTP/REST, gRPC)
- Architectural safety: ensure that services shield themsevles accordingly from unhealthy, downstream calls
Governance through Code
- Examplars: there should be real-world services that set a high quality standard
- Tailored service template: a service template for your won set of development pratices ensures that teams can get going faster
Technical Governance and Leading from the Center
The architect’s job is ensuring there is a technical vision. Governance is about ensuring what we are building matches this vision, and evolving the vision if needed.
Governance is a group activity. This group needs to be led by a technologist, and to consist predominantly of people who are executing the work being governed. This group should also be responsible for tracking and managing technical risks.