Book review: Building Microservices: Designing Fine-Grained Systems by Sam Newman

Artem A. Semenov
4 min readMay 24, 2023

--

In the ever-evolving terrain of software architecture, Sam Newman’s book, ‘Building Microservices: Designing Fine-Grained Systems,’ has become a must-read. This trailblazing work imparts comprehensive insights into the concept of microservices, marking itself as a lynchpin for industry professionals and enthusiasts alike.

The heart of the book is a scrupulous exploration of the architecture of microservices. Newman deftly presents the nuances of creating, deploying, and maintaining microservices, positioning them as a pivotal tool for constructing robust and scalable software.

Newman’s writing style is eloquent yet precise, making complex topics digestible. He navigates the reader through a range of concepts, from basics such as inter-service communication, to sophisticated matters such as deployment patterns, data management, and security considerations. His discourse on breaking down monolithic structures into fine-grained systems is particularly enlightening.

However, the book is not without its flaws. At times, the content feels uneven, with certain chapters, such as those on service decomposition and data management, carrying more weight than others. Moreover, Newman’s extensive use of technical jargon, while suitable for seasoned professionals, could pose a challenge for novices in the field.

When juxtaposed with other works in the realm of microservices, Newman’s book stands tall. It provides a comprehensive, real-world approach, distinguishing itself from more theoretical counterparts. That being said, ‘Building Microservices’ might be seen as daunting when compared to more entry-level works on the subject.

As for the target audience, Newman seems to gear his discourse towards software professionals with a solid understanding of the industry. While certainly invaluable for this group, beginners might find themselves on a steep learning curve due to the technical depth of the book.

‘Building Microservices: Designing Fine-Grained Systems’ provides a robust and enlightening exploration of microservices. Despite some slight shortcomings, it is a valuable addition to any software engineer’s bookshelf. It illuminates the path for organizations aiming to increase their system’s flexibility and scalability, making it a worthy read.

Newman’s book is a thorough, practical guide to understanding and implementing microservices. While it caters more to seasoned professionals, it nevertheless holds essential wisdom for anyone keen on deepening their understanding of contemporary software architecture.

As someone deeply rooted in tech, I appreciate Newman’s keen attention to detail and unflinching dedication to shedding light on the more convoluted aspects of microservices. While I recommend a more basic primer for newcomers, I can unreservedly assert that ‘Building Microservices’ is a masterclass for those ready to plunge into the depth of microservices.

Practical advice for software developers and architects, some of the standout practical pieces of advice that the book offers:

  1. Start Small: Newman encourages readers to start small, both in terms of team and the services. Smaller teams and services are easier to manage and they can adapt quickly to changes.
  2. Decompose by Business Capability: When decomposing a monolithic system, focus on business capability. This means structuring services around business functionality, such as invoicing or customer management, rather than technical aspects.
  3. Build for Failure: In a microservice architecture, failure is inevitable. Design your services to expect and gracefully handle failure. Implement practices such as timeouts, circuit breakers, and bulkheads to prevent failures from cascading through your system.
  4. Independent Deployment: One of the major advantages of microservices is the ability to deploy and scale them independently. Newman underscores the importance of maintaining this independence throughout the development and deployment process.
  5. Distributed Systems Thinking: Microservices involve distributed systems. Understanding the complexities involved in distributed systems, such as network partitions, latency, or the fallacies of distributed computing, is vital.
  6. Data Consistency: While each microservice should own its own data to ensure loose coupling, Newman offers practical advice for maintaining consistency across services. Techniques such as eventual consistency, transactions, and compensating operations are explored.
  7. API Evolution: Instead of trying to get the API perfect from the start, Newman suggests designing it to evolve over time. Use techniques like versioning, tolerant readers, and consumer-driven contracts to allow the API to change without breaking consumers.
  8. Automate Everything: To manage the increased complexity of handling multiple services, Newman emphasizes the importance of automation. This includes testing, deployment, and monitoring.
  9. Security: In a microservices architecture, security needs to be considered at multiple levels. Newman stresses on implementing measures such as access tokens, service-to-service authentication, and encrypted connections to ensure security.
  10. Monitor and Log Effectively: With many services interacting, effective monitoring and logging are critical. Newman provides advice on correlating logs across services, aggregating logs and implementing meaningful health checks.

--

--

No responses yet