BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage Articles Book Review and Q&A: Microservices and Containers by Parminder Singh Kocher

Book Review and Q&A: Microservices and Containers by Parminder Singh Kocher

Bookmarks

Key Takeaways

  • Enterprises can gain a lot from migrating legacy monolithic applications with the right characteristics to a microservice based architecture
  • Microservices and containers are complimentary technologies. You will not get the full benefits unless you use both together
  • Simply containerising an application is not the end of the story, other patterns like service registry and container orchetration are required.
  • Microservices are not necessarily right for every application or use case.

Microservices and Containers, by Parminder Singh Kocher, provides a deep dive into the main concepts, patterns and technologies used to implement modern, highly available, highly scalable cloud-native applications.

The book covers microservices as a design concept, containers as a deployment mechanism in relation to microservices, the technologies required to operate and maintain applications built this way and ties everything together with a practical, “hands-on” case study. The book argues that microservices and containers are inherently complementary: microservices can address development challenges by simplifying the architecture, but at the cost of increased complexity of operations. Containers like Docker and its associated ecosystem can then be used to address most of these resultant operational issues.

Part one of the book explores what the concept of microservices entails. It contrasts microservices to traditional monolithic deployments, outlines the pros and cons of the architectural style and provides criteria that organisations contemplating adopting the pattern can use to assess their applications and their structure to determine if they are likely to gain the sort of benefits they expect or not. The book goes on to outline communication styles between services and the main components required (Discovery service, API Gateway etc.) required to successfully create, deploy and run a microservices-based application.

Part two covers containers, specifically Docker, as a deployment platform for implementing a microservices-based application. After explaining the difference between VMs and containers, the book comprehensively explores Docker, including details of architecture, installation, commands and networking. After that, the narrative moves on to a similarly comprehensive explanation of the three main container orchestration options, namely Docker Swarm, Mesosphere DC/OS and of course Kubernetes and covers how service discovery and registry works in these platforms. The last chapter of the section concludes with the operations view, covering the various tools required for monitoring, logging, metrics collection and visualisation.

Part three is a practical exercise for the reader that puts into action the lessons he or she has gleaned from parts one and two, first building a Helpdesk application as a traditional monolith, then decomposing it into microservices and deploying it to Docker containers.

Overall, the book is a practical, comprehensive overview of implementing microservices with containers, utilizing what are probably the most commonly used technologies across the industry and covering the sort of Day 2 concerns like monitoring and logging that a lot of more theoretical books on microservices tend to leave out.

InformIT have provided InfoQ with a sample chapter. Infoq has spoken to the author, Parminder Kocher.

InfoQ: Tell us a bit about your book

Kocher: My book is less about comparing tools and more about the big decisions a company or engineering team's leader has to make with respect to software architecture.I focus on two overarching questions in particular. First, are microservices and containers right for you? Making the switch to microservices is a large undertaking with a steep learning curve, both operationally and culturally, so it's crucial to assess the risks before taking the plunge. Second, what should you expect if and when you decide to move forward with the shift? By the end of the book, you should have a good idea how microservices-especially when paired with Docker containers-can bring unprecedented agility and scalability to application development and deployment, especially in large, complex projects where time to market and scalability are paramount.
The last section of the book, an extensive case study complete with code, helps teach the more tech-savvy reader how to prioritize which part(s) of a monolithic application are best suited to a transition to microservices.

InfoQ: There are a lot of books out there on the topic of microservices or containers. What is different about this one?

Kocher: The other books I've read on the topic are more tool-/tech-centered. They tend to focus on the ever-expanding ecosystem growing in lockstep with the popularity of these technologies. My book, by contrast, is more about the questions organizations' key decision-makers have to answer and the issues they will face if they embrace these technologies.

InfoQ: Who is this book for?

Kocher: Aside from the more technical case study, I think the rest of the book could be viewed as a primer on the topic, so overall it is best-suited for managers and tech leaders looking for a clear, relatively fast read on a very trendy topic. My aim was to provide such a reader with enough information and analysis to make informed decisions along with hands on case study for technologists.

InfoQ: What prompted you to write this book?

Kocher: I recently wrote a blog post about this! For the full story, you can check that out. The short version is that my own teams’ frustrations with software refresh/upgrade cycles eventually led us toward microservices as a possible solution. When I went to research the topic myself, I was surprised to find that there wasn’t much useful, easily accessible material out there for software team leaders like myself. The journey we ultimately took—with plenty of frustrations and failures along the way—inspired me to write the book. One night I decided that I had learned so much, I wanted to share those lessons with others. The result is the book!

InfoQ: Why are you particularly suited to writing this book?

Kocher: This goes back to the last question. My own experiences (both failures and successes) in the trenches not only inspired me to write the book, I think they qualified me to do so as well. In short, I lived it! In addition to my first-hand experience with microservices and containers in particular, I also have two decades of experience building multiple global platforms.

InfoQ: What do you see as the key challenges facing organisations thinking of adopting containers?

Kocher:

  • Change mgmt. The organization’s culture and mindset needs to shift. It’s crucial to reorganize one’s engineering team from functional roles to a business-centric structure with shared goals and responsibilities.
  • Availability in skills & talent, especially in the tight labor market we have right now
  • Investment in new tools & processes. An organization’s operational processes and structure need to be changed – a shift towards a DevOps mindset
  • Learning Curve. It takes time to break old habits and learn both new ways of doing things and new technologies.

InfoQ: Can you give any advice to those setting out on the adoption path based on your experience?

Kocher: First and foremost: microservices are not for everyone. They’re probably not a good fit if you cannot define service boundaries, if you’re suffering from a lack of cultural buy-in or capital investment, or if your monolithic platform is working fine (“if it ain’t broke…”).

I also strongly recommend having a clear idea in mind—before launching full steam ahead—of exactly how microservices will improve your platform and ultimately help your organization.

InfoQ: I see no mention of “Serverless” or AWS Lambda in the book. Is that deliberate? What are your thoughts on that concept/technology with relation to the content of your book?

Kocher: That was deliberate. I wanted to keep the focus of the book on microservices and containers without straying too far afield or going too deep into the weeds. Also, Lambda has some limitations re. languages , concurrent executions, Vendor dependency and so on.

InfoQ:  In Chapter 2 you list a set of characteristics for an application that a switch to microservices would benefit. Isn’t that just a description of any large legacy app? Do you therefore see microservices as the logical evolutionary next step for most large Enterprise web applications?

Kocher: Not necessarily. Again, they’re not for everyone.

There are a number of ways to define a monolithic architecture, of course. I like to think of it in terms of attributes (e.g., if it has hundreds of thousands of lines of code & hundreds of thousands of users, if your team has 40+ programmers, etc.) and challenges/pain points (e.g., scalability challenges  cost, poor performance or agility, slow time to market, etc.). In addition, an organization must have a new needs and buy in to move in this direction as explained in the book.   Only if it meets those criteria would I consider switching a large legacy/ monolithic app to Microservices.

InfoQ: Finally, tell us a little about yourself?

Kocher: I was born and raised in India, and earned my bachelor’s in computer science from Bangalore before coming to the States in the 90’s for my master’s. I started at Cisco in 2005 and have worked here ever since, in a variety of capacities for multiple teams. I now lead the engineering team responsible for developing the next-gen platform for the Cisco Networking Academy, aka “The World’s Largest Classroom.”I live in Austin with my wife of 17 years and three school-age children.

About the Book Author

Parminder Kocher is a lifelong technology learner with two decades of hands-on experience in building enterprise-grade software systems. He is with Cisco Systems since 2005 and managed company’s Remote Management Service (RMS) platform, and has since worked as an innovation evangelist leading multiple software groups. Currently, he is engineering director for Cisco Networking Academy platform, where he leads the engineering teams responsible for developing the Academy’s next-gen platform. In addition to bachelor’s and master’s degrees in computer science, Kocher has an executive MBA from Baylor’s Hankamer School of Business, and an executive certificate in strategy and innovation from MIT’s Sloan School of Management. Kocher was born and raised in India, and currently lives in Austin, Texas, with his wife and three children, and serves as committee chair of the Boy Scout troop he founded in 2013.

Rate this Article

Adoption
Style

BT