Speed and agility are the keys for any organization to succeed. Moving to cloud services is no more an option – It’s compulsory and a smart move. Cloud services bring speed and agility by enabling rapid pace in development, managing services, and deploy the application on a massive scale over a global network. Cloud Services provide lower cost, higher security, a global footprint, and increase productivity with powerful tools and frameworks. Microsoft Azure, the leading cloud platform provider, evolve in magnitude over the past few years and provides a wide range of services for almost every scenario you need for your business. Here we discuss 10 Azure Cloud Services that you should know.
Why should you care?
If you are working on Microsoft Platform, no matter what role you are performing – Development Engineer, Engineer in Test, Engineering Consultant, Program Manager, or Architect – understanding of fundamentals of cloud computing and usages are keys. I have interviewed, interacted, and mentored several engineers who are excellent web development, mobile app development, and working in the complicated middle layer developments. However, when it comes to backend architecture and deployment, I see an extended pause always.
If you are writing code for the API Layers, you must know how they are getting deployed and scaled. If you are into front end development, you must have a fundamental understanding of how your backend is getting implemented— “some other team is taking care of it”; era won’t work anymore.
If you are a solution architect, your responsibility is not only to deliver the value through the functional requirements of the solution but also to ensure the design of the solution is scalable, resilient, cost-effective, efficient, and secure. Azure helps in the design and build secure, scalable, performant solutions rapidly and efficiently. If you haven’t started the journey, it’s your time.
How are we going to learn about it?
We will take this journey using a series of posts. I am going to take a straightforward approach to explain each of these services, the critical concepts to learns, and real uses cases using reference architecture. Throughout the post, you will also understand how to integrate all these services together and design a cloud solution for scale.
Read Part II: 10 Azure services that every .NET Developers, Consultant, and Architects should know and learn it well – Part II
First things first – Let’s make it simple.
There are over 600+ services that fall under the Azure Platform that can cover every scenario that you might need for your business or organization.
But, the overall numbers could be overwhelming if you want to get started. In this article, I am going to focus very specifically on ten services that you can learn one by one. Eventually, using all of them, you should be able to build a secure, scalable, performant solution with high availability.
Considering as a development engineering role, in this article, let’s talk about more on Platform as a Service (PaaS), and that brings an essential fundamental topic on the segregation of Cloud Services.
Read Part II: 10 Azure services that every .NET Developers, Consultant, and Architects should know and learn it well – Part II
Back to Basic – The Cloud Service Model
There are three different models of cloud service based on the responsibility and control over the platform, infrastructure, and application.
- Infrastructure as a Service (IaaS)
- Platform as a Service (PaaS)
- Software as a Service (SaaS)
Each of these models has its advantages and usages. It is also necessary to understand the differences among all of them so that you can choose the best as per your business need.
Of course, On-Premises is another mode that we still use and has a difference of degree between a full on-premises solution and SaaS Solution.
On-Premises – You manage end to end, and it has nothing to do with cloud platform; unless we make it as a hybrid architecture, which is something we are not going to cover at this point.
Infrastructure as a Service (IaaS) – Cloud Platform provides all the infrastructure, but you need to be responsible for your application, data, framework, and operating system. One of the common examples of Azure IaaS service would be Azure VM’s, where Microsoft Manages Backend infrastructure but the application, operating system versions, framework, etc. you all need to responsible for.
In the case of Platform as a Service (PaaS), you need to responsible for your application and data; rest the service provider controls everything. These services are the key for the developer to start with. When we talk about Microsoft Azure, App Service could be the standard Azure PaaS Services that developers use for deploying the solution.
Software as a Service (SaaS), is nothing but using a hosted solution such as Microsoft Office 0365
To build a highly scalable, enterprise–grade, performant, and sophisticated integrated solution, all these three cloud model comes into the picture together as well. Given the object of this article, let us keep our focus on Platform as a Service.
Our Focus – 10 Azure Services
Let us focus on Platform Services, and there are several PaaS services which can help developers in different aspect of scenarios. However, I would recommend the following ten services as a starting point to get you moving a long way. Here are those lists of services.
- App Services Web Apps
- App Services API Apps
- Azure Storage
- Application Insights
- Azure DevOps
- Azure Logic App
- Azure Function App
- Azure Key Vault
- Azure Cosmos DB
- Azure Redis Cache
Again, if you are new, no matter if it 600 Services, or only 10 services, it could be overwhelming. I am trying to be simplifying the things so that you can understand the usages of services along with how it implies the fundamental principal of Azure.
There are several other Azure Services such as Azure Active Directory, VNet, Site Recover, Azure Backup, StorSimple, Front Door, which also plays critical roles for scalable and resilient solution design. Similarly, if you are from an IoT background, several services like IoT Hubs, Analytics plays vital roles.
However, building any custom LOB application above mentioned ten services would give you a perfect start, and it will be a long way to go.
Key Principles of Great Azure Solution
We need to design a solution in ways that are scalable, resilient, efficient, secure, and can be managed easily. When we create any solution on Azure following are the fundamental principle we always focus on.
- Availability
- Performance
- Security
- Scalability
- Efficiency
- Monitoring and Operation
If we would like to build a solution by keeping all the above principles, the services listed above can give you a kick start. Again, those services may not satisfy all your business needs; but at least you can have a maximum of your things covers, especially for any LOB Applications.
So, let’ start looking at each of them and learn how to use them and make them work together.
App Services Web Apps
Azure App Services are the most popular and widely used fully managed Platform as a Service (PaaS) offering for the developers. You can quickly create, build, deploy and manage enterprise-grade web application
Azure App Services has high scalability, security, and covers all the compliance requirements along with supporting high performance by Auto Scaling of Services.
Azure Web App is essential for hosting a web application, so when you want to host your web application, which is running on your local VM’s or somewhere, Web Apps is your first preference.
Reference Architecture:
Here is the reference architecture of Azure Web Apps, when the site is hosted in an App Service, it is running under an App Service Plan. When the App Service URL is exposed to outside, your hosted site can be accessible over the internet.
Key things to learn:
When you start dealing with App Services Web Apps, along with Create App Services and Hosting your web apps on Azure, the following are the key topics you should learn.
- App Service Plan
- Deployment Slots
- Manually Slot Swap
- Auto Swap
- Scale-up and Scale-out
- Manual Scale and Custom Autoscale
DIY – Do it yourself
- Create one App Services Web Apps
- Publish one ASP.NET Web Site to the Web Apps from Visual Studio
- Configure the Deployment Slots for Staging Environments
- Publish App Changes to the Slots and Do a Manual Swap
- Configure Manual Scale out based on specific metrics
- Understand the Configuration for Application
- Review the App Services Request and Response
Scale App Services
If you don’t have Azure subscription, you can create your free account from here
Read more about Azure Web Apps from here.
App Service API Apps
App Service API App offers secure and flexible development, deployment, managing, and scaling of REST API Application. When you think about highly scalable, available, and accessible to deployment API solution, API Apps could be your solution.
Azure App Services has high scalability, security and covers all the compliance requirements along with a meet rigorous performance by Auto Scaling of Services as it works in the same underlying architecture of App Service Plan.
Reference Architecture:
Here is the reference architecture of basic Azure App Services API Apps working together with Web App; depends on size, scale, and usages, you need to choose whether you want to run both the web application and your website under the same App Service Plan or a different AppService Plan. To simplify this and map with your basic understanding of application development layers; Web APPs host the web application and API Apps contains the API Layer, that deals with Authentication, Data, and Integration.
Also, you can extend this same architecture to different applications. You may have another Mobile Experiences layer and connect with the same API Layer hosted on Azure.
Key things to learn:
If you have already covered the Web Apps and App Service Plan discussed in the previous section, you are right here too. The fundamental concept for Scale-up, scale-out, deployment slots, configuration, and others will remain the same.
Do it yourself
- Design your Web Application with UI layer and API Layer separately.
- Publish Web Site to the Web Apps and API layer code to API Apps
- Configure the Deployment Slots for Staging Environments for Web Apps and API Apps
- Publish App Changes to the Slots and Do a Manual Swap
- Configure Manual Scale out based on specific metrics
- Understand the Configuration for Application
- Review the App Services Request and Response for both API Layer and Web Application Layer.
Azure Storage
Now you are familiar with the first two building blocks for your scalable solution – deploying the front-end application and backend API layer. Let’s focus on the third building blocks of your application that is storage.
Microsoft Azure provides a Massively scalable, highly available, and secured cloud storage with end to end back up and recovery solutions for any data.
When your data is put on Azure Storage, you can start easily access them with the APIs. Microsoft Azure Storage offers following storage mechanism
- Blob Storage
- File Storage
- Queue Storage
- Table Storage
Blob storage services stores unstructured data as a container, which could include any type of text and binary such as documents, images, etc. Azure Table Storage services used to store the structured and ideal for non-relational data. Azure Queue storage services used for storing a sequence of messages and process them using the message queue mechanism. File Storage mostly used to deal with large size of files and mapping of data storage.
Azure Storage account provides high availability and durability to all storage by replicating the information stored. You can choose the type of replication during the creation of the Azure Storage Account. Depending on where this replica is stored, you can choose different replication strategies such as LRS, ZRS, GRS, and RA-GRS. However, if you want to change the replication strategies, you can do it once the storage account created as well. This enables switching between different strategies based on your needs.
Reference Architecture
Here I have extended the reference architecture diagram from App Services. Web App Services runs your web front end, and API App Service runs the back-end API Code, which now interacts with several storage accounts, Queue, Table, and Blobs, to store respective types of data. The data stored in the Queue can be processed further by connecting with other services.
Key things to learn:
- Access Tier – Hot and Cool Tier
- Storage Explorer
- SAS Key Storage Security
- Geo-Replication
- Storage APIs / SDK to connect with your program
Do it yourself
- Create one Azure Storage Account
- From the Web Application create a submission form that sends details of some records along with some attachment
- API layer needs to save the details of the record in the table storage
- API Layers needs to save the attachment in Blob
- API layer should submit a new entry with email id for the records into the Storage Queue
- Configure SAS Keys to access the storage accounts
Azure Storage Tips and Tricks from Daily .NET Tips
- Use Azure Storage from Visual Studio Code
- How to update Access Tier in Azure Storage Blob Level?
- Recover Azure Blob Storage Data by enabling Soft Delete
Azure Application Insights
Azure Application Insights is a fully managed Azure Service that helps to monitor applications’ health in real-time. It allows us to track application availability, performance, user’s session. Application Insights helps us to track applications’ health in real-time. You can track your application availability, performance issues, user’s session, and diagnose crashes faster than ever. It provides a real-time dashboard for your app to monitor your application. It is fast, straightforward to configure and provide compelling insights for your application.
Reference Architecture
Application Insight services configured with both Web Apps and API Apps for collecting the application telemetry.
Key things to learn
- Create application insights and configure it
- Analyze Application Insights logs
- Adding Custom Telemetry
Do it yourself
- Configure Application Insights for App Services
- Add custom telemetry for each event when successful records submitted from the API layer to each of the storage containers
I have published more than 20+ Post of Application Insights and Telemetry. You can read all posts from here.
Azure DevOps
Azure DevOps has everything you need to build your software product from envisioning to put in into end-users’ hands. The Azure-hosted DevOps services can enable your end to end product delivery with excellent traceability across the teams. Azure DevOps provides you the ability to plan your project using agile tools, manage your source code using several code repositories, automate your build and release using highly scalable build and release pipeline, manage your test plan and automate your test case execution. All in all, an end to end traceability dashboard for Business users, developers, and other project team members.
Reference Architecture
While Azure DevOps has 5 keys functions – Board, Repos, Pipeline, Test Plan, and Artifacts. For any developer, CI & CD are key.
Overall the process of Continuous Integration (CI) & Continuous Delivery (CD) capabilities allows us to establish an end-to-end delivery platform that enables rapid development & deployment and Operations (DevOps) of software system repeatedly with minimal manual work. Other process helps in traceability and Continuous Feedback & Monitoring that enable the sustainability of the solution.
The above diagrams show a typical cycle for Continuous Integration (CI) & Continuous Delivery (CD) using Azure DevOps. With different tools, where the developer writes code in Visual Studio, or Visual Studio Code or any other IDE, push it into source code repository such as TFVC, Subversion, or Git, Azure DevOps Pipeline trigger the builds and deploy to Azure App services.
Read more about Azure DevOps from my previous blogs :
- Azure DevOps in the Era of Digital Transformation
- Azure DevOps and MultiCloud – Deploying .NET Core Apps in AWS and Azure using Azure DevOps
Do It Yourself
- setup end to end automated build and release pipelines for your web application and API layer created during this course of exercise
- Have the release pipeline different for dev and test environment with configurable URL for both API layers and Storage services.
Read More: Azure DevOps Services
Microsoft Azure Web sites have great documentation, and there are several video tutorials that you can use to boost up your learning.
Summary
In this post, I have covered 5 out of the selected 10 Azure Services. Using these 5 services, you can deploy your front end UI layer and API Layer in the Azure cloud at a scale, and storage services to store records which can be geo-replicated. You have also learned about Application Insights which an essential services that captured the telemetry of application, and Azure DevOps to manage your projects along with building end to end automated build and release. So, if you can learn this well, that will give a lot of confidence to move forward. In the next post, we will look at the rest 5 services and will learn how we can be integrated them end to end.
About the Author:
Abhijit Jana is a Technology Leader, Technical Strategist, Solution Architect, Development Consultant, and a Trusted Technology Advisor with over thirteen years of experience in the IT industry with expertise in Development, Architecting, Engineering, Consulting, and Services Delivery. He is a former Microsoft MVP, Author of “Kinect for Windows SDK Programming Guide” and “HoloLens BluePrints” books and founder of The Daily .NET Tips. To know more about Abhijit, visit “https://abhijitjana.net.”
Reference:
Jana, A. (2020). 10 Azure Cloud services that every Developers, Consultant, and Architects should Know and Learn it well. Available at: https://abhijitjana.net/2020/04/18/10-azure-cloud-services-that-every-developers-consultant-and-architects-should-know-and-learn-it-well/ [Accessed: 18th May 2020].
Check out more great Azure content here