Jeff Delaney from Fireship.io recently made a video describing the 50+ most popular cloud services offered by Amazon Web Services with common use cases. Inspired by that video, here are the top 30 Microsoft Azure cloud services.
Microsoft Azure started off in 2010 as Windows Azure with just three services. Today, Azure offers over 200 products across compute, storage, databases, networking, artificial intelligence and more, enabling developers to create robust applications without worrying about infrastructure management. Let's explore some of these products and services.
Cloud computing is essentially leasing out computational resources that may be too expensive or cumbersome to manage on premises, from a wide distribution network of managed data centers. Virtual Machines spin up Windows and Linux virtual operating systems that share physical resources, but are completely self contained environments that users can remotely access to deploy large scale workloads.
If you don't want to worry about the operating system and want to completely hand over management of the hosting environment to Azure, simply deploy an application on App Service. This service allows you to focus on your code; deploy a .NET, Python, Java, Ruby, PHP or NodeJS application in a few clicks and have it running on the cloud in no time (giving a higher level of abstraction, albeit lesser control, than VMs).
Serverless computing is all the rage these days, and along with AWS and Google, Azure has thrown its hat in the ring with Azure Functions. While technically not server-less, Functions abstracts away interaction with the actual web app server and lets users deploy a piece of programming logic, wrapped in a function and triggered by an event such as a database entry or a specific time of day. Users only write the core logic rather than an entire application, and their function only runs when invoked by the chosen trigger.
If you're deploying applications to the cloud, you'll need persistent data storage. Azure Blob Storage allows scalable storage for objects and files and provides an SDK to easily access them. Blob storage is a great trigger for Azure Functions, where uploading a file can automatically run your custom logic in the cloud (for example, if you wanted to run OCR on a file as soon as it's uploaded to a storage container). However, if you wanted to mount a filesystem as a native share on a virtual machine, use Azure Files instead. Azure Archive Storage allows businesses to store terabytes of archived data that will rarely be accessed, at the fraction of the cost of regular file storage. This is great for backups, medical history, audit and compliance data, or for migrating decades of magnetic tape storage to the cloud. Finally, use Azure Data Lake Storage to store both structured and unstructured data as-is and run high performance analytics workloads at scale, with support for the most common analytics frameworks.
Developers need databases to store structured data, like application state and user data. Azure offers a range of managed SQL and NoSQL database solutions. Azure SQL is a suite of services that offer a cloud based relational database experience for different use cases. SQL Server on Azure Virtual Machines creates an entire operating system environment running the popular Microsoft Relational Database Management System, allowing seamless migration of on premises SQL workloads to the cloud. Azure SQL Database abstracts away resource management and scalability to let developers focus on building applications. Finally, Azure SQL Edge is an architecture agnostic, containerized database that runs on IoT and edge devices with native support for streaming and time series data, so developers can perform real-time analytics on a myriad of data captured by sensors.
Moving away from relational databases, Azure Cosmos DB is a schema agnostic, globally distributed NoSQL database. Cosmos abstracts away its internal data model and provides APIs for interacting with data as if it were a MongoDB or Cassandra database, making it truly multi-model.
If you're looking for a low latency, in memory database, Azure Cache for Redis is a blazing fast database for applications that have millions of users generating extremely high traffic, like a social media.
When you develop an application, you want to be able to run it in any environment. Containers offer the ability to ship the app within an image of its environment configurations, allowing faster and more flexible deployment than on VMs. Container Instances provides running instances of a virtualized operating system running your application and managing environment variables, configuration and networking itself. The aforementioned configurations, networking, operating system and other features of the container are described in a blueprint called an image, and these images are usually stored on online repositories, like Docker Hub. Container Registry is Azure’s private repository for Docker and Open Container Initiative images. Managing containers can be tricky, especially if you’ve deployed a number of microservices, each running as a stand alone container. Kubernetes is an open source container orchestration tool that manages container scaling, state management, health and deployment. Azure Kubernetes Service is a fully managed, serverless Kubernetes experience on the cloud that leverages Azure’s enterprise grade security and governance.
Developing AI applications is challenging. Training sophisticated machine learning models requires incredibly large, mostly labelled datasets that are difficult to acquire, and high performance computing that uses powerful and expensive graphics processing units. Researchers at Azure have developed ML models for common AI use cases using public and proprietary datasets and exposed APIs for developers to transform their applications and processes with AI, without training models from scratch.
Azure Cognitive Services is a family of AI services across vision, speech, language and decision support. Computer Vision labels everyday objects and links them to 10,000 ontology concepts, reads signs and text using optical character recognition and analyzes spatial movement in images and videos. If your image analysis tasks are specific to an industry or domain, such as medical image analysis or using vision in optimizing manufacturing, use Custom Vision. This service provides a user-friendly interface to upload your own images, label them and train custom models with high performance computing in the cloud. Finally, Face API provides facial verification based on two images, facial recognition of your own organization’s employees by integrating your own private repository and detection of various features on faces, such as emotions, expressions, facial hair and even masks.
Cognitive services also offer a range of products for natural language processing. Language Understanding or LUIS can extract key user goals and intentions, as well as entities, from natural language input. This can be combined with QnA Maker, a conversational agent that can answer questions based on FAQs and similar knowledge bases, to build simple chatbots. Translator uses neural machine translation to translate text and documents (with ability to preserve original document format) in 90 supported languages. Text Analytics can extract sentiments, key phrases, entities, entity links and input language from unstructured text. This also includes the Text Analytics for Health preview, which is a medical domain specific Named Entity Recognition service that can recognize biomedical entities, link them to medical ontology concepts such as UMLS, extract entity relations such as the dosage of a medication entity and recognize negation relating to an entity.
Besides building informational chatbots using QnA Maker, Azure also provides a larger Bot Service for developing more sophisticated chatbots. Transactional chatbots perform operations such as accessing and modifying internal IT documents and databases and dynamic and context aware chatbots can be used as virtual assistants. Bot Framework is an SDK that lets developers create these kinds of chatbots using their programming language of choice. Bot Framework Composer improves this experience by providing a visual tool to build conversational flows using pre-built templates and a number of triggers and actions that you can drag and drop onto a visual canvas.
In the big data space, Azure offers Azure Databricks. This is an Apache Spark big data analytics and machine learning service over a Distributed File System. The distributed cluster of nodes running analytics and AI operations in parallel allow for fast processing of large volumes of data and integration with popular machine learning libraries such as PyTorch unleash endless possibilities for custom ML.
Here are a few services that make the overall Azure experience so amazing. Every Azure resource automatically generates metrics and logs. Azure Monitor collects, analyzes and acts on this data to ensure availability, maximize performance and proactively detect problems. Azure Active Directory is Azure’s cloud Identity Access Management system. Azure AD provides single sign on for your apps and governs access by ensuring the right people have access to the right resources. Developing applications involves calls to numerous APIs and therefore secret and key management can get cumbersome. Key Vault simplifies this process by providing a single location to store all secrets and an SDK to easily access them, ensuring data protection and compliance. The advantage of deploying applications on the cloud as opposed to on premises, is the ability to autoscale on demand and have your data always available. Azure Load Balancer evenly distributes incoming network traffic to multiple instances of your application, while Content Delivery Network caches your resources in multiple geographies intelligently, to reduce load times and save bandwidth.
Last but not least, you can create, deploy and manage all your Azure resources using Azure Cloud Shell. Cloud Shell provides a secure Bash or PowerShell session to administer Azure resources using Azure command line tools and even provides support for common programming languages and persistent storage with an attached storage account.
With a host of user friendly, secure and highly available services, the Azure cloud is a great place to focus on your application and leave the rest to Microsoft.