Someone said, "Architecture is about anything important, whatever it is."
But, what software architecture really is. Four components construct a foundation of software architecture.
Structure
It is more like an architectural style such as monolithic, microservices, layered, etc. So, if an architect talks about microservice, for example, he just talks about the software structure he is building.
Characteristic
It defines the success criteria of software such as reliability, scalability, security, availability, etc.
Decisions
It defines the rules on how the software is constructed. For example, a decision in a software development project states that each service in a microservice system can only have full-access permission to its own database. When a certain element cannot fully follow the rule then it is called variance in the system.
Principles
The difference between decision and principle is that principle is more about providing guidelines for the developers. For example, all communications among services in a microservice system must be asynchronous to improve performance, but developers can choose the communication standard that will be implemented.
Then, what should be done by a software architect? These are a few of the necessary works.
Make architectural decisions
It is different from technical decisions like choosing what framework should be used in the program. But, it rather defines the characteristics or capabilities that a framework should have. For example, a framework should have built-in support for communication through the MQTT protocol.
Continuously analyse the architecture and monitor the implementation of decisions
The system should be analysed continuously to find possible improvements. Besides, the architect should always be updated with current trends to help them define the roadmap of improvements. Implementation of any decisions in the development should be monitored to prevent unexpected issues made by developers who don't follow.
Diverse exposure and experiences
It is good for an architect to have knowledge of broader topics or be exposed to many kinds of technology and solutions in the market. Unlike developers who have to go deep, an architect should maintain technical breadth that helps make decisions in a project that includes diverse topics.
Have business domain knowledge
To make an architecture that solves problems and delivers value, an architect should understand how to gather the requirements, define the problem, and align with business needs.
Good interpersonal skills
To succeed in the implementation, the architect should have good communication with the developers so that they can understand the design and decisions well. Besides, anytime an architect makes a decision, some people in the company with limited knowledge about the foundation may start questioning the decision.
Comments
Post a Comment