I’m going to explain microservices to you based on the following sections:
- What are Microservices?
- Benefits of Microservices
- How to Create Microservices
- Challenges of Microservices
1. What are Microservices?
Microservices or microservice architecture is an approach to application development where the application is broken down as a set of services. Each of these services would be running in its own process. Also each service is independent of other services. However, there would be communication between the services.
The following are properties of microservices:
- Each service is independently deployable
- Services are loosely coupled
- Arranges around the business requirements
- Highly testable and maintainable
- Each service can be implemented with a different technology
- Communication between services
In Figure 1 below, a microservice architecture is compared with a monolithic architecture.
2. How to Create Microservices
I’m currently working on Microservices Video Tutorial. This would be made available in my YouTube Channel.
You can subscribe so you get notified when the lessons are made. But for now, I will give an overview on how to create microservices. Also, I would let you know the tools you need.
3. Benefits of Microservices
Below are the benefits of Microservices:
(a) Easier to test: With microservices, each service can be tested independent of other services
(b) Faster development: Microservices IDE are faster relative to monolithic IDEs
(c) Improved maintainability: Each microservice is small in size and therefore easy to modify when necessary
(d) Faster deployment: Since each service can be deployed independently, lesser bottleneck are encountered in deployment
(e) Better performance: Being lightweight makes microservices perform relatively better
(f) Development effort is reduced: You only need to develop services relevant to business objectives
(g) Better fault Isolation: In this case, particular service that creates some fault can easily be isolated and handled
(h) Breaks down complex application into simpler services: So microservices are less complex than a single monolithic application
(i) Continuous delivery can be achieved: Microservices can be deployed as soon as development is completed on that particular service.
(j) Removes long term commitment to technology stack: Each service could be provisioned with a different technology.
4. Challenges of Microservices
You can find some of the challenges of microservices below:
Complexity of distributed system: Microservices architecture corresponds to building a distributed system. Hence, added complexity
Deployment Complexity. This is because, you need to have a model for deployment of several services.
Higher consumption of memory: Microservices reside in memory called images and runs instances called containers.
Tools/IDEs for development: Tools for development of microservices are not as available as conventional tools and IDEs
Maintaining data consistency: Each microservice need to access data at some point. This can be achieved by creating a database for each service. This in turn leads to issue of maintaining data consistency across services. This is shown in Figure 2.
I would then start a tutorial on how to build microservices. Do check back in few days.
Also Learn about Docker, Containers and Kubernetes