Information Technology Assignment: Microservices Architecture for Software Development
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 micro services 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
1. Write a 1000-word report to demonstrate your understanding of the theoretical concepts of microservices architecture in two specific areas:
a. What are the key principles and concepts of microservices architecture
b. 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.
2. 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.
According to the study ofPahl, Jamshidi& Zimmermann (2020) undertaken in this information technology assignment, microservices is considered as an architectural style which tends to structure any of the application being a collection based on the services which have been highly testable and maintainable. Moreover, it is independently deployable; loosely coupled and also organised across the capabilities of the business. In the case of microservice architecture, each of the services is known to be self-contained along with implementing a single capability of the business. Hence, the present study indicates the theoretical concepts related to microservices architecture which can highlight the bridge within a business and IT while considering the decisions in a particular way.
Key concepts and principles of microservices architecture
Microservices tend to provide the ability for separating the system capability within different domains with the use of Domain Driven Design principles (Pahl, Fronza, El Ioini&Barzegar, 2019). The main objective for the design-driven by domain has been to focus within the core domain along with associated logic. This is known to minimise the possibilities for the application to get out of the hand. This is considered as a distinctive method for the development of a software system which tries to focus within the building of single-function modules consisting of well-defined operations and interfaces.
The respective trend has been popular within the recent years as the Enterprises are found to look for being much more agile along with moving forward to continuous testing and DevOps and can also benefit through these teams such as Netflix; Amazon; PayPal and similar other services evolved through monolithic to the microservices architecture. However, there are several challenges associated with the monolithic system which are solved by microservices to be modular. For instance, they help in building the application based on smaller services while running within its process along with being independently deployable. However, as stated by Song, Nguyen, Chauvel, Glattetre&Schjerpen (2019), the results within system development require a dynamic makeover as well.
Figure 1: Monolithic vs.Micro Services Architecture
Source: (Mazzara, Bucchiarone, Dragoni& Rivera, 2020) Some of the key principles that need to be recognised while making the design of microservices related to the application of an enterprise are mentioned below:
Microservices tend to provide the ability for separating the capability of the system within various domains with the use of Domain Driven principles of design. This helps in reducing the probability of the application to get out of context.
This indicates that monolithic implementations generally comprise a logical database regarding the persistent data over the range of the applications. This becomes very complex for the changes in time.
Constant delivery through DevOps culture
As per the views of Tonelli, Lunesu, Pinna, Taibi& Marchesi (2019), within the classical and monolith environment, there are no multiple releases in separate artefacts and this becomes relatively easier for maintaining the Jenkins jobs building manually. Within the microservice architecture, there are several units of deployment that increase the automated solution which is required. This can eventually be achieved with automating the deploy and building process with the help of the tools such as CHEF or rather Jenkins consisting of a DevOps team.
Hiding the implementation details
Microservices are found to be smaller services with an independent lifecycle which tends to work together being a part of the overall application. Nevertheless, each of the services might be independent when this has a part for a bigger structure. This principle carries a great significance to hide each of the details related to service implementation for the enhancement of the ability regarding one of the services for scaling independently based on others.
Advantages and disadvantages of microservices architecture
Mitigation of technology lock-in
This indicates that microservices are found to provide flexibility for trying the stack of new technology for the service of an individual as being needed. The lesser code within the play can offer much more flexibility.
Complex communication within the services
As opined by Abdullah, Iqbal&Erradi (2019), being an independent service, one needs to handle the requests of travelling very carefully within the modules. In such a scenario, the developers might be forced to write extra code to avoid any kind of disruption.
Improving the fault isolation
This denotes that the larger applications might remain to be unaffected through the failure for a single module.
Challengers of deployment
This indicates that the product might need coordination within some of the multiple services that might not be straightforward as compared with the deploying of WAR within a container (Krämer, Frese&Kuijper, 2019).
Smaller and faster deployments
The smaller scope and codebases can have a quicker deployment that can also allow for starting in exploring the benefits related to continuous deployment.
Difficulty in global testing
Testing for the applications related to microservices might be cumbersome. Within the monolithic approach, one should launch the WAR within the application server along with assuring its connectivity through its databasewith the microservices.
Table 1: Advantages and disadvantages of microservices architecture
Source: (Developed by the Learner)
In recent days, as evidenced by Kazanaviius and Mažeika (2019), the microservices architecture is successfully embraced through the leading players within various domains and also been deployed to scale the operations and business seamlessly. Most of the bigger names have evolved through a monolithic architecture towards the microservices architecture. Some of the advantages based on microservices architecture have been mentioned in the above table. Nevertheless, microservices are considered to be hot for the trend however, there are also certain shortcomings related to the particular concept which have also been highlighted. It has been evidenced that each of the dependent services related to architecture tends to require for being confirmed besides the occurrence of the testing. Hence, from the above table, it can be analysed that the microservices architecture has better scalability along with leading to faster cycles of development however, it also requires good communication as well as maintain the networks.
To conclude, the present study has emphasized within the concept of microservices architecture which has also highlighted the concept and principle of the respective aspect in case of software development. However, both the benefits and limitations related to microservices architecture has been outlined in the present discussion. On the other hand, for mitigating or reducing the limitations of the particular concept, proper automation along with tools as well as trained staff can help in addressing all these. Thus, microservice architecture is known to allow each of the features to be developed along with being deployed independently.
Abdullah, M., Iqbal, W., &Erradi, A. (2019).Unsupervised learning approach for web application auto-decomposition into microservices. Journal of Systems and Software, 151, 243-257.
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.
Krämer, M., Frese, S., &Kuijper, A. (2019).Implementing secure applications in smart city clouds using microservices. Future Generation Computer Systems, 99, 308-320.
Mazzara, M., Bucchiarone, A., Dragoni, N., & Rivera, V. (2020). Size matters: Microservices research and applications.Information technology assignment In Microservices (pp. 29-42).Springer, Cham.
Pahl, C., Fronza, I., El Ioini, N., &Barzegar, H. R. (2019).A Review of Architectural Principles and Patterns for Distributed Mobile Information Systems.In WEBIST (pp. 9-20).
Pahl, C., Jamshidi, P., & Zimmermann, O. (2020).Microservices and Containers. Software Engineering 2020.
Song, H., Nguyen, P. H., Chauvel, F., Glattetre, J., &Schjerpen, T. (2019, July). Customizing multi-tenant SaaS by microservices: a reference architecture. In 2019 IEEE International Conference on Web Services (ICWS) (pp. 446-448).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.