CST438 - Week 6

 How to Break Up With a Monolith

This week in CST-438 Software Engineering, we took a major step forward in the evolution of our learning management system by transitioning from a monolithic backend architecture to a microservice-based design. Our backend was split into two distinct services, each focused on a specific domain of functionality. To facilitate communication between the services, we implemented proxy components and used RabbitMQ, a reliable message-broker system designed for asynchronous inter-service messaging.

As part of this shift, we also refactored the frontend of our application so that it could interact independently with both backend services. Each microservice now operates on its own dedicated port, and the frontend routes its requests accordingly. This change not only promotes modularity but also makes the system more scalable and easier to maintain.

This approach aligns with the principles of Service-Oriented Architecture (SOA), where systems are built as a collection of loosely coupled services. In SOA, each service is designed to perform a specific business function and communicate with other services through well-defined interfaces. This separation of concerns improves flexibility, allows independent development and deployment of services, and enhances system resilience; one service can fail or be updated without necessarily affecting others.

Implementing RabbitMQ added a layer of decoupling by allowing services to communicate asynchronously, rather than relying on direct calls. This increases the system’s ability to handle higher loads and enables more fault-tolerant communication between services.

Overall, this week's work provided a hands-on understanding of microservices and SOA, showing how these architectural choices can lead to more robust and adaptable software systems.

Comments

Popular Posts