Microservices Architecture - Part A

Introduction to Microservices Architecture

The present business environment is characterised by constant disruption, and no organization regardless of its industry or size is safe form this disruption. Nowadays, it is easier for new entrants to turn the entire industry upside down, and unless businesses can become more nimble and agile they are likely to be left behind. In order to address this issue, organizations and developers that have laid a foundation for continuous agility and innovation, have adopted microservices architecture to respond to ever-changing demands of the business (Nadareishvili, Mitra, McLarty & Amundsen, 2016). Such organizations employ a framework of hyper-focused, smaller teams working together to deliver something much larger.

Microservices describes a way of designing software applications as suites of independently deployable services. This approach has evolved from traditional service-oriented architecture (SOA) which includes loose coupling of components to decouples infrastructure and service components. Microservices are independently deployable and are built around business capabilities (Di Francesco, 2017). Moreover, the central management of such services is minimal which might use different data storage technologies and are a writer in different programming languages.

Microservices are different than SOA, mainly because while the latter aims to integrate various business applications, microservices belong to one application. Simply put, the microservice architectural style is an approach for the development of the single application, each communicating with lightweight mechanisms and running in its process (Dragoni, Giallorenzo, Lafuente, Mazzara, Montesi, Mustafin & Safina, 2017).

Some of the key design principles of a microservices architecture are as follows:

Decentralization

Usually, a traditional monolithic design which includes tightly coupled infrastructure and architecture have a singly logical database for continual data throughout a wide range of applications. This tends to become complex to change after some time (Dragoni, Lanese, Larsen, Mazzara, Mustafin & Safina, 2017). On the other hand, in microservices architecture, each service can use a completely different database system, or different instances of the same database technology to manage its database.

Domain-Driven Design

Moreover, microservices architecture also provides the ability to divide system capability into diverse domains with the help of domain-driven design principles. Focusing on the associated logic and core domain is the main objective of this domain-driven design, as it minimizes the likelihood of the application getting out of hand (Nadareishvili, Mitra, McLarty & Amundsen, 2016). In addition to this, this also helps to facilitate creative collaboration among development teams and DevOps, as a proper understanding of the domain is required by both for scaling up (Dragoni, Giallorenzo, Lafuente, Mazzara, Montesi, Mustafin & Safina, 2017).

Failure Isolation

Another key principle of microservices architecture is that they are comparatively more resistant. For instance, in a microservices architecture, a malfunction such as unclosed database connections or a memory leak will only affect that single service, while other services can continue to handle requests. On the other side, a similar malfunction in a monolithic application can bring down the entire system (Dragoni, Lanese, Larsen, Mazzara, Mustafin & Safina, 2017). 

Hidden Implementation

In order to improve the ability of one service to scale in an independent manner, it is crucial to hide the implementation details of each service. One can use REST protocol over HTTP to make sure that services communicate with one other using a communication channel that is lightweight. Details can be achieved through this segregation of external and internal implementation (Di Francesco, 2017).

Continuous Delivery

The traditional monolith-based environment lacks multiple separate release artefacts which makes it easier to manually maintain the Jenkins build jobs. In contrast, a microservice architecture needs an automated solution as the number of deployment units increase (Di Francesco, 2017). This can be accomplished by deploying process and automating the build through tools like CHEF or Jenkins by having a DevOps team. In this manner, microservices architecture help to diminish the required number of Jenkins jobs for each release artefact that can deploy, build and release the desired/application microservice (Sun, Li & Memon, 2017).

Advantages and Disadvantages of Microservices Architecture

Advantages

  • Ease for deployment as each service can be independently deployed
  • Improved fault isolation as any fault will one impact that particular service, not others (Rademacher, Sachweh & Zundorf, 2017)
  • Relatively small services/components
    1. Application starts faster
    2. Much easier for a developer to understand
    3. Speeds up the deployments
  • Easier to scale development
    1. Each team can independently deploy, scale and develop their services
    2. Enables the organization of development efforts around several different teams
  • No long-term commitment to any stack (Sun, Li & Memon, 2017)
  • Also, microservices provide flexible data storage options to store data in multiple locations

Disadvantages

  • Relatively more complex considering that it involves a number of different services
  • In order to implement the microservices architecture, organizations need to undergo a complete cultural shift which involves a mature DevOps and agile culture (Granchelli, Cardarelli, Di Francesco, Malavolta, Lovino & Di Salle, 2017)
  • Microservices are also more expensive as
    1. Services need to constantly communicate with one other, which leads to increased remote call (Sun, Li & Memon, 2017)
    2. This, in turn, increases the cost associated with network processing and latency
  • Also, compared to the traditional monolithic application, microservices architecture pose serious security challenges
    1. Mainly because of an increase in inter-service communication.
    2. Such interactions create an opportunity for outsiders to access the system (Rademacher, Sachweh & Zundorf, 2017).
  • Moreover, achieving data consistency is also quite challenging in microservices architecture as each service has its own transaction management system (Sun, LI & Memon, 2017).

Conclusion on Microservices Architecture

In conclusion, the dynamic nature of the current business environment makes it necessary for organizations to become more nimble and agile in their approach. This will help them to tailor their operations according to the evolving business landscape. In order to do so, businesses need to change their traditional monolithic design which includes tightly coupled infrastructure and architecture have singly logical database. One of the most suitable alternatives is of microservices architecture which is a way of designing software applications as suites of independently deployable services. Some of the key design principles of such architecture include decentralization, domain-driven design, failure isolation, hidden implementation, and continuous delivery. Moreover, considering the advantage and disadvantages of the microservices it is clear why company choose to decouple unruly monoliths.

References for Microservices Architecture

Di Francesco, P. (2017). Architecting microservices. In 2017 IEEE International Conference on Software Architecture Workshops (ICSAW) (pp. 224-229). IEEE.

Dragoni, N., Giallorenzo, S., Lafuente, A. L., Mazzara, M., Montesi, F., Mustafin, R., & Safina, L. (2017). Microservices: yesterday, today, and tomorrow. In Present and ulterior software engineering (pp. 195-216). Springer, Cham.

Dragoni, N., Lanese, I., Larsen, S. T., Mazzara, M., Mustafin, R., & Safina, L. (2017). Microservices: How to make your application scale. In International Andrei Ershov Memorial Conference on Perspectives of System Informatics (pp. 95-104). Springer, Cham.

Granchelli, G., Cardarelli, M., Di Francesco, P., Malavolta, I., Iovino, L., & Di Salle, A. (2017). Towards recovering the software architecture of microservice-based systems. In 2017 IEEE International Conference on Software Architecture Workshops (ICSAW) (pp. 46-53). IEEE.

Nadareishvili, I., Mitra, R., McLarty, M., & Amundsen, M. (2016). Microservice architecture: aligning principles, practices, and culture. " O'Reilly Media, Inc.".

Rademacher, F., Sachweh, S., & Zündorf, A. (2017). Differences between model-driven development of service-oriented and microservice architecture. In 2017 IEEE International Conference on Software Architecture Workshops (ICSAW) (pp. 38-45). IEEE.

Sun, L., Li, Y., & Memon, R. A. (2017). An open IoT framework based on a microservices architecture. China Communications14(2), 154-162.

Remember, at the center of any academic work, lies clarity and evidence. Should you need further assistance, do look up to our Computer Architecture Assignment Help

Get It Done! Today

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