Whenever we struggle about where to put a piece of code, whenever we ask to ourself if it would be better to create a different application, maybe a microservice or a library; whenever we think in terms of generalization, boundaries or code reusability we are thinking about architecture. This set of books give a good insight of problems and solutions related to these questions

Clean Architecture: A Craftsman’s Guide to Software Structure and Design

Robert C. Martin

Not all the code we write serve to the same purpose. There is business logic, storage access, presentation and exchange, communication protocols and so on. How can we organize all this is a scalable, maintanable and easy to understand way? The content of this book is the answer. A small set of universal rules that can be applied to any language and framework which will help us to build a lasting successfull software

90
Readability
50
Applicability
75
Usefulness

Reactive Design Patterns

Roland Kuhn

Modern web applications designed to serve potentially high volumes of ever-increasing users must be prepared to continue to function regardless of failures in the underlying architecture, the level of scaling of servers, or as information is distributed globally.
A reactive application adjusts to partial failures and variable loads, and remains responsive in an ever-changing distributed environment. Switching to message-based architecture is a key factor for success and this book present a good collection of all the reactive design patterns to achieve it.

50
Readability
75
Applicability
75
Usefulness

Building Evolutionary Architectures

Rebecca Parsons , Neal Ford and Patrick Kua

Building_Evolutionary_Architectures
What’s the metric of a successful software? Which are the -abilities that are worth to be measured? Is there any way to ensure we will meet the right architectural needs depending on the business and we keeping the change easy and not disruptive? How can we measure that the code is still fit even if it’s constantly changed? THis book introduced the concept of fitness functions: a set of metrics, practices and techniques to ensure that the software will keep its evolvability despite the constant change.

100
Readability
50
Applicability
100
Usefulness