Microservice Deployment
Name
Institutional Affiliation
Microservice Deployment
Slide 1: Introduction
According to Jamshidi, 2018 microservices is a software development technique that arranges applications as a collection of coupled services that are loosely packed. In the architecture of the microservices, services are designed to be fine-grained while protocols are lightweight (Jamshidi, 2018). Ideally, microservices are independent pieces of business functionality that have clear interfaces and can implement layered architecture using its internal components. For this reason, microservices are not part of the monolithic application. The adoption of this software development technique is high in cloud applications, light weight container deployment applications and serverless computing. Fowler points out that as a result of a high number of services in microservices, decentralized delivery and DevOps with holistic monitoring are vital for effective development, maintenance and operations of the applications (Fowler, 2014).
Slide 2: Microservices Deployment Patterns
Microservice deployment is a vital role in a microservice architecture. In most cases, the deployment of microservices is dependent on some key elements. These elements include the ability to deploy or un-deploy independently of other microservices, ability to scale at each microservices level, ability to build and deploy microservices quickly and failure of a single microservice must not affect other services. These requirements are not found in monolithic architecture, where the failure of a single microservice causes the entire system to fail (Thönes, 2015). There are four main microservice deployment patterns; Multiple Service Instances per Host Pattern, Service Instance per Virtual Machine Pattern, Service Instance per Container Pattern and Serverless deployment.
Slide 3: Multiple Service Instances per Host Pattern
In this type of deployment pattern, one or more hosts are provided to allow execution or multiple services on each host. Notably, the provided hosts are either physical or virtual (Murugesan, 2017). This deployment pattern is the oldest.
Slide 4: Variants of Multiple Service Instances per Host Pattern
Multiple Service Instances per Host Pattern has two common variants. They include each service instance is a process or process groups and multiple service instance are executed in the same process or process groups (Murugesan, 2017). An example of each service instance is a process involves deployment of a .NET service instance as a web application in Internet Information Service (IIS). In the case of multiple service instances being executed on the same process is when several .NET service instances are deployed as web applications on an IIS.
Slide 5. Benefits of Multiple Service Instances per Host Pattern
One of the key benefits of using Multiple Service Instances per Host Pattern is resource usage where multiple instance share server and the operating system. Other benefits include fast service instance deployment and fast service startup due to lack of overhead (Brown, 2016).
Slide 6: Drawbacks of Multiple Service Instances per Host Pattern
Multiple Service Instances per Host Pattern has various drawbacks. They include lack of isolation of service instance not unless each service runs in a separate process. Other drawbacks include, technical knowledge requirements are high, no isolation of multiple instances in the same process and complexity of the process makes the deployment pattern riskier (Brown, 2016).
Slide 7: Service Instance per Virtual Machine Pattern
This is the first specialization of service instance per host pattern. In this, the services are packaged as virtual machine images (Murugesan, 2017). A good example of a VM image is the Amazon EC2 AMI. In this pattern, each service instance, for example, EC2 instance is a product of a launch from the VM image such as Amazon EC2 AMI.
Slide 8: Benefits of Service Instance per Virtual Machine Pattern
One of the key benefits of using Service Instance per Virtual Machine Pattern is that service instances run in complete isolation with a fixed memory, thus no resource sharing. Other benefits include one is able to take advantage of cloud infrastructure to provide autoscaling and load balancing features (Brown, 2016). Service Instance per Virtual Machine Pattern also keeps all implementation and technical details encapsulated.
Slide 9: Drawbacks of Service Instance per Virtual Machine Pattern
A key downside aspect of using Service Instance per Virtual Machine Pattern is that it is less efficient in terms of resource use. Each service instance has its own operating system, which is an overhead for the entire pattern. Other drawbacks include due to the large size of the build, deploying a new service is usually slow (Brown, 2016). Service Instance per Virtual Machine Pattern is also time-consuming and labour-intensive as it requires one person to be responsible for the building and maintenance.
Slide 10: Service Instance per Container Pattern
Service Instance per Container Pattern is a lightweight deployment pattern. In this, each service instance runs in its own distinct container. Containers are deemed to be portable and resource controlled operating environment which is visualized at the operating system rather than IT resources layers (Murugesan, 2017). A container is an environment in which one or more processes can be executed simultaneously. It allows one to limit the container memory and CPU resources as well as input-output limiting.
Slide 11: Benefits of Service Instance per Container Pattern
Service Instance per Container Pattern allows for isolation of service instance isolation, easy resource monitoring per container as well as encapsulates the technology used in the implementation process. Ideally, since the patterns uses a container management API, service management API is also provided for in the same platform (Brown, 2016). Other benefits include easy building since it is lightweight technology.
Slide 12: Drawbacks of Benefits of Service Instance per Container Pattern
While Service Instance per Container Pattern proves to be beneficial, it has various drawbacks. One of the key drawbacks is that the technology is not as mature as VM technology. Ideally, since containers share the OS kernel, the level of security is low compared to that of VM technology (Brown, 2016). Other drawbacks include the deployment of containers is done on per-VM priced infrastructure.
Slide 13: Serverless deployment
This an advanced deployment pattern. It allows one to explicitly focus on application development without concern of the IT infrastructure. In this, services must be stateless since technologies used may run a separate instance for each request, and they must be quick to start and written in supported languages (Brown, 2016). Common technologies in this pattern include AWS Lambda, Azure Functions and Google Cloud Functions.
References
BIBLIOGRAPHY l 1033 Brown, K. &. (2016). Implementation patterns for microservices architectures. Proceedings of the 23rd Conference on Pattern Languages of Programs, (pp. 1-35).
Fowler, M. (2014, August 28). Microservice prerequisites. Retrieved from martinfowler.com: https://martinfowler.com/bliki/MicroservicePrerequisites.html
Jamshidi, P. P. (2018). Microservices: The journey so far and challenges ahead. IEEE Software, 35(3), 24-35.
Murugesan, V. (2017). Microservices deployment cookbook. Packt Publishing Ltd.
Thönes, J. (2015). Microservices. IEEE software, 32(1), 116-116.