Reader small image

You're reading from  The Azure Cloud Native Architecture Mapbook

Product typeBook
Published inFeb 2021
Reading LevelBeginner
PublisherPackt
ISBN-139781800562325
Edition1st Edition
Languages
Tools
Concepts
Right arrow
Authors (2):
Stéphane Eyskens
Stéphane Eyskens
author image
Stéphane Eyskens

Stéphane Eyskens has a developer background and became a solution architect about a decade ago. As a cloud subject matter expert, he contributed to many digital transformation programs, helping organizations get better results out of their cloud investments. As an MVP, he is an active contributor to the Microsoft Tech Community and has worked on multiple open source projects available on GitHub. Stéphane is also a Pluralsight assessment author as well as the author of multiple books and online recordings.
Read more about Stéphane Eyskens

Ed Price
Ed Price
author image
Ed Price

Ed Price is a Senior Program Manager in Engineering at Microsoft, with an MBA in technology management. He leads Microsoft's efforts to publish Reference Architectures on the Azure Architecture Center. Previously, he drove datacenter deployment and customer feedback, and he ran Microsoft's customer feedback programs for Azure development, Service Fabric, IoT, Functions, and Visual Studio. He was also a technical writer at Microsoft for 6 years and helped lead TechNet Wiki. He is the co-author of five books, including Learn to Program with Small Basic and ASP.NET Core 5 for Beginners from Packt.
Read more about Ed Price

View More author details
Right arrow

Chapter 5: Application Architecture

In the previous chapters, we thoroughly covered infrastructure. Now, the time has come to discuss your application-related concerns. After all, the purpose of an infrastructure is to host one or more applications. We will only consider Communication as a Service (CaaS), Platform as a Service (PaaS), and Function as a Service (FaaS), which are cloud and cloud-native approaches, in line with modern development techniques. We will not delve into Infrastructure as a Service (IaaS), since it has zero impact on the way applications should be architected, compared to on-premises data centers.

In this chapter, you will learn about the difference between traditional IT practices and cloud-native practices. Additionally, you will learn about the distributed nature of both cloud and cloud-native solutions. Modern solutions are less code-centric because many typical application duties can be offloaded to off-the-shelf services. With serverless, you can even...

Technical requirements

If you want to practice the explanations provided in this chapter, you will require the following:

  • An Azure subscription: To create your free Azure account, follow the steps explained at https://azure.microsoft.com/en-us/free/.
  • Visual Studio 2019: You will need this to open the solution provided on GitHub.
  • Dapr (Distributed Application Runtime) CLI: To install the Dapr CLI, follow the steps explained at https://github.com/dapr/cli.
  • Docker: To install Docker Engine, follow the steps explained at https://docs.docker.com/get-docker/.
  • Microsoft Visio: You will need this to open the diagrams, although they are also provided as PNG files.
  • Fiddler or Postman: Use your preferred tool. We use Fiddler in this book, but feel free to use any other HTTP tool you want.

All of the code samples and diagrams are available at https://github.com/PacktPublishing/The-Azure-Cloud-Native-Architecture-Mapbook/tree/master/Chapter05/.

The CiA videos...

Understanding cloud and cloud-native development

Before going further into the substance of the map, let's introduce the notion of cloud and cloud-native development, which you might not be familiar with. The cloud is a particular ecosystem, and we should ideally leverage its unique capabilities to minimize frictions and frustrations. The best way to achieve this goal is to develop cloud and cloud-native applications. Developing cloud and cloud-native solutions also transforms the way we design applications and the type of frameworks we might use or build, and that is what we are going to explore in this section.

One of the biggest challenges when starting to work with cloud and cloud-native approaches is the fact that applications are distributed. In traditional IT, we still have many monoliths, or in the best case, we work with Service-Oriented Architecture (SOA). SOA has proven its value and is certainly still future proof; however, as always, the IT world has evolved, and...

Exploring the Azure Application Architecture Map

In this section, we are going to explore the Azure Application Architecture Map. The purpose of this map is to help you find relevant services, with regard to cloud and cloud-native design patterns. It also browses the different data options for BASE and ACID database engines because data is part of every application.

In Chapter 1, Getting Started as an Azure Architect, we saw that the application architect mainly focuses on the programming languages, Software Development Kit (SDKs), and design patterns in general. As a metaphor, we could say that application architects remain at layer 7 of the Open Systems Interconnection (OSI) model. Therefore, we will review these patterns, as well as some of the useful libraries you can use in your applications. To remain on the Microsoft ecosystem, we will mostly list .NET Core libraries, although most of them are also available in other programming languages:

Figure 5.3 – The Azure Application Architecture Map

Figure...

Exploring EDAs

In this section, we will dive into the EDA world in a more concrete way. Our objective is to make you familiar with some of the Azure services that help build EDA solutions. By the end of this section, you will understand the basics of Azure Service Bus, Azure Event Hub, and real-time processing with Stream Analytics.

In Chapter 2, Solution Architecture, we described and explained the EDA map, as shown in Figure 5.21:

Figure 5.21 – The EDA map

Figure 5.21 – The EDA map

Instead of re-explaining what we have already discussed, let's add some messaging and event capabilities to the application that we developed in Chapter 2, Solution Architecture, in the Solution architecture use case section. As a reminder, the initial scenario was the following:

Contoso needs a configurable workflow tool that allows you to orchestrate multiple resource-intensive tasks. Each task must launch large datasets to perform in-memory calculations. For some reason, the datasets...

Developing microservices

Our objective in this section is to give you a glimpse of developing cloud-native applications. Microservices are 100% cloud-native par excellence, hence the reason why we use them to illustrate our purpose. We will not cover the entire spectrum of microservices, because the topic deserves an entire book on its own. We assume that you know already what microservices are, and we will focus on some technical bits only.

In Chapter 3, Infrastructure Design, we reviewed the different infrastructure options at our disposal to host microservices. Our conclusion was that, at the time of writing, in Azure, AKS is the most suitable choice. We stressed the fact that service meshes play a great role in terms of the observability, security, deployment, and resilience of a microservices architecture. We also highlighted some AKS-killing features, such as self-healing, cluster, and pod auto-scaling, to name a few. All of these infrastructure features help to build resilient...

Summary

In this chapter, we reviewed how ecosystems prevail in modern applications. First, we took a detour to explain cloud and cloud-native development. We then explored our Azure Application Architecture Map. We zoomed in on the data scenarios and the cloud design patterns. Next, we explored EDAs and messaging architectures. Finally, we showed you what it looks like to develop a cloud application with microservices (and you might have just learned a lot about Dapr).

The time of developers crafting everything in code is over. Understanding and relying on ecosystems is the best path to build resilient and scalable solutions in a timely fashion. Professional cloud and cloud-native application architects must step back from the code and look at the broader picture. The application code should only be considered as a placeholder for business logic.

The non-functional requirements should never be handled in code anymore. The Azure and AKS ecosystems must be leveraged to their maximum...

lock icon
The rest of the chapter is locked
You have been reading a chapter from
The Azure Cloud Native Architecture Mapbook
Published in: Feb 2021Publisher: PacktISBN-13: 9781800562325
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
undefined
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at $15.99/month. Cancel anytime

Authors (2)

author image
Stéphane Eyskens

Stéphane Eyskens has a developer background and became a solution architect about a decade ago. As a cloud subject matter expert, he contributed to many digital transformation programs, helping organizations get better results out of their cloud investments. As an MVP, he is an active contributor to the Microsoft Tech Community and has worked on multiple open source projects available on GitHub. Stéphane is also a Pluralsight assessment author as well as the author of multiple books and online recordings.
Read more about Stéphane Eyskens

author image
Ed Price

Ed Price is a Senior Program Manager in Engineering at Microsoft, with an MBA in technology management. He leads Microsoft's efforts to publish Reference Architectures on the Azure Architecture Center. Previously, he drove datacenter deployment and customer feedback, and he ran Microsoft's customer feedback programs for Azure development, Service Fabric, IoT, Functions, and Visual Studio. He was also a technical writer at Microsoft for 6 years and helped lead TechNet Wiki. He is the co-author of five books, including Learn to Program with Small Basic and ASP.NET Core 5 for Beginners from Packt.
Read more about Ed Price