Cloud Computing Weekly Podcast

Our guest on the podcast this week is Joey Jablonski, VP, Principal Architect at Cloud Technology Partners.

We discuss serverless computing and what it means for enterprises. We compare different serverless computing platforms, look at pricing models, and discuss how to determine which applications are right for serverless computing.

Serverless computing is a manifestation of the idea that we should focus on our applications and focus on the code that makes them efficient in providing high-levels of functionality. It brings enterprises away from care, feeding, and operations that are low-calorie work. At this point all major cloud vendors have announced some implementation of serverless computing that allows developers to take a section of code, deploy it on their platform, and have it execute for either very short periods of time, or very long periods of time. In a way, developers do not need to worry about operating systems, connectivity, installing patches, upgrades, or any of the operational pieces that go with having a virtual machine or a physical server.

Serverless computing seems like something that should have been built into cloud computing from the beginning. With IaaS, we try to mimic what’s in the data center. They require most of the same upkeep as a regular server. Serverless computing abstracts us from having to deal with these details and allows us to deal with the brilliance of development instead.

It’s likely that if serverless computing had emerged in 2006, it would not have had an easy time being adopted. In early days of cloud computing, enterprises were trying to break data center habits they had built such as change management, control, and approvals that took a long time. Early services on cloud were focused on getting out of the data center, and allowed people to start the transition. If we had serverless technology at that time, it’s possible people would not have used it because it was too big of a leap to transition their enterprises and skill sets all at once. We’re at the time now where people have adopted the cloud and are comfortable with the concept of not having physical access to the applications and systems. We are now okay with not being able to touch the servers. Now people are realizing the amount of time that goes into patching systems and monitoring systems and that it is low-calorie work and doesn’t contribute to being able to build features and capabilities. We’re at that point in the adoption curve where people have adopted the cloud and shed those data center habits, and now they want to shed those operating system and server habits  to make their operations more efficient. This is where serverless computing comes in.

To be clear, the servers are still there, we are just abstracting ourselves from having to deal with the operations and details. This allows us to focus on building the best apps we can without needing to worry about underlying infrastructures.

There are worries that serverless computing may further lock users into one vendor, but so far it doesn’t seem to be the case when looking at the cloud providers. Many of the capabilities they provide that are serverless support a standard of languages (java, javascript, PHP) that are common across all major cloud providers. So if built it in one of these highly portable languages, the application can move with minimal changes. Also, there is always a value to using features that are specific to a cloud provider – while it does get you closer to what people consider vendor lock-in, it comes with a lot of performance, security, and functionality advantages. It’s about finding the right balance of using languages you execute in these serverless environments that are portable across vendors, but also picking those capabilities each platform provides that give you a unique advantage when building applications.

Security in serverless computing takes a certain level of engagement with the platform vendor to fully understand. Older models of building in network layers of protection don’t apply as much in the serverless world. With serverless computing, we look at the cloud platform (Azure, Google, AWS) to provide network-level security. It shifts the responsibility to enterprises to focus deeper on application-level security (log monitoring, databases, data stores) and to look for anomalous behaviors at the application-level.

In terms of what applications are best for serverless computing, consider it for net new based systems. Traditional lift-and-shift environments would typically go to virtual CPUs and storage devices that sit on the cloud. There are a variety of interesting startups looking at ways to automatically refactor code to move it from an OS-based environment to a serverless-based environment. As applications and companies continue to migrate to the cloud at an accelerated rate, we will see more of these migration tools to make the transition more simple and enable adopters of the cloud to use more innovative services rather than moving applications as they are.

We look at the tradeoffs between Amazon Lambda and Azure Functions.

  • Amazon Lambda: For maturity of the service, AWS wins. Lambda has been out for over two years now, and has continued to innovate and release new features supporting new languages. They have also built up a skills-base of people who are comfortable deploying applications with Lambda. AWS has done a great job of getting services out the door so people can use them quickly and provide feedback. AWS takes a simplified approach to serverless pricing.
  • Azure Functions: This is also a strong platform, with a broader base of languages supported and full support of the Microsoft ecosystem. For environments that are Microsoft-biased today (i.e. C# or .NET) there are many reasons to go to the Azure platform because of their tight integrations with those language and development frameworks. Azure pricing is more complex with different pre-buy and discount models. 

In addition, Google is just beginning to play in the serverless computing space with its alpha version of Google Cloud Functions.
It’s important for enterprises not to do too many transformations at the same time. Take steps one at a time that are comfortable for the organization. First, move applications relatively intact to cloud for the ability to deploy infrastructures quickly and get elasticity and a better pricing model. Then, iterate by moving to a serverless environment to improve operations dramatically. This allows the organization to keep up with the technology changes as it matures.

Direct download: Joey_Jablonksi.mp3
Category:Technology News -- posted at: 4:00pm EST