Developing Microservices Architecture On Microsoft Azure With Open .

Transcription

Developing MicroservicesArchitecture on MicrosoftAzure with Open SourceTechnologiesOvais Mehboob Ahmed KhanArvind ChandakaA01 Khan FM pi-pxviii.indd 113/05/21 10:19 PM

Developing Microservices Architecture on MicrosoftAzure with Open Source TechnologiesPublished with the authorization of Microsoft Corporation by:Pearson Education, Inc.Copyright 2021 by Pearson Education, Inc.All rights reserved. This publication is protected by copyright, and permissionmust be obtained from the publisher prior to any prohibited reproduction,storage in a retrieval system, or transmission in any form or by any means,electronic, mechanical, photocopying, recording, or likewise. For informationregarding permissions, request forms, and the appropriate contacts withinthe Pearson Education Global Rights & Permissions Department, please visitwww.pearson.com/permissions.No patent liability is assumed with respect to the use of the information contained herein. Although every precaution has been taken in the preparation ofthis book, the publisher and author assume no responsibility for errors or omissions. Nor is any liability assumed for damages resulting from the use of theinformation contained herein.CREDITSEDITOR-IN-CHIEFBrett BartowEXECUTIVE EDITORLoretta YatesDEVELOPMENT EDITORRick KughenSPONSORING EDITORCharvi AroraMANAGING EDITORSandra SchroederSENIOR PROJECT EDITORTracey CroomCOPY EDITORRick KughenISBN-13: 978-0-13-681938-7ISBN-10: 0-13-681938-9INDEXERCheryl Ann LenserLibrary of Congress Control Number: 2021937949PROOFREADERAbigail ManheimScoutAutomatedPrintCodeTRADEMARKSTECHNICAL EDITORSDoug HollandThomas PalathraMicrosoft and the trademarks listed at http://www.microsoft.com on the“Trademarks” webpage are trademarks of the Microsoft group of companies.All other marks are property of their respective owners.EDITORIAL ASSISTANTCindy TeetersWARNING AND DISCLAIMERCOVER DESIGNERTwist Creative, SeattleEvery effort has been made to make this book as complete and as accurate aspossible, but no warranty or fitness is implied. The information provided is onan “as is” basis. The author, the publisher, and Microsoft Corporation shall haveneither liability nor responsibility to any person or entity with respect to anyloss or damages arising from the information contained in this book or fromthe use of the programs accompanying it.COMPOSITORcodeMantraSPECIAL SALESFor information about buying this title in bulk quantities, or for special salesopportunities (which may include electronic versions; custom cover designs;and content particular to your business, training goals, marketing focus,or branding interests), please contact our corporate sales departmentat corpsales@pearsoned.com or (800) 382-3419.For government sales inquiries, please contactgovernmentsales@pearsoned.com.For questions about sales outside the U.S., please contactintlcs@pearson.com.A01 Khan FM pi-pxviii.indd 213/05/21 10:19 PM

I would like to thank my family for supporting and encouraging me inevery goal of my life.—Ovais Mehboob Ahmed KhanI dedicate this book to my family and friends for their everlastingencouragement and support.—Arvind ChandakaA01 Khan FM pi-pxviii.indd 313/05/21 10:19 PM

This page intentionally left blankA01 Khan FM pi-pxviii.indd 1813/05/21 10:19 PM

ContentsAcknowledgmentsAbout the authorsForewordIntroductionChapter 1Introduction to microservicesxixiixiiixv1Our journey with microservices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1Evolution of software architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2Monolithic architecture2Service-oriented architecture (SOA)3Comparing monolith with microservices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4SOA versus microservices5Monolith example6Microservices example7Databases in a monolithic architecture8Databases in microservices architecture9Micro front-ends9Core fundamentals of microservices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11Benefits11Challenges13Moving forward with the microservices architecture,open source, and Azure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16This book’s goals17Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17Chapter 2Modeling microservices—real-life case study19Application requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20Application features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20Identity management and authentication scenarios20Auction management20Bid management21vA01 Khan FM pi-pxviii.indd 513/05/21 10:19 PM

Payment management22Application flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23Decomposition principles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24Decomposition strategies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24Decomposition by business capability25Decompose by subdomain25Domain-driven design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Ubiquitous language27Bounded context28Domain categories30Online auction system decomposition based on DDD. . . . . . . . . . . . . . . . . 31Anti-patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33Using monolith or a shared database with microservices33Unnecessary fine-graining of services to deeper subdomains33Establishing tight dependencies between code artifacts34Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34Chapter 3Build microservices architecture35Cloud-native applications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36Main principles of cloud-native applications36Characteristics of cloud-native applications37Twelve-factor app methodology. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40The online auctioning system (OAS) architecture. . . . . . . . . . . . . . . . . . . . . . 41Representation of Azure Kubernetes cluster nodes,pods, and services42Technologies used . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43viFront-end technology43Technologies used for building microservices44Cloud technologies45Azure WebJobs46Azure Event Hubs47Azure API Management47Azure AD B2C48ContentsA01 Khan FM pi-pxviii.indd 613/05/21 10:19 PM

Azure Kubernetes Services48Azure Container Registry49Azure DevOps49Azure Application Insights49Azure Monitor50Distributed database architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50Transactional data model50Transient data model50Polyglot persistent architecture51Patterns in distributed databases52Direct HTTP call52Aggregator pattern53Command query responsibility segregation54Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57Chapter 4Develop microservices and front-end applications59Developing microservices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60Developing the auction service60Developing the bid service68Provision Cosmos DB in Azure70Create a bid service in the JavaSpring Boot framework72Developing a payment service77Developing an application front-end. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88Prerequisites89Creating a front-end application89Understanding the Angular project structure90Angular concepts93Developing a security module95Configuring environment files101Develop the create auction form102Developing an active auctions page105Developing a submit bid form107Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111ContentsA01 Khan FM pi-pxviii.indd 7vii13/05/21 10:19 PM

Chapter 5Microservices on containers113Containers Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113Docker as a container technology. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114Install Docker114Docker components116Docker commands116Linux versus Windows containers117Build Docker images. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118Containerize the auction service118Containerize the bid service120Containerize the payment service123Deploy images to Azure Kubernetes Services. . . . . . . . . . . . . . . . . . . . . . . 125Kubernetes architecture125Provision Azure Kubernetes Services127Provision the Azure Container Registry129Push services to ACR129Deploy services to AKS130Create a deployment object for OAS microservices131Create a service object for OAS microservices135Deploy a front-end application in the Azure App Service. . . . . . . . . . . . . 137Deploy the Kafka Listener Service as an Azure WebJob. . . . . . . . . . . . . . 142Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143Chapter 6Communication patterns145Approaches to communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145Synchronous versus asynchronous communication146Request/response communication147Pub/sub communication148The best communication approach for microservices149Pub/sub communication technologies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153viiiApache Kafka153Azure Event Hubs155RabbitMQ156ContentsA01 Khan FM pi-pxviii.indd 813/05/21 10:19 PM

Set up Kafka to establish pub/sub communication . . . . . . . . . . . . . . . . . . . 157Infrastructure setup157Setting up the producer: Adding Kafka supportin the Java application159Setting up the Consumer: Develop Kafka Listenerservice with .NET Core Hosted Service161Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173Chapter 7Security in microservices175An overview of security and architectures . . . . . . . . . . . . . . . . . . . . . . . . . . . 175IaaS and PaaS architecture security176PaaS security177Zero-trust architecture179Authentication and authorization flows182Azure Active Directory B2C187End-to-end OAS security implementation. . . . . . . . . . . . . . . . . . . . . . . . . . 189User perspective191Microsoft Authentication Library (MSAL)192Creating a tenant192Register your application193Configuration193User Flows196Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200Chapter 8Set up Azure API Gateway201Why do you need an API gateway?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201Azure API Management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202Key benefits of using Azure API Management203Set up Azure API Management203Configure APIs in Azure APIM204Working with policies and expressions210Strategies when using Azure API Managementwith Azure Kubernetes Services214Strategies to configure APIM with Azure Kubernetes Services218Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220ContentsA01 Khan FM pi-pxviii.indd 9ix13/05/21 10:19 PM

Chapter 9Build and deploy microservices223Continuous integration and continuous deployment. . . . . . . . . . . . . . . . 223Automating infrastructure through Infrastructure as Code. . . . . . . . . . . 225OAS Infrastructure as Code with Terraform225Build a pipeline or continuous integration229Deployment pipeline or continuous deployment234Building CI/CD pipelines for the OAS microservices . . . . . . . . . . . . . . . . . 237CI/CD pattern and best practices237Deployment patterns238The auction service build pipeline239Auction service deployment pipeline241A complete look at DevOps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247Chapter 10Monitoring microservices249Monitoring concepts and patterns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249Log information250Azure Monitor253Azure Application Insights254Monitoring framework and best practices. . . . . . . . . . . . . . . . . . . . . . . . . . 257Azure Application Insights configuration258Container Insights265Dashboards266Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268Indexx269ContentsA01 Khan FM pi-pxviii.indd 1013/05/21 10:19 PM

AcknowledgmentsThis book involved great effort on our part. With the recent growth in microservices architecture, we saw the importance of developing a sample case study onmicroservices to empower our customers to build better applications. We createda use case to illustrate microservices, created a functional application, and evangelized it to our customers—all before even putting pen to paper to write this book.Our friends and family were the spectators during these laborious endeavors, andthey showed nothing but encouragement and understanding during long nightsand tiring weekends. We couldn’t have done it without them!A big thanks goes to our managers for their everlasting support. BarbarosGunay, Andrew McCreary, Mekonnen Kassa—thank you! Without your support,this book could not have been done.When we both started working at Microsoft, we were quickly taken underthe OSS Enablement Team’s wing. Rick Hines and Bahram Rushenas are the teamleads who encouraged us to pursue the project that ultimately became this book.Whether it was discussing a design or architecture of an application, brainstormingideas, or presenting at events, their help and support were tremendous. We wantto thank you for everything you’ve done.We also want to thank Sally Brennan for preparing our session outline for Microsoft Ready, our premier go-to-market conference, which led us to further refine thecontent we used within our book.We also want to thank our team at Pearson. Thank you so much, Loretta Yates,Charvi Arora, Rick Kughen, Doug Holland, Thomas Palathra, Abigail Manheim, andTracey Croom for supporting us during our journey. We would like to thank RobVettor for lending his time to review our book and providing a foreword. Rob isan extremely experienced individual in microservices at Microsoft and we greatlyappreciate his support.xiA01 Khan FM pi-pxviii.indd 1113/05/21 10:19 PM

About the authorsOvais Mehboob Ahmed Khan is a seasoned programmer and solutions architectwith nearly 20 years of experience in software development, consultancy, andsolution architecture. He has worked with various clients across the United States,Europe, Middle East, and Africa, and he currently works as a Senior CustomerEngineer at Microsoft, based in Dubai. He specializes mainly in application development using .NET and other OSS technologies, Microsoft Azure, and DevOps.He is a prolific writer and has published several books on enterprise applicationarchitecture, .NET Core, VS Code, and JavaScript, and he has written numeroustechnical articles on various sites. He likes to talk about technology and has delivered various technical sessions around the world.Arvind Chandaka is a product manager at Microsoft and has led products acrossAzure and Cloud AI Engineering. He has worked with strategy executive teamsto grow Microsoft Azure as well as built IP at the company resulting in severalservices and products. He is a recognized SME in enterprise technology and hasadvised many Fortune 100 companies and international clients around the world.He specializes across infrastructure, identity, cyber security, open source, and more.A strong believer in empowerment, he works closely with startups, is a founderhimself, invests in the entrepreneurial ecosystem, and serves on the board ofnon-profits in New York City.Arvind earned his Bachelor of Science at Cornell University where he studiedseveral disciplines ranging from computer science to business. In his spare time,you will likely find him at a tennis court or traveling the world for the next greatfoodie destination.xiiA01 Khan FM pi-pxviii.indd 1213/05/21 11:00 PM

ForewordFor many years, the guidance for building business applications was clear-cut: Create a large, monolithic core that contains business logic Persist data to a shared relational database Expose functionality through front-end UIs and API endpoints Build, package, and deploy the application, and you’re in business.While often challenging, such monolithic applications were straightforwardto build, test, deploy, and troubleshoot. With code executing in a single process,performance could be good. When the need arose, you could scale the applicationup (vertically) by adding more server resources.This model, however, had limitations. When an application proved popular,the monolithic architecture would eventually break down. As the app grew larger,more complex, and more “coupled,” it became less agile: Feature updates and fixes would cause unintended and costly side effects,such as breaking existing functionality. One unstable component could crash the entire system. Scaling any component required scaling the entire application. New technologies and frameworks were not an option. Each change required a full deployment of the application.Perhaps the biggest challenge was agility. Monolithic applications prevented thebusiness from moving fast.Fast-forward into the world of modern apps and microservices. They are allabout speed and agility. By decomposing the business domain into independentservices, microservices enable business systems to strategically align with businesscapabilities. They embrace feature releases with high confidence. They allow forupdating small areas of a live application without downtime. They empower thebusiness to adapt rapidly to evolving market and competitive forces.While microservice adoption is rapidly increasing, not everybody is adopting itcorrectly. Implementing a microservices architecture requires substantial investment. For it to be successful, developers and architects must understand the principles, patterns, and best practices of distributed microservices architecture.This book spoon-feeds microservices to you. From design to development andfrom deployment to operation, it provides a comprehensive education into theworld of microservices. Moreover, the book wraps microservice construction intoxiiiA01 Khan FM pi-pxviii.indd 1313/05/21 10:19 PM

the context of cloud native design and open-source technologies, all hosted in theAzure cloud. Kudos to authors Ovais Mehboob Ahmed Khan and Arvind Chandakafor making this reference available. Kudos to you, the reader, for investing the timeto study and master the architecture.—Robert VettorPrincipal Cloud Solution ArchitectMicrosoftxivForewordA01 Khan FM pi-pxviii.indd 1413/05/21 10:19 PM

IntroductionWelcome to Developing Microservices Architecture on Microsoft Azure with OpenSource Technologies. Today, organizations are modernizing application developmentby integrating open-source technologies into a holistic architecture for deliveringhigh-quality workloads to the cloud. This book is a complete, step-by-step guide tobuilding an application based on microservices architecture by leveraging servicesprovided by the Microsoft Azure cloud platform and a litany of open-source technologies such as Java, Node.js, .NET Core, and Angular.This will be a reference guide to learn key building blocks of microservicesarchitecture by representing a real-life case study of building a trading system toauction items. This book will lead readers through a step-by-step journey to learnmodern application development scenarios and leverage cloud-native capabilitiesin Microsoft Azure to provide distinct value to customers.This topic is in very high demand based on statistics and our own experiencesfrom the field. There have been books made on microservices, but they almostalways cover business value proposition alone rather than technical implementation on how to establish end to end infrastructure, application development,deployment automation and to realize actual value through constructing it usingAzure and open source.We start with an introduction and modeling of microservices and then move onto build a cloud-native microservices architecture by developing services, containerizing services, and deploying them on AKS. We also cover various topics relatedto communication patterns, security, and API gateways, and we touch on topicsrelated to automating builds and deployments using CI/CD and monitoring.Who is this book for?This book is for architects and developers. It especially targets those who havesome development background to build applications or have worked in the capacity of designing and architecting applications. It will also be useful for those withsome skills with Azure.xvA01 Khan FM pi-pxviii.indd 1513/05/21 10:19 PM

How is this book organized?This book is organized into three parts: Part I: Introduction and modeling of microservices Part II: Designing and building microservices architecture Part III: Implementing patterns, security, DevOps, and monitoringThe first part of this book consists of two chapters that focus on a thoroughintroduction to microservices and how you can decompose or model microservicesusing domain-driven design (DDD).The second part of this book consists of three chapters that focus on designingan architecture and building an application that follows this architecture with various open-source technologies such as Java, .NET Core, Node.js, and Angular. Thearchitecture is cloud-native and leverages multiple managed services within Azure.The third part of this book consists of five chapters that focuses on topics relatedto communication patterns, security within microservices, API gateways, automating builds and deployments, and monitoring.System requirementsThe requirements for running through the examples in this book should be: Any Linux distros or Windows operating systems 4 GB of RAM 1 GB of available disk space Docker with Linux Containers Microsoft Azure subscription Azure DevOps account Visual Studio Code or other editors of your choiceAbout the companion contentThe companion content for this book can be downloaded from the following loadsxviIntroductionA01 Khan FM pi-pxviii.indd 1613/05/21 10:19 PM

Errata, updates, & book supportWe’ve made every effort to ensure the accuracy of this book and its companioncontent. You can access updates to this book—in the form of a list of submittederrata and their related ervices/errataIf you discover an error that is not already listed, please submit it to us at thesame page.For additional book support and information, please visitMicrosoftPressStore.com/Support.Please note that product support for Microsoft software and hardware is notoffered through the previous addresses. For help with Microsoft software or hardware, go to http://support.microsoft.com.Stay in touchLet’s keep the conversation going! We’re on tionA01 Khan FM pi-pxviii.indd 17xvii13/05/21 10:19 PM

This page intentionally left blankA01 Khan FM pi-pxviii.indd 1813/05/21 10:19 PM

Chapter 1Introduction tomicroservicesIn this chapter, you will: Learn about the history and evolution of software architecture Understand the differences between monolithic and microservices architectures Learn about the core benefits and challenges of using a microservices architectureMicroservices is a buzzword that is thrown around frequently in the technology community. Many infer it as being a further dissection of modular componentization,and although that addresses part of it, it doesn’t encompass the full picture. Microservicesare a group of back-end services that provide business operations to form an application.When combined with other pieces such as a front-end and various communication platforms, it creates what is known as a microservices architecture. Although that is a simplisticway to approach this architecture, it is a vital design orientation and metaphor to learnfor implementing modern application development scenarios geared to achieving betterresults.This particular chapter will focus on the core fundamentals of microservices, including the transition from historical architecture to present, benefits and challenges, and acomparison of a monolithic application architecture with microservices architecture.Our journey with microservicesIn recent years, microservices architecture have become very popular with firms. Many organizations and enterprises have expressed a desire and need to move their applications to amicroservices architecture.We have worked with customers that were very concerned with increasing development velocity to ship code faster and at more frequent intervals. Other customers arefocused on modularizing their codebase further to iterate on particular services forbetter application performance and additional support. Some are jaded by financial andtime constraints that constantly plague their organization due to large scale migrationsor refactoring and want to put an end to it. We have seen these pains, frustrations, complex scenarios, and wishes from a myriad of customers time and time again.19780136819387 print.indb 111/05/21 3:05 pm

We have worked at Microsoft and in the IT space with many enterprise customers. We metwith various internal open-source groups to find solutions to these problems of customers.Microservices architecture was the key behind this, and ultimately, we wanted to have a streamlined way to demonstrate the theoretical value of microservices and how to build one, too.As a result, we created an application called the Online Auction System (OAS) to serve as areal-life case study to teach and empower customers to build this architecture for their enterprise scenarios. We accomplished this by using a variety of open-source technologies, and weused Microsoft Azure as the bedrock for the application. Throughout this book, we will use theapproach to provide this background knowledge in conjunction with the parallels to this casestudy, which helps map theoretical and experiential learning together.Evolution of software architectureBefore we can understand the details behind microservices architecture, let’s take a brief lookat how software architectures have evolved.Monolithic architectureAbout a decade ago, the monolithic application was very popular, and consequently itsN-tiered architecture backbone was a norm. This consisted of an application decomposed intoseveral layers. These layers vary depending on the complexity of the application, but traditionally, there were three main components. See Figure 1-1.Monolithic architecturePresentationBusinessData accessFIGURE 1-1 2  Chapter 19780136819387 print.indb 2The monolithic architecture modelPresentation layer The presentation layer traditionally represents the front-end. Someof the artifacts include view models, view pages, user interfaces, and other artifacts thatare oriented toward front-end development.Introduction to microservices11/05/21 3:05 pm

Business layer The middle layer is a business layer that holds all the logical flows ofthe application. This includes most of what we consider as the back-end code necessaryfor the primary function of the overall application. This area is where languages such as.NET or even Java are used to build back-end services that contain business managersand business objects consisting of the application logic.Data access layer Finally, the data access layer is responsible for all database operations. This consists of a database and interface to perform read/write operations on datacollected and used within the application as part of its overall functionality.This layered architecture provides a basic separation of concerns and decompositionof applications into functional components. However, this architecture results in tightlycoupled services that result in many dependencies.Thinking of some of the scenarios from earlier, we can see why tightly coupled services anddependencies cause problems. Dependencies present drawbacks where it is difficult to makeany changes to the application easily. This includes complexity in the form of large migrationsand refactoring projects where many teams are involved and many times agility is replacedwith a potential for bureaucracy. This introduces longer timelines because simple quick deployments cannot be made and ultimately all these problems cascade into a single point wheremanagement is then required to make massive expenditures.Service-oriented architecture (SOA)The transition away from monolithic architecture was driven by these reasons. The heavyweightnature of this architecture was slowly decomposed and eventually led to the formation of a newarchitecture known as service-oriented architecture (SOA), which is illustrated in Figure 1-2.Service-oriented architectureEnterprise busFIGURE 1-2SOA architectureEvolution of software architecture9780136819387 print.indb 3Chapter 1  311/05/21 3:05 pm

This model was geared toward decomposing an application into even more granularmodules to account for the drawbacks in monolithic architectures. Essentially, SOA was a wayto connect different monoliths across a consistent m

Technologies used for building microservices 44 Cloud technologies 45 Azure WebJobs 46 Azure Event Hubs 47 Azure API Management 47 Azure AD B2C 48 A01_Khan_FM_pi-pxviii.indd 6 13/05/21 10:19 PM. Contents vii Azure Kubernetes Services 48 Azure Container Registry 49 Azure DevOps 49