Moving to the cloud as is, without automation, does not solve existing problems. The code still needs to be delivered to the cloud regularly. Therefore, the so-called Continuous Integration and Continuous Delivery (CICD) should be implemented. There's no doubt that CICD has matured a lot over the years. But moving to the cloud isn't as easy as it may sound. It can be painful without proper planning and a set of tools. Migration can bring sudden changes to the development process. It often leads to prolonged and unprecedented delays, which span to such a degree that migration to the cloud rarely ends.
To avoid having a terrible migration experience, managers should know about 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 there. It's also about how to deploy new releases, have automation tests for them, and validate the deployment procedures. Cloud migration often comes with new infrastructure, new subnets, and new tooling. All of that affects the deployment of the existing software. Many companies realize that they essentially have two radical choices. The first is to move everything as is to the virtual machines (EC2 instances). The second is to rewrite everything in cloud-native format (here might be Lambda functions, authentication services, secret management, etc., which have never been used before). Based on that, the way code is deployed (CICD for code) will be significantly changed.
- CICD for databases. Migrating from an on-premises database to the cloud is rarely a convenient process either. The migration process for enterprises may span many months or even years. Thus, maintaining constant connectivity to the database is vital. In some cases, it means that applications have payloads both on-premises and in the cloud. And they both often have to share the same database due to the legacy architecture. There are multiple solutions to it. You can either do replication between databases or use direct-connect, which allows payloads from the cloud to connect to the database on-premises (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. But in reality, automating this process may take significant time. It will change the tooling, development, and deployment processes. 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 into existing workflows and projects is not a simple task either. Changes to any part might require changes across several other processes and workflows. It especially concerns 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) since 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, and infrastructure management software like Puppet.
These three areas also often involve a change in the Software Development Life Cycle (SDLC) process itself. Software development teams, DevOps engineers, and testers will have to adjust and use new processes, tools, and environments and adapt to the new deployment processes. All that will require changes at all levels, starting with the development and QA teams and ending with the architecture team and managers.
Migration to the cloud is the silver bullet to solving all on-premises problems. Often, if not actioned, all on-premises problems simply migrate to the cloud. As we see, to become fully cloud-compliant, the project also has to evolve by introducing proper CICD and adjusting SDLC processes. However, adhering to the CICD approach to agile software development is not always a simple job. Businesses of any size can face challenges during the process of cloud migration. We know the potential obstacles of the process, since we have years of experience helping companies with it. We decided to uncover this topic in a series of articles dedicated to migration to the cloud. Read our next blog posts to find out more.