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.
Cloud benefits
-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?
2) Priorities
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.