In our previous article(https://techno-soft.com/hapi-and-fhir-server-for-azure.html), we compared HAPI FHIR Server to Azure’s FHIR Server. In this article, we go through the Azure basic Technology offering for readers who are interested in the Azure’s FHIR Server and want to explore Azure further.
Scope and Target Audience
The Azure platform is quite diverse and overwhelming in nature, so here we are limiting our scope to Web Development in particular. The article is more suitable for developers having experience in the .NET framework and Visual Studio.
Azure App Services & Resource Groups
Azure App Services is platform-as-a-service (PaaS) that allows developers to build & publish secure, highly scalable and mission-critical web applications.
Azure provides a variety of resources for different purposes. An Azure Resource could be a Web App (App Services), SQL Database, Redis Cache, DocumentDB, Storage Account or Azure SignalR Service, etc. The logical container for grouping these resources to achieve one objective is called Resource Group.
To get things started, first, we need to create a free account on https://azure.microsoft.com. After that, we need to select an App Service Plan from a variety of plans provided by Azure. More details can be found at https://azure.microsoft.com/en-us/pricing/details/app-service/windows/
An App Service Plan basically specifies the location, size, and feature of the web server farm that host application.
Now create a new Azure resource for web application from the Azure portal. Different templates are readily available, e.g. “Web App + SQL” resource from Microsoft lets you create and deploy websites.
After creating the web app resource, configure it by providing domain information and associating an App Service Plan. Connection string and app settings can be set up via the Configuration tab within the web app resource. This whole process creates a placeholder application, and a publish profile can be generated from here. Publish profile is used from within the Visual Studio to publish the actual web application.
Azure App Service also supports CI/CD along with build pipelines. This is relevant to engineers with Azure DevOps experience.
Valued Azure Resources for Web Development
Besides Azure App Services, let’s talk about some other prominent Azure resources.
1. Azure SQL Database
Azure SQL Database is the intelligent, scalable and cloud-based database service (aka Database-as-a-Service) that provides a comprehensive SQL Server engine. The service ensures high availability, scalability, data security, and performance by leveraging machine learning.
While Azure SQL Database provides broad SQL Server compatibility and is optimized for SQL Server migrations, OLTP and multi-tenant SaaS applications, community-based Azure Database for PostgreSQL, MySQL and MariaDB are also available options for enterprise-ready, secure and ideal options for low-latency scenarios such as online gaming.
For NoSQL databases, Azure Cosmos DB is another option to leverage from.
2. Azure Storage Account
Azure storage account provides highly secure cloud storage at massive scale. Think about an application that needs to store small or large media files or of any type. Azure storage fulfills your requirements with ease. With a free account, one can avail up to 8TB of storage for a month.
There are five storage account types; each supports different features.
- General-purpose v2: For Blobs, files, queues, and tables. Recommended for most cases
- General-purpose v1: Legacy account type for blobs, files, queues & tables. Use v2 when possible
- Block blob storage: Blob-only with premium performance. Recommend for high transaction rates scenarios
- FileStorage storage account: Files-only with the finest performance
- Blob storage: Blob-only. Use GP v2 instead when possible
Data in storage accounts is always encrypted on the service side. Storage account gives a unique namespace in Azure for your data for example for Blob storage: http://mystorageaccount.blob.core.windows.net/mycontainer/myblob
3. Azure SignalR Service
Real-Time communication takes web application to the next level, but it wasn’t an easy task before the inception of SignalR and Azure SignalR Service. With Azure SignalR, adding real-time communication is as simple as provisioning a service. Developers don’t need to worry about hosting, scalability, load balancing, and such details.
Using Azure SignalR, we can develop a cross-platform chat application, a live web dashboard, an online election system, a custom push notification system and much more.
4. Azure Redis Cache
Many software applications leverage cache for the performance boost. That in mind, Azure provides a fully managed Redis Cache as a service. It is based on popular open-source Redis Cache that is a distributed, in-memory cache service. Azure’s service provides a great level of performance, data reliability, flexible scaling, and enterprise-grade security compared to previous cache offerings in a way that is easy to use.
Web developers can build Data Caches to scale read/write throughput of data tier or scale a web-app by quickly saving/retrieving web session data or cookies etc.
5. Application Insights
A developer service that collects telemetry data from a web application to monitor availability, performance, exceptions, usage trends and much more, nearly in real-time for apps hosted on cloud or on-premises. When the web app is created from VS or Azure portal, this resource is automatically added to the resource group.
Monitoring and Diagnostics
Software never wears off with time but they do have bugs, and availability issues especially when it’s on the cloud. To identify such issues, Azure App Services, Visual Studio, and Azure platform collectively provide a rich set of tools and services to monitor and troubleshoot web applications.
We at Technosoft, specifically like Azure portal for these types of tasks Azures portal lets you configure both the Application and Site diagnostics logs. Logs information can be stored on web-app file-system, Azure Storage, and can be retrieved using FTP or Azure Server Explorer. Log Streaming can be enabled to view logs in nearly real-time via Visual Studio. Besides, remote debugging can be enabled to interactively debug web app while it’s running.
Below is a high-level diagram of the Azure Monitoring service. On the left, we have sources of data that populate data-stores in the middle and on the right are different the functions that Azure Monitor performs with this collected data.