In my last post on the Application Modernization Journey, we discussed the three questions organizations should ask before starting App Modernization Programs: the “Why, How, and What”.
App Modernization Programs help us to realize the benefits when they are executed well keeping the “Why” in target during every phase of the program.
In this post, we are going to discuss four common application modernization myths:
- Lift and Shift is the best approach for App Modernization
- Shifting to cloud gives better performance
- After moving to the cloud, security is no longer a concern
- We will not face outages in Cloud
Myth #1: Lift and Shift is the best approach for App Modernization to Cloud
Many believe that Lift and Shift is the best approach for App Modernization efforts to Cloud. Though Lift and Shift works well in various scenarios, often we are lifting and shifting technical debt along with the applications. We might not realize the actual benefits with a Lift and Shift approach alone, and instead be left with more work later down the line.
For example, consider the case of moving from one home to another home. What do we do? Do we move everything that is in our home as is to the new home? No… right? We do a ‘cleanup’ to avoid carrying all old items which we no longer use. We shred old documents, donate the clothes and toys at the back of the closet, or get rid furniture that isn’t suited to the new home. This may take more time up front, but the results are a smoother move with only the most important things.
We can use the same analogy for application modernization. Instead of moving everything as it is, we can take certain actions to ‘cleanup’ before the move. We can inventory the list of applications to prioritize the most important applications as candidates for modernization. Then we may perform a refactoring initiative to change the application architectures in line with Cloud architecture before moving them to cloud.
Read More: Things to Consider with Lift-and-Shift Migrations in Cloud
Myth #2: Shifting to cloud gives better performance
One of the most common myths is that applications will always perform superiorly when shifted to the cloud. Although Cloud Platforms provide the flexibility to scale application resources dynamically, initial application architectures may not be prepared to manage the load from the level of scaling. This often causes teams to scramble to monitor infrastructure and produce mitigation plans to manage performance of applications by either scaling up additional resources or improving the application architectures.
Though we get reliable performance by increasing the size of resources, it is not always good overall. As a result, we might see surprise bills with heavy costs due to the additional resources that were provisioned to manage performance. This is where Azure Well-Architected Framework Performance Pillar comes into the picture.
Learn more: The Azure Well-Architected Framework: Performance Efficiency Pillar
Performance testing is no longer a “nice-to-have” feature for organizations. It’s important to outline the capacity and sizing of the servers that we plan to use in Cloud. When thinking about what we want to achieve from modernization, we can collect baseline performance metrics and produce agreed future-state metrics.
Organizations which prepare ahead are well positioned to embrace the cloud journey while making sure the costs are controlled. Scalability, Availability and Reliability are directly proportional to the cost. Having a clear target upfront helps plan and utilize the resources accordingly in order to avoid unnecessary costs.
In order to do so, we’ll need to consider priority of needs when it comes to an app’s Scalability, Availability and Reliability. For example, an application used in a retail setting would take prioritized considerations for dynamic scaling to make sure it can meet increased demands from customers in order to not lose business to competitors. It would also need to be both highly available and highly reliable with near real time data spread across cloud regions.
Whereas in a healthcare setting, an application needs to be available to provide better experience to patients and data is handled in a reliable and secure fashion. In this case, Availability and Reliability are given more importance.
Unless an application is mission critical, it is required to adjust the levers of Scalability, Availability and Reliability to keep the costs under control.
Myth #3: After moving to the cloud, security is no longer a concern
Many organizations consider moving to cloud the solution to improving security for their applications. While cloud providers do try to maintain robust security for their platforms, in the end it is on the consumers to implement security policies to protect their infrastructure and applications. Cloud Providers do all that is needed to provide the tools that are necessary to protect applications and services running on their platforms. Security is always a shared responsibility between providers and consumers.
In fact, organizations must invest more on security while using Cloud Providers. The entry points for vulnerabilities increase more with a distributed environment and upfront planning is needed to implement a secure Cloud Platform. Investing in the right tools for observability and monitoring is crucial and adopting Infrastructure as Code with right set of policies which validate infrastructure provisioning before creating them helps in addressing the security concerns. Having a Zero Trust mindset helps us in implementing robust secure cloud infrastructure.
Read More: Tackle Security Concerns for Application Modernization
Myth #4: We will not face outages in Cloud
The final application modernization myth many believe is that once we move our applications to Cloud, we no longer must worry about outages. Cloud Providers strive to do their best in preventing outages, but we do hear instances of outages with Cloud Providers – be it Azure, Amazon Web Services or Google Cloud.
It is tough to pin down responsibilities of outage solely to Cloud Providers. While Cloud Providers try to maintain their SLAs to provide uninterrupted services, as consumers it is also our responsibility to plan for potential outages. Though we might not be able to anticipate all types of outages, we can plan by including good Chaos Testing practices while building up Cloud Infrastructure and Applications.
Chaos Testing is a way to introduce simulated failures in our applications and observe the applications behavior and build applications to overcome these failures in a reliable way. This helps build self-reliant systems. We might also end up changing application architectures to make them available. Our applications might not be universally available if we do not make them ready to be highly available.
Let us consider this example scenario. We have a microservices which use in-memory cache to store the most requested data in order to avoid a round trip to database. Each microservice instance has its own copy of cache data. If one of the instances of microservice goes down, we would need to rebuild the cache again with proper data when the microservice instance comes up. We could avoid this by changing our application architecture to use a distributed cache, where the microservice would not need to rebuild its cache when it is up after a failure. The distributed cache can be spread across multiple regions of the cloud.
Making these types of decisions often involves cost to the bottom line but that is acceptable compared to the cost involved in support hours that we spend putting our personnel to bring our applications stable during outage situations.
Did you know? Perficient Earned Microsoft’s Modernization of Web Applications to Azure Advanced Specialization
Why Perficient?
No modernization journey is the same. We work with enterprises across industries to help establish a secure cloud foundation alongside our programmatic approach to assess, migrate, and modernize applications and data platforms at scale. As a Microsoft Gold Certified Partner, we combine our strong relationship with Microsoft and our years of experience on Azure to deliver you business solutions that help you achieve your goals.
Ready to advance your app innovation and modernization journey? Contact our team.