At Optimoz, we spend a lot of our time helping companies migrate their important applications to the Cloud. It’s harder than you might think. Most Cloud applications are built using technologies and tools that weren’t mainstream five years ago. Cloud platforms operate completely differently than in on-premise data centers. The cost model for delivering cloud applications is also completely different. Best-in-class methods for building, testing, deploying, and operating applications have advanced significantly, but most enterprises haven’t kept up. The need for skilled Cloud technologists far outstrips the supply. Keeping applications and data secure is getting more challenging.
So, if getting your applications running well in the Cloud is so hard, why do it? Well, if you do your job well, there are huge benefits:
- Easily maintainable and upgradable applications.
- Improved IT and network security.
- Lowered operational costs.
- Easier and secure data movement between applications.
- Improved operational resilience.
- Improved workforce productivity.
- Business agility.
Therefore, with these big benefits in mind, let’s outline the six, critical success factors for operating your business in the Cloud.
- Determine the right applications to migrate.
Your enterprise probably has a large number of applications that would appear to be worth moving to the Cloud. Your team needs to perform a portfolio analysis to determine which applications are the best candidates. You should consider the following factors:
- The current state of each application – Is it well architected? What’s the state of the code? Can the current technology stack be migrated to the Cloud?
- What skills are required to move each application? Do you have them in-house, or can you easily acquire them?
- How long would it take to move the application?
- What would it cost?
- Are there commercial-off-the-shelf alternatives that could accomplish the same thing for the same or a lower cost?
- Which applications are the most important to the business?
- Which applications are the easiest to move?
- Which application moves would have the biggest impact?
- What are the business priorities of your stakeholders?
- What is the business impact on end-users?
This analysis should provide you with a good understanding of the Cloud of your application portfolio – identifying (1) the applications that would deliver the most benefits in the Cloud, (2) the low-hanging fruit opportunities where you can derive high business value rapidly, and (3) the applications you should NEVER EVER migrate to the Cloud.
- Pick the right platform, deployment model, and tools.
Next, you need to figure out where your applications will go on the Cloud and what tools you will use to make them Cloud ready. You don’t have to use the same Cloud platform, tools, or deployment model for all of your applications, but most enterprises will. In picking a Cloud provider, you should ask the following questions:
- Cost: What is your budget? Is cost or functionality a primary factor? Can you accurately forecast on-going costs?
- Popularity: How popular is this cloud provider in general and for the type of application you’ll be migrating? AWS, Azure, IBM, and Google Cloud all have the scale to serve almost any need.
- Availability of people: How is it to train existing staff on the provider’s technologies for both operations and development? And can you find people who have done successful projects with that provider?
- SLAs: What level of SLA does the provider give for the services you’ll be using? How does the provider deal with large-scale outages that affect hundreds or thousands of customers?
- Use case: Does the Cloud work for your use case, and do you really understand your use case well enough to validate the need for a Cloud platform?
- Lock-in: Are you comfortable with the potential level of platform lock-in? Will you tightly couple your application to that platform?
- Company politics: Is there a favored provider on the business side of the enterprise that you don’t know about?
There are multiple deployment models for migrating your applications to the Cloud:
- Public cloud: based on shared physical hardware owned by a cloud services provider. The biggest advantage to choosing a public cloud for your Cloud-based application is that you pay only for the computing resources you actually use. Other benefits include high deployment speed and flexible scaling options based on your business demand. A public cloud solution is good for applications with dynamic business growth and a limited budget. You also have to consider a different security and cost model for the security and availability of your Cloud-based applications.
- Private cloud: offers similar flexibility and scalability with the advantage of being able to store your most sensitive data in an optimally secure Cloud environment. A private cloud can be hosted either on-site or in a service provider’s data center. Computer and storage components are customized for your particular business requirements. A private cloud solution is usually best suited to the Cloud=based applications of bigger companies with rigid data obligations and slightly more predictable business demand.
- Hybrid Cloud: Is the combination of two or more distinct cloud infrastructures (private, community, or public) that remain unique entities, but are bound together by standardized or proprietary technology that enables data and application portability. In essence, this means managing a public and a private cloud as one, or at the least being able to use management tools across the two environments. The advantage of a hybrid cloud is that you can store data in a more secure private environment, while accessing the features of the public cloud. Note, however, that hybrid Clouds are harder to manage and usually more complex and expensive to operate.
Lastly, you’ll need to select the technologies and tools you will use to create your application. These tools span the application lifecycle and include frameworks, technology management, programming languages, IDEs, build management, automated testing tools, configuration management, deployment services, and application management. Some tools work best with particular Cloud providers, and their capabilities change frequently. It is likely that some of the tools may vary from application-to-application.
- Put the right team in place.
Here’s the list of positions your enterprise will need for each application you want to migrate to the Cloud:
- Technical leadership
- Product management and business analysts – even for internal applications
- Cloud & software architects
- Software engineers
- QA Engineers
- DevOps specialists
- IT operations professionals
- IT and network security professionals
It’s a long list of positions, and chances are good that your enterprise won’t have the Cloud-specific skills inside of each position. You’ll need to take several actions to make sure your teams can successful:
- Skill up internally – Most technologists want to learn new things that will (1) make what they build better and (2) make them more marketable. Invest in Cloud-focused training that enables your team to get up to speed quickly. You should concentrate on areas, such as:
- Modern, Cloud-oriented programming languages – Ruby-on-Rails, Python, Java
- Cloud provider certifications for architecture, infrastructure, and platform services.
- Security and privacy – related to storing and using data in the Cloud.
- DevOps and CI/CD – to ensure successful execution of the agile delivery process both in application development and post-release operations.
- Data management and analytics – Hadoop, Spark, and several other large-scale open source data science tools.
- Industry-specific certifications on Cloud platforms – usually related to the use of data in highly regulated markets. Major Cloud providers offer certifications for healthcare, finance, and several other industries.
- Find trusted partners – who bring expertise in areas where you lack skills. There is a very high likelihood that you will need outside help for a significant help for parts of your application migration projects. Your key partners should be able to work across the application development lifecycle. More than likely, your partners work in blended teams with your employees under the direction of your senior technical leaders.
- Involve stakeholders and end-users in every step of the process.
It’s standard practice during the development of a new application to gather requirements from stakeholders and end-users. It’s less common to integrate stakeholders and end-users into the development process every step of the way. Continuous communication enables your team to build the right applications and to improve them rapidly after initial release. Bad communication might result in you reverting to your legacy, on-premise infrastructure and applications, while your competitors are making significant progress in the Cloud.
Continuous communication is also essential when implementing agile development and DevOps processes. Your team will gain the ability to introduce new functionality in smaller batches more frequently. In fact, you will be able to introduce new features without taking the application down for maintenance. Data will move more easily between applications using APIs, too. Some of your applications will become mobile-centric, which will dramatically change how they are used.
- Agile + DevOps enable the successful migration of applications to the Cloud.
Most companies have been using agile processes to drive application development for several years now. DevOps and CI/CD processes are an important companion to agile and can make migrating, modernizing, and operating your applications in the Cloud easier, more reliable, and cheaper.
DevOps combines the software development and operations disciplines to emphasize communication, collaboration, and cohesion between the developer and IT operations teams. By integrating these teams, DevOps helps an enterprise deploy software more frequently, maintain service stability and gaining the speed necessary for more innovation. DevSecOps enhances DevOps function by inserting a focus on security into every role and process involved in building, updating, and maintaining applications. Continuous Integration / Continuous Delivery (CI/CD) is a software engineering approach, where teams work together to produce software in short cycles and then ensure that the software can be reliably released at any time. A successful CI/CD process connects the work of all of the groups involved in software development – product management, architecture, software development, QA, DevSecOps, Operations, and Support. The result is an efficient, repeatable, cost effective, and high-quality set of processes that deliver consistently great applications.
The combination of agile, DevOps, and CI/CD enables your team to set & meet expectations, measure progress, deliver fast results, increase reliability, improve security, lower development and operations costs, and spot and solve operational problems early.
- It’s not just a lift-and-shift. Plan for multiple major releases over two to three years.
A successful migration involves not only moving the application to Cloud infrastructure, but also modernizing the application. This involves injecting modern technologies and architectural principles, so that your team can continue to enhance and maintain the application over time. The initial lift-and-shift of the application is just the first step. You make enough changes to get the application to work in the Cloud. For example, you would need to get the application to work with containers and embed Cloud-centric security approaches. Lift-and-shift also allows you to retire your on-premise infrastructure, which saves money and frees up staff to work on new, Cloud-related things. The real payoff comes when you have refactored your application to be truly Cloud-centric. Here’s how you know you’ve built a fully modern Cloud application:
- Refactored code, infrastructure components, and security throughout the application stack to operate with high performance and reliability in the Cloud.
- Injected modern software development techniques to prolong the useful life and supercharge the performance of the application, including:
- Microservices that perform specialized functions, such as payments, with high reliability.
- APIs to manage seamless data exchange with other applications.
- Modern approaches to analytics to maximize the insight gained from data in the application.
- Integrated open source and commercial software products and components into the application to improve performance, time to delivery, and upgradability.
- Implemented agile, DevOps, Cloud Security, and Continuous Delivery to ensure that:
- You can deploy new capabilities frequently with high reliability by eliminating bottlenecks in the application development process that can cause delays and decrease application quality.
- You implement best-in-class security approaches to ensure that your enterprise, data, and users are protected.
- You gain high performance from your applications while operating them efficiently and economically.
In a nutshell, an API is a set of functions that allows the sharing of data between independently run applications. Over the past 24 months, more enterprises have begun to modernize their applications by adopting an API (Application Programming Interface) first...
Deloitte, OPTIMOZ and USCIS discuss the patterns and anti-patterns for achieving the right-sized API governance approach for your organization from the show floor at Google Cloud Next ’19. https://youtu.be/eUT-MgG7yv0
By 2023, 80 percent of new application starts will be in the Cloud, and some exuberant analysts are predicting that the creation of new, on-premise data centers will end by 2025. In addition, enterprises are migrating existing workloads to the Cloud at a rapid...
Driven by the power of the Cloud, the software development process – and development lifecycles - is transforming. Downtime is becoming a thing of the past with highly available architectures and immutable infrastructure. The scale of utilization is increasing as...