Currently there is not a single discussion about cloud native architectures where the term “microservices” is not brought up. With more and more developers and architects considering leveraging this architectural style, a lot of great content is showing up, but some of this new content misses the point on microservices completely. A good example of the latter is content that suggests one is building microservices just by making the applications package smaller (“micro”).
This blog is the start of a four-part series of posts that aims to provide a better understanding of what microservices are and how to work with them productively. In this introductory post, we’ll cover some of the advantages of microservices and discuss some of the challenges you should be aware of when building microservices-based applications. The second part covers how microservices and containers play together, and how to take advantage of orchestration and container management tools such as Kubernetes. The third part discusses microservices design principles and microservices devops best practices. The series will wrap up with a blog post about Oracle’s current and exciting future support for microservices-based applications.
Before looking into what makes microservices so appealing we should have a quick look at what they are. While there is no standard for microservices architectures, the industry mostly agrees on a couple of design points and characteristics that a microservices architecture should follow which are mentioned below.
In general, you can think of applications designed using the microservices architecture as applications composed of small autonomous services. These services are very loosely coupled, only communicate through APIs, and are less complex and thus smaller as they generally focus only on a single functionality centered around a business capability (bounded context) of the application. Basically, instead of building a big single codebase for an entire application (monolith), the application is composed of services, each with its own code base and state that are managed independently by smaller agile teams. This allows companies to develop, deploy and update parts of their application in a faster, more agile way, and thereby react to new market requirements and competition in a more timely and flexible manner. Netflix and other “born in the cloud companies” serve as prime examples of successful microservices architectures.
With time to market and agility being the main drivers for using microservices, the big question is what enables that agility and speed? The answer to this question leads to the main advantages of microservices.
With a large monolithic application, fast reliable deployments can be problematic. Think about a scenario where you want to introduce a new feature, for example adding a new field for a user profile, or simply fixing a bug. A monolithic application is typically built and deployed as a single, entire application, requiring the need to build and test the entire application to make sure that a small change does not break any other component in the application. The entire application must also then be redeployed, including all those other components that have not changed. Depending on the size, technologies, and processes used, building and deploying an update can take quite some time. Read Part 1: Advantages and Considerations and read Part 2: Containers and Microservices
For regular information become a member in the WebLogic Partner Community please visit: http://www.oracle.com/partners/goto/wls-emea ( OPN account required). If you need support with your account please contact the Oracle Partner Business Center.