Choosing the right Backend Architectural Pattern - Microservices
We chose microservices given the greater architectural flexibility, reliability & deployment process.


Decision: Microservices
A microservices architecture, also simply known as microservices, is an architectural method that relies on a series of independently deployable services. These services have their own business logic and database with a specific goal. Updating, testing, deployment, and scaling occur within each service. Microservices decouple major business, domain-specific concerns into separate, independent code bases. Microservices don’t reduce complexity, but they make any complexity visible and more manageable by separating tasks into smaller processes that function independently of each other and contribute to the overall whole.
Alternatives: Monolish, SOA
Monolith: A monolithic architecture is a traditional architectural style where an entire application is deployed as a single unit and all its components are interconnected and dependent. Monolithic architectures have been used for decades, it is the OG software development. The word “monolith” is often attributed to something large and glacial, which isn’t far from the truth of a monolith architecture for software design. A monolithic architecture is a singular, large computing network with one code base that couples all of the business concerns together. To make a change to this sort of application requires updating the entire stack by accessing the code base and building and deploying an updated version of the service-side interface. This makes updates restrictive and time-consuming.
Service-Oriented Architecture (SOA): is an architectural style that structures software systems as a collection of loosely coupled services. Each service represents a discrete business function or process and can be independently developed, deployed, and scaled. SOA has its origins in the early 2000s, with companies like IBM and Microsoft promoting its adoption.