Real World Experience: Transitioning to the Cloud and Navigating the DevOps Landscape
Join us on an inspiring journey as we explore the career of Ryan Kelley, Lead Platform Engineer at a large US defense contractor. From starting as a help desk in a small town to leading a team at the Department of Energy that became the first LEED Platinum building with an operating data center, Ryan's story is a testament to the power of hard work and determination. He shares his experience transitioning to the cloud, the tools he uses on a daily basis, and how he collaborates and stays organized as a distributed team with autonomy. Dive into the ever-evolving world of DevOps and gain valuable insights from a seasoned expert in the field.
Albane TonnellierJanuary 30, 2023 · 7 min read
- The article discusses the challenges and opportunities that come with transitioning from a Data Center to the Cloud and the importance of keeping up with industry trends and recognizing the difference between a trend and a fad in the DevOps world.
- You will learn about the tools and strategies that Ryan uses for collaborating and staying organized as a distributed team with autonomy, such as infrastructure as code, Terraform, and containers.
- You will get insights into the field of DevOps from an expert who emphasizes the importance of getting excited about technology and education as the key to success.
As a young professional in the tech industry, I began my journey as a help desk technician in a small-town police and fire department. I then worked for the Department of Energy for 8 years, where I led a team of 10 people to become the first LEED Platinum building with an operating data center. The building having this data center made it an even bigger challenge to achieve the certification. However, through the use of power meters to measure the power consumption of old equipment before and after migration and heavily virtualizing the workloads, we were able to achieve this milestone. Our team's efforts were recognized with a presidential award, which I consider one of the proudest moments in my career. After a successful tenure at the Department of Energy, I left for the startup world because I was eager to move from Data Center to the Cloud. I worked at three different startups and enjoyed the experience, learning a lot from the fast-paced and innovative environment. This was also when my career transitioned from a senior systems engineer to a senior DevOps. I worked heavily with infrastructure as code and Terraform, and everything was on the cloud. This was also the early days of DevOps, and I saw the potential of containers, which I believe is the future of infrastructure. I even went to the first Docker conference, which had only 200 people in attendance at the time, but I knew that this was the direction the industry was headed towards. One of my last experiences in a startup was a project where we built the data analytics platform for one of the covid vaccine makers. It was a demanding and stressful experience, especially as it was right when the pandemic started, but also rewarding. I am a Lead Platform Engineer at one of the largest defense contractors in the world. I have been working on a confidential project in the research and development department for two years, and I am constantly learning and growing in my role.
As a systems engineer, I knew I had to transition from a Data Center to the Cloud if I wanted to keep up with the industry. I knew I had to take matters into my own hands and start teaching myself. I joined a group at the Department of Energy's national laboratory dedicated to renewable energy and focused on data analytics in the cloud. This helped me gain a deeper understanding of the cloud and its potential. Alongside this, I also built side projects for friends and companies to gain practical experience.
My first job in the cloud was at Dice, a career marketplace for technologists. I was tasked with moving their infrastructure from on-prem to AWS.
I would describe the experience as a "fake it till you make it" scenario, it was a challenging and stressful experience, but it was also a great learning opportunity. I spent a lot of time after work learning and attending DevOps events. I was fortunate enough to have a patient manager who taught me a lot.
One thing I've learned in my journey is that it's important to know the difference between a trend and a fad in the DevOps world. Recognizing these trends early on has led to my success in the field. In the field of technology, it's important to learn how to identify the game-changers, as there is always something new every day, and getting caught up in shiny new objects can prevent getting things done.
My role primarily involves using Kubernetes. However, we also make use of custom scripts written in Python and some new projects written in GO. I am currently working on an old project that hasn't been updated much in the last decade, which originally used Saltstack. Although we still use Saltstack, we have had to augment it with Python to get around some limitations. Additionally, we are now introducing Terraform in response to new needs.
My team consists of a small group of platform engineers and developers who have been given much autonomy to develop cutting-edge technology. We are separated from the rest of the company and work on what is essentially a startup within the company. The team comprises three people, two platform engineers and one developer with Kubernetes experience. We have recently been integrated into the company's agile workflow and use a ticketing system, virtual whiteboarding, and code reviews to stay organized and communicate effectively despite being distributed across different states. Our team has come a long way from being a one-person show and is now a mature project that is being integrated into the rest of the company.
I've realized that my team’s biggest struggle is changing the culture to adopt DevOps and platform engineering practices. It's not just about the tools; it’s a cultural shift that needs to happen for the team to understand the importance of infrastructure as code, automation, and following software development practices. We're currently facing a steep learning curve with Kubernetes. I’m trying to educate the rest of the teams about it by starting a Newsletter on Slack, creating documentation, and giving regular brown bag presentations. I am worried about the high failure rate of projects involving radical changes in how teams work, especially since Kubernetes requires developers to understand new concepts, libraries, and constraints that come with the technology. I believe the key to success is getting everyone involved early and often, including the platform engineering team, developers, and security team. By getting everyone on board early and educating them on the concepts and practices, I hope to reduce the likelihood of failure and ensure a smooth transition from monolithic to container-based systems.
#What is Your Approach to Educate and Excite Other Teams About Kubernetes? How Do You Address the Challenges That Come With it?
One of my main goals is to educate the other teams on the benefits and capabilities of Kubernetes. I understand that making the transition to this technology can be daunting for some, especially when it comes to understanding the new concepts and practices that come with it. That's why I make sure to start by providing basic information and gradually building up to more advanced concepts.
One of the biggest challenges I face is getting developers excited about the change to Kubernetes. I know that if they don't see the value in it, they will resist it.
Despite initial challenges in convincing the security and compliance team, I have received positive feedback so far. They are excited about the built-in features of Kubernetes, such as self-healing, which leads to a reduction in operational overhead and automatic application restart. However, I also understand the difficulty of getting the team to understand that Kubernetes requires a significant amount of knowledge and expertise to put into production, unlike a ready-to-use product like VMware vSphere. It's a challenge, but I believe that with the right education and communication, we can make a smooth transition to this powerful technology.
#What Resources Do you Recommend for Someone Wanting to Learn About DevOps or Platform Engineering, and What are the Key Building Blocks for Beginners?
If someone wants to learn about DevOps or platform engineering, one of the most helpful resources is to find a mentor who can guide them through the process. I also suggest that starting with the building blocks, such as Linux containers, learning about infrastructure as code, knowing how to use Git, and mastering the basics of cloud computing are essential to get started in the field. It depends on the person's background and experiences; if the person is a developer, they need to learn how to put an application into production, monitoring, backups, and high availability. In contrast, if the person comes from an operations background, it might be more challenging as it involves more code-heavy work, and you will need to pick a language like Python, learn basic SDLC and get comfortable with it; it was a mistake I made early on, and you should try to incorporate scripting or infrastructure as code in every project, even if it feels like there is no need; I also suggest picking a cloud provider and learning the concepts as they transfer from cloud to cloud, as the concepts are mostly similar.