Containers are not the answer. Just like Lambda is not the answer. Choosing the right services for your application can make a tremendous difference in its durability, performance, scalability, and especially cost. For instance, containerizing a web server that distributes static content may seem like a reasonable migration strategy, but it is actually nonsensical in the cloud. Your containerized web server will incur charges for: CPU consumption, web traffic, and container size. You’ll have to build a pipeline to test and deploy the container with multiple environments for testing and production. The Docker image will require periodic updates, which will consume development hours to maintain. As your application gains popularity, you’ll have to add more containers to handle the traffic... Could there be a better way?
On AWS, you can distribute static content directly from S3. It’s already durable and highly available. There’s no periodic maintenance required, and you only pay for the cost of storage and network bandwidth. This is just one example of how researching cloud-native services can lead to massive cost savings. We recommend doing in-depth research about the services offered by your provider to take full advantage of your cloud migration.
6. Not using IaC
Infrastructure as code is another topic that sends a shiver down the spine of the cloud-averse. Coming from on-prem, where you had to fight tooth and nail to get an extra gig of RAM on your production server… you may wonder: the AWS console is already plenty powerful, why do I need IaC?
Years ago… honestly… this was me. In fact, I’ve made many of these mistakes at one point or another, but this one I was particularly guilty of. If this sounds like you, I will simply say: you cannot imagine the power of IaC. Using IaC for a large project (or your entire data center replication) gives you a written blueprint of your architecture, which can help with project planning and bringing new engineers up to speed. For complex applications, development time shrinks considerably as changes to many services are deployed with a single command instead of hunting around in the console. Good IaC platforms (we like Terraform and the AWS CDK) track your changes using state and will only update services as their code definitions change. Not to mention, you can separate your IaC application into modules to safeguard against accidents, like deploying your database into the public subnet.
7. Trying to do it all alone
Migrating to the cloud, especially if your organization is new to the technology, can be extremely daunting. This may lead to a feeling of overwhelm and, with a lack of support, cloud paralysis. But here’s the thing: it’s okay to ask for help. Many organizations choose to hire a partner to offer cloud expertise in this scenario. The right partner will learn how your existing infrastructure works. They’ll listen to your business needs and suggest which applications are good candidates for refactoring versus containerization. When you’re on a tight budget, they’ll find the least expensive solution that meets your needs. In short: they’ll help you make the big decisions to shape the future of your infrastructure and–ultimately–your success in the cloud.
Do we sound a little passionate about this one? Well… we are! This is what we do and we’re always looking for more partners if you find your organization in need.
Wrapping up
Migrating to the cloud is a complex process that requires careful planning, execution, and ongoing management. Common mistakes can lead to increased costs and security vulnerabilities. Technical debt is hiding around every corner and your only weapon against it is knowledge.
Have a goal as you begin your cloud migration and a solid understanding of your organization’s business needs. Researching existing cloud services extensively and having a solid understanding of their use cases will help you to make a good plan. Avoid cloud paralysis by hiring knowledgeable partners and staff to break your migration into actionable chunks. Apply your cloud service research to your existing projects to determine the best migration strategy; a lift and shift will only be the best strategy in very specific circumstances. Use IaC from the beginning to speed up your migration and future development, and remember you’re never alone; we’re here if you need help.