Jotting one man's journey through software development, programming, and technology
◀️ Home
An architectural style for developing applications.
Early enterprise applications were developed as large, self-contained applications. These applications included the user interface, business logic, and data access code, with data persisted in a large, relational database. These applications were designed to handle many tasks, and the codebase was necessarily complex. We now call these monolithic applications, or monoliths.
Service-Oriented Architecture, or SOA, was an attempt to solve the challenges of monolithic applications. SOA is an architectural style that focuses on building reusable software components called services. Each service in a service-oriented architecture should execute a discrete business function, …and communication between services was implemented using messaging over defined service interfaces.
Microservices are an alternative, decentralized approach to decomposing applications into services. They are separate services, limited in scope.
A microservice specifies an interface, typically an API, that is used by other services when calling the operations of the microservice. The separation of microservices tends to lead to loose coupling between the microservices. Loosely coupled services are easier to maintain, update, and deploy.
In a microservices architecture, each microservice tends to be simpler and easier to understand than the monolithic application. Each service can be developed, deployed, and tested separately. However, having more deployable entities causes a greater operational burden for an organization. The operations team must manage tens, hundreds, or thousands of microservices.
Automated builds, testing, and deployments are vital to maintaining the health and efficiency of your applications and your operational team. With so many services, it’s also important to maintain consistent logging, reporting, security, and authorization for your services.
A microservices architecture includes the communication between microservices, which can be complex.
Building microservices requires a commitment to automation and operational excellence, but the benefits of microservices generally outweigh the challenges. Service orchestration and choreography can reduce the complexity of microservice-based applications.