Introduction to microservices
In this chapter, you will:
Learn about the history and evolution of software architecture
Understand the differences between monolithic and microservices architectures
Learn about the core benefits and challenges of using a microservices architecture
Microservices is a buzzword that is thrown around frequently in the technology community. Many infer it as being a further dissection of modular componentization, and although that addresses part of it, it doesn’t encompass the full picture. Microservices are a group of back-end services that provide business operations to form an application. When combined with other pieces such as a front-end and various communication platforms, it creates what is known as a microservices architecture. Although that is a simplistic way to approach this architecture, it is a vital design orientation and metaphor to learn for implementing modern application development scenarios geared to achieving better results.
This particular chapter will focus on the core fundamentals of microservices, including the transition from historical architecture to present, benefits and challenges, and a comparison of a monolithic application architecture with microservices architecture.
Our journey with microservices
In recent years, microservices architecture have become very popular with firms. Many organizations and enterprises have expressed a desire and need to move their applications to a microservices architecture.
We have worked with customers that were very concerned with increasing development velocity to ship code faster and at more frequent intervals. Other customers are focused on modularizing their codebase further to iterate on particular services for better application performance and additional support. Some are jaded by financial and time constraints that constantly plague their organization due to large scale migrations or refactoring and want to put an end to it. We have seen these pains, frustrations, complex scenarios, and wishes from a myriad of customers time and time again.
We have worked at Microsoft and in the IT space with many enterprise customers. We met with various internal open-source groups to find solutions to these problems of customers. Microservices architecture was the key behind this, and ultimately, we wanted to have a streamlined way to demonstrate the theoretical value of microservices and how to build one, too.
As a result, we created an application called the Online Auction System (OAS) to serve as a real-life case study to teach and empower customers to build this architecture for their enterprise scenarios. We accomplished this by using a variety of open-source technologies, and we used Microsoft Azure as the bedrock for the application. Throughout this book, we will use the approach to provide this background knowledge in conjunction with the parallels to this case study, which helps map theoretical and experiential learning together.