Information Technology Assignment: Significance Of Microservices Architecture
Microservices architecture has emerged as an evolution of software development patterns and techniques. Previous software development techniques for self-contained monolithic applications and service-oriented architecture have been longstanding. More recently, with the development of cloud computing, new ways of software development have evolved with microservices architecture recognized as a cloud-native software development approach.
As a professional, your role will require that you understand the principles of software development, especially in the field of cloud-based platforms, which are rapidly becoming the preferred hosting solution for many organisations. Having a working understanding of these concepts will enable you to fulfill many roles and functions, and be informed as to what factors influence decision making when software development architecture has been selected. Whilst you may not be a developer, it will enable you to have meaningful conversations about the principles of microservices architecture and why certain decisions may be made in a certain way. This will support you to manage the bridge between IT and the business.
Information Technology Assignment Task Instructions
- Write a 1000-word report to demonstrate your understanding of the theoretical concepts of microservices architecture in two specific areas:
- What are the key principles and concepts of microservices architecture?
- What are the advantages and disadvantages of microservices architecture?
Please note that this is intended to allow you to develop a strong theoretical understanding, which you will then apply to a specific case shared with you in Part B of this assessment. The aim is to allow you to progressively develop a foundational knowledge of the topic, which you will then extend by demonstrating how your knowledge can be applied in the case context.
- Whilst most of the material to support your development of knowledge for this assessment can be found in the Essential Resources listed in the module content, you are encouraged to do further research in this topic area to broaden your knowledge.
Perform additional research in the area of investigation and select five additional sources that will add value to your report in the relevant area of investigation.
Introduction to the context of information technology assignment
According to Hawilo, Jammal & Shami (2019), microservices architecture is referred to as a style of architecture, which structures an application being a collection for small autonomous services; along with being modelled around a business domain. Within the microservices architecture, each of the services is known to be self-contained and is also implemented for a single business capability. Hence, the present study evaluates the significance of microservices architecture highlighting both its benefits and limitations.
a. Key concepts and principles related to the microservices architecture
Microservices are known to build across the business capabilities along with being independently deployable for totally automated machinery deployments. The principles of key design for microservices and its benefits tend to make it some of the desired solutions to be easy for maintaining the application of enterprise. As stated by Nunes, Santos & Silva (2019), microservices are found to help for breaking the boundaries of larger applications along with building logically smaller systems. For instance, using Amazon AWS can be built with the cloud application with a minimum effort. However, microservices are known to communicate with one another while using the adopted lightweight protocols like REST and HTTP that are AMQP or rather JMS. For some of the particular scenarios, they tend to move for some of the specialised protocols. However, certain principles are composed of a similar context of microservices architecture. These principles are mentioned below:
Single responsibility principle
The particular principle is known to be one of the principles that are referred to as the SOLID pattern of design (Kazanavi?ius and Mažeika, 2019). This implies to be a unit; a function; a class or rather a microservice that must possess only one responsibility. Within no point of time, one microservice needs to consist of more than one responsibility.
Building around the capabilities of business
Microservices must have a focus within certain functions of business along with assuring that it can help in getting the things done. A microservice might not restrict itself through the implementation of a proper stack of technology and storage of databases that can be most suitable to solve the purpose of the business. This is generally referred to as a constraint while designing the monolithic applications where multiple solutions of business can be solved with some of the compromises within some of the areas. Microservices can enable one to choose the best to mitigate any problem.
As opined by De Lauretis (2019), preparation of infrastructure for microservices is known to be another significant need which considers a service to be independently deployable along with bundling all kinds of dependencies involving the library dependencies as well as the execution of environments like containers and web servers or rather the virtual machines which can abstract the physical resources. However, there is a major difference between SOA and microservices within the level of autonomy. It has been evidenced that most of the SOA implementations tend to provide an abstraction of a service level where microservices are found to move further along with abstracting the execution and realisation of the environment. On the other hand, within the developments of traditional applications, EAR and WAR are built and deployed within JEE servers of applications like JBoss, Web Sphere and similar others. As put forward by Santos and Silva (2020), multiple applications may be deployed within a similar JEE container. Within an ideal scenario, within the approach of microservices, each of the microservices might result in being a fat jar while embedding all kinds of dependencies as well as running to be a standalone java process.
b. Advantages and disadvantages of microservices architecture
It eliminates the technological lock-in as the microservices are found to provide the flexibility for trying new stack of technology within the needed individual service.
Here, more services lead to more resources, which expects multiple transaction, and database management, which might become painful.
This is easy for understanding as with the added simplicity, developers are found to understand a better functionality of the service (Tonelli, Lunesu, Pinna, Taibi & Marchesi, 2019).
Global testing for the present context can result in being difficult as testing an application related to microservices might be cumbersome.
It has smaller and faster deployments. This addresses smaller scope and codebases which leads to quicker deployments and also allows for starting to explore the benefits for continuous deployment.
Debugging problems can result in being harder where each of the services consists of its logs for going through them.
Table 1: Advantages and disadvantages of microservices architecture
Source: (Developed by the Learner)
Hence, it has been observed by Poniszewska-Mara?da, Vesely, Urikova & Ivanochko (2019), that the key principle of microservices has been simplicity. The applications become easier for maintaining and building when they tend to split within compassable and smaller fragments. Management of the code has also become less painful as each of the microservice consists of a separate chunk of code. Microservices are self-contained along with being an independent deployment module. Apart from these, microservices architecture is of immense significance and allows for maximising the velocity of deployment along with an application of reliability through helping to move within the market speed. It has also been evidenced that as the applications run within their own containerized environment, most of the applications might be moved anywhere besides altering the overall environment. As per the views of De Lauretis, (2019), the foundation based on the microservices architecture has been regarding the development of a single application to be a suite for an independent and smaller service which has been running within its process; deployed and developed independently.
To conclude, the present study has emphasized the concept of microservices architecture and its significance. Different concepts and principles related to the present aspect have been highlighted in the above study along with outlining both the benefits and limitations followed by a discussion. Hence, the present concept has been considered to focus on the segregation of the available services within the monolith of independent services.
De Lauretis, L. (2019, October). From Monolithic Architecture to Microservices Architecture. In 2019 IEEE International Symposium on Software Reliability Engineering Workshops (ISSREW) (pp. 93-96). IEEE.
Hawilo, H., Jammal, M., & Shami, A. (2019). Exploring microservices as the architecture of choice for network function virtualization platforms. IEEE Network, 33(2), 202-210.
Kazanavi?ius, J., & Mažeika, D. (2019, April). Migrating legacy software to microservices architecture. In 2019 Open Conference of Electrical, Electronic and Information Sciences (eStream) (pp. 1-5). IEEE.
Nunes, L., Santos, N., & Silva, A. R. (2019, September). From a Monolith to a Microservices Architecture: An Approach Based on Transactional Contexts. Information technology assignment In European Conference on Software Architecture (pp. 37-52). Springer, Cham.
Poniszewska-Mara?da, A., Vesely, P., Urikova, O., & Ivanochko, I. (2019, September). Building Microservices Architecture for Smart Banking. In International Conference on Intelligent Networking and Collaborative Systems (pp. 534-543). Springer, Cham.
Santos, N., & Silva, A. R. (2020, March). A Complexity Metric for Microservices Architecture Migration. In 2020 IEEE International Conference on Software Architecture (ICSA) (pp. 169-178). IEEE.
Tonelli, R., Lunesu, M. I., Pinna, A., Taibi, D., & Marchesi, M. (2019, February). Implementing a microservices system with blockchain smart contracts. In 2019 IEEE International Workshop on Blockchain Oriented Software Engineering (IWBOSE) (pp. 22-31). IEEE.