In this chapter, we've discussed the various architectural styles that you can encounter in the wild and apply to your software. We've discussed monolithic architecture, went through service-oriented architecture, moved onto microservices, and discussed the various ways in which they can provide external interfaces and interact with each other. You learned how to write RESTful services and how to create a resilient and easy-to-maintain microservice architecture.
We've also shown how to create simple clients to consume equally simple services. Later on, we discussed various other approaches to architecture: an event-driven one, a runtime module-based one, and showed where layering can be spotted and why. You now know how to implement event sourcing and recognize when to use BFFs. Moreover, you now know how architecture styles can help you achieve several quality attributes and what challenges this can bring.
In the next chapter, you'll learn how to know which...