Microservices
Cloud Migration

Cloud migration strategies for microservices

Around 41% of all companies worldwide currently have at least some of their IT infrastructure on the cloud. Cloud adoption by companies is projected to reach a whopping 63% within the next 18 months. Although radical, this large-scale migration does not come as a surprise. The cloud is widely acknowledged as essential to the survival and growth of technological systems. 

Why? Because it’s more convenient and efficient. Cloud-based technology comes without the hassle of storing and maintaining data physically. It can also be accessed through multiple devices with a stable internet connection at any given time and place. In addition, cloud-based systems come with a streamlined architecture that is much easier to work with and adapt to as compared to monolithic systems. One important feature that separates cloud-based systems from traditional systems in this aspect is a microservice-based architecture. 

Microservices are small, functional components of a more significant function that are capable of being executed on their own. Any action being performed on the system results from one or many microservices working in tandem. Simply put, microservices are faster and more efficient than their monolithic counterparts, so it is only fitting that they be hosted in a manner that contributes to their performance instead of impeding it. However, you must be prudent in shifting your services to the cloud. Luckily, there are many new technologies and strategies to choose from. This article explains the different factors for businesses to pay attention to when building a strategy to migrate their infrastructure to the cloud.

Understanding cloud migration

Traditionally, all of a company's software runs on-premises. This means it is situated on servers in the company's physical vicinity, be it a warehouse, an office, or a centralized server farm. Cloud platforms offer an alternative to this method by storing infrastructure and existing applications on remote servers. The partial or complete shift of your assets from on-premises to the cloud is a cloud migration process. You might, for example, be running your own data centers on-site but wish to move them to Amazon Web Services (AWS), Microsoft Azure Cloud, or a similar cloud facility.

The cloud is increasingly being preferred for its promise of modernization. Companies are running their software on outdated and thereby unreliable or inefficient machinery. Moving your services to the cloud is beneficial to their performance, and you will save more through cost savings as you must only pay for what you use. Physical servers, besides having large upfront costs, also cost a fortune to supervise and maintain - tasks that can be outsourced entirely to a third-party using the cloud. In simple words, the cloud can be seen as a borrowed virtual storage that handles all the clerical/ management problems for you. You can also choose between private and public cloud options, depending on the sensitivity of your data and your general use case.

There is a rising demand for faster, smoother applications that are best met when the services are built natively on the cloud instead of being adapted for it. By migrating now, companies are better positioned to create native applications in the future. The cloud also offers more effortless scalability and security for its end-users. Some cloud APIs like Google Cloud also offer an auto-scaling feature that allows companies to automatically scale their cloud resources depending on the HTTP traffic.

A strategy is necessary to effectuate a smooth transition to the cloud. It ensures that your services remain intact and that there is a strong compatibility between your business goals, the infrastructure you are migrating, and its existence on the cloud.

Why should you consider shifting to cloud-based services?

The problem with traditional monolithic business systems is that they simply aren’t efficient enough. The biggest cause for concern for businesses that operate using conventional systems is data security. When your company employs traditional, in-house software, it takes direct responsibility for storing and managing all business data. As mentioned before, all this data is usually stored in a physical server that is to be protected and maintained by the business itself. 

This requires you to have on-call IT teams that can constantly tackle server issues that can disrupt your business. In addition, when all this data is stored in one place, it makes it more vulnerable to third-party hackers that seek to compromise your business data for their own, often malicious benefit. The drawbacks of monolithic systems can be understood better with the help of an illustrative example:

Business X is a retail fashion store with an in-house inventory and invoice tracking system. All of X’s store data is stored on physical servers that they personally own/rent and maintain. The on-call IT team that helps with the regular maintenance of this system costs around $4,000 a month. The rent for X’s servers adds up to $500 a month. In addition, X spends on a firewall system whose pricing is somewhere between $20-$30 a month to secure these servers. If X switches to a new cloud-based SaaS system, they pay a flat monthly subscription fee (usually has a pricing of a few hundred dollars). Everything from maintenance to security is taken care of by the cloud service. This makes the entire situation exponentially more efficient and cost-effective. 

Cloud services are also much easier to manage in terms of their scalability. If your business (especially if it’s an SMB) is likely to scale up within the next few months, switching to cloud services makes both operational and financial sense. It isn't viable to add more physical servers, expand your IT team, and rework security arrangements every time you add another node (computer, data server, router, or any other system device). You need a more efficient, dynamic cloud solution that can keep evolving. Cloud-based services allow you to select a-la-carte options and craft the perfect data storage/management solution for your business on the fly. 

What to consider when building a strategy

A robust migration strategy is carefully planned and executed with few hiccups. The following are a few factors to keep in mind as you get started with the transition:

Link: https://cloud.google.com/blog/products/cloud-migration/planning-for-a-successful-cloud-migration 

Take stock

Before you can do anything else, you must figure out exactly what you currently have as part of your infrastructure. Spend some time cataloging and taking note of all the different services in your possession and your deployed assets. You must be aware of their current state, including the platforms they are running on. If you skip or rush this step, you risk leaving behind highly critical services or not knowing who is accountable for making those changes. Moving to the cloud could then become an incomplete process or one that is more complicated than what you started with. To avoid this, you should be aware of the present state of your infrastructure through and through. You can subsequently use this information as the baseline from which to commence the migration process.

Identifying goals and fit

Despite its ubiquity, a cloud architecture serves businesses differently. It may bring increased efficiency for some, while its appeal lies in faster performance for others. Whatever the case, it is worth spending time to identify what you seek from moving to the cloud and how the shift adds value to your software and your long-term business plan. Cloud platforms offer numerous different kinds of services to choose from. While one company might be interested in switching to a comprehensive business solution - a SaaS platform, others might simply look for a remote data storage and management facility. 

It is wise to keep all these options in mind when selecting one for your business.

Retire or retain

Moving to the cloud does not mean you must take everything with you. Once you have identified your current position and goals, you may realize that some services are useless or have been in hibernation for a long time. This is an excellent time to get rid of those to avoid unnecessarily populating your infrastructure. Other services, although of importance, may not be compatible with the cloud. They could necessitate an on-premises existence for various reasons, like if they need to comply with specific rules. In some scenarios, your business and architecture may benefit from adopting a hybrid cloud model that partially rests on-premises on the cloud. These are all considerations that you shouldn’t neglect as part of your migration plan.

Select your cloud provider

A one-size-fits-all approach is of little use, so doing some research will go a long way. Upon identifying your needs, weigh your options to see which service providers can best meet your software’s requirements. Be sure to look at the migration tools each one provides as well as the extent of complexity it can handle when executing tasks.

Data considerations

Be careful to ensure that any existing data is successfully moved to the cloud in addition to your applications. The migration should not result in a negative impact to your current users. We suggest thinking of each service and the related data to be transported as a package.

Security

Your security teams must be on guard and actively engaged throughout the entire process. Their involvement is essential to confirm that the cloud’s security facilities are aligned with the security needs of your software. In addition, they must provide insight on automation functions that will regularly secure your applications and data once they are on the cloud. It is also recommended that any potential data exposure risks during the migration process are closely monitored.

Team integration

Your business and technical teams must work together and be on the same page for a cloud migration to succeed. By involving everyone from the onset, you minimize the chances of confusion and contention during the migration process. It also facilitates a smoother adaptation of the cloud. Additionally, providing training and adequate resources to your employees ensures that they are upskilled.

The six Rs (strategies) of cloud migration

Broadly known as the six Rs of cloud migration, here are six important migration strategies to help you through the process. Each of these strategies is designed keeping the best industry practices in mind. These strategies ultimately aim to make migration easy, efficient, and cost-effective for your organization. 

Link: https://www.toolbox.com/tech/cloud/articles/cloud-migration-strategy/ 

Rehosting

Lift and shift, or rehosting, is a reasonably simple migration strategy. You take your existing infrastructure and export it to the cloud without making any modifications to the applications or the data. Companies usually employ a third-party tool to execute this process or create an image and export it to a container or compute instance. Containerization is a viable option as the container does not include the operating environment of the service, making it easier to migrate.

The value of lift and shift lies in its aversion to risk. There is no need to modify or rewire any part of your infrastructure, so there is little to worry about its standalone performance once migrated to the cloud.

However, if your current on-premises environment is not truly representative of what the cloud is like, you will have to put considerable effort into your lift and shift strategy. For example, if you are running on bare metal virtual machines, moving into a cloud Kubernetes cluster can be arduous. In this case, how do you make a smooth transition? Lift and shift is probably not the best approach for you. Also, if the services on your platform have layers of dependencies, lift and shift might not work. 

On similar lines, lift and shift was a popular method in the earlier days of cloud computing. However, with its evolution, companies are increasingly resorting to other methods of migrating their applications to the cloud. Even if a service can presently be exported as-is, it is worth thinking about the long-term consequences.

Re-platform

Replatforming is a suitable alternative for applications that require a different operating environment in the cloud. The services remain mostly unchanged, save for a few modifications so that they can be integrated with the cloud and make full use of its offerings. It serves as a middle ground for those whose needs are not met by a lift and shift but do not need to re-architect their software. Also known as the ‘lift, tinker, and shift’ strategy, replatforming simply requires you to make a few configurational changes to your applications to suit the cloud environment better. This gets the job done without the need for a complete reworking of the system’s native architecture.  

Re-architecture

If a lift and shift or re-platforming strategy seems too simplistic for your migration needs, re-architecture may be what you want. It involves breaking down and re-architecting your applications to better suit the cloud before executing the actual shift. It is a demanding process and making sure it works necessitates deep knowledge of the cloud. 

Re-architecture is especially useful if you seek to improve or make changes to your services at this point. This could be because the existing environment does not provide ample opportunities for improvement. Or, you might be required to comply with security standards that are only available on the cloud. Either way, a carefully-executed re-architecture process can unlock a lift or shift or a more phased rollout, depending on your infrastructure and business needs. 

As part of your re-architecture process, you can take the on-premises environment and migrate your infrastructure to Kubernetes. Then, once everything is on Kubernetes, you perform a lift and shift and move to a service like Elastic Kubernetes Services (EKS) on Amazon Web Services (AWS). This way, you have fewer overheads to deal with, less latency, and migration to the cloud is faster.

Another possible approach is architecting it so you can containerize the services. Then, you can use new technologies like ECS or App Engine to deploy them.

Re-architecture prepares your applications for the cloud, but it also ensures that they will not run into any issues vis-à-vis compatibility in the future. Developing a deep understanding of the cloud may prove laborious at first. Still, by preparing for the long-term, you are freeing up time and energy that can be better spent on adding new functionalities or fixing other bugs. That being said, re-architecture can also occur post-migration once the team has had a chance to explore the cloud and familiarize themselves with it. However, re-architecture can change the observable behavior of your services as it makes large changes to the code to improve the performance and scalability of your service. This can be risky if you aren’t careful. A more subtle approach in the form of refactoring can be used in an incremental way through a series of small steps to modify your services. Refactoring helps to improve the readability of the code. 

Re-purchase 

Re-purchase or ‘drop and shop’ requires you to simply wait out the license period on your on-premise software and switch to a cloud-based SaaS solution. This entails the purchase of a comprehensive cloud solution that not only hosts but also provides business services for you. 

Re-purchasing can prove to be an effective migration strategy if your existing systems aren’t fulfilling your business’s functional requirements. Remember that it can be a costlier migration strategy that pays dividends in the form of long-term cost savings. While purchasing an entirely new system can seem like an absolute waste of resources at times, sometimes it’s what your business really needs. Assess all your systems and their performance closely before making the decision. A few key questions you need to ask yourself while considering re-purchasing are: Do my existing systems provide the functionality I’m looking for? Are they efficient enough in doing so? What are the added benefits of cloud based systems? A repurchase should essentially justify itself through the extra functionality it provides. For example, switching to a cloud-based CRM like Hubspot would make sense if your existing CRM doesn’t provide or support the features you need to make client onboarding and follow-ups easier. 

Retire 

The ‘retire’ approach is another simple approach that involves, as the name suggests, dropping the IT systems that you cannot move to the cloud with you. This might be done for several reasons. First, the said IT systems could be too complicated and would require too much effort to shift to a cloud through the re-platform, or the re-architecture method. They could also simply be irrelevant or at least not relevant enough to the company’s future functioning. 

It is essential to keep in mind that deciding whether a system should be retired or not is a largely speculative process. While some systems might not be completely obsolete yet, retiring them simply makes more fiscal and operational sense than struggling to revamp them for the cloud. Your company's high-level management and employees who directly interact with the system should consider the decision to retire an IT system. If the system has a few functional aspects essential to the company's smooth functioning, you can look to rebuild small, cloud-native modules with those features or choose cloud services that offer similar ones. 

Retain/the piecemeal approach

Both the lift and shift and re-architecture strategies export the entirety of the infrastructure in one instance. Instead of a one-time cutover, the piecemeal approach involves initial migrating workloads onto the cloud. By adopting a continuous improvement strategy, you can begin with the least complex services and make your way towards migrating the most complex ones. This allows you and your team time and space to familiarize yourself with the workings of the cloud. You can begin by moving batch jobs or services not exposed to your customers to the cloud. Publish-subscribe patterns, event streaming consumers and processors, and serverless processing functions are a few other components that can be exported in the initial stages.

With time, you can migrate more and more of the infrastructure into the cloud until everything you want is there. After a point, you can also consider pushing any new builds into the cloud by default, whereas existing on-premises components of your infrastructure and legacy applications and legacy systems can continue as is. This is a kind of limbo in which you support both on-premises and cloud environments. Alternatively, this is what a hybrid cloud model may look like. You can instruct a load balancer to route traffic to the appropriate services, whether on-premises or on the cloud.

Snapshot of the migration process 

Now that you understand the different strategies involved in cloud migration let’s go over a brief snapshot of the recommended process. These guidelines have been prepared while keeping the best industry practices in mind to ensure a quick, hiccup-free migration for your systems. 

Pre-migration 

The pre-migration process involves getting all of the pre-requisites, including migration strategies and designs, in order before the commencement of the actual procedure. The steps here are:

  • Chart your entire IT portfolio to figure out your system’s strengths and weaknesses and how migrating to the cloud infrastructure can help fill those gaps. 
  • Designing your migration strategy.
  • Selecting the right cloud-service partner based on your business’s current and future needs. 
  • Preparing your team and IT systems for the migration. 

Migration 

  • Seek to leverage automated migration tools and assistance migration services (primarily related to the onboarding process) the vendor offers whenever possible. 
  • Track and monitor the process vigilantly. 

Post-migration 

  • Constantly test and validate immediately for system optimization. 
  • Take any and all queries to the customer support team and make sure all problems are solved before your employees start using the cloud system.

Getting started

Armed with a well-planned cloud strategy, you will face fewer challenges when exporting your services to the cloud. Successful migration to the cloud is virtually impossible to achieve without first taking stock of your existing services and their data. Doing so ensures that your plan is relevant to your goals. What migration strategy you choose depends on a number of factors like your current IT assets, the functionality they offer, your current and future business goals, and the efficiency of your existing systems. 

We recommend conducting thorough market research before choosing a cloud vendor for your business at Cortex. The first thing to do here is to figure out what kind of cloud-based service would be the best for your business case - an IaaS (Infrastructure as a Service) system, a PaaS (Platform as a Service) system, or a SaaS (Software as a Service) system. You can choose to stick to either one of these or a combination of them. 

Cortex’s tools help you shift your microservices to the cloud in an organized and stress-free fashion. Managing a multitude of microservices is no easy task, but Cortex’s service catalog facilitates the process and helps everyone in your team be on the same page. Once sufficiently informed about your present position, you can move on to the next step in planning your migration to the cloud.