Anthony Chu Contact Me

AWS re:Invent 2016 Announcements - an Azure Perspective

Tuesday, December 6, 2016

Amazon held its annual AWS re:Invent conference last week. As usual, there was a continuous stream of exciting announcements of new AWS features and services. There's been a lot of coverage in the news, but not much that compares them to other platforms. There were at least 9 newly announced services that are directly comparable to existing services in Azure. I'll focus on those today.

Before we begin, here's a disclaimer... I use both AWS and Azure in my day job. But being an Azure MVP, I have a much deeper knowledge of the Azure platform and perhaps a slight bias. With that in mind, I'll do my best to be fair and accurate. Feel free to fact check and tweet or email me if I got anything wrong!

PaaS on AWS has arrived

AWS has always had a strong infrastructure-as-a-service offering, but platform-as-a-service has felt like an afterthought for them. This started to change last year with the arrival of the Aurora database service and Lambda. Both of these were built from scratch to be fully-managed and cloud-native.

Last week's announcements continuous this trend in a big way. It's clear that PaaS is finally as important as IaaS for AWS. PaaS is traditionally Azure's advantage. It'll be interesting to see how things play out in the coming months.

Amazon Athena (Azure Data Lake Analytics)

Athena is AWS's new service for querying data stored in S3. They made a lot of effort to call it "serverless", meaning they charge per use. In Athena's case, usage is billed based on amount of data scanned. It uses Presto under the covers and queries are written in ANSI SQL.

The Azure equivalent of Athena is Data Lake Analytics. Like Athena, it is also "serverless" and pay-per-use. It uses U-SQL, which is a combination of SQL and C# that provides a lot of power and flexibility that SQL alone cannot. An advantage of Data Lake Analytics is that it is not limited to querying Azure Data Lake Store and Blob Storage, it can also talk to SQL Database and SQL Data Warehouse.

Amazon Lex (Azure Bot Service)

AWS announced Lex, their chatbot service. At its core is the engine from Amazon Alexa. It can be used to build conversational text or voice bots with natural language understanding. Logic and integrations can be added using AWS Lambda. Lex can connect a bot to Facebook Messenger... other integrations are coming in the future.

This is a direct competitor to the recently announced Azure Bot Service. The Bot Service can be viewed as Azure's second iteration of their Bot Framework that they announced in April. It brings together the Bot Framework, LUIS (Lanugage Understanding Intelligent Service), and combines them with Azure Functions to create a more seamless and unified experience for building serverless bots. Azure Bot Service currently has a lot more integrations than Lex. It's unclear how voice input works in Lex; voice input and output in Bot Service can be achieved by integrating with Microsoft's Bing Speech API.

Azure Bot Service

Amazon Rekognition and Polly (Microsoft Cognitive Services)

Rekognition is AWS's image recognition service. It includes object detection as well as face detection. For faces, it can compare faces and perform emotion analysis. These capabilities are available in Azure under Microsoft Cognitive Services' Computer Vision, Emotion, and Face APIs.

Polly takes text and converts it into a life-like voice. Microsoft Cognitive Services offers a similar service in Bing Speech.

Azure appears to have more capabilities available in Cognitive Services; but it'll be more interesting to compare how these AI services perform in real world settings.

Updates to AWS Lambda (Azure Functions)

Lambda all the things!

There were a few announcements to AWS Lambda. The first is this movement to run Lambda everywhere. Lambda@Edge allows Lambda functions to be run on CDN edge nodes; and AWS Greengrass allows Lambda to run on IoT devices. Both of these show some great out-of-the-box thinking by Amazon.

Azure Functions hasn't announced any intentions to run Functions outside of their service. The Functions runtime is already open source and can be run independently on Windows (and soon on Mac and Linux using Mono).

.NET Core on Lambda

AWS announced the official support of .NET Core on Lambda. They only mentioned C# in the announcements, but some people have gotten F# to run as well.

Azure Functions currently runs on the full .NET Framework and has .NET Core support on their backlog. It's unclear how much work it would take to make it happen. This AWS announcement should hopefully help prioritize this work.

Serverless Application Model

SAM technically wasn't announced at re:Invent but a couple weeks before. It's an easier way to stand up all the resources required for Lambda.

This is an area where Azure Functions has excelled. Functions can be easily created as a single ARM resource. And since Functions do not need an API gateway and has a concept of a Function App that groups functions together, its management is already quite simplified.

Deadletter queue support

I'm surprised Lambda didn't have this already.

Amazon X-Ray (Azure Application Insights)

Amazon announced X-Ray, a streamlined APM service. It provides tracing and diagnostics to applications and provides a way to visualize service calls and dependencies.

AWS X-Ray

This appears to be a competitor to Application Insights on Azure which has been in development for over 3 years and recently reached GA. Application Insights is a pretty mature service that I have used since the beginning. I'm most impressed by its smart alerts driven my machine learning, dashboards, and realtime metrics streaming. X-Ray is very new and appears to be pretty barebones at this point.

Azure Application Insights

Amazon Step Functions (Azure Logic Apps)

Another new service that a lot of people are excited about is AWS Step Functions. It makes it easy to orchestrate different steps in a multi-step workflow. It appears to be triggered via API and consists of activities built using Lambda.

AWS Step Functions

On Azure, this is Logic Apps. Logic Apps currently has a lot more functionality. Thanks to a huge set of managed connectors supplied by Microsoft (the list grows every month), it is able to trigger by events and interact with many internal and external services -- everything from Azure Functions to Service Bus to third-party SaaS like Salesforce and Google Docs can be integrated. It also provides ways of interacting with on premise applications and supports more "enterprise-y" functionality such as EDI.

Azure Logic Apps

Amazon Aurora Postgres support (Azure SQL Database)

AWS Aurora is now compatible with Postgres (it's already MySQL compatible). This means applications targetting Postgres can start using Aurora. This is great, as it now supports the 2 main open source relational databases.

The database-as-a-service story on Azure so far only covers SQL Database. Having been around for a few years now, it's an extremely mature service with tons of features at a very low price. But even though it has very good cross platform support, it hasn't been embraced by folks outside the Microsoft ecosystem. Azure definitely needs to move in the same direction and offer MySQL and Postgres databases as a cloud-native service. Currently, MySQL support exists through a less-than-ideal partnership with ClearDB; Postgres is non-existent.

AWS CodeBuild (Visual Studio Team Services - Build)

When AWS CodeCommit, CodePipeline, and CodeDeploy were announced last year without a hosted build service, a core piece of their hosted continuous integration/deployment story was missing. Developers had to manage their own Jenkins servers and CodePipeline called Jenkins to perform builds. They have finally addressed this with CodeBuild, which is their new hosted build service. It currently supports Linux, with Windows on the way.

Having experienced both the AWS tooling and Microsoft's Visual Studio Team Services, I find VSTS's build and release capabilities way more complete and compelling. VSTS offers an integrated experience, not a bunch of separate tools. Its hosted build agents currently run Windows; Linux and Mac builds require self-managed machines with the VSTS agent installed. VSTS supports the building and deployment of mobile apps, load testing, hosted NuGet and NPM, ALM tooling, and much more.

VSTS Build

VSTS Release

AWS Batch (Azure Batch)

AWS Batch was also announced to run batch jobs on Linux and Windows. This capability has been available for a while in Azure Batch.

Other Highlights

EC2 Announcements

A bunch of EC2 capabilities were announced, including new pricing, new instance types, and a new service called Lightsail. With these, Amazon continues to strengthen its IaaS offerings.

One interesting addition was Elastic GPUs. I'm not sure how this compares to Azure's GPU offerings in their N-Series.

Amazon Snowmobile

An exabyte scale data transfer service powered by a shipping container on the back of a semi?! This shows the scale that some of Amazon's customers operate at. Mindblowing.

AWS Snowmobile

And more...

I'm sure this only covers half of what was announced at re:Invent. The pace at which all the cloud providers are innovating is amazing. Looking forward to more in the coming months!