This course touches on the similarities and differences between AWS, GCP, and Azure serverless functions. The idea is to give you insight into what using the different offerings look like. The primary learning objective is to help you make an informed decision about which provider to use and if it fits your use case. The 30-minute course covers the three different providers (content largely taken from the comparing cloud platforms course--but cut down for content), deploying a sample application on each, and the ecosystem around deploying serverless applications. The provider lesson uses the same application and demonstrate deploying and other operational characteristics of each provider.
Intended Audience
- IT Pros
- Developers
Prerequisites
If you are not already familiar with serverless start with "Getting Started with Serverless Computing” before continuing with this course. You’ll also need some experience with cloud providers as well. Nothing specific is required, though you should have a general idea of how cloud computing works.
Learning Objectives
- Understand the state of serverless in 2017 List trade-offs between AWS, Google, and Microsoft platforms
- Learn to build, deploy, and run applications on the three platforms
- Learn open source tools for building serverless applications
This Course Includes
30 minutes of high-definition video.
What You'll Learn
Course Intro: What to expect from this course.
Serverless Overview: In this lesson, we’ll introduce you to the key players and prepare you for the hands-on demos in the following lessons.
AWS Lambda: In this lesson, you’ll learn about serverless on Lambda and deploy a Lambda function.
Azure Functions: In this lesson, we’ll discuss serverless Azure functions and learn how to deploy an HTTP function.
Google Cloud Functions: In this lesson, you’ll learn about serverless on Google Cloud and deploy an HTTP trigger function.
Ecosystems and Tools: In this lesson, you’ll learn about serverless framework and Apex.
Conclusion: A summary and review of what you have learned.
Hello. Welcome back to the Serverless Survey course. I'm Adam Hawkins and I'm your instructor for this lesson. This lesson kicks off the course by comparing the different providers, and introducing some open source tools for building serverless applications. Our agenda is to cover the serverless concept AWS Lambda, Azure Functions and Google Cloud Functions and finally open source tools and frameworks. The objective for this lesson is to introduce you to the key players and prepare you for the hands-on demos in the coming lessons. Let's start at the beginning by answering this question. What is serverless? Well, serverless is a bit of a misnomer. T
here are servers in serverless architecture, it's just that they are completely hidden from you. Serverless is instead about functions, shipping those functions into the cloud and letting the provider sort everything out. The provider runs your functions in a runtime such as Node.js Version Six or PHP Seven so you can choose your dependencies, and their servers handle scaling and 24/7 availability of your functions. Those functions may be called in a variety of ways. They can be wired up to incoming HTTP requests, or messages on a message queue, scaled to events or even data changes in something like S3. Functions may be also be used internally as plumbing between various services. All in all these functions can do a lot and they're applicable to many different applications.
The industry is generally trending towards increasingly smaller deployments from VMs to containers and now to functions. I mean, come on, what's smaller than a function call? This paradigm naturally introduces new and solvable problems. The current products may be considered primitives. I say primitives because they are strong, low level abstractions for building more complex and powerful abstractions.
Open source frameworks bridge the gap between individual functions and entirely serverless applications. They tend to focus on coordinating deploys and multiple functions, runtime configuration and answering simple things like which stage is this function? Odds are you'll end up using some of these tools in the real world. Now let's familiarize ourselves with the various offerings. AWS Lambda effectively created serverless when it launched. It has steadily improved since then. Lambda is one of AWS's key services. You can integrate Lambda with API gate waiter server, HTTP traffic or integrate Lambda functions with just about anything that runs on AWS.
There are some pretty handy use cases. You can integrate Lambda with cloud to watch scheduled event triggers for serverless chron in the cloud or you can use Lambda as a custom resource in cloud formation to apply configuration management at pretty much anything with an API. Although Lambda suffers from somewhat of a first mover disadvantage, so it may not be as a seamless experience compared to the newer offerings by Google or Microsoft. Luckily third-party tools improve the end user experience. Microsoft Azure Functions launched after AWS Lambda. They function a bit differently and they also work with the runtimes or with any executable. That means they even support Bash. Can you imagine serverless shell scripts? Well, I can, and I think it's wonderful but I digress.
Azure Functions support continuous deployment of VA GitHub and other code hosting offerings. And naturally, Azure Functions integrate well with all of the other Azure services. They tend to feel a bit easier to work with compared to Lambda functions in that some of the boilerplate is handled for you. We'll see that in future lessons. Google Cloud Functions are currently in beta as of May 2017. Take the feature set with a slight grain of salt because you never know what will change before going to production.
Google Cloud Functions only support Node.js right now so look elsewhere if you want more language support, however, they're covered across common use cases check out. There's easy HTTP integration and fantastic, fantastic telemetry via Stackdriver. Here's a quick comparison table. There are a few immediate takeaways. First off, they all offer integrated telemetry. This covers logging and metrics like latency and indication count.
Also, runtimes vary by provider as well as what triggers the provider role wire up for you. In general, each provider supports the same general feature set. They vary in how much they do for you and how much you'll need to do yourself. Comparison tables only get you so far. Hands-on experience is the only real way to assess any of these providers. That's what we're gonna be doing in the remainder of the course.
We'll cover common flows like the initial deployment, collecting telemetry data, the next deploy and other bits and bobs for that specific provider. I'll do this with a simple HTTP Node.js application so you get the feel for a standard HTTP application. Now, these are not going to be exhaustive demos. Instead we'll focus on the development experience and some rough edges in real world use. Let's wrap up with a recap. Serverless is about shipping functions into the cloud and moving away from the processes and servers that run them. AWS, GCP and Azure provide the low level abstractions like infrastructure SS servers or IaaS compared to platform SS servers or PaaS.
Some are more full featured than others but all are similar enough. Look to the community to fill in the gaps with higher level abstractions. And finally, one more thing, serverless is not going to solve all of your problems. It may solve many but introduce a few new ones. There's no silver bullet here. Now that that's out of the way, we can get to shipping. Join me in the next lesson on AWS Lambda. See you there.
Adam is backend/service engineer turned deployment and infrastructure engineer. His passion is building rock solid services and equally powerful deployment pipelines. He has been working with Docker for years and leads the SRE team at Saltside. Outside of work he's a traveller, beach bum, and trance addict.