May 25, 2017 // By Stuart Williams
Microsoft held their //Build conference for developers this year from May 10th through the 12th in Seattle, Washington. In this blog, we summarize the key announcements around their Azure cloud platform and how these will impact customers and developers.
Several themes pervaded this year as teams at Microsoft responded to customer needs and are innovating along many parallel lines at the same time.
Artificial Intelligence: Bots, Machine Learning, Cortana
Traditionally, many AI problems are opaque e.g. they require a high degree of expertise to implement, sometimes with less than desirable results. Microsoft is attempting to make this easier to implement with more predictable results and delivered value.
Microsoft has the following strategies:
- Make the analysis language R (and Python) available in many places in their platform such as SQL Server, PowerBI, Logic Apps, and so on for both statistical and computational analysis and rendering complex plots and graphs
- Machine Learning hosts that can leverage large data sets for both training and analysis
- Consolidate AI functionality under the Cortana AI suite which provides many useful and easy to implement features
- Provide for Bots to be hosted in Azure, and to leverage them on any device
Microsoft has made writing software that interacts naturally with humans a lot easier. Bots can be hosted in many Microsoft and third party products and services. The Bot Framework makes it easier for teams to get started developing applications that can have natural conversations with users. Combining this with cognitive services and other AI tools in Azure provides powerful functionality.
For example, Magenic is doing a pilot for ourselves that uses a bot hosted in Microsoft Teams that will act as a HR self-service to supplement our intranet site for employees. The bot will be able to answer questions such as “How much vacation time do I have?”, “I need the form to change my deductions”, “I need the cell phone for Bill in Ohio”, and so on. The system will use the bot framework to get a quick start, and then will combine this with cognitive services and data integrations to provide the data and files that needs to be queried or searched to satisfy users questions.
The potential for bots is enormous, for customer self-service in a friendlier way, empowering ad-hoc queries against enterprise data especially remotely, and any other scenario where being able to speak or type questions and getting answers would be ideal.
Read more about bots: https://azure.microsoft.com/en-us/services/bot-service/
Machine Learning and Cognitive Services
Machine learning algorithms have been around for dozens of years; the problem has traditionally been that they are expensive or very hard to implement. Building a hypothesis, providing training data, and then using the resulting model has in the past been a steep slope. Microsoft provides tooling, and as important pre-made models for many interesting scenarios ranging from:
- bio-recognition (face, voice, kinetics),
- natural language queries (to power bot interactions),
- machine translation,
- object recognition and classification,
These greatly increase the velocity of implementing machine learning. To supplement this, their cognitive services suite, provides many useful analytical features for specific problem domains in finance, supply chain, health care, and so on.
Having these functions as platform as a service (PaaS) offerings in the cloud allows customers to skip the often-difficult infrastructure and platform issues, and focus on developing and fine tuning the desired solutions, and the pay-as-you-go model allows for a predictable spend based on the amount of computation used and data processed.
Read more about it: https://azure.microsoft.com/en-us/services/cognitive-services/
Cortana (named for the heroine in the Halo video game franchise), is another aspect of AI, which acts as a coordinator and host for what Microsoft calls “skills” e.g. AI capabilities, these may integrate any of the above services to form a useful piece of software. Cortana provides the “front end” e.g. users talk to Cortana and it uses its skill(s) to do useful work on the user’s behest.
Cortana focuses on voice interactions while bots generally are text focused. Cortana run on all the major platforms: Windows, IOS, and Android, and well as on embedded devices. Cortana skills can be created using the Microsoft Bot framework, meaning that Cortana is yet another way to leverage bots.
Skills is in preview at the time of this article, but already there is a growing set of interesting scenarios as samples on the Microsoft site.
Large Scale No-SQL databases
Microsoft’s Azure Platform as a Service no-SQL DB Document DB was always interesting in that it implemented many of the features of its competitors such as Mongo, while leveraging the power of Azure to scale. As a next-generation no-SQL platform, it had superior dynamic indexing and good query performance over reasonably sized document set. It even offered a Mongo compatible query interface making it an almost plug-and-play replacement for Mongo in some scenarios.
What was lacking being the ability to build large scale geo-distributed no-SQL repositories. This has been addressed by subsuming Document DB into the new Platform-as-a-Service offering Cosmos DB which was designed and implemented with global distribution and query performance in mind. Cosmos DB has significantly improved performance as well with astounding SLAs around in-data-center query performance (https://azure.microsoft.com/en-us/support/legal/sla/cosmos-db/v1_0/). This in combination with a choice of consistency models to fit better into a wider range of scenarios, and even more interface choices including:
- Document DB API
- Mongo DB API
- SQL API
- Gremlin Graph API (an open source graph traversal and querying model)
- REST API (which then supports almost any platform or language)
Cosmos DB will eventually (within a year) subsume Azure Table Storage giving it superior distribution, query speed, consistency model choice, and multiple APIs.
Magenic has used Document DB on projects and has observed that the transition of it onto the Cosmos DB platform has been seamless, and has seen significant improvements in performance for our customers.
With the significant improvements, Microsoft’s Cosmos DB is now enterprise ready for even the most challenging projects.
Of all the cloud providers Microsoft has the widest range of server-less computing (e.g. Platform-as-a-Service) offerings including a similar facility to Amazon’s Lambda functions. It is this area where the innovations are the most striking.
Notable improvements to Azure Functions include:
- An improved developer experience to help code, test, and deploy including tooling and templates to help jump start development along the right paths
- The ability to debug running functions in the cloud (which is a priceless gift to support and operations organizations)
- Even more choices in activations e.g. the thing that causes a function to wake up and do work, such as a schedule, database changes, new messages on queues and IoT platforms, etc.
- Making it easier to leverage functions in Logic Apps (pipelines, orchestrations, and workflows) and Data Factory (data processing and transformations like SQL SSIS)
- Functions are now seamlessly integrated with Application Insights making management and monitoring that much easier and allowing developers to remove logging and other “cruft” from their code allowing them to focus on the business problem
- Even better integration with more Microsoft and third party components (Storage, SQL, No-SQL, OneDrive, Dropbox, Box, Twillo SMS, Azure Mobile Notifications, SendGrid, etc.)
- Functions can be hosted outside the Azure public cloud, so they can run on your Windows Server machines, and even on Windows desktop computers while they are otherwise idle
Application Insights, Security Center, Monitoring
Microsoft is investing heavily in DevOps to make sure that systems running in their cloud platform are operable and reliable.
Microsoft already had strong support for development in the form of lifecycle-management (VSTS), support for continuous-integration (CI) and continuous-deployment (CD) scenarios, and provisioning Development/Test Environments which steadily improves over time. Of interest is support for many commercial and open-source such as GitHub, Jenkins, Chef, and so on.
At //Build they showcased the significant improvements in DevOps especially in the operations area
Application insights is like an MRI machine for code. Developers have two models, build application insights into their code, or point it at un-instrumented code already running. It can monitor anything it can reach including apps running in PaaS containers like App-Services or Functions, in Virtual Machines, or containers. It has been extended to be able to instrument code running on premises or in data-centers (providing there is a network path to the running code).
Subtle but significant improvements were showcased at //Build that make Application Insights invaluable and must have integration for any code running in Azure to provide telemetry, performance monitoring, and analytics which combined can be used to make decisions around:
- Stability improvements (bug bashing) by exposing exceptions in the system for examination
- Where and what to do, performance tuning on
- When and what parts of the system to scale up or down
- Analysis of logs
Microsoft has as its core the goal of having a trustworthy computing platform. To this end, they have collected a set of security tools and facilities under one umbrella of the Security Center:
- Tools provide for the analysis of running deployments in Azure and recommending areas that might require remediation
- The ability to define and enforce security policies across the cloud
- Other security monitoring and management tools including the ability to integrate with other security vendors’ products all on one place
At //Build 2017 Microsoft reviled a new tool (currently in preview) called Risk Detection. This is how it works:
- Configure a risk detection run
- It provisions a Virtual Machine with the test agent installed
- The customer deploys software and any dependencies (this may be minimal if the system is hosted in the cloud)
- Additionally, installs a test driver which can be almost anything that can be launched from the command line
- Finally, risk detection run is started and it begins to hammer away at the system and producing a series of results and recommendations (while running), so that teams can start to inspect and potentially remediate issues immediately
Risk detection uses a variety of techniques such as Fuzzing, Overflow attacks, and other techniques guided by a special purpose Microsoft AI that can understand the technologies and platforms used and do special purpose attacks to see if it can find vulnerabilities.
Sessions can run as long as two weeks, getting progressively more nuanced all the while producing a stream of results.
See the video and read more: https://developer.microsoft.com/en-us/windows/projects/events/build/2017/a-tour-of-microsoft-security-risk-detection
One of the big announcements at //Build 2017 is the preview of Azure Monitoring being available. Azure monitoring is a good companion to Application Insights, Security Center, and Microsoft & Third Party monitoring and management tools.
Monitor provides additional value especially to Operations groups as the tooling has deep knowledge of the Azure Platform, Platform-as-a-Service components, Virtual Machines, and Containers.
The tooling provides AI analysis of fault and performance, and can help focus teams on the critical issues, and filter out the “noise” of “nominal” behavior and presents these using rich graphical tools (and reports/exports).
Monitoring integrates with Visual Studio well to provide for Snapshot debugging (a way of debugging production scenarios without perturbing the production system) that is also newly announced.
Read about snapshot debugging here: https://azure.microsoft.com/en-us/blog/snapshot-debugger-for-azure/
The //Build conference covered more areas and announcements besides the ones highlighted here, but these are the Azure specific ones we thought would have the most impact on our customers.