I spent a lot of time helping teams and companies migrate their important and core applications to the cloud.
It’s a hard process between company culture and technical teams.
The cloud apps are built using technologies and tools that weren’t mainstream three-five years ago.
Cloud platforms operate differently than in on-premise centers.
The cost model for delivering cloud applications is also completely different and require several technical specialist profiles.
The best practices to build, test, deploy, and operate applications at cloud have an important advanced, but most enterprises haven’t kept up.
The most advance companies in technology needs skilled cloud technologists and learn and teach their specialist day by day.
Keeping applications and data secure is getting more challenging in cloud environments.
The software development paradigm has made a turn around software engineering.
This allows a better use of the resources that will always be adjusted to the demand and also proposes a new business model based on the “pay-as-you-go”. Another great advantage is to be able to access the service from anywhere and at any time. We can find clear examples of these models in the online applications offered by Microsoft.
When we talk about cloud computing we must always keep in mind two roles: the users and the providers of the services.
We can group the services into three categories, at the lowest level we would have the Infrastructure as a Service (IaaS) that offers a set of resources (virtual machines) on which to run applications. Then we would have the Platform as a Service (PaaS) which is intended to offer an environment in which to run applications without having to worry about the resources they can consume. Under a PaaS there always has to be an infrastructure that supports it, although it would be transparent to the application programmer who makes use of the platform. Finally, we would have the Software as a Service (SaaS), which is intended to offer applications that can be executed on a platform or directly on an infrastructure, which have the “illusion” of having unlimited resources for its execution. This allows you to scale applications dynamically based on demand without having to touch the code or application settings. Microsoft, for example, offer office suites in Software as a Service format.
-Easily maintainable and upgradable applications, services and infrastructure
-Improved IT and network security
-Lowered operational costs
-Easier and secure data movement between applications
-Operational resilience improvements
-Workforce productivity improvements
-More business agility
Steps to migrate to cloud
1) Determine the right applications to migrate
Your company may have many applications to migrate or want to migrate all their applications, but it’s essential to make an analysis of which should be migrated in the first instance.
You should consider the following factors:
Current applications status: is it well designed? Can the current technology stack be migrated to the cloud?
Team skills: What skills are required to migrate each application? Do you have them in-house? or do you need to acquire them?
Time: How long would it take to move the application?
Cost: What would it cost? Are there commercial-off-the-shelf alternatives that could accomplish the migration? low cost alternatives?
Business: Which applications are the most important to the business? Which are the easiest to move? Which moves would have the biggest impact?
What are the business stakeholders priorities? What is the business impact on end-users?
Identify the applications that would deliver the most benefits in the cloud, the low-hanging fruit opportunities where you can derive high business value rapidly, and the applications you should NEVER EVER migrate to the cloud (maybe developing a new application version or new business solutions)
3) Pick the right platform, deployment model, and tools
You need to figure out where your applications will go and what tools you will use. You don’t have to use the same cloud platform, tools, or deployment model for all of your applications, but your clients will.
When you picking a cloud provider, you should ask:
–Cost: Client budget and base cloud provider services costs. Can you forecast on-going costs?
–Popularity: Cloud provider services, community, support and documentation.
–Availability of people: Is important the team knowledge about the tools and the platform provider or how you train or staff the professionals.
–SLAs: Provider SLA level is an important topic.
–Use case: Does cloud work for your use case? do you really understand well enough to validate the need for a cloud platform?
–Lock-in: level of platform lock-in and will you couple your application to that platform?
–Company politics: Favorite provider on the enterprise side
4) Deployment models:
–Public cloud: the physical hardware is owned by the cloud provider and the applications access is public. It allows scalability and resources sharing that a single organization would require a very large effort.
–Private cloud: the physical hardware can be owned by the cloud provider or by the client, its can be customized. The applications access is private. It allows a strong security access for particular data o applications that require own company access limitation.
–Hybrid cloud: is the combination of public and private cloud. The access can be public, private or both. It’s used in cases where it may be necessary to limit access to certain resources.
5) Technologies stack
You’ll need to select the technologies and tools you will use to create your application like application life cycle, frameworks, technology management, tools, programming languages, builds management, code control, testing tools, automation, configuration management, deployment services
6) Team specialization
–Team Training: Invest in cloud focused trainings (new languages, new tools, new process, ci/cd, automation, testing, new data engines)
–Team Ramp up & follow up: specialize your team and follow them to train in technologies gap and to specialize each one in different areas of cloud techology
–Cloud Specialist: Members specialized in cloud enviroments, infraestructure, tools, support, and development lifecycle.
–Cloud Architect: Members specialized in software architecture with cloud specialization, legacy application migration and in cloud architectures design and process modernization.
–Cloud Leadership: Members specialized in lead development team with legacy and cloud specialization.
–DevOps and/or NoOps Specialist: Members specialized in CI/CD process, scripting and coding to automate manual process, environments security and deployment pipelines, application integration and infraestructure flexibility.
–Test Automation Engineers: Members specialized in testing automation. Test architecture design, performance testing, configuration management and manual testing agility
–Network Security Specialist: Members specialized in security treats and in resolving security issues.
–Data Architect: Members specialized in data architecture with cloud specialization.
–Cloud developers: Members specialized in cloud application development.
7) Involvement of end users and stakeholders
The Continuous communication is the pillar for modernization works. Your team will gain the ability to develop the features in smaller batches more frequently, so is very important the practice to include end user and stakeholder in each development cycle day by day.
8) Agile + DevOps/NoOps process
DevOps and agile methodologies combines the development and operations to emphasize communication, collaboration, and cohesion between the developer and IT operations teams. DevOps helps an enterprise deploy more frequently, maintain service stability and gaining the speed necessary for more innovation. CI/CD is an 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 (product management, architecture, software development, QA, DevOps, Operations, Testing, Security and Support). The result is an efficient, repeatable, cost effective, and high-quality set of processes that deliver consistently great applications.
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.
9) Fullstack development
The atomization of functionality, components and services and that each one uses a different technology requires that all developers involved know different and several tech stack.
It’s important know about frontend (web, mobile or any other), about backend (APIs, microservices, data), about testing, know how to automate, scripting, about infrastructure and about operations and security.
This doesn’t mean that they specialize in everything, but they do know how to interact with all this.
10) Fully modern cloud architecture with modernization
– Refactore code
– Refactore infraestructure components
– Refactore security
– Inject new modern software techniques
– Microservices to specialized functions
– APIs to manage data exchange between applications
– Modern analytics to maximize the insight
– Integrated several software products and components
– Implement agile, devops, cloud security, automation and continuous delivery
Several companies are in the process of migration although among the main problems are the difficulty of carrying specific applications to the cloud, the insecurity that private data can be processed on external machines (something partly re-curable with private clouds) or the dependency of service providers, apart from that of internet providers (becoming a critical parameter). All in all, and at the rate that “cloud computing” evolves and improves, it’s expected that in about 3 years 80% of the executive directors will be using “cloud” technologies.