Getting a grasp on the concepts that underscore DevOps and serverless is essential for the modern developer. It’s important to understand the infrastructure, processes, and pipeline that ensures smooth, swift, repeatable, and tested development practices, particularly as we drive further with function, including big data services to drive business growth.
DevOps, along with serverless FaaS (Function-as-a-Service), are key ingredients in the modern development process, which is why we’re taking an in-depth look into these concepts in today’s piece.
What is DevOps?
DevOps is the practice of automating programming practices for faster production speeds, more comprehensive testing, more traceability, and repeatable practices. The name DevOps is a mash up of Development and Operations, although it leans more towards the development side, as it involves development tools, coded ‘cookbooks’ for automation ala Chef, and other practices that make it a niche area of programming practice.
DevOps is critical for development beyond a tiny project.
What is serverless computing?
Serverless computing is the migration of computing infrastructure to the cloud, which allows businesses to reduce onsite resources, namely servers. It’s one of a range of products labelled Function-as-a-Service, functions that would typically be provided in in-house or by dedicated data centres and/or service providers.
Serverless computing allows businesses to no longer have to run and manage onsite servers, worry about provisioning, scaling, patching, and other server maintenance.
Managing your own servers, whether they’re physical hardware or virtualised on your own systems, requires human resources, whereas with serverless cloud computing, it’s a bit of configuration, then set and forget. This is very similar to the process of setting up DevOps tools. Sometimes you’ll need to tweak configs, but for the most part serverless computing takes care of itself.
With serverless computing, cloud resources are only consumed when you are building and running applications, and this is how the pay-to-play model model with providers and products such as AWS Lambda (the foundational serverless product from Amazon) works.
How does serverless computing help DevOps?
You can think of serverless like another tool in the DevOps toolbelt – a way to speed development and let devs concentrate on building a product, rather than configurations, remembering checklists, slow testing and build times, etc.
It’s not a silver bullet by any means – it’s simply another helping hand to speed application time to market and put out updates at a rapid pace.
Key strengths & weaknesses of serverless computing
Shortens configuration times for developers
One of the key pulls for serverless computing is that developers spend less time ‘setting things up’ and more time actually making applications.
All those things we mentioned previously – provisioning, clustering, patching, scaling – can be taken care of by a cloud computing product, meaning developers can concentrate on, well, developing!
Excellent for testing application scalability
How do you know how well your software is going to perform under pressure? Without the resources available readily at hand, it can be tricky to do load testing. With serverless, you can test with a high load, with auto-scaled resources, and track performance as well as how resources are consumed.
Expensive to deploy applications on serverless infrastructure
Serverless is great for development and testing; however, when you’re ready to deploy your application, it can be an expensive configuration to run. When you’re ready to ship, it usually makes more fiscal sense to run on physical or virtual servers, and set up scaling, etc.
“Lambda compute is highly elastic, but your wallet is not.” – Serverless DevOps: Cost, Revenue, & FinDev, ServerlessOps
This is the case if you have steady traffic to your application – if we’re describing the AWS ecosystem, then this would generally mean setting up EC2 instances instead. Servers.lol by IO is a clever tool to see whether Lambda or EC2 is a more effective setup for your application.
‘Cold starts’ can slow services
Serverless infrastructure takes a while to start if it’s not already running. If speed is important in your project and traffic load is low, requiring multiple ‘cold starts,’ then serverless may not be the right fit – or you could take a mix of serverless compute and already running servers to achieve a mixed workload.
How top companies approach DevOps & serverless computing
A Cloud Guru
Technical cloud computing course providers, A Cloud Guru, are industry leaders who work in up-skilling engineers for developing cloud service infrastructure for their companies.
Dale Salter, Software Development Lead, talked to us about the intersection of DevOps and serverless within the context of their expertise and services.
“When people describe cloud computing, they typically refer to a common set of attributes that are easily and commonly architected for in-cloud native solutions, such as: on demand resources, pay for what is used, elasticity, economy of scale, software defined infrastructure, etc.”
“When people refer to Serverless computing, they are typically referring to two key types of services, Functions as a Service (FaaS) or 3rd party services which provide either data persistence or transformations. Serverless maximises all the benefits of the cloud and makes particular attributes that are desirable in well-architected software systems super easy to achieve.”
Salter makes the important distinction that serverless isn’t really serverless, it’s just abstracted away from the developer: “Serverless isn’t 100% serverless, or even close. There are still servers, virtual machines, operating systems, containers, and runtimes, you just never have to manage them.”
At ACG, they are dedicated to a serverless-first approach.
“Our entire platform is completely serverless, and we always try to solve our problems with a serverless-only methodology. This mantra gets easier over time, as AWS releases new ways for us to solve the new sets of problems Serverless computing introduces. ACG is innovating when it comes to solving certain traditional problems but in the Serverless space.”
“ACG is a company who prioritises learning, experimenting, moving quickly, and has a technology-first culture.”
If you’ve never heard of the term NoOps before, then here’s your chance to learn another new(ish) buzzword that includes serverless computing. Matt Harvey, DevOps Practice Lead at Cognizant, explains what this term means for development.
“NoOps is a term that refers to the removal of the operations function from the build, test and run application lifecycle within your organisation. This is the second time around I’ve seen it gathering momentum in the technology industry as I first remember it being talked about 6-7 years ago. Typically it means that an organisation or team has their application intertwined with the “as a service” platforms, whether that be Function as a Service (FaaS which is commonly referred to as serverless) or a Platform as a Service (PaaS).”
“In those scenarios the operations team does still exist, it’s simply that you’re paying the owner of the “as a service” offering to do it. Within your organisational boundaries you’d have no operations capability, hence NoOps.”
NoOps has the ability to streamline the DevOps pipeline, by way of AI. “AI is able to accelerate DevOps processes by automating tasks we didn’t feel were able to be automated.”
“An increase in demand for NoOps narrows the scope for DevOps. Instead, bringing the two silos together to influence the way they work you’re now restricted to enhancing development with the principles and practices learned from operations.”
Zetong Tony Huang, System Solution Architect at ELMO, HR and Payroll software specialists, highlights some of the tools and practices available to help grease the DevOps process, that can be supported by serverless technology:
“Applying agile practices, teams can focus on improving the end-to-end delivery of product effectively. Because the team is accountable, they won’t have silos and can collaborate well.”
“Jenkins, and other repo pipeline CI/CD tools are another key highlight of DevOps process practice. Utilise the power of automation, fine tune the automating infrastructure set up and configurations. Manual repetitive processes will make things slow; if the task needs to be repeated many times in the future, think about writing CloudFormation templates, Terraform templates or scripts.”
He elaborates that they achieve this “by baking in best security practices into our automation process from the deployment of code to deployment of infrastructure, autodetection of threats and self-healing automation through the use of Lambda and other great services by AWS.”
How do they achieve security within dev teams at Plutora?
- “The team needs to be transparent with each other and understand each teams’ limitations and their functions.
- Make sure that the right people are empowered to deliver projects with the correct amount of visibility.
- Have a diverse toolbox that allows our employee to correctly function together. This something that we built internally.”
You can read more about security baked into DevOps, in our deep dive article into DevSecOps.
Gannon speaks about the metrics that can help measure success of digital transformation projects, such as switching to serverless: deployment time, deployment frequency, manual effort per deployment, lead time (time between a code change, and deployment to an environment), number of users in deployment, technical skills and training required to deploy and defect rate.
He also spoke to us about the pain points of moving one of their most complicated products, ECM, to a DevOps deployment environment. While the migration was lengthy, it was worth it.
“The focus has been on automating the highest priority deployment scenarios and ECM configurations. As of today, about 80% of our reference environment is automated, with work continuing on automating the remainder.”
The results? All metrics were validated against the baseline (pre-DevOps) with improvements made for each.
Interested in a career in cloud computing and DevOps?
Cloud and DevOps are the future of development. Aligning your talents in this field with a progressive, exciting company will ensure you remain ahead of the game when it comes to talent demand.