In our previous two blog posts, we compared cloud infrastructure with other popular contenders and explored how to approach the creation of a great cloud transformation strategy effectively. Now, as all stakeholders in an organization finally rally around the initiative to transform operations and migrate the business to the cloud, it’s time to see the exact practices they can take to become cloud-native.
So, what are these options, exactly? How can we perform a complete cloud transformation that best suits our unique business needs?
Which Route Should We Take to the Cloud?
Choosing the right approach to cloud transformation is probably the most critical part of the entire project.
In general, there are six unique approaches for organizations that want to migrate their business to the cloud. These migration strategies — also called the “6 R’s” by Amazon Web Services — are the following:
When an organization’s cloud migration must be scaled quickly to meet a new business case, rehosting its applications proves to be the ideal solution. In some cases, even without implementing any cloud optimizations, organizations can save almost 30% of their costs by rehosting. It’s worth keeping in mind that applications are more comfortable optimizing if they are already running in the cloud. That includes the application itself, the data, as well as the traffic.
In AWS, rehosting can be automated with CloudEndure Migration or AWS VM Import/Export tools.
When you want to change the core architecture of an application but still seek to optimize its performance to achieve some business goals, re-platforming is probably the best solution for you. Reducing the amount of time spent on database instance management can be accomplished by migrating to a database-as-a-service platform instead.
Replace the product: let go of the old and buy a new one. In most cases where product replacement occurs, organizations transition to a SaaS platform.
Refactoring / Re-architecting
If an emerging business needs to expand features, add scale, and improve performance, achieving such objectives will become more and more difficult in the application’s existing environment. When reimagining how the application is architected and developed, using cloud-native features will lead to an optimal outcome. If you’re considering migrating from a monolithic architecture to a service-oriented or serverless one, then refactoring is your best option.
After exploring an environment to its fullest extent, it is viable to ask each functional area about application ownership. It could reveal some surprising things. According to AWS, about 10–20% of organizations’ IT portfolios were no longer useful and could be turned off. Retiring obsolete systems will cut costs, decrease the area that must be secured, and let you direct your team’s attention to more critical tasks.
A golden rule in cloud transformation is only to migrate what makes sense for your business. As time passes and more of your data and systems are migrated to the cloud, the retained software percentage will shrink.
We have compiled the table below to summarize the efficiency and impact of each migration strategy on different areas:
|Strategy||Cost Savings||Operation Stability Improvement||Development Impact||Organizational Impact|
|Rehosting||Moderate operational impact, slightly higher costs||Moderate operational impact, slightly higher costs||Moderate operational impact, slightly higher costs||Low operational and cost optimization impact|
|Replatforming||Low operational and cost optimization impact||Moderate operational impact, slightly higher costs||Low operational and cost optimization impact||Low operational and cost optimization impact|
|Retire||Low operational and cost optimization impact||Not available||Not available||Moderate operational impact, slightly higher costs|
|Retain||Low operational and cost optimization impact||Low operational and cost optimization impact||Not available||Moderate operational impact, slightly higher costs|
|Repurchase||Low operational and cost optimization impact||Moderate operational impact, slightly higher costs||Low operational and cost optimization impact||Moderate operational impact, slightly higher costs|
|Refactoring||High impact on operation results in bigger cost-saving and flexibility.||High impact on operation results in bigger cost-saving and flexibility.||High impact on operation results in bigger cost-saving and flexibility.||High impact on operation results in bigger cost-saving and flexibility.|
So, which one to choose? Which is the ultimate approach?
Out of the above “6 R’s,” we found refactoring to provide the best cost-benefit ratio. Code refactoring refers to the process of restructuring existing computer code (changing its factoring) without changing how it behaves externally. The purpose of refactoring is to improve the software’s design, structure, and implementation while preserving its functionality.
Within the scope of cloud transformation, refactoring also requires a mindset change to utilize the advantages it can provide for your organization fully. You can develop more than a single set of resources in a cloud environment once a more flexible architecture is adopted through refactoring.
Keep in mind that the serverless approach is equally (if not more) important than microservices. You can focus better on key business challenges and development if more IT services are used in a fully managed, serverless architecture. It also costs less than traditional IT architecture in the cloud.
Since we have used AWS for our own and our clients’ cloud transformation (and continue using it today), we have the most experience with an AWS-driven strategy. As such, we’ve collected the options and feature sets that become available through refactoring, using AWS cloud transformation as the example:
With this direction, you can decouple the domain functionality into smaller, more manageable groups.
Database per service
A recommended solution if you want to separate data traffic and data processing from other services.
Caching / Data distribution
Data does not necessarily have to be read from the database. Within AWS, several other cache patterns exist that are worth using.
Another code level to make your application fast and service independent.
It’s not always necessary to process data immediately. If the data can wait for processing, then creating a queue for prioritizing can be the right solution.
Monitoring the infrastructure’s default KPI (CPU, memory) is not enough sometimes. We recommend adding service-level KPI to measure the app behavior as well. For example, Success / No Success responses were not only the exceptions count.
It is also worth considering how your application collaborates with other services. If you change anything within one service, then you might unintentionally affect another one.
Measuring costs during operation is crucial. This feature will help you control the unoptimized environment so that it won’t drain your wallet!
It is a simple task to process a single data record, but with batch processing, groups of several data record streams can be processed at once. This approach can also serve as a cost and performance optimization option.
Analytics, Business Intelligence
Analytics and KPI must be part of the development of any modern solution today. It is not a privilege anymore to add more intelligence to the solution, which helps us understand how our customers and the application behave, then optimize the solution according to that data for even better customer experiences.
How to Proceed and Handle Improvements?
Even if the strategy seems solid and you’ve decided on which ‘R’ route to take, there will still be room for improvements through iteration.
Wanting a ‘perfect’ strategy and waiting until everything is included will only lead to unnecessary delays, preventing your organization from launching the implementation.
The idea is to not commit yourselves to a rigorous, inflexible strategy that leaves little room for improvement. Being flexible and ready to adapt to emerging challenges will also make for a better transformation in general.
Here we have collected some areas that you’ve probably already considered and included in the overarching strategy, but which can always be improved and iterated as development progresses.
Reducing code complexity
A never-ending process that will always result in fewer issues and a more streamlined process
The purpose of this iterative improvement is the same as with the reduction of code complexity. It is done with the intent of avoiding the overcomplication of system functionalities.
Heavy computing and data processing
Ensure that data preparation is handled and streamlined on a code level. This iteration should be combined with improving heavy data processing, which requires the construction of proper databases.
IT education today is, unfortunately, all too focused on teaching only real-time data processing. However, with the cloud being capable of both asynchronous and batch processing, your IT professionals will also have to learn these processes. Cloud transformation makes a batch and asynchronous processing more viable. Adapting your system to workflows with these new types of processing also takes time and iteration. Still, in the end, that extra effort will pay off as these new data processing types can lead to significant cost reductions.
Asynchronous vs. synchronous
Taking the ability to process asynchronously one step further will help streamline your system processes—that is, if you do away with synchronous operation during the transformation. Instead, focus on using asynchronous resource access and logging wherever possible.
Data storage location
During the transformation, you will have the opportunity to decide whether you want to store data in a local or a distributed cache. However, another essential step is to let go of useless databases and API calls in the process.
The transformation yields an unparalleled opportunity to get rid of any unused resource that clutters your system as quickly as possible. Use it!
Again, these key areas are part of any cloud transformation strategy. Still, if the specifics are fleshed out during the transformation, you will not lose a single day to delay and still retain the capacity to work on them mid-development!
At Blue Guava, we help businesses unlock their true potential by helping them undergo a complete cloud migration. As longstanding Amazon Web Services (AWS) partners, we are licensed to boost and implement organizations’ AWS-based transformation and enable them to achieve massive economies of scale, reduce capital investment costs by switching to reduced operational costs, and all the while taking their business to a global level.
We have overseen several such transformations — including our very own — and can say with complete conviction that AWS provides the best outcomes in establishing a global presence for your business that is resilient, functions with high availability and simplified architecture, and leads to cost optimization across all areas.