- Paperback: 280 pages
- Publisher: O'Reilly Media, Inc, USA (17 February 2015)
- Language: English
- ISBN-10: 1491950358
- ISBN-13: 978-1491950357
- Product Dimensions: 17.8 x 1.5 x 23.3 cm
- Boxed-product Weight: 499 g
- Customer Reviews: 2 customer reviews
- Amazon Bestsellers Rank: 13,089 in Books (See Top 100 in Books)
Other Sellers on Amazon
+ FREE Delivery
+ $7.95 delivery
Building Microservices Paperback – 17 Feb 2015
|New from||Used from|
Frequently bought together
Customers who bought this item also bought
About the Author
Sam Newman is interested in how different aspects of technology intersect, from development, to ops, to security, usability, and organizational structures. After 20 years in the industry, Sam now runs his own consulting and training company Sam Newman and Associates, focusing in the area of Microservices, Cloud and CI/CD.
Sam has worked with a variety of companies across multiple industries all over the globe, often with one foot in the developer world, and another in the IT operations space. He has written articles, presented at conferences, and sporadically commits to open source projects. Sam is the author of the bestselling Building Microservices from O'Reilly.
From the Publisher
What Are Microservices?
Microservices are small, autonomous services that work together. Let’s break that definition down a bit and consider the characteristics that make microservices different.
The benefits of microservices are many and varied. Many of these benefits can be laid at the door of any distributed system. Microservices, however, tend to achieve these benefits to a greater degree primarily due to how far they take the concepts behind distributed systems and service-oriented architecture.
Key benefits include:
- Technology Heterogeneity
- Ease of Deployment
- Organizational Alignment
- Optimizing for Replaceability.
Customers who viewed this item also viewed
Review this product
2 customer reviews
There was a problem filtering reviews right now. Please try again later.
Well worth a read for anybody who is in the throws of a Microservice architecture or planning to embark on the journey.
Most helpful customer reviews on Amazon.com
In my opinion this book should be read by people used to building traditional monolithic applications, using layered architecture and backed by a relational database.
The author (Sam Newman) will talk about distributed systems in general and new challenges introduced by a migration towards this style. Microservices aren't a silver bullet and perhaps you shouldn't event start with building one, monolithic codebases are fine for short or mid term runs, you can iterate fast, and refactoring and re-shuffling is easy. Once you have solid understanding of your business domain then you could start considering the migration to smaller services (the catch here is to identify the time when this is needed, it shouldn't be neither too soon nor too late). Facade design pattern is a good friend for building coarse-grained services (within the monolith) and then splitting them to smaller services.
Continuous delivery changes once you own multiple microservices (and heck, people can actually OWN them now!), and how not to design for future (sharing via database is plain wrong and introduces terrible amounts of coupling). The only thing I wish was different is the title, it looks like it is trying to take advantage of the new buzzword, but to me this seems like second edition of M. Fowler's "Patterns of Enterprise Software Architecture". And that's a must read.
The book is very verbose in the topics it discusses and sometimes its hard to stay attentive as the author talks about various topics. If the author had given a few real word examples of microservices running in the industry and had done a in-depth analysis of the pros and cons of the choices made while running the services, then I would've been able to gain a better insight. If the hypothetical Music store used in the book would've been developed in depth, with a good coverage of all aspects of running a business, then it could've been more useful too.
It also recommends some other good books, a few of which I've read already.
In conclusion, this book should be just treated as an intro to the topic of building microservices, but will require a lot more investigation and effort on the part of a reader to run a practical microservice in production.
Something I appreciate about this book is how it incorporates and integrates best practices from many well-regarded sources, including Domain-Driven Design (Evans), Continuous Delivery (Humble and Farley), Release It (Nygard), Enterprise Integration Patterns (Hohpe), and even Information Dashboard Design (Few), among several others. I've incorporated lessons learned from those authors in my own work, and Newman's work helped me to take a step back and see how it all fits into a mutually-reinforcing set of ideas and practices.
Another strength this book has is that it treats the organizational forces driving systems design on a par with the technical forces, especially around Conway's Law. While I've been reasonably thoughtful about Conway's Law for some years, I walked away from the book with new insights. For example, in my organization we often talk about how we can make geography "invisible" so that developers around the world can closely collaborate on the same development projects. So we've tried things like asking people to focus more on communicating via wiki or Slack, having video teleconference meetings, trying to schedule meetings at times that are friendly to multiple time zones, and so forth, with limited success. We may need to rethink this. Newman's book offers some nice insights about the difference between loosely- and tightly-coupled organizations, and how different strategies work better depending on the organizational context. (For instance, if _everybody_ is "remote", then you're more likely to see successful wiki-based collaboration than you are when only one or two team members are.)
Coupling and its dangers are a constant theme in the book. Besides the organization coupling I mentioned above, Newman treats technical coupling as well, and offers plenty of food for thought. At one point he offers a fair criticism against one of my favorite frameworks, Spring Data REST. (He refers to it as Spring Boot, but it's clear from the context that he's talking about a Spring Boot demo that includes Spring Data REST specifically.) Spring Data REST essentially takes your database schema and exports it as a REST API, and it's a convenient way to get a full-blown REST API in just an hour or two. But as Newman points out, this creates strong coupling between the API client and database-related implementation details. (To be fair to SDR, there are ways to customize the mapping, but point is essentially correct.) Also SDR is more focused around exposing data, where Newman argues that to decrease coupling we should focus more on exposing capabilities. I don't know exactly how to resolve this tension yet, but I walked away with a better appreciation of the forces in tension, which is exactly what I'd want.
There was one way in which the book surprised me. Based on the title I was expecting a more in-depth how-to on building microservices, with specifics on tooling, code examples and so on. (E.g., "cloud native" concerns like using linkerd and Consul to set up a service mesh, or the pros-and-cons of using DNS vs service discovery for cross-region failover.) The book does a nice job of pulling in current and relevant tools and design patterns into the discussion where they make sense. But as Newman states at the outset the book is a more theoretical presentation of the microservices approach, concerned more with helping the reader understand the forces that brought us where we are today, and strategies to keep scope and coupling low. In the end I was glad to read the book as it is--I have a better lay of the land--but there will be some follow-up reading.