Microservices has the power to bring together those old monolithic applications in one seamless efficient application that is both secure and flexible.
What are Microservices?
Microservices is an approach to software architecture that builds a large, complex application from multiple small components that each perform a single function, such as authentication, notification, or payment processing. Each microservice is a distinct unit within the software development project, with its own codebase, infrastructure, and database. The microservices work together, communicating through web APIs or messaging queues to respond to incoming events.
Videos on Microservices
Microservices take a complex monolithic application and turn it into a set of services, which are faster to develop, and much easier to understand and maintain. Each of these services can also be developed independently by a team that is focused on that service. It also allows for continuous deployment, because each microservice can be deployed independently.
7 benefits of microservices
Safely scale out your app using advanced load balancing
Silo the dev teams and less dependence
Deploy piece by piece without affecting other systems
Easier to develop & maintain
Improve performance while reducing load on your app with flexible content caching
Easily identify failures in service
Run in containers, on your existing hardware, or in the cloud
Pros & cons of microservices
A microservices architecture is a revolutionary step in application development. Like any other technology, they have their pros and cons. The following is a summary of a microservice’s strengths and vulnerabilities, which can affect an application’s performance and design.
- Developers have the freedom to independently deploy and develop services, resulting in faster decision making
- Due to their size and autonomy, a microservices based approach results in shorter development cycles, as different teams can be implementing different services simultaneously – dependency between teams is usually eliminated
- They can easily be deployed on containers, resulting in less overhead and portability across different environments
- Allows developers to embrace modern DevOps practices such as automated CI/CD pipelines as microservices integrates easily with CI/CD tools
- Easy to scale, as each service is usually elastic
- Microservices are easier to build, test and maintain
- Services are organized around business capabilities
- Empowers developers to adopt technology most suited for a specific service
- Better fault isolation: If one microservice fails, others will continue to function.
- A microservice architecture involves added complexity, as developers have to mitigate fault tolerance, reduce network latency, deal with varying programming languages, as well as load balancing across multiple services
- Testing microservices can be cumbersome and complicated, because of their distributed nature
- Increasing the number of microservices in an application increases the effort for effective integration and management
- Dealing with multiple databases can be painful.
What is a virtual machine?
A virtual machine is a computer file, typically called an image, that behaves like an actual computer. In short, it’s creating a computer within a computer. Entire operating systems can be run within one window of an existing computer. Each microservice is a container, and these containers are often run on multiple cloud virtual machines, or VMs. Most cloud providers use VMs as the basis for their infrastructure-as-a-service (IaaS) offerings.
Ingenious & the Fabric Model
Here is a great use-case: Ingenious is a photo-sharing demo app created by NGINX to show the Fabric Model approach to application development. The app is designed to allow the user to login to a personalized account, and then store, view and delete their own pictures. It also includes a blog in which users can view the latest news and updates within the application.
Learn more about this project on Github