Final thoughts on software architecture
As we are coming to the end of the book, I would like to share my final thoughts on software architecture. I am going to cover the current trends and how we could equip ourselves to surf on the never-ending waves of change.
Small, reactive, and independent services
Although there are a few justifications for writing a monolithic application, as discussed in Chapter 6, software components are getting smaller and smaller. It is less common to see a new project written with the aim of becoming a monolith these days. Instead, engineers would aggressively split out small services that communicate over APIs or events.
Small services improve scalability, flexibility, and ease of deployment. Teams can develop, deploy, and scale services independently. Microservices and nanoservices are small enough to be owned by one team, and thus they encourage autonomy and empower the team to make its own decisions. Even if a wrong decision was made (e.g...