• Subject Code : MIS603
  • Subject Name : Microservices Architecture

Microservices Architecture

Self-Introduction 

In the era of technology and development most of the companies gets confused to decide which software would be the best choice for meeting their needs and would help their business to grow. Although most of the companies irrespective of the industry sectors, ahs adopted technology in various forms, yet many of them strive to apply it effectively to get successful outcomes. Some holds the idea of the right software but do not have the ability to maintain or troubleshoot the issues while others struggle to identify the best software to support their business. This is where the role of the software architect comes into picture. They not only help in designing and developing the applications and software systems, they also help in evaluating the management needs and advising the best software that could help in solving the purpose (Tang, W., Wang, L., & Xue, G. (2019).

They also help in high level business decisions along with giving technical advice that could directly help in business development. They help in keeping the software and applications updated that are used by the company. They also help in ensuring that the choices made are up to the current technical standards including the latest coding and updated platform. Designing and developing specific software and application for the company according to their needs is the prime objective of a software architect. Being a software architect, I do understand the criticality pf the roles and responsibilities of a software architect and I would try my best to focus more light and knowledge on the selected topic of Microservices Architecture and Software Architecture so that it would help the company to make the best decision. 

Introduction of Microservices

Building an effective and efficient system is critical as it involve lot of attributes. With time numerous technologies. Best practices and architectural patterns have been developed with an aim of developing high end technological system that could work seamlessly with limited issues to give the best output. The concept of Microservices has derived form a combination of various kinds of approaches like domain driven design. It is a software development technique that helps in building huge and complex applications out of multiple tiny components that are capable of performing single function like notification, authentication, processing of payments, etc. Within the software development project, each unit of the microservice is distinct and has its own specific functions. They work together and communicate with each other through web messaging queues or APIs in order to respond to the incoming events.

Microservices is a type of the SOA (service-oriented architecture) structural style that supports the application to get arranged as loosely bonded services. Microservices architecture holds the same approach and within microservice architecture, the services are grained very fine along with lightweight protocols. Complex business issues can be solved through simple APIs as each unit of the architecture would work independently and are responsible for forming a discreate task. Designing a software application would become simple as it can be designed or customized as per the requirements and that would also help in avoiding any kind of complexities. The application would be capable of handling multiple services together because of their distinct identity and performance. This work focuses on giving an overall brief introduction to the microservices and microservice applications. 

History and Present 

History of microservices started in the year 2005 when the term “Micro-Web-Services” was coined by Peter Rodgers. Beyond the conventional thinking, the term was introduced during the Web Services Edge conference. Initially, the software components were described as Micro-Web-Services which are composed of Unix-like pipelines and are capable of providing multiple services. During the conference proposal for architectural principles application on the Web and related services was projected. Peter Rodgers also focused on the granularity of the services and components of the application or software.

Although similar concept has originated in 1999 at the Hewlett Packard Labs with an aim of creating codes with limited brittleness, solving complex tasks and supporting software system to sustain critical change (Gan, Y., Zhang, Y., Cheng, D., Shetty, A., Rathi, P., Katarki, N., ... & Hu, K. (2019)s. However, this concept was not accepted in real at that time. Juval Löwy referred these small units as building systems in 2007 that were capable of offering services at various levels. Yet, the work still remained as a part of the conventional programming and didn’t hold an individual identity. In May 2011, a group of software architectures met in a workshop and tried to explore the term “microservices” and after doing a lot of brain strong over its advantages and challenges, the term “microservices” was conceptualized and accepted worldwide. 

Currently, microservices concept is been used in many sectors for supporting multiple complex activities. According to the prediction of Cloud Microservices Market Research Report on February 2020, the market size of the microservices architecture would boom heavily and would increase to 21.4% by 2021 and would reach to a size of about $3.2 billion by the end of 2026 (Xu, R., Nikouei, S. Y., Chen, Y., Blasch, E., & Aved, A. (2019). 

Benefits and Challenges 

Some of the main benefits of Microservices are,

  1. Scalability – Because of their individuality in deployment and implementation, scalability scope becomes higher and wider. They can run processes independently which could be monitoring independently and easily (Magableh, B., & Almiani, M. (2019)

  2. Modularity – Understanding of the application is easier along with ease in its testing, development and thus is more resilient to architecture erosion. 

  3. Distribution development – Development can be made parallel as small autonomous teams would help in enabling the deployment and development process. 

  4. Integration – Legally and heterogeneous systems can be integrated which makes the microservices highly viable for modernization of the monolithic software. 

Challenges associated with Microservices are listed below. 

  1. Complicated deployment and testing 

  2. Information barriers are formed by the services

  3. High cost involved because of its maintenance and two-phases anti-pattern architectures resulting in strong and tightly coupling. 

  4. Moving of the responsibilities is critical as monitoring and managing of the swapping of responsibilities between services is challenging. It also needs rewriting of the functions and other related languages. 

  5. Support and development are challenging because of the occurrence of the functional decomposition which is difficult to handle along with adding complexity in managing the services. 

  6. It is also painful to deal with multiple databases 

Software Architecture and its Importance with respect to Contemporary Enterprise 

A sort of planning of the system is known as software architecture that helps in giving a better understanding of the needs and components associated. It is primordial of the negotiation, understanding and communication occurring between various stakeholders involved including the customers, user-side, management, etc. so as to support in easy decision-making (Gan, Y., Zhang, Y., Cheng, D., Shetty, A., Rathi, P., Katarki, N., ... & Hu, K. (2019). Designing a software application would become simple as it can be designed or customized as per the requirements and that would also help in avoiding any kind of complexities. The application would be capable of handling multiple services together because of their distinct identity and performance. Microservices is a type of the SOA (service-oriented architecture) structural style that supports the application to get arranged as loosely bonded services. Microservices architecture holds the same approach and within microservice architecture, the services are grained very fine along with lightweight protocols. Complex business issues can be solved through simple APIs as each unit of the architecture would work independently and are responsible for forming a discreate task.

Although most of the companies irrespective of the industry sectors, has adopted technology in various forms, yet many of them strive to apply it effectively to get successful outcomes. Some holds the idea of the right software but do not have the ability to maintain or troubleshoot the issues while others struggle to identify the best software to support their business (Xu, R., Nikouei, S. Y., Chen, Y., Blasch, E., & Aved, A. (2019). This is where the role of the software architect comes into picture. They not only help in designing and developing the applications and software systems, they also help in evaluating the management needs and advising the best software that could help in solving the purpose. They also help in high level business decisions along with giving technical advice that could directly help in business development.

Main Types of Software Architecture

Choosing the right type of Software Architecture is critical as the whole business depends on the selection. There are main five types software architecture available i.e. Layered (n-tier) architecture, Event-driven architecture, Microkernel architecture, Microservices architecture and Space-based architecture. Further the Software architecture types can be categorized as, Business Architecture, Application Architecture, Information Architecture and Information Technology Architecture. 

picture depicting the types of software architecture

Figure 1 Software architecture types 

Conclusion 

Microservice architecture is a software development technique that helps in building huge and complex applications out of multiple tiny components that are capable of performing single function like notification, authentication, processing of payments, etc. Microservices is a type of the SOA (service-oriented architecture) structural style that supports the application to get arranged as loosely bonded services. Microservices architecture holds the same approach and within microservice architecture, the services are grained very fine along with lightweight protocols. Complex business issues can be solved through simple APIs as each unit of the architecture would work independently and are responsible for forming a discreate task. Because of individuality of microservices in deployment and implementation, scalability scope becomes higher and wider (Gan, Y., Zhang, Y., Cheng, D., Shetty, A., Rathi, P., Katarki, N., ... & Hu, K. (2019). They can run processes independently which could be monitoring independently and easily. Understanding of the application is easier along with ease in its testing, development and thus is more resilient to architecture erosion. Development can be made parallel as small autonomous teams would help in enabling the deployment and development process. Legally and heterogeneous systems can be integrated which makes the microservices highly viable for modernization of the monolithic software. 

References

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.

Ahuja, R. P. S., & Nedbal, M. (2018). U.S. Patent No. 10,148,504. Washington, DC: U.S. Patent and Trademark Office.

Chandramouli, R. (2019). Security Strategies for Microservices-based Application Systems (No. Special Publication (NIST SP)-800-204).

Di Francesco, P., Lago, P., & Malavolta, I. (2019). Architecting with microservices: A systematic mapping study. Journal of Systems and Software, 150, 77-97.

Gan, Y., Zhang, Y., Cheng, D., Shetty, A., Rathi, P., Katarki, N., ... & Hu, K. (2019, April). An open-source benchmark suite for microservices and their hardware-software implications for cloud & edge systems. In Proceedings of the Twenty-Fourth International Conference on Architectural Support for Programming Languages and Operating Systems (pp. 3-18).

Henning, S., Hasselbring, W., & Möbius, A. (2019, June). A scalable architecture for power consumption monitoring in industrial production environments. In 2019 IEEE International Conference on Fog Computing (ICFC) (pp. 124-133). IEEE.

Magableh, B., & Almiani, M. (2019, March). A self healing microservices architecture: a case study in Docker swarm cluster. In International Conference on Advanced Information Networking and Applications (pp. 846-858). Springer, Cham.

Nikouei, S. Y., Xu, R., Chen, Y., Aved, A., & Blasch, E. (2019, May). Decentralized smart surveillance through microservices platform. In Sensors and Systems for Space Applications XII (Vol. 11017, p. 110170K). International Society for Optics and Photonics.

O'Connor, R. V., Elger, P., & Clarke, P. M. (2017). Continuous software engineering—A microservices architecture perspective. Journal of Software: Evolution and Process, 29(11), e1866.

Tang, W., Wang, L., & Xue, G. (2019, January). Design of High Availability Service Discovery for Microservices Architecture. In Proceedings of the 2019 3rd International Conference on Management Engineering, Software Engineering and Service Sciences (pp. 253-257).

Xu, R., Nikouei, S. Y., Chen, Y., Blasch, E., & Aved, A. (2019, July). Blendmas: A blockchain-enabled decentralized microservices architecture for smart public safety. In 2019 IEEE International Conference on Blockchain (Blockchain) (pp. 564-571). IEEE.

Yan, L., Cao, S., Gong, Y., Han, H., Wei, J., Zhao, Y., & Yang, S. (2019). SatEC: A 5G satellite edge computing framework based on microservice architecture. Sensors, 19(4), 831.

Get It Done! Today

Applicable Time Zone is AEST [Sydney, NSW] (GMT+11)
Upload your assignment
  • 1,212,718Orders

  • 4.9/5Rating

  • 5,063Experts

Highlights

  • 21 Step Quality Check
  • 2000+ Ph.D Experts
  • Live Expert Sessions
  • Dedicated App
  • Earn while you Learn with us
  • Confidentiality Agreement
  • Money Back Guarantee
  • Customer Feedback

Just Pay for your Assignment

  • Turnitin Report

    $10.00
  • Proofreading and Editing

    $9.00Per Page
  • Consultation with Expert

    $35.00Per Hour
  • Live Session 1-on-1

    $40.00Per 30 min.
  • Quality Check

    $25.00
  • Total

    Free
  • Let's Start

Browse across 1 Million Assignment Samples for Free

Explore MASS
Order Now

My Assignment Services- Whatsapp Tap to ChatGet instant assignment help

refresh