%3CLINGO-SUB%20id%3D%22lingo-sub-1394641%22%20slang%3D%22en-US%22%3EAzure%20Development%20Taste%20Test%3A%20The%20API%20Gateway%20%26amp%3B%20The%20Event%20Driven%20Pattern%20-%20WIN%20AN%20EBOOK%20PART%204%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1394641%22%20slang%3D%22en-US%22%3E%3CP%3EWelcome%20to%20another%20dive%20into%20our%20new%20book%2C%26nbsp%3B%3CEM%3EHands-On%20Microservices%20with%20C%23%208%20and%20.NET%20Core%203%3C%2FEM%3E.%20Here%20are%20our%20previous%20posts%3A%3C%2FP%3E%0A%3CUL%3E%0A%3CLI%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fazure-developer-community-blog%2Fapi-patterns-and-technologies-win-an-ebook-part-3-hands-on%2Fba-p%2F1371152%22%20target%3D%22_self%22%3EPart%203%3A%20API%20Patterns%20and%20Technologies%3C%2FA%3E%26nbsp%3B-%20by%20Andreas%20Helland%3C%2FLI%3E%0A%3CLI%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fazure-developer-community-blog%2Fthe-flixone-bookstore-journey-win-an-ebook-part-2-hands-on%2Fba-p%2F1349543%22%20target%3D%22_self%22%3EPart%202%3A%26nbsp%3BThe%20FlixOne%20Bookstore%20Journey%3C%2FA%3E%20-%20by%20Gaurav%20Aroraa%3C%2FLI%3E%0A%3CLI%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fazure-developer-community-blog%2Fwin-an-ebook-hands-on-microservices-with-c-8-and-net-core-3%2Fba-p%2F1323985%22%20target%3D%22_self%22%3EPart%201%3A%26nbsp%3BWIN%20AN%20EBOOK%20-%20Hands-On%20Microservices%20with%20C%23%208%20and%20.NET%20Core%203%3C%2FA%3E%20-%20by%20me%20(Ed%20Price)%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%3EIn%20this%20series%20of%20blog%20posts%2C%20Packt%20is%20giving%20away%2010%20eBooks%20for%20our%20new%20book%2C%26nbsp%3B%3CEM%3EHands-On%20Microservices%20with%20C%23%208%20and%20.NET%20Core%203%3C%2FEM%3E%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CUL%3E%0A%3CLI%3E%26nbsp%3B%26nbsp%3B%3CSPAN%3EClick%26nbsp%3B%3C%2FSPAN%3E%3CA%20href%3D%22https%3A%2F%2Fforms.office.com%2FPages%2FResponsePage.aspx%3Fid%3Dv4j5cvGGr0GRqy180BHbRxcqO9ZweDRPlDtvKt3zuzBUMzRIT0ZVSUU1TzBGU0MxSlRKUVA1TlZFSS4u%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%20noopener%20noreferrer%22%3Ehere%3C%2FA%3E%3CSPAN%3E%26nbsp%3Bto%20enter%20the%20contest.*%3C%2FSPAN%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CFONT%20size%3D%225%22%3EWhy%20Patterns%3F%3C%2FFONT%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EPatterns%20are%20a%20series%20of%20architecture-like%20best%20practices%20for%20developers%20to%20solve%20common%20problems%20found%20in%20building%20cloud%20applications.%20By%20following%20a%20series%20of%20patterns%2C%20developers%20can%20build%20web%20apps%20that%20are%20secure%2C%20reliable%2C%20performant%2C%20and%20scalable.%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EDid%20you%20know%20that%20this%20is%20the%20third%20edition%20of%20the%20book%3F%20That's%20right!%20This%20is%20Gaurav's%20third%20round%20on%20the%20topic.%20Here%20are%20some%20of%20the%20Azure%20Developer%20Community%20team%20members%20who%20were%20involved%20with%20the%20books%3A%3C%2FP%3E%0A%3CUL%3E%0A%3CLI%3E%3CSTRONG%3EGaurav%20Aroraa%3C%2FSTRONG%3E%20was%20a%20writer%20on%20all%20three%20books%2C%20of%20course!%20Featured%20blog%20posts%3A%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fazure-developer-community-blog%2Fwhy-a-developer-should-build-a-solution-with-microservices%2Fba-p%2F337148%22%20target%3D%22_self%22%3EWhy%20a%20developer%20should%20build%20a%20solution%20with%20microservices%3C%2FA%3E%20and%20%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fazure-developer-community-blog%2Fintroduction-to-microservices%2Fba-p%2F337126%22%20target%3D%22_self%22%3EIntroduction%20to%20microservices%3C%2FA%3E%3C%2FLI%3E%0A%3CLI%3E%3CSTRONG%3EAndreas%20Helland%3C%2FSTRONG%3E%20was%20the%20Technical%20Reviewer%20on%20our%20recent%20third%20edition.%20Featured%20blog%20posts%3A%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fazure-developer-community-blog%2Fmagic-signin-amp-invitation-mails-in-azure-ad-b2c%2Fba-p%2F1198337%22%20target%3D%22_self%22%3E%E2%80%9CMagic%E2%80%9D%20SignIn%20%26amp%3B%20Invitation%20Mails%20in%20Azure%20AD%20B2C%3C%2FA%3E%20and%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fazure-developer-community-blog%2Fturn-covid-19-downtime-into-level-up-time%2Fba-p%2F1256946%22%20target%3D%22_self%22%3ETurn%20Covid-19%20downtime%20into%20level-up%20time%3C%2FA%3E%3C%2FLI%3E%0A%3CLI%3E%3CSTRONG%3EJeffrey%20Chilberto%3C%2FSTRONG%3E%20was%20the%20Technical%20Reviewer%20on%20the%20second%20edition.%20Featured%20blog%20posts%3A%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fazure-developer-community-blog%2Fazure-on-the-cheap-azure-storage-static-website-and-azure-front%2Fba-p%2F1297084%22%20target%3D%22_self%22%3EAzure%20on%20the%20Cheap%20-%20Azure%20Storage%20Static%20Website%20and%20Azure%20Front%20Door%3C%2FA%3E%20and%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fazure-developer-community-blog%2Fazure-event-grid-serverless-event-based-applications%2Fba-p%2F1233940%22%20target%3D%22_self%22%3EAzure%20Event%20Grid%20-%20Serverless%20event-based%20applications%3C%2FA%3E%3C%2FLI%3E%0A%3CLI%3E%3CSTRONG%3EEd%20Price%3C%2FSTRONG%3E%20-%20I%20was%20the%20coauthor%20on%20this%20third%20edition%20with%20Gaurav.%20I'll%20cheat%20a%20little%20and%20feature%20a%20blog%20post%20on%20another%20one%20of%20the%20blogs%20I%20helped%20found%2C%20Small%20Basic%20Blog%3A%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fsmall-basic-blog%2Fnew-updates-small-basic-website-2-2-amp-small-basic-online-1-0%2Fba-p%2F1174715%22%20target%3D%22_self%22%3ENEW%20UPDATES%3A%20Small%20Basic%20Website%202.2%20%26amp%3B%20Small%20Basic%20Online%201.0%3C%2FA%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%3E%26nbsp%3B%26nbsp%3B%3C%2FP%3E%0A%3CP%3ESo%2C%20while%20releasing%20the%20other%20versions%20of%20the%20book%2C%20there%20was%20a%20lot%20of%20feedback%2C%20where%20readers%20were%20asking%20Gaurav%20to%20demonstrate%20more%20of%20these%20development%20architectural%20patterns.%20Thus%20the%20%3CEM%3EHands-On%20Microservices%3C%2FEM%3E%20book%20is%20chock-full%20of%20them!%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EThis%20blog%20post%20(the%20one%20you're%20oh%20so%20reading)%20takes%20a%20natural%20transition%20after%20reading%20Andreas'%20summary%20of%20the%20book%2C%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fazure-developer-community-blog%2Fapi-patterns-and-technologies-win-an-ebook-part-3-hands-on%2Fba-p%2F1371152%22%20target%3D%22_self%22%3EAPI%20Patterns%20and%20Technologies%3C%2FA%3E.%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%26nbsp%3B%3C%2FP%3E%0A%3CP%3ELet's%20briefly%20take%20a%20taste%20test%20of%20two%20architectural%20scenarios...%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CFONT%20size%3D%225%22%3EAPI%20Gateway%3C%2FFONT%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EThe%20API%20Gateway%20is%20a%20backend%20service%20that%20we'll%20look%20at.%20It's%20used%20in%20many%20patterns%20(Gateway%20Routing%2C%20Aggregation%2C%20Offloading%2C%20etc.)%2C%20but%20we'll%20use%20it%20inside%20a%20pattern%20called%20the%20Backends%20for%20Frontends%20(BFF)%20pattern.%20I%20think%20we%20engineers%20secretly%20wanted%20to%20create%20a%20software%20acronym%20for%20BFF%20for%20years%2C%20simply%20so%20that%20we%20can%20call%20something%20our%20BFF%20(best%20friends%20forever)%20whilst%20snickering.%20BFF%20was%20popularized%20by%20%3CA%20href%3D%22https%3A%2F%2Fsamnewman.io%2Fpatterns%2Farchitectural%2Fbff%2F%22%20target%3D%22_self%22%20rel%3D%22nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3ESam%20Newman%3C%2FA%3E%26nbsp%3Band%20coined%20by%20Phil%20Calcado.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EBasically%2C%20you%20create%20different%2Fseparate%20API%20backend%20services%2C%20each%20coupled%20to%20its%20specific%20UI%20client%2C%20such%20as%20a%20mobile%20app%20or%20desktop%20app.%20This%20allows%20you%20to%20tune%20up%20your%20performance%20for%20the%20specific%20needs%20of%20your%20client%2C%20without%20affecting%20the%20experience%20of%20the%20other%20UI%20client.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ELet's%20look%20at%20that%20basic%20architecture%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22API%20Gateway.png%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F192261iBBE32C94E42AE850%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22API%20Gateway.png%22%20alt%3D%22API%20Gateway.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EOn%20the%20left%2C%20we%20have%20a%20browser%20UI%20that%20is%20coupled%20with%20the%20ASP.NET%20Web%20UI%2C%20and%20then%20down%20into%20our%20API%20Gateway.%20On%20the%20right%2C%20the%20mobile%20app%20is%20coupled%20together%20with%20a%20separate%20API%20Gateway.%20These%20API%20Gateways%20act%20as%20our%20BFFs.%20In%20the%20book%2C%20we%20explain%20how%20you%20would%20use%20Azure%20API%20Management%20as%20your%20API%20Gateway.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EAn%20API%20Gateway%20is%20simply%20a%20reverse%20proxy%20that's%20used%20by%20apps%20to%20talk%20to%20microservices.%20For%20example%2C%20it%20will%20accept%20API%20calls%20and%20route%20them%20to%20your%20backend%2Fdownstream%20services.%20The%20book%20further%20unpacks%20the%20architecture%20and%20gives%20you%20an%20example.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EKeep%20digging%20to%20find%20out%20if%20the%20BFF%20pattern%20and%20an%20API%20Gateway%20is%20the%20right%20solution%20for%20your%20architecture!%20You%20can%20browse%20a%20sample%20of%20the%20book%20on%20%3CA%20href%3D%22https%3A%2F%2Fwww.amazon.com%2Fgp%2Fproduct%2FB081V8QYL9%2Fref%3Ddbs_a_def_rwt_bibl_vppi_i0%22%20target%3D%22_self%22%20rel%3D%22nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3EAmazon%3C%2FA%3E.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ELet's%20move%20on%20for%20our%20second%20taste%20test!%20I%20guess%20this%20is%20the%20software%20equivalent%20of%20wine%20tasting...%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CFONT%20size%3D%225%22%3EThe%20Event-Driven%20Pattern%3C%2FFONT%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Event-Driven%20Pattern.png%22%20style%3D%22width%3A%20669px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F192262i52D71E7CEDA10EDA%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22Event-Driven%20Pattern.png%22%20alt%3D%22Event-Driven%20Pattern.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3EAs%20you%20can%20see%20in%20the%20above%20diagram%2C%20we%20publish%20an%20event%20whenever%20a%20service%20updates%20its%20data.%20We've%20got%20a%20retail%20scenario%20here.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ESo%20a%20Customer%20Service%20performs%20a%20check%20for%20the%20user.%20Let's%20say%20the%20Customer%20Service%20checks%20for%20the%20user's%20login%20details.%20It%20publishes%20an%20event%20that%20verifies%20the%20customer.%20Then%20the%20Checkout%20Service%20receives%20the%20event%2C%20processes%20the%20payment%2C%20and%20makes%20the%20order%20official.%20It%20publishes%20an%20event%20that's%20received%20by%20the%20Order%20Service%2C%20telling%20it%20that%20it's%20time%20to%20make%20the%20order.%20Order%20Service%20updates%20the%20quantity%20and%20sends%20Product%20Service%20an%20event%20to%20send%20out%20the%20product.%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EThe%20Event%20Manager%20kind%20of%20acts%20like%20the%20mob%20boss%2C%20taking%20the%20favors%20and%20exchanging%20out%20new%20favors.%20Okay%2C%20it's%20nothing%20like%20that.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EYou%20can%20read%20more%20about%20the%20Event-Driven%20pattern%20and%20the%20popular%20Event-Sourcing%20pattern%20in%20the%20book.%26nbsp%3BYou%20can%20browse%20a%20sample%20of%20the%20book%20on%20%3CA%20href%3D%22https%3A%2F%2Fwww.amazon.com%2Fgp%2Fproduct%2FB081V8QYL9%2Fref%3Ddbs_a_def_rwt_bibl_vppi_i0%22%20target%3D%22_self%22%20rel%3D%22nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3EAmazon%3C%2FA%3E.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EAnd%20so%20ends%20our%20Azure%20development%20taste%20test!%20You%20know%2C%20it's%20a%20taste%20test...%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DGQ4jPqU5r7k%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3Ehttps%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DGQ4jPqU5r7k%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EOh%2C%20by%20the%20way%2C%20did%20you%20know%20you%20can%20win%20the%20eBook%3F%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CUL%3E%0A%3CLI%3E%3CA%20href%3D%22https%3A%2F%2Fforms.office.com%2FPages%2FResponsePage.aspx%3Fid%3Dv4j5cvGGr0GRqy180BHbRxcqO9ZweDRPlDtvKt3zuzBUMzRIT0ZVSUU1TzBGU0MxSlRKUVA1TlZFSS4u%22%20target%3D%22_self%22%20rel%3D%22noopener%20noreferrer%20noopener%20noreferrer%20noopener%20noreferrer%22%3EHere%20is%20the%20link%20to%20the%20survey*%20again%3C%2FA%3E%3CSPAN%3E.%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EAnd%20you%20can%20read%20the%20rest%20of%20this%20series%20here%20(this%20is%20Part%204%20of%20the%20series)%3A%3C%2FP%3E%0A%3CUL%3E%0A%3CLI%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fazure-developer-community-blog%2Fwin-an-ebook-hands-on-microservices-with-c-8-and-net-core-3%2Fba-p%2F1323985%22%20target%3D%22_self%22%3EWIN%20AN%20EBOOK%20-%20Hands-On%20Microservices%20with%20C%23%208%20and%20.NET%20Core%203%3C%2FA%3E%26nbsp%3B-%20Part%201%3C%2FLI%3E%0A%3CLI%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fazure-developer-community-blog%2Fthe-flixone-bookstore-journey-win-an-ebook-part-2-hands-on%2Fba-p%2F1349543%22%20target%3D%22_self%22%3EThe%20FlixOne%20Bookstore%20Journey%3C%2FA%3E%26nbsp%3B-%20Part%202%3C%2FLI%3E%0A%3CLI%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fazure-developer-community-blog%2Fapi-patterns-and-technologies-win-an-ebook-part-3-hands-on%2Fba-p%2F1371152%22%20target%3D%22_self%22%3EAPI%20Patterns%20and%20Technologies%3C%2FA%3E%26nbsp%3B-%20Part%203%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ERemember%20to%20keep%20your%20distance%2C%20your%20hands%20clean%2C%20your%20feet%20on%20the%20ground%2C%20and%20your%20head%20in%20the%20Cloud%2C%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%20%26nbsp%3B-%20Ninja%20Ed%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CEM%3E*%20Please%20take%20a%20few%20minutes%20to%20complete%20our%20survey.%20Please%20ensure%20you%20are%20authorized%20to%20provide%20this%20information%20and%20not%20violating%20any%20company%20policies.%20Your%20responses%20will%20be%20kept%20confidential%20with%20restricted%20access.%20For%20more%20information%2C%20see%20the%20Microsoft%20Privacy%20Statement.%20If%20you%20have%20questions%20about%20this%20survey%2C%20please%20contact%20TechCommunity%40microsoft.com.%3C%2FEM%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-TEASER%20id%3D%22lingo-teaser-1394641%22%20slang%3D%22en-US%22%3E%3CP%3EPatterns%20are%20a%20series%20of%20architecture-like%20best%20practices%20for%20developers%20to%20solve%20common%20problems%20found%20in%20building%20cloud%20applications.%20By%20following%20a%20series%20of%20patterns%2C%20developers%20can%20build%20web%20apps%20that%20are%20secure%2C%20reliable%2C%20performant%2C%20and%20scalable.%3C%2FP%3E%3C%2FLINGO-TEASER%3E%3CLINGO-LABS%20id%3D%22lingo-labs-1394641%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3ESoftware%20Architecture%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E
Microsoft

Welcome to another dive into our new book, Hands-On Microservices with C# 8 and .NET Core 3. Here are our previous posts:

In this series of blog posts, Packt is giving away 10 eBooks for our new book, Hands-On Microservices with C# 8 and .NET Core 3:

 

  •   Click here to enter the contest.*

 

Why Patterns?

 

Patterns are a series of architecture-like best practices for developers to solve common problems found in building cloud applications. By following a series of patterns, developers can build web apps that are secure, reliable, performant, and scalable. 

 

Did you know that this is the third edition of the book? That's right! This is Gaurav's third round on the topic. Here are some of the Azure Developer Community team members who were involved with the books:

  

So, while releasing the other versions of the book, there was a lot of feedback, where readers were asking Gaurav to demonstrate more of these development architectural patterns. Thus the Hands-On Microservices book is chock-full of them!

 

This blog post (the one you're oh so reading) takes a natural transition after reading Andreas' summary of the book, API Patterns and Technologies

  

Let's briefly take a taste test of two architectural scenarios...

 

API Gateway

 

The API Gateway is a backend service that we'll look at. It's used in many patterns (Gateway Routing, Aggregation, Offloading, etc.), but we'll use it inside a pattern called the Backends for Frontends (BFF) pattern. I think we engineers secretly wanted to create a software acronym for BFF for years, simply so that we can call something our BFF (best friends forever) whilst snickering. BFF was popularized by Sam Newman and coined by Phil Calcado.

 

Basically, you create different/separate API backend services, each coupled to its specific UI client, such as a mobile app or desktop app. This allows you to tune up your performance for the specific needs of your client, without affecting the experience of the other UI client.

 

Let's look at that basic architecture:

 

API Gateway.png

 

On the left, we have a browser UI that is coupled with the ASP.NET Web UI, and then down into our API Gateway. On the right, the mobile app is coupled together with a separate API Gateway. These API Gateways act as our BFFs. In the book, we explain how you would use Azure API Management as your API Gateway.

 

An API Gateway is simply a reverse proxy that's used by apps to talk to microservices. For example, it will accept API calls and route them to your backend/downstream services. The book further unpacks the architecture and gives you an example.

 

Keep digging to find out if the BFF pattern and an API Gateway is the right solution for your architecture! You can browse a sample of the book on Amazon.

 

Let's move on for our second taste test! I guess this is the software equivalent of wine tasting...

 

The Event-Driven Pattern

 

Event-Driven Pattern.png

As you can see in the above diagram, we publish an event whenever a service updates its data. We've got a retail scenario here.

 

So a Customer Service performs a check for the user. Let's say the Customer Service checks for the user's login details. It publishes an event that verifies the customer. Then the Checkout Service receives the event, processes the payment, and makes the order official. It publishes an event that's received by the Order Service, telling it that it's time to make the order. Order Service updates the quantity and sends Product Service an event to send out the product. 

 

The Event Manager kind of acts like the mob boss, taking the favors and exchanging out new favors. Okay, it's nothing like that.

 

You can read more about the Event-Driven pattern and the popular Event-Sourcing pattern in the book. You can browse a sample of the book on Amazon.

 

And so ends our Azure development taste test! You know, it's a taste test...

 

https://www.youtube.com/watch?v=GQ4jPqU5r7k

 

Oh, by the way, did you know you can win the eBook?

 

 

And you can read the rest of this series here (this is Part 4 of the series):

 

Remember to keep your distance, your hands clean, your feet on the ground, and your head in the Cloud,

 

   - Ninja Ed

 

* Please take a few minutes to complete our survey. Please ensure you are authorized to provide this information and not violating any company policies. Your responses will be kept confidential with restricted access. For more information, see the Microsoft Privacy Statement. If you have questions about this survey, please contact TechCommunity@microsoft.com.