Don’t Let DevOps be Your Trojan Horse
Don’t let the title mislead you, we love DevOps here at Cycle. Without proper DevOps processes, building and scaling cloud-based applications can become a nightmare for maintainability.
A proper DevOps plan brings together an organization’s developers, QA support, and operations teams to pursue the goal of delivering software more predictably. An admirable goal for any team and something that can be immensely helpful for even small teams to become more efficient.
But chasing this goal can lead to unintended consequences. Not paying close attention to how you approach DevOps in your company can turn something that looks like a gift into a battle you never saw coming. So, how can you make sure that DevOps doesn’t become a Trojan horse for your team?
The best way to avoid disaster when approaching DevOps is to try and understand what your projects will need from an architectural level. Then you can match technology with those goals in a way that will provide the biggest wins.
Here are a few things to think about:
- If your deployments were fully automated, how often would you release and why?
- What pieces of the DevOps toolkit will have the most impact in the short, medium, and long term for your team?
- Will it be necessary to hire specialized engineers to accomplish these goals or can you leverage existing software?
How Often Will You Release?
Looking at the data on how often your team deploys can be a real eye-opener. You may not have the need that you are building towards and needlessly over-engineering this can be the death of a project’s budget.
If your team is making weekly updates to production, that’s amazing! It wasn’t that long ago that yearly or quarterly updates were the norm. Containerization brings with it a way to standardize environments between dev, testing, and prod. This alone will lead to immense gains in release pipeline efficiency. On the other hand, your projects that are getting weekly updates might not need single click deployments.
High Impact Units
The pieces of every single project will be different. That’s why it’s so crucial to break down these achievable team skills into small units. Each skill lends itself to the appropriate situation, but the following three skills will have the greatest impact on the success of your project.
- Infrastructure Management
The first and most valuable skill for your team to adopt in your move to DevOps is containerizing. Adopting containerization for your applications will have a profound impact on your process immediately. This technology provides environment parity across development, testing, and production without a huge upfront time cost. As soon as you have your applications containerized you’ll see a huge improvement in how your development, testing, and operations teams work together.
Infrastructure management is key to any project’s success and it falls under two main topics:
- How can we get the most out of the infrastructure our company has deployed?
- How can we audit the spend of my team and reduce the number of rogue deployments?
For the first point, cloud services have offered ubiquity for compute of many different flavors. Whether you need a system with lots of GPU power, RAM, or tons of storage there is something for everyone. At the end of the day though, the most important thing is that you can consume your newly acquired resources quickly and easily.
There are a rising number of infrastructure management tools and dashboards out there today. For example, our company Cycle, offers a single dashboard to manage infrastructure deployments from a range of different providers all in one place. This can be incredibly helpful in keeping track of what you have deployed, consuming those resources easily, and measuring server utilization and density.
Auditing spend can grow into a problem if it’s not controlled. There are times where we’ve met with team leads who can’t answer how many servers they have deployed, which provider they might be on, or what their current monthly spend is on infrastructure. This might not be a huge problem for a team of 5–10 but if it’s not something that’s taken seriously when you have a small team, it can get really out of control. Don’t let these rouge costs derail your projects.
From a project management standpoint, this is an easy one. If your providers availability zone goes down and your application is only deployed to that area, you will have downtime. This can be a deal-breaker for a lot of offerings. For our company its something we strive to keep at 0%.
Building a resilient system can be as simple as deploying your application across multiple availability zones and load balancing traffic to healthy instances. Again, here is a place where having a platform or using a tool can be incredibly helpful in automating the networking across instances. Resilience is a key factor for any customer-facing application and something your team should consider as a top objective regardless of whether you choose to fully move toward DevOps.
Running from the Status Quo
You’ve decided that the best path forward for your team is to implement DevOps practices. Staying with the status quo would leave you open to broken builds, security holes, and downtime.
How will you go about implementing these major organizational and technological changes? Let’s take a look at two direct actions you can take to jumpstart your journey:
- Hiring DevOps specific engineers.
- Leveraging existing software.
If your plan is to add engineers to ease the burden of organizational change as you move into DevOps, make sure you don’t put yourself in a bad position by hiring one person that “does everything”. This can leave your business open to being dependent on a single employee deciding not to leave.
In general, plan on initial hiring to cost a minimum of 200k in salary per year (2 engineers, each with $100k/year salaries).
If you choose to license software to solve some of your DevOps problems, using a SaaS-based tool like Cycle can help you get up and running quickly while removing the need for your team to learn tons of new technology.
This path helps your team focus on adopting containerization while the platform does all the heavy lifting involved in orchestrating your containers (resilient deployments) and managing your infrastructure.
Generally, solutions like this are charged via a license fee where you pay for the amount of infrastructure that is being actively managed by the platform. That means that your spend will scale in direct proportion to the size and needs of your project just like you’re used to with cloud-based projects.
It‘s not hard to be distracted by the DevOps hype train, but over-engineering your applications to the specs and workflows that Netflix, Uber, and Google are using can be the death of your budget.
DevOps success is up to careful planning, understanding the long term needs of a project, and focusing in on what pieces of the puzzle will garner the greatest benefit. Regardless of the adoption strategy you pick, make sure to continually weigh these points and keep a close eye on how they are impacting the lifecycle of your applications.
If you think that managing your DevOps needs with software is the best choice be sure to check out Cycle. I’ve included links to our slack channel, docs, and website below.
If you want to dive in and learn more, head over to our slack channel. Our community is growing, and our team hangs out there daily. Feel free to shoot us a message any time with your questions and we’ll be sure to respond!
Of course, for a more in-depth look at how to use Cycle, check out our documentation.