Write a weekly entry describing important things you learned this week.
This week we learned about Service Oriented Architecture. In this model, instead of deploying one monolithic service that handles all tasks of the system, many smaller services are deployed that each handle a subset of the system. For example, in our project for this class, we have been developing a set of services that model a system an academic institution might use. It includes several common features relating to this purpose – including user profiles, course enrollment, assignment tracking / grading, etc.
So far this project has been developed using an architecture that tends towards being monolithic, with each REST endpoint being served by a single Spring Boot instance. This week we experimented with breaking up our monolithic project into two smaller services – including a registrar service, and a gradebook service. While there are advantages to a non-monolithic, or microservice architecture – such as the ability to scale certain high-demand services independent from the rest of the system – there are also some challenges. In particular, it can be difficult to synchronize state, whether internal or external, between service instances. For example, in order to break up our monolithic project, it was necessary to implement a sort of database mirroring, so that each Spring Boot instance could access a (nearly) identical shared state.
No comments:
Post a Comment