In the last post, I talked on Layered, Microkernel and Event Driven architectures. In this post I’d like to conclude this quick series on software architecture patterns by going over Microservices Architecture, and how to achieve this kind of production.

a starry night over some mesas

Microservices and RESTful APIs

Microservice Architecture is dividing various logical parts of the project into atomic pieces of independent “service components”. This creates fantastic decoupling, where deployments can take place whenever and allows for logical concerns to be spread out. A common way to achieve this is using RESTful APIs (stateless transfer) over HTTPS for secure connections. But if it’s that easy, then why aren’t we seeing this being the driving force of development for most organizations?

Conway’s Law

An interesting point of this book was about Conway’s Law. It always piques my interest when I see something called a law (big Asimov fan since childhood). To paraphrase, Conway’s Law says that architecture for any software product is a reflection of the communication within that organization. For communication that is not fluid due to hierarchical nature of companies, the architecture of a project becomes complex. This becomes reflected in the software (becoming monolithic) which then become untenable and/or unmaintainable.

Scrum For the Win

This is where the Scrum framework comes into play. Scrum allows self organizing development teams to start a “sprint” to develop a viable iteration of a product. The sprint will last between a week and a month. They work with a product owner (domain expert) to come up with a product backlog (items to work on). They then choose from that list and place items into their sprint backlog. At the end of the sprint they share what they’ve made, breakdown what went well and what could be improved (in an internal meeting) and plan for their next sprint.

Microservices, Micro Teams

It would seem to me that these two, Scrum and Microservices go hand in hand. They’re both frameworks, patterns to achieve that allow for highly productive applications to be produced in maintainable and predictable ways.

If you’re interested in reading the full book (it’s short, only 40-50 pages), you can find the link to it here: https://www.oreilly.com/library/view/software-architecture-patterns/9781491971437/

For more on scrum, checkout the guide here: https://www.scrumguides.org/docs/scrumguide/v2017/2017-Scrum-Guide-US.pdf