Case Study
How Okteto Helps Replicated Simplify Kubernetes
Introduction
Replicated enables the seamless delivery and management of Kubernetes applications in multi-prem, customer-controlled environments using a single architecture – whether or not customers are using Kubernetes. A new Forrester study discovered that the Replicated platform delivers a 208% ROI success for its customers.
While Replicated has dramatically empowered the success of software vendors to operationalize and scale the delivery of their applications into enterprise multi-prem environments, the Los Angeles-based company initially struggled with its own developmental systems and processes.
The Challenge
When the company started, they were using microservices to run two sides of their application: one on-prem and the other in the cloud. The complex environment made onboarding and the learning curve for most engineers "difficult and intense."
Complicating matters was the company's local dev environments could not meet the developer demands of the company's sophisticated platform. And having a large team of developers, each working with their cluster configurations and local databases had become a logistical nightmare. "Developers would spend a lot of time building their dev environment instead of coding, and that became unsupportable and difficult to maintain," says Marc Campbell, Replicated co-founder and CTO. "Additionally, we could not run the entire development environment on one laptop without it overheating, the battery draining quickly, and needing to find additional disk space."
And because local dev further complicated kubernetes' existing complexities, good talent was not knocking on the door. "When we hired a front-end engineer, we had to teach them kubernetes, but anytime something went wrong in their kubernetes cluster, they'd be at a dead stop," says Marc.
Trouble with Homegrown Solutions
Like many development organizations challenged with environments unable to meet the demands of modern complex cloud-native applications, Replicated attempted to create a homegrown dev environment solution. But unfortunately, like most companies, they discovered building your own platform was making developer matters worse. “Easy to develop - impossible to maintain.”
"Our homegrown solution took a massive investment of our engineering to keep kubernetes, docker, and all kinds of cutting edge technologies updated and supported," says Marc. "It was difficult, taking 50 percent of one engineer's time to support because every day something was broken."
Marc realized Replicated needed a dedicated development environment to do everything local and homegrown solutions were incapable of.
The Solution
According to Marc, Okteto's cloud development and preview environment platforms hit the "sweet spot": they mirrored production, simplified kubernetes, shifted collaboration left, and overall improved developer experience. "We have engineers who don't need to understand kubernetes to build the front-end website or back-end API, but we also have a lot of engineers who know kubernetes well," says Marc. "Okteto supports both developers who know kubernetes and those who do not. We're still driving how we want the thing to operate by writing kubernetes manifests for it, but it's not a requirement to use the service anymore."
Kubernetes Made Simple
Okteto not only helped developers at all levels of expertise to engage with kubernetes in a comfortable way, but also allowed teams to choose the tools they wanted to use. "Having a development environment that allowed developers to use their own tools was huge," says Marc. "Okteto allows every engineer to use whatever editor they want. Before Okteto we attempted to be prescriptive with our homegrown solution, resulting in developers becoming inefficient and unproductive because they were not comfortable."
In addition to supporting a superior developer experience, Okteto mirrored production with unmatched digital twin precision. The company needed its cloud development environment on kubernetes to emulate the same services. "The closer dev and production mirror each other, the easier it will be for developers to ship code to production," says Marc. "There's going to be fewer changes to it running, but also if there is a problem in production, they can use the dev environment to reproduce that problem and solve it."
Results
Superior Troubleshooting with Shared Services
The development environment’s shared services removed the need for each developer to manage ETCD, coreDNS, CNI and Docker in their environments. Okteto allowed Marc’s teams to share secrets and clusters, so each developer is free to develop instead of administrating. Having a shared environment helped the company deploy a new service so that every developer can access long-tail integrations built into their environments.
The company could also run entire end-to-end tests on all integration, including unit tests and everything against the entire stack and across the entire platform isolated into one developer's namespaces in their branch before committing. Shared namespaces also helped the Replicated team troubleshoot.
"On a local dev, wherever a developer, who had their cluster running on Google cloud, had a problem with kubernetes not starting or containers crash-looping, those isolated issues required developers sending us a log," says Marc. "Trying to remote troubleshoot disconnected systems was a hard problem to solve. With Okteto, seeing across namespaces and shared environments and understanding what's happening is massively beneficial to troubleshoot across the board and manage the platform globally."
Improved Inner and Outer Loop Collaboration
Both the cloud dev and preview environments helped Replicated "shift left," i.e., allow for earlier cross-functional input both internally and externally, which helped the team avoid scrap and rework. "As developers go down their path, we can collaborate and give them feedback before they clean up the code, and put it in as a commit," says Marc. "Okteto helps them stay on the happy path longer."
The preview environment also empowered product managers with "user acceptance" testing. Product managers can click on the link when a pull request comes in and connect to a live working environment. The preview environments — a superior approach to "outer loop" code reviews — remove complexities by allowing reviewers to use a product version while looking at the code side by side. "There is no need to only rely on a static code review, or try to compile and render CSS in their head," says Marc.
The improved inner and outer experience improved collaboration with other teams, contributing to a vastly improved developer experience. And developers — whether working with kubernetes, Docker Compose, or services built in-house — could now focus on innovation and no longer worry about managing their platform, dealing with local limitations, and frustrating and costly scrap and rework.
"We chose Okteto because it removes the need for every engineer to have a deep understanding of the kubernetes infrastructure that we need to run our system, and it allows us to hire engineers without that level of expertise," says Marc. "Okteto just works; with it we can set the bar higher with what we expect from the dev environment and our team."
Preview Environments
Sharable preview environments for full-stack applications with every pull request.
Okteto Enterprise
The power of Okteto Cloud, with the control of running in your Kubernetes infrastructure.