With fast-paced technology evolution, software architecture is evolving each day with new patterns and technology choices. This article summarizes the top 10 tips you should know as a modern software architect and the list is not limited but evolving.
#1 — Be observant of frameworks providing acceleration towards Microservices Architecture (MSA)
- With Microservices Architecture in mainstream adoption, most of the frameworks either have started remodeling themselves as per Microservices Architecture.
- Key capabilities frameworks need to support are Lightweight & minimal Footprint, easy to learn, support for fault tolerance, observability (tracing, metrics, logging), security (authentication & authorization), etc.
- While there are established frameworks like Spring and Play Framework in Java, be observant and ready to adapt new frameworks like Helidon, Quarkus, or Micronaut based on the requirement. Also, established players like Spring framework are coming up with new choices such as Reactive Stack for Microservices, Spring GraphQL, RSocket with Spring Boot, etc., which need to be applied as per the use-case.
- Other languages have similar trends like Gokit & Gomicro for Golang, Flask, Bottle, Falcon, and Nameko for Python, and Molecular & Nest for NodeJS.
- Another key aspect of Microservices Architecture is that you don’t need to use a single framework or technology for all microservices. You can choose the applicable programming language and framework based on the mechanics and requirements of a particular microservice.
- Read about the Microservices evolution in Java by clicking here.
#2 — Choose the suitable pattern & technology for Microservices communication
- Communication pattern between Microservices establishes the baseline for the future — there are many choices depending on the applicable use-case.
- Start by choosing the data architectural pattern and then choose the communication style.
- With many binary formats for efficiency, there are multiple choices available for message formats as shown below: