Over a million developers have joined DZone.

Stay out of the Rain, Episode 1: Meet the Unexpected Challenges You'll Face When Moving to the Cloud

DZone's Guide to

Stay out of the Rain, Episode 1: Meet the Unexpected Challenges You'll Face When Moving to the Cloud

But, if you read this article, maybe they won't be so unexpected. Take a look at what's waiting on the other end of cloud computing.

· Cloud Zone ·
Free Resource

Discover a centralized approach to monitor your virtual infrastructure, on-premise IT environment, and cloud infrastructure – all on a single platform.

"Stay Out of the Rain" is a series of essential insights for modern companies looking to release software faster and with higher quality, across ever-changing and complex environments. Written by XebiaLabs Chief Product Officer, former Forrester Research Principal Analyst, and long-time software guru Robert Stroud, this series lays down a clear path of DevOps best practices for moving to the cloud, flags the puddles to avoid, and shares secret shortcuts to get you back on track when the inevitable thunderstorm strikes. Read on and let Rob teach you how to stay out of the rain!

The fact that more and more organizations are moving to cloud-based infrastructure is no secret, but the reality is that cloud adoption is growing even faster than predicted. Organizations in every industry, from finance to manufacturing to healthcare, are embracing the cloud-whether they're small startups or huge enterprises serving millions of users.

In 2018, Forrester "predicts that more than 50% of global enterprises will rely on at least one public cloud platform to drive digital transformation and delight customers."

And according to Gartner, "as of 2016, approximately 17 percent of the total market revenue for infrastructure, middleware, application and business process services had shifted to cloud... Through 2021, this will increase to approximately 28 percent."

At XebiaLabs, our customers are no different; they're investing in public, private, and hybrid cloud solutions to reduce infrastructure costs and gain flexibility. And they're telling us that moving to the cloud isn't as simple as it sounds in strategy planning meetings. When it's time to really migrate applications, their teams run into a number of issues that threaten to slow down their cloud initiatives.

1. Managing Cloud Configurations at Scale Isn't Always Easy

Our experience with organizations that roll out cloud across teams confirms that "moving apps to the cloud" isn't a one-and-done task. There's a lot of learning and error-prone setup work that teams have to do by hand: configuring network interfaces, public IP addresses, network security groups, virtual networks, security rules, subnets, route tables...and potentially more. Plus, the implementation details are different for every cloud platform. Teams lose time tweaking, troubleshooting, managing, and maintaining configurations across applications and environments. They'd rather be coding!

2. Cloud Services Aren't as Fully Integrated as You Might Expect!

Most teams dive straight into the setup that's actually needed to run their applications. They then discover that configuring the cloud environment to support them is so complex that getting an application up and running means consuming 10 or 20 different cloud services that aren't always fully integrated with one another. Weaving a working application out of the tangled web of cloud services and ensuring that those services work together properly costs teams even more time and makes migrating each new application to the cloud as painful as the last.

3. Cloud Costs Explode to Consume All Available Budget and More

The promise of access to pay-as-you-go infrastructure is appealing; that said, it's hard to predict the resources and bandwidth that you'll need in the future. So, pay-as-you-go plans might save or might cost you more money than you envisaged. This makes it hard to price-compare between cloud providers, and it means that costs can add up faster than teams realize if they're not closely monitoring their cloud usage and taking action when it exceeds their budgets.

4. Lock-In Remains a Trap

The cloud landscape is constantly changing as providers roll out new platforms and services. Our customers want to be sure they have the flexibility to move between vendors so that they can take advantage of cost savings and new cloud products. But making release and deployment processes truly cloud-agnostic is an ongoing technical challenge. Teams that successfully lift and shift applications from on-premises infrastructure to the cloud might find that they're not much better off in the cloud because they're locked into a particular platform or provider.

5. Security Cannot Be an Afterthought

Cloud providers should be congratulated for elevating encryption as a vital security measure, but our customers are realizing that there's more to consider if they want to ensure applications are fully secure. Many organizations assume that the cloud provider will take care of security so that it's "just there"; but some have learned the hard way that insufficient security exposes them to extreme risk.

Cloud-based environments and the applications that run on them have to be hardened against potential data breaches and hackers that abuse cloud services. Running applications in the cloud makes it more important than ever to bake secure development practices and compliance checks into the release and deployment process.

Transition to the Cloud While Staying Dry with ARA

The good news is that the right Application Release Automation (ARA) solution will keep the cloud from raining on your DevOps parade.

ARA helps organizations efficiently manage and optimize release pipelines by providing control over the release process and by integrating the tools in the software delivery cycle. With ARA, you can accelerate delivery while getting enterprise-level scalability, reusability, and standardization, so you can optimize the benefits that cloud-based infrastructure has to offer.

Managing Complexity at Scale

Migrating applications to the cloud doesn't automatically eliminate the complexity of releasing, deploying, and running them at enterprise scale. ARA provides a foundation that helps you manage complex cloud environments by centralizing configuration data, reducing duplicate work and promoting reuse of the right cloud configurations. An ARA solution also empowers you to enforce security requirements even as your application landscape gets more complex, by standardizing on release processes that have security and compliance checks built in.

When you can map and abstract cloud configurations that are vetted and secure, you can immediately deploy the same applications on a variety of clouds like AWS, Azure, and Google, and avoid vendor lock-in.

Any Cloud, Any Time

Avoiding vendor lock-in and achieving cloud independence isn't just about centralizing cloud configuration data; you also need a way to decouple applications from infrastructure. An ARA solution that automatically models deployments makes your applications portable. You can take workloads that are already running on-premises and deploy them anywhere-whether that's on a public, private, or hybrid cloud-and you gain the flexibility to move them as your cloud choices evolve and change.

Predictability of Cloud Costs

To stay on top of cloud expenses, you have to know what's running where. Real-time status information is a must for monitoring your cloud usage, and historic reporting across your complete software delivery pipeline can help you investigate overages. You can give development teams the power to spin up cloud instances quickly and easily as part of their release pipelines, while still controlling cloud usage and saving money by automatically de-provisioning instances that are no longer in use.

Learn how to auto-discover your containers and monitor their performance, capture Docker host and container metrics to allocate host resources, and provision containers.


Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}