Containers can help fragment monoliths into logical, easier to use workloads. The AWS Summit New York was held on July 17 and Cloud Academy sponsored my trip to the event. As someone who covers enterprise cloud technologies and services, the recent Amazon Web Services event was an insightful deep dive into the services and solution areas under the AWS umbrella. Among the many announcements, sessions, and trends discussed at the Summit, one topic reigned supreme: Serverless.
From Monolith to Serverless: Slaying the Monolith
Monolithic architectures are notoriously difficult to scale. Every time you want to add new features or technologies, the application’s entire code base will grow and require adjustments as a result. This makes it difficult to update or innovate because developers are working with the entire monolith in mind instead of developing.
Despite their flaws, monoliths aren’t completely obsolete. Smaller companies and startups can benefit from this approach because they have smaller technology teams. A monolithic server usually requires less work but lacks the flexibility larger companies require. For large companies, monoliths become a mass of layers, like onions, according to Linda Nichols, Cloud Enablement Leader at Cloudreach. Similarly, monoliths are long-lasting but perishable and contain many layers, which are difficult to modularize and have complicated deployments.
Where do Virtual Machines Fit?
When people talk about containers, they talk about how much better they are than virtual machines (VMs). It’s a weird way to approach it though, as there is certainly still a place for VMs in the cloud. Despite the popularity of containers and serverless, Amazon CTO Dr. Werner Vogels believes that virtual machines are the “bread and butter of compute.” VMs have longevity on their side, as they have the capability to run for months or years. According to Vogels, one customer just marked the 10th anniversary for one of its virtual machines.
[bctt tweet=”Amazon CTO Dr. Werner Vogels believes that virtual machines are the “bread and butter of compute.”” username=”cloudacademy”]
VMs last because patching and updating take priority over replacing. For users interested in VMs over containers or serverless, AWS offers several solutions, some of which are on their fifth generation of updates!
In his keynote, Vogels announced the new R5 instance type, a next-generation memory-optimized instance for Amazon EC2. This high-performance database is significantly more powerful than the R4 release announced in 2016. AWS also increased the available RAM for compute instances.
The Container Revolution
Containers and microservices run independently, meaning there is less time spent on daily management than with virtual machines. Developers can work without worrying about scaling or other problems typically associated with VMs or even monoliths.
Containers, which are faster than VMs, run directly on top of an OS kernel, which means that they are lightweight and easier to move. Additionally, containers can be divided into unique sections with varying access controls.
Dr. Werner Vogels recognizes the importance of containers in the face of monolithic applications. This sentiment was repeated by Cloudreach’s Nichols, who led a developer talk about the problems with monolithic applications. Containers can help fragment monoliths into logical, easier to use workloads.
Containers can help fragment monoliths into logical, easier to use workloads.
Developers love containers for a variety of reasons, the most obvious of which is laziness! It’s the developer’s philosophy that day-to-day operations shouldn’t get in the way of development, and this is just one reason that DevOps is becoming more prevalent in enterprise computing.
Containers and DevOps
Containers enhance DevOps, but are they a temporary solution?
Although everyone in the cloud computing space loves marketing lingo and buzzwords, cloud solutions are not one size fits all. Containers certainly enhance DevOps practices, but are they truly a DevOps tool?
The DevOps philosophy appeals to users who want to accelerate development and containers fall under that scope. VMs also use more computing power than containers and are also worse at scaling. As continuous delivery and continuous deployment grow in relevance, having containers to complement faster infrastructure to build code on is crucial.
I’m not trying to imply containers are on the way out. On the contrary, containers are becoming more popular every day, with the Kubernetes container orchestration system supported by an enormous number of contributors, including development teams.
As amazing as containers and Kubernetes are, they share a downside in that they’re difficult to manage. AWS has made this significantly easier with tools like Amazon Elastic Container Service (ECS). Vogels says that ECS has over 100,000 active clusters with hundreds of millions of containers starting each week. The solution has grown 400% each year since 2016.
AWS launched its managed Kubernetes service, Amazon EKS, in response to the more than 60% of users who run Kubernetes on AWS. Despite its growing popularity, Vogels says that customers want AWS to run Kubernetes for them and emphasized the difficulty in securing and managing them manually. He says, “Running an entire container management system yourself sort of brings you back to the pre-cloud era.”
What makes containers a potentially precarious solution is that users must still manage their environments. The screen behind Vogels summed it up: “Builders want to build, not manage clusters” This led AWS to release Fargate, which eliminates the infrastructure of containers, as everything is managed at the container level. Vogels announced that Fargate will soon be available for EKS.
Since Fargate eliminates the internal management of container or Kubernetes infrastructure through ECS and EKS, development teams are able to focus more time on development. Cluster management can take up tremendous time that should be spent elsewhere. This tool optimizes DevOps by allowing developers more time to perfect their code without the headaches surrounding containers.
Will Serverless Usurp Other Compute Methods?
It’s clear that AWS isn’t leaving other compute infrastructures behind. Users asked for Kubernetes management and they got it. They asked for help with VMs and got it. However, is serverless the best option for compute?
The benefits of serverless aren’t lost on anyone in the development space. Solutions like AWS Lambda allow developers to spend their time creating applications without spending time on infrastructure. This makes serverless far more approachable than containers, as they tend to need more training and expertise. As Vogels stated, “We no longer want to write and manage all these different compute infrastructure pieces, we just want to write business logic.”
AWS offers a variety of services for serverless. They offered serverless for data, monitoring, development, and more, but compute wasn’t an option until AWS Lambda. Serverless compute allows developers to spend their time writing code without worrying about compute infrastructure. For Lambda, AWS automatically scales and replicates over availability zones.
Vogels pointed out that, most of the time, newer technologies will be adopted by small companies first. However, AWS enterprise customers were quick to adapt serverless. It reduces infrastructure management tasks and the cost is dependent on compute time.
What Does Serverless Mean for DevOps?
Infrastructure management interferes with the speed demands of today’s digital world. Containers and VMs have their place, and many companies are even using a combination of these compute types, but what does this mean for DevOps?
When looking back at the monolith, we can see its slow descent into obscurity. Monolithic architecture has its place, but new tools are consistently aiming to replace or eliminate it. With the increased focus on maintaining a safe enterprise cloud space, the concept of DevSecOps is gaining traction.
As I mentioned before, containers were a significant boost to DevOps popularity. It embodied the goals of DevOps, including faster development speed and releases, breaking down IT silos through collaboration. But with serverless, infrastructure management is essentially gone. Where is the “Ops” in DevOps or DevSecOps going? It’s sticking around, but only to emphasize that it’s no longer always necessary. Serverless architecture has created the term “NoOps.”
NoOps emphasizes the importance of serverless and automation. It works to automate deployment, infrastructure, and application management. Thus, most operations work will become redundant, eliminating the need for “DevOps.”
To be clear, DevOps means something different to everyone, so declaring its demise is trivial. DevOps has become an umbrella term for vendors to talk about automation and other simplification methods. It’s unlikely this will change anytime soon, but from a workplace cultural level, DevOps will become outdated.
Considering the emphasis on serverless from Dr. Vogels and many others at AWS Summit New York, it has the potential to take over the development world. Customers asked for EKS and they got it, but serverless is new and more efficient. AWS will continue to improve its serverless functionality and it’s certainly something to look out for at this year’s re:Invent.