- Author: Damon Yuan
- Date: 2019-10-18
For a fully automated Dev team in an IT company, there normally is a person sitting there as an architect. However sometimes there are always questions popping up about this role, like “what is the difference between an Architect and a Lead Developer”, “what is the responsibility for an architect”. Here is my understanding of the Architect role along with other roles in a Dev Team,
The architect’s job is to see the big picture and understand how an application can be decomposed into individual microservices and how the microservices will interact to deliver a solution.
A project’s architect focuses on three key tasks:
Decomposing the business problem
- Describe the business problem, and listen to the nouns you’re using to describe the problem.
- Pay attention to the verbs.
- Look for data cohesion. Microservices should completely own their data.
Establishing service granularity
- It’s better to start broad with your microservice and refactor to smaller services
- Focus first on how your services will interact with one another
- Service responsibilities will change over time as your understanding of the problem domain grows
Defining the service interfaces
If the definition is still obscure and difficult to be understood, I have also prepared some examples here,
Example One: Before starting a new project
Before starting a project, we need to decide the tech stack for the project, for example, whether to use monolithic pattern or microservice pattern. If the microservice pattern is chosen, an Architect need to consider the following topics before the developers starting to write the code,
Example Two: Before adding a new feature to a existing project
When a feature is recommended by a Business Analyst, a design document should be prepare beforehand so that the developers can understand what to do and the Scrum Masters know the exact definition of done. What’s more, the documents themselves are also a part of the intellectual property of an company.
Here is a example of design document’s structure that should be considered by an Architect,
Knowledge Map for an JavaEE architect