Moving to the Cloud as is without automation - does not solve existing problems, because the code still needs to be delivered to the Cloud regularly, and therefore so-called Continuous Integration and Continuous Delivery (CICD) should be implemented. CICD pipelines have become the mainstream approach to software development across the entire IT sector and there’s no doubt that CICD has matured a lot over the years. Moving to the Cloud isn’t as easy as it may sound, it can be painful without proper planning, set of tools and can bring sudden changes into the development process and often long and unprecedented delays, which span to a degree that migration to the Cloud rarely ends.
To avoid having a terrible migration experience, managers should familiarize themselves with the most common migration challenges. Let’s now acquaint ourselves with some of them:
- CICD for Code. Migration to the Cloud is not only about how to move payloads to the Cloud - but it's also about how to deploy new releases, having automation tests for them, and validating the deployment procedures. Cloud often comes with new infrastructure, new subnets, new tooling - all that affects the deployment of the existing software. Many companies realize that they essentially have two radical choices: move everything as is to the virtual machines (EC2 instances) or rewrite everything into Cloud-native format (here might be Lambda functions, authentication services, secret management, and so on which were never used before). Based on that the way how code is being deployed (CICD for Code) will be changed significantly.
- CICD for Databases. Migrating from an on-prem database to the Cloud is rarely a handy process either. Since enterprises the migration process may span multiple months or even years, maintaining constant connectivity to the database is vital. In some cases it means that applications have payloads in both: on-prem and in the Cloud. And they both have to share the same database often due to the legacy architecture. There are multiple solutions to it: - either do replication between databases or use direct-connect which allows payloads from the Cloud to connect to the database on-prem (until it is also migrated). Depending on which solution is chosen - it will require adjustments in the CICD for the Database migrations. Worse, if there is currently no automation in the CICD process, then it has to be created. It may sound easy, although in reality automating this process may take significant time as it will change the tooling, development, and deployment process. Also, it will sometimes require a change in the engineering mindset of how teams deploy their database changes in their day-to-day activities.
- CICD for Infrastructure. Going agile, adopting, and implementing CICD pipelines to existing workflows and projects is not an easy task either. Changes to any part might need changes across several other processes and workflows, especially in large-scale legacy projects and workflows. It gets even more complex if the company uses an older legacy tech stack that is not Cloud-friendly, for example older Microsoft .NET (not .NET Core) because it is not dockerized, not virtualized, and requires Windows to operate. But even in such a situation, it is possible to make improvements by using tools like Terraform, Terragrant, infrastructure management such as Puppet.
The aforementioned three areas also often required change in Software Development Life Cycle (SDLC) process itself. Software development teams, DevOps engineers, testers will have to adjust and use new processes, tools, and environments, adapt to the new deployment processes. All that will require changes at all levels starting from the dev and QA team and ending up with the architecture team and managers.
So, migration to the Cloud is a silver bullet to solving all on-prem problems. Often if not actioned, all on-prem problems simply migrate to the Cloud. As we see, to fully become Cloud compliant the project has to evolve also by introducing proper CICD and adjusting SDLC processes. However, adhering to the CICD approach of agile software development is not always a cakewalk. There are many questions to be answered along the way, and businesses of all sizes require assistance in making their Cloud journeys. That’s why we decided to discover this topic in a series of articles dedicated to migration to the Cloud. Let's consider everything in detail in our next 3 posts.