10 Success Factors for Starting Your Cloud Journey

Andreas Wittig – 15 Jan 2020

Are you planning to start the cloud journey for your organization soon? Learn from others to turn your initiative into a huge success. Michael and I have accompanied medium-sized businesses and enterprises in their transformation projects and would like to share our learnings with you. We are consultants focusing 100% on Amazon Web Services (AWS). Our goal is technical excellence, as well as business outcomes.

10 Success Factors for Starting Your Cloud Journey

Do you prefer listening to a podcast episode over reading a blog post? Here you go!

Explain the “why”

Why is adopting cloud technologies important for your business? Explain the reasons for starting your cloud journey to all parts of your organization.

A few examples:

  • Global Infrastructure: AWS provides data centers all over the world.
  • Automation: the tools offered by AWS allow you to increase the level of automation.
  • ** Out-sourcing**: decrease friction and enhance the quality of data center operations.
  • Technology: benefit from stunning services like Big Data, Machine Learning, and many more.
  • Pay-per-Use: reduce costs by scaling infrastructure automatically.

Form a team of subject-matter experts

Start your cloud journey by forming a team of subject-matter experts for AWS. Diversity matters! Therefore, put together a group of people from different backgrounds.

Look for the following when choosing the candidates:

  • Curious about new technology in general and cloud in particular.
  • Deep knowledge about on-premises infrastructure or applications.
  • Open-minded and creative when it comes to solving challenges.
  • Speaking a programming language and expertise in Linux/UNIX is a plus but not required.

Make sure all team members have a reason to stay. Great opportunities and head hunters are waiting everywhere.

Change the way you think about out-sourcing your IT infrastructure: out-source the boring part of managing data centers and provide essential services but in-source the knowledge about your systems.

Taking cell division as an example is an option to spread the knowledge into your organization later.

Invest in training and coaching

AWS offers a wide variety of services and features. Therefore, it is a challenge to get started. Investing in training and coaching pays 1,000 times as you avoid costly mistakes.

Start with offering essential learning experiences, for example:

On top of that, you should look for a technical coach that accompanies your team for the first 12-24 months. Make sure the coach does guide your team but does not take over the implementation. By the way, let us know if you are looking for a coach. We have successfully fulfilled that role in various projects.

Keep the network simple

There are two options to connect your on-premises network with AWS: site-to-site VPN or dedicated network connection. However, doing so increases the complexity of your cloud journey a lot. And it get’s even worse, having to deal with on-premises networking adds a lot of dependencies as well. Think of firewall changes, routing, and peering.

Therefore, start with projects that provide Internet-facing endpoints only. For example, a website or a REST API. If data exchange between on-premises systems and systems in the cloud is necessary implement public endpoints with strong encryption and authentication.

Focus on security from the beginning

Security should be a priority from the beginning. It is often hard to undo wrong decisions caused by time pressure or missing knowledge later. Therefore, make sure to ask an expert in AWS security for help in the beginning.

Focus on the basics instead of buying snake oil:

  1. Implement the Least Privilege principle for administrating and accessing AWS resources.
  2. Automate rolling-out virtual machine images for patching vulnerabilities.
  3. Secure the private network in the cloud (e.g., firewall rules).

Typically, the first point is the hardest. Make sure to build strong expertise in AWS Identity and Access Management (IAM).

Managed services first!

Leverage the managed services offered by AWS:

  • RDS offers managed databases (PostgreSQL, Oracle, MS SQL, MySQL, and MariaDB).
  • Elasticache offers managed in-memory databases (memcached and Redis).
  • Elasticsearch offers a managed search and analytics engine.
  • ELB offers managed load balancers.

Push back the tendency to replicate the on-premises infrastructure with virtual machines (EC2) on AWS instead of using the managed services. There might be limitations of the managed services that do not allow a simple lift&shift of an application. In many cases, it is worth to invest some time and money to modify the app instead of replacing a manged service with self-managed services running on virtual machines.

And please do not build your Kubernetes or OpenShift cluster. Use ECS or EKS instead.

Leverage Infrastructure as Code

Automation is a game-changer! Speed and quality will increase a lot when adapting Infrastructure as Code. The effort to master and implement Infrastructure as Code will pay off many times in the future.

In my opinion, the only valid tool choices are:

Leverage production-ready modules to avoid having to reinvent the wheel constantly. Check out our CloudFormation templates or modules, for example.

Level up by using containers

Do not only automate managing your cloud infrastructure but the insides of your machines as well. Switching from virtual machines to containers allows you to do so. Also, AWS comes with first-class support for containers.

Therefore, we recommend using containers for Lift&Shift projects as well as for greenfield projects.

In my opinion, the best choice to run containers on AWS is to use ECS and Fargate.

Build deployment pipelines

There is one more thing that needs automation: the process of deploying changes to your cloud infrastructure and applications. Again, automation will increase quality and speed and decrease risks and failures. On top of that, you will be able to spread the knowledge about how to deploy a change.

  1. Use Git to store the source code of the application as well as the Infrastructure as Code.
  2. Use a CI/CD tool to deploy the application and infrastructure automatically.
  3. Implement automated tests (e.g., Unit Tests, Integration Tests, Infrastructure Tests, …).

Summary

Start with the why. Next, try to create as much freedom for your cloud journey as possible. Which means, implement barriers to the on-premises way of doing things. Also invest heavily in training, coaching, and automation.

All the best for starting your cloud journey!

Andreas Wittig

Andreas Wittig

I’ve been building on AWS since 2012 together with my brother Michael. We are sharing our insights into all things AWS on cloudonaut and have written the book AWS in Action. Besides that, we’re currently working on bucketAV,HyperEnv for GitHub Actions, and marbot.

Here are the contact options for feedback and questions.