In the last ten years, microservices have been the hottest topic that generated the most attention in the IT industry. What are the reasons for this enthusiasm? And, more importantly, is it justified?
The popularity of this new development style has grown rapidly but, as always happens, came along with some criticism: “it’s yet another buzzword”, “it works well on a few projects only”, “as good as it sounds, it’s not the most practicable”.
Transparency is key, so here is what we think: microservices are a brilliant solution to complex problems. They are the basis for the most performing architectures on the market and for the most beautifully structured codebase you will ever get your hands on. Yet, they are not perfect as they are not a universal solution to all problems.
Thus, it is necessary to approach the matter with full knowledge of the facts. What better way to do so than starting from the pillars of the matter?
If you work on microservice development or are preparing for a project of this type, here are the five books we think you should definitely read!
Clean Architecture: A Craftsman's Guide to Software Structure and Design, by Robert C. Martin
The first book we suggest is written by the great Robert C. Martin, one of the fathers of agile methodologies, co-author of The Agile Manifesto and luminary of object programming. After publishing his successful books, Clean Code and The Clean Coder, Uncle Bob advises us on software architectures’ design and their implementation in order to enhance software productivity through the entire lifecycle.
With more than half a century of experience in various software environments, the author illustrates challenges and opportunities in software architectures development. This book will teach you:
- How to establish appropriate limits and levels, and structure components and services;
- Why projects and architecture might not work and how to prevent errors or eliminate existing ones;
- How to master the art of software design;
- The key point of clean architectures;
- How to implement high-level architectures for web applications, database, thick client, console etc.
An essential reading for every actual or prospective software engineer willing to work on microservice architectures.
Building Microservices: Designing Fine-Grained Systems, by Sam Newman
In this volume, Sam Newman, technology expert, international advisor and speaker, provides a solid basis and tips on specific topics, such as:
- Architecture development’s alignment to business objectives, through microservices;
- Modelling architecture based on business objectives, thanks to microservices;
- Integrating existent services or new ones into the system;
- Deploying microservices through Continuous Integration and Continuous Delivery;
- Executing testing and monitoring on distributed systems;
- Scaling microservices architectures according to users’ demand.
Additionally, through the example of a fictional company, the reader will be able to explore possible solutions for the design, integration, deployment and monitoring of services. Thus, an interesting reading for every software architect or administrator dealing with microservices.
Monolith to Microservices: Evolutionary Patterns to Transform Your Monolith, by Sam Newman
If your goal is to migrate your legacy systems from a monolithic to a microservice architecture, this is the book you should read. You will find successful strategies, good practices and tips to transform your organization into a simple, efficient and scalable company.
You will explore a series of techniques to transform your architecture.
- Dive into application decomposition, including several patterns of architecture refactoring
- Find out whether, when and how to migrate your organization
- Solve communication, integration and migration problems of legacy systems
- Discuss various migration patterns and their practical applications
- Provide examples of database migration and synchronization strategies
Domain-Driven Design: Tackling Complexity in the Heart of Software, by Eric Evans
A systematic approach to Domain Driven Design (DDD): the book explores a series of best practices, proven techniques and basic principles to facilitate the development of complex software projects. Waving together design and development techniques, the author illustrates a set of practical examples, based on actual projects of software development based on DDD.
You will learn how to improve the modelling of architecture and code towards a shared business model, by adopting a shared language between the development area and industry experts. Therefore, if the business model changes over time, the code can evolve rapidly and adapt to new needs without impacting the architecture.
Domain-Driven Design is based on these foundations: changing the approach with the aim of improving design and development of complex systems for large organisations.
Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions, by Gregor Hohpe and Bobby Woolf
The book provides a large record of enterprise integration models, through a variety of different technologies - such as JMS, MSMQ, TIBCO ActiveEnterprise, Microsoft BizTalk, SOAPand XSL - together with useful insights into emerging standards and the future of Enterprise Integration.
It also explores the benefits and challenges of asynchronous messaging architectures, offering practical advice on:
- How to write a code connecting applications with message brokers
- How to determine when to send a message and how to route it to the proper destination
- How to monitor and preserve an asynchronous message architecture
A valuable catalog which collects sixtyfive models and real world examples and applications that show the efficacy of messaging solutions to integrate complex systems.
Enjoy the reading!
These are the five readings we deem critical for every software architect and developer who works with microservice architectures on a daily basis. Have you read them already? Let us know what you think!
What other books on microservices would you recommend?