However, before describing announcements or specific technology updates I noted, my number one highpoint of the week was the session that Vishwas Lele (AIS CTO and MS Azure MVP) gave on Tuesday: “Architecting Cloud-Native Apps with AKS and Cosmos DB.” This year was the first year that Microsoft allowed a few select partners to lead sessions at BUILD, so I consider his inclusion recognition of the great work he is doing to advance cloud-native technologies on Azure. His session was packed, and attendees got their money’s worth of content related to AKS, Cosmos DB, and strategies for using cloud-native conventions for the consumption of PaaS services to build resilient, globally scalable applications.
Kubernetes and AKS
Most of the discussion about compute on Azure included at least one point related to AKS (Azure Kubernetes Service). AKS was everywhere, and one consistent theme seems to be AKS as a significant portion of the Azure “compute” offering in the future. So, there were many exciting K8s-related announcements and demonstrations which I had not previously heard, a few that stood out to me:
- Windows server containers in AKS is private preview: With the update in Kubernetes 1.1.4 to officially support Windows containers, this was a natural follow-on. It seems that the AKS engineering team is ready to go in a more widely available preview, expect updates soon.
- General Availability of AKS Virtual Nodes: Rapid provisioning of Kubernetes pods using “serverless” container infrastructure (Azure Container Instances). These pods are included in your Kubernetes cluster and can be billed very granularly (per second of execution).
- Kubernetes-Based Event-Driven Autoscaling (KEDA) was announced: Allows you to auto-scale deployments in Kubernetes clusters in response to events like an event stream (EventHub, Kafka, etc.), Azure Monitor Events, or other event providers.
- Azure Policy integration with AKS is in public preview: Allows you to set policies inside AKS clusters on pods, namespaces, and ingress.
- AKS as an option for the underlying compute layer for Azure Machine Learning Service: This announcement isn’t technically new; it was just cool to see AKS as a “production” option for deployment.
The company’s vision related to AI and Machine Learning offerings is stronger to me now than it’s ever been. This story has been developing for the past few years, and the vision hasn’t always been crystal clear. Over the past two years, I’ve often asked the question “If I were going to start a new custom machine learning project in Azure, what services would I start with?” Usually, that answer has been “Azure Databricks” by default, but I’m now coming around to the idea that there is now a viable alternative – or at least additional tools to consider.
This year’s BUILD conference included great sessions and content focused on Azure AI, segmented into three high-level areas:
- Knowledge Mining: This is concerned with using Azure services to help discover hidden insights from your content – including docs, images, and other media. Sessions and announcements in this area focused on enhancements to two key services; Azure Search and a new “Form Recognizer” service.
- Azure (Cognitive) Search is now generally available: This service uses built-in AI capabilities to discover patterns and relationships, understand the sentiment, extract key phrases, etc. without the need for specific data science expertise. Additionally, Azure allows consumers to customize results by applying custom-tuned ranking models.
- Forms Recognizer: A new service announced in public preview. This service exposes a REST API that accepts document content (PDF, images, etc.) and extracts text, key/value pairs, and tables. The idea is that “usable data” can be gleaned from content that has been hard to unlock in the past.
Machine Learning: A set of services that enable building and deploying custom machine learning models. This area represents many capabilities on the Azure platform; I found that at this year’s conference some great new additions and enhancements were highlighted that help to answer that first “where do I start” question. Some of my highlights:
- AutoML is in public preview: This service allows a consumer to choose the “best” machine learning algorithm for a provided data set and the desired outcome. It does this by accepting the data set from the user (in preview it accepts files stored in blob storage exclusively), automatically training several different models based on this data, comparing performance, and reporting the performance to the end user.
- Visual Interface for Azure Machine Learning Service is in public preview: This service enables consumers to build ML models using a drag and drop interface, with the ability to drop down into Python code when needed for specific activities. In many ways, this is a reincarnation of the “Azure ML Studio” service of the past, without some of the limitations that held this service back (data size restrictions, etc.).
- Choose your underlying compute: Choose where your models are trained and run, including the Machine Learning Services managed compute environment, AKS, Virtual Machines, Azure Databricks, HDInsight clusters, or in Azure Data Lake Analytics.
AI Apps and agents: This area includes Azure Cognitive Services and Azure Bot Service. Azure Cognitive Services is a set of APIs that allow developers to call prebuilt AI models to enhance their applications in the areas of computer vision, speech-to-text, and language. A few data points that stuck out to me:
- A new Cognitive Services category – “Decision”: This category will initially include three services: 1) Content Moderator, 2) Anomaly Detector (currently in preview), and 3) Personalizer (also currently in Preview). Personalizer is a service to help promote relevant content and experiences for users.
- “Conversation Transcription”: An advanced speech to text capability.
- Container Support Expansion: The portfolio of Cognitive Services that can be run in locally in a Docker container now includes Anomaly Detector, Speech-to-Text, and Text-to-Speech in addition to the existing text analytics and vision containers.
It’s amazing for me to consider that .NET is now 17 years old – the official release of .NET 1.0 was in February 2002! And, although .NET is now on the “mature” end of the spectrum compared to many other active programming frameworks, it’s also true that there are many new .NET developers still adding C#, VB.NET, F#, or CLR-based languages to their repertoire. In fact, at BUILD the company quoted the fact that “a million new active .NET developers” were added last year alone.
One of the reasons for this is that the .NET team continues to innovate with offerings like .NET core – which it released in 2014. .NET Core is the cross-platform development stack which runs across operating systems and has been the “future” of .NET for some time.
One of the major announcements that will affect .NET developers in the future is that the next “release” of .NET core will be “.NET 5”. Yes, this means there will be one unified platform that includes legacy .NET framework components, .NET Core, and Mono. After the .NET 5 release in 2020, there will be one annual release of .NET.
A few other .NET related data points that stuck out to me as items to investigate in more detail:
- “Blazor” got a lot of session time and seems to be a real project now. For some people, the idea of running C# in the browser can devolve into a philosophical debate. However, it’s clear that Microsoft sees enough upside that it has moved the technology beyond an “experimental” phase into a fully-supported preview.
- .NET for Spark was released (open source) aimed to provide access to Apache Spark for .NET developers.
- Frequent mentions of gRPC support in .NET Core. gRPC is the language agnostic remote procedure call framework published by Google.
- NET 1.0: A cross-platform (.NET core) framework for creating custom ML models using C# or F# – without having to leave the .NET ecosystem.
There were quite a few great sessions and announcements related to Cosmos DB, Microsoft’s fully managed, global, multi-modal database service. My highlights:
- Best practices for Azure Cosmos DB: Data modeling, Partitioning, and RUs: A great session given by Deborah Chen and Thomas Weiss (program managers on the Cosmos DB team). Practical, actionable examples related to how to partition, how to minimize request units (RUs) for common database calls, etc.
- Etcd API: In Kubernetes, etcd is used to store the state and the configuration of clusters. Ensuring availability, reliability, and performance of etcd is crucial to the overall cluster health, scalability, elasticity availability, and performance of a Kubernetes cluster. The etcd API in Azure Cosmos DB allows you to use Azure Cosmos DB as the backend store for Azure Kubernete
- Spark API: new (preview) native support for Spark through the Cosmos DB Spark API. This one is interesting to me because it has the potential to enable a “serverless experience for Apache Spark” – where the “cluster” is Cosmos DB. I would pay close attention to the consumed RU’s though!
- Cosmos DB will support multi-model access in the future: Cosmos DB is a multi-model database, meaning you can access the data using many different APIs. However, until now this has been a choice that is made up front on the creation of the database. In his “Inside Datacenter Architecture” session, Mark Russinovich announced that in the future, Cosmos DB would support multi-model access to the same data.
- Jupyter notebooks running inside Azure Cosmos DB: announced in preview. A native notebook experience that supports all the Cosmos DB APIs and is accessed directly in the Azure Portal.
Below are some other announcements, highlights, and data points I’m investigating in the coming weeks:
- Windows Subsystem for Linux (WSL) 2
- VNET integration now for both Linux and Windows App Service
- Windows Container support in App Service
- Serverless pricing tier for Azure SQL database
- Azure Database Hyperscale tiers
- SQL Server running on Edge devices
- Key influencers visualization in Power BI
- Power BI Dataflows
- New Virtual Machine Image Builder Service
- Virtual Machine Shared Image Gallery (cross subscription, AAD tenant)
- Azure App Configuration service
- Machine Learning Models in Power BI
- Security Center Logs in Log Analytics
- Azure Open Datasets
- Blob index and quick query
- Azure Kinect DK
- Microsoft Fluid Framework