Are you ready to Migrate to the Cloud?
What steps are
needed? What skills are needed? How fast can we move to the cloud? What are the pitfalls and concerns? All of these are great questions and the
concerns of most CIOs or whomever has been tasked with moving to the
cloud. Here is one approach to answer
these questions.
My approach
comes from the 6 R’s that Amazon Web Servers (AWS)
offers. I will modify them slightly and
add an additional R. Here is a picture
of my flowchart for the process of migrating to the cloud.
I will mention
upfront; MISTAKES WILL BE MADE! The
best design will not be the first design! The process of continual improvement will need
to take place. Get moving! Don’t let “paralysis by analysis” prevent
your cloud migration. The more
applications that you move to the cloud the more knowledge you will gain, and
the designs will get better. The best
education and training you can give your team are hands-on experience.
Which is more
costly? A misconfigure datacenter or a cloud environment. Cloud mistakes are less expensive than
on-premise infrastructure mistakes. When
building out an on-premise datacenter, capacity planning takes place and
equipment is ordered. But what if too
much capacity was ordered, or not enough?
What if the wrong type of servers, SAN or switches were ordered? There a
not too many vendors that will let you ship back your servers, switches,
SANs. Also, normally there is a 1-year
or 3-year contract with the datacenter to host your equipment. Now, think of the time invested. Contrast that to the cloud, if a mistake is
made, changes can be made instantly, thus reducing costly mistakes.
The first
step: Bring in a Cloud Architect. I have a
couple of thoughts on this. If there are
only a few applications to move, you may want to contract with a Cloud
Architect. In any other situation hire a
Cloud Architect as opposed to contracting.
You will want an Architect to be
invested in your company and not wondering about his/her next project or
stretching out your project.
How many
cloud architects? I was talking to a company that
wanted to move over 500 applications to the cloud. For a very
large enterprise companies, you’re going to want to bring in more than one
Cloud Architect and form another cloud team.
This will decrease the time it takes to migrate. The Cloud Architects will need to work and
communicate together with proper agreed upon standards. Also, keep in mind that a Cloud Architect doesn’t
have all the answers and could always use another opinion or perspective on
designing.
For small to
mid-size companies, one Cloud Architect should be enough to get started. If there is more work than one Architect can
handle, bringing in a short-term contract Cloud Architect to assist might make
sense.
No matter
how many Cloud Architects are selected, be sure to get solid documentation. Also, make sure the rest of the Cloud team has
access to the Cloud design for each application. Initially the documentation may not be understood,
but some team members will begin to understand the design over time and the
thought that went behind the decisions.
Next, start
forming your initial Cloud team. This may require some
forethought. Some companies will find
techs who don’t want to learn new skills and want to stay with the legacy
systems. While other companies may have too many
volunteers to work on the Cloud migration.
When making your selection keep in mind the legacy systems still need to
be maintained, possibly for quite some time.
As the company focuses on the cloud remember managing the legacy systems
is still critical to your business.
Select
those who are most eager to learn cloud skills.
Your Cloud team will learn along the way, but make sure to provide
online training access for those who are selected so their learning will be accelerated.
The Cloud team’s skills will increase
as they spend more time migrating to the cloud.
Select 3 to
4 developers from your software development team. Also, choose a Systems Engineer, Security
Engineer from your infrastructure team, plus a Software Architect from your
design team. The developers will become
the DevOps team. The Systems Engineer
will become the Cloud Engineer, the Security Engineer will become the Cloud
Security Engineer. The Cloud Architect
will also be a member of this Cloud Team.
If possible,
choose a System Engineer with programming experience. Keep in mind that infrastructure as a code (IaC) is the goal in your cloud
environment. Automation or IaC, will be learned over time,
but someone with programming experience will reduce the learning curve.
There is a
shortage of cloud expertise. Companies
are finding it hard to find Cloud Engineers and DevOps to hire, some companies
are developing these skills internally. Other
companies are shifting IaaS over to the Software Architect.
The size of
the cloud team will vary depending on the size of your projects. If scrum agile method is used, then form cross-functional members who can categorize the
applications into one of the R’s. The backlog
can be the list of applications and the sprint length will be how many
applications the team feels they can categorize. If Scrum Methodology is used, then the Cloud
team might be called your scrum team.
I would want
on my scrum team for the assessment: Product Owner, Scrum Master, Development Team, Cloud Architect, Cloud Security, Cloud Engineer.
In Scrum methodology all members of the team are called “development
team” regardless of what they do. The
exception is the Product Owner and Scrum Master. I mentioned Cloud Architect, Cloud Security,
and Cloud Engineer separately from the title “Development Team” because I
wanted to make sure it was understood that those skills are needed and should
be part of the team. I would make the
Software Architect the Product Owner on the Scrum Team. The members of this team could change after
each sprint based on the application and who in the company has knowledge of
the application.
This may be
overkill for a small company. If there
are only a few applications that will move to the cloud, then just have the
Cloud Architect, Cloud Engineer/DevOps and application developers meet to
discuss.
Let’s
start the first assessment! During the assessment the Cloud team needs to discover the application’s
features, function, security, communications, programming language, current
hardware, licensing, impact on the business, impact on the customers, these
items will be important when you design the cloud environment.
As mentioned
earlier, one company that I spoke with was planning on moving approximately 500
applications to the cloud. Don’t assess
all 500 applications at once. Each
iteration of the flowchart will produce more knowledge and skills.
The
assessment shouldn’t take long. Try to focus
on the low hanging fruits or your ancillary systems so you can start your cloud
migration quicker. Start with your
ancillary systems which are the best systems to gain cloud skills with and
often with the least risk for the business.
Discovery
Phase goes hand in
hand with the Assessment Phase. As the Assessment Phase progresses you may
discover things about your applications, markets, customers, or team which
could affect the categorizing of the application. For example, you may discover that your team
lacks the skills necessary to move an application. This application would then be categorized
as “Retain” for now.
Later, during
a reassessment, if the skills are developed or acquired this application would
be moved to another category. It is possible that you may discover a few
applications running that weren’t on the list.
There may be patching that needs
to be done; there may be security issues discovered. During the Assessment and discovery, it will
become clearer what category the applications should fall under. Below is my explanation of the 6 Rs and the 1
additional R.
Let’s define
the categories.
Retire – During the assessment the team
will discover applications/servers that are deprecated or soon will be. If these applications are discovered categorized
them as “Retire”. In very large
enterprise companies with many data centers this is common. Even in smaller companies a few older
systems may be discovered.
With
virtualization, spinning up multiple servers to test something is easy and happens
often. After the test is completed sometimes it is
not communicated to the server team to turn down these servers. When proper controls are not in place this
negative effect of virtualization, which is known as Virtualization sprawl, happens.
The problem will be very costly in the
cloud unless there are controls in place.
Retain – There will be some systems that
the team will determine that just need to stay on premise for now. This could be ERP systems, old legacy
systems, very complex systems, or systems that need to stay on-premise because
of licensing or security. Also, on the
first assessment this may be the largest category. To keep the speed of cloud migration moving a
“Retain” doesn’t mean the application won’t eventually move to the cloud. The “Retain” may mean, let’s wait and
reassess this application when we have more knowledge, more skills, and more
resources. This will provide less risk to the company.
Remember,
there will be mistakes made along the way.
The ideal situation would be to make those learning mistake on less impactful
and less critical systems. As you move
each application to the cloud you will gain greater knowledge, skills, insights,
with better designs. If the larger more
critical systems are moved first, the team may not have the knowledge to take
advantage of lower cost, higher availability cloud services.
Repurchase – I like to move Repurchase phase up
the list because it helps the company to think “Cloud First” and “Cloud Adoption”. During the assessment you may discover that
an application running on-premise has a SaaS solution from the vendor. Repurchase these applications as SaaS from
Vendors in the cloud. For example, move
Exchange and SharePoint to Office 365 or any other product of your choosing.
This might
be the team’s first experience working with a cloud-based software. Additionally, by shifting some of the
responsibility to the vendor this should free up staff to be able to
participate in the cloud migration.
Rehost – These are systems that are running
local but could easily move to the cloud in what is called a “lift and shift”. That mean migrating on-premise
servers/databases to the cloud with little or no modifications. There are third party tools to help with
this or you can use AWS or Azure migration tools to assist.
Some suggest
this maybe the easiest way to get your applications in the cloud, but it may
also be the least cost effective. There
are choices to reduce cost, like EC2’s spot instances, or reserve instances. Also, if the servers don’t need to be running
24x7, setup auto shutdown and startup.
For static websites, you may want to consider S3 Static web
hosting.
Replatform – This is like Rehost, but
with some modifications. It is known as
a “Lift and Shift and Tinker”. Once you
have gotten your feet wet with Rehost then it is time to lift and shift
but make some changes. For example, on
premise you may have an application server that talks to a SQL database. In the Replatform phase you may want
to move the SQL database to AWS’ RDS service or Azure’s Azure SQL service. Depending on the application you might want
to setup autoscaling with a load-balancer in front.
If you have
a website that you moved to cloud storage, you might want to put in a Content Delivery Network (CDN) to serve up your website. There are many small tweaks you can make in
this phase. As you start to make these
tweaks you increase your knowledge and experience.
Rearchitect – Some might also call this the Redesign
phase. These are the applications that
you want to rewrite to take advantage of cloud services such microservices or
serverless services that the cloud providers offer. Running function as a Service (FaaS) or taking
advantage serverless services will result in the lowest cost. Serverless and FaaS isn’t the answer for
every application, but a properly designed application running as a FaaS or serverless
will save money and reduce man hours of labor.
Reassess – You have made your first pass
through. The team’s knowledge, skills
and experience have increased. Does the
team have enough knowledge to move one of the Retain applications to the
Cloud? If not, just reassess the remaining
applications in the backlog using the knowledge that was gained from the last
migration success. Go through this
process until you can eventually move all your applications and servers to the
cloud.
There are
many things that need to be figured out with your migration, like what to use
for third party tools, automation tools, and programming languages. Plus, you need to decide on the following:
serverless, monitoring, cost analysis, tagging, security, account organization,
and others.
Support
your Cloud Team. I covered team formation earlier and I
mentioned that team skills will increase the more the cloud team works in the
cloud. There are some things that can be
done to supplement their learning.
Online courses, attending conferences, attending usergroups, and giving cloud
team members time to read best practices from the service providers.
Cloud
migration risk and concerns – as more of your technical team joins the cloud, you will have less
resources on your legacy systems. What
if those techs assigned to your legacy applications/infrastructure think their
jobs will be eliminated? What if they
feel underappreciated and they find another job? A plan needs to be in place to deal with this
risk.
Let’s
start your cloud migration – Bring in a Cloud Architect. The
Cloud Architect can help you get your cloud migration started. They will have a similar approach to the one
that I have described. A Cloud Architect
can help answer your questions and get your company started with cloud
migration.

Comments
Post a Comment