Using Heroku is like living in a fancy housing development with an HOA; it’s safe, predictable, structured — and comes at a premium.
Heroku has intuitive dashboards, clear user guardrails and structured development processes baked right in. For many companies — particularly those just starting out — this type of infrastructure is worth the price. However, as companies scale and their development needs become more complex, Heroku becomes restrictive and expensive.
For companies that fit the latter profile, it might be time to begin the process of migrating to Kubernetes. But what should they consider before they make the jump?
One of the main benefits of Heroku is that, overall, it's incredibly simple. This is evident in its:
In Kubernetes, many of these operational functions are not inherently built into the platform. As a consequence, the majority of companies on Heroku probably don’t have a dedicated DevOps resource. If these companies choose to start migrating to Kubernetes, they will need to take a deep dive into their current Heroku operational structure, note what they like and don't like, and prepare to implement these structures themselves in Kubernetes. For many, this will mean hiring or training someone to become a dedicated DevOps resource.
For most development teams, there will come a point where you need more flexibility than Heroku has to offer. To revisit the housing development metaphor, you might really want to add a second floor to your house, but the HOA says "no" because it doesn't match the neighborhood. Likewise, your applications on Heroku might service so much traffic that it's time to expand, but Heroku doesn't allow it due to operational limitations and increased expenses.
This is why Kubernetes is so exciting; in effect, it has the ability to become a customized PaaS builder. There's no HOA telling you what to do here; it's all you. But that doesn't mean you're alone. There's a lot of crowd-sourced community support for Kubernetes users, including dedicated Kubernetes management service providers.
More than anything. Kubernetes offers a customized development infrastructure. This means you can model the best parts of Heroku in your new infrastructure, while abandoning the parts that you found limiting or unimportant. As you continue using the platform, you can keep refining this process to ensure that your development scales efficiently and securely.
From a tactical standpoint, Kubernetes also allows you to scale your application in response to arbitrary events (unlike Heroku, which relies solely on latency metrics). You can also create custom deployment strategies, e.g. to perform blue-green roll outs or holdback experiments.
Kubernetes also helps you answer some key questions, such as:
Ultimately, you get out of Kubernetes what you put into it, so don't skimp on preparing and implementing resilient infrastructure for your team.
If you're ready to make the jump, you'll be pleased to find out that Kubernetes is (mostly) cloud agnostic. Kubernetes is compatible with Amazon, Google and Microsoft cloud services, meaning the majority of companies can keep their data in the same place during the switch.
Before you start migrating to Kubernetes, you'll want to diagnose which areas of your development infrastructure are the most important to configure in Kubernetes. Here are some questions that will point you in the right direction:
The answers to these questions will identify the most important areas you'll need to address with your Kubernetes infrastructure.
The key to a successful migration is preparation, preparation and more preparation. If you're used to having a very structured, opinionated infrastructure, the total freedom of Kubernetes can be overwhelming.
For many companies, it's easier to hire a Kubernetes management firm to help with the migration instead of doing it all on their own. These companies will assess your current development processes and needs, and create a plan to reflect these priorities in your new Kubernetes infrastructure.
Additionally, these companies can deploy automation in the building process to help shorten the migration time from 6 months to just 6 weeks. And, with lots of preliminary testing and the use of DNS cutovers, the actual downtime associated with a migration can be as little as 60 seconds.
Want to learn more about the Kubernetes migration process? Check out our webinar by clicking the button below:
Ready to make the switch? Learn how Fairwinds help answer your questions about a potential migration!