Stay out Of the Rain, Episode 3: Cloud Challenges for Application Developers
Stay out Of the Rain, Episode 3: Cloud Challenges for Application Developers
Shifting applications to the cloud on an enterprise scale produces a number of challenges to face. Check out some considerations here.
Join the DZone community and get the full member experience.Join For Free
Learn how to migrate and modernize stateless applications and run them in a Kubernetes cluster.
"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. The 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. Rob Stroud, our former CPO, wrote this blog post before passing away in September of 2018. Rob was deeply connected with the DevOps community, and we feel certain that he would want us to continue to share his knowledge and experiences with you.
As cloud adoption accelerates across the software industry, application developers face new challenges. How do they adapt existing applications to work in the cloud? And how will a cloud-first development approach for new applications impact their work?
In Episode 2, we discussed how access to affordable cloud-based resources can facilitate improvements in development and test processes. As a result, many organizations are taking a cloud-first approach when writing new software.
However, we also saw that preparing applications to run in Production-ready cloud environments at enterprise scale presents a variety of complex challenges. And that's not even the full story. There are more challenges that further complicate the landscape for application developers...
1. Existing Applications Must Be Refactored for Cloud Environments
One of the biggest challenges when moving to the cloud is migrating applications that are not cloud-native. This first requires a decision on whether to "lift and shift" or to refactor each application. Based on industry feedback, simply "lifting and shifting," while getting you to the cloud quickly, will also lead to the scenario that the application is not effectively tuned. Regardless of the approach chosen, the transition from on-premises infrastructure to the cloud means troubleshooting and resolving problems along the way. It might even mean re-architecting or rewriting parts of an application before the migration process can begin.
Based on our experience, the challenge of migration often initially falls on development teams' shoulders, which means that developers are responsible for figuring out how to successfully deploy applications on the cloud and how to upgrade, patch, maintain, and tune them.
2. Legacy Applications and Mainframes Aren't Going Away
When evaluating the costs and benefits of transitioning to the cloud, you'll probably find that you have applications that will not benefit from being migrated, either for technical or for strategic reasons. For example, mainframe use is increasing; according to Compuware and Forrester, 64% of organizations using mainframes today will be running more than half of their business-critical workloads on the mainframe by 2019 (from Guess What? Mainframe Use Is Growing, But Challenges Remain Unsolved by Christopher O'Malley, 26 July 2018).
When building delivery pipelines and defining processes, DevOps teams that are responsible for applications across the enterprise need to account for the integration and use of applications that continue to run on mainframes and other on-premises infrastructure or clouds. It's always tempting to leverage the newest tools and techniques for deploying to the cloud; but applications that are not migrated still need to be maintained and upgraded, and even closely integrated with existing applications, potentially for years. In short, traditional applications can't be left behind.
3. Hybrid Cloud Poses New Challenges
Cloud adoption is exploding! As the transition to the cloud has accelerated over the past few years, many enterprises are starting their journey by investing in a hybrid of public and private cloud infrastructure. According to Forrester, "In 2017, 74% of North American and European enterprise infrastructure decision makers defined their strategy as hybrid" (from Top 10 Facts Every Tech Leader Should Know About Hybrid Cloud, Forrester Research, Inc., by Lauren E. Nelson, 25 April 2018).
Hybrid clouds offer many of the advantages of cloud-based infrastructure, while allowing the organization more control in terms of security and cost. However, while providing additional control, hybrid clouds can also pose greater deployment complexity. As DevOps teams automate the application delivery pipeline, they will quickly identify the need to build a different pipeline to deploy the application to a second or third type of cloud architecture. And if that pipeline is made up of hand-crafted deployment scripts, work required to create, update, and maintain them increases exponentially with the complexity of multiple environments. Not to mention, applications running on hybrid clouds also need to work in conjunction with applications running on mainframes.
4. Application Release Orchestration Helps You Navigate Around Cloud Migration Puddles
Taking application development and delivery to the cloud might mean getting some mud on your shoes — but with the right approach, you can take control of deployment processes while rapidly testing and releasing applications on the cloud.
Application Release Orchestration (ARO), which is also known as Application Release Automation (ARA), provides an automated way to manage your complete DevOps toolchain and promote applications through the release pipeline. ARO orchestrates the build, test, provisioning, configuration management, and deployment tools in your software delivery pipeline to automate the entire release process, from the initial idea of a feature to the ultimate delivery of that feature to the user.
ARO can enable you to accelerate delivery while maintaining enterprise-level scalability, reusability, security, testing, and standardization, so you can optimize the benefits that cloud-based infrastructure has to offer.
Save Time and Reduce Complexity by Eliminating the Need for Hand-Crafted Deployment Scripts
Migrating applications to the cloud takes time and work, and the more time developers spend navigating the ecosystem of cloud services and scripting cloud deployments, the less time they have to deliver value-adding application features. Hand-crafting scripts erodes development team productivity and doesn't scale across teams, applications, or cloud platforms. And scripting doesn't help teams maintain legacy applications that are still in active use.
Development teams require declarative, model-based ARO to future-proof cloud-based application deployment. A model-based approach decouples applications from environments, so developers don't need to manually script each deployment step in every single workflow for every single application.
You specify the components that make up your application and the environment where you want to deploy them — whether it's on-premises or in the cloud. Model-based deployment automation can determine the steps that are needed to deploy the application and run them in the right order, every time.
While "standardization" sounds boring, it's pivotal to ensuring that your release processes can be reused, guaranteeing successful and repeatable application deployments. Consistent release and deployment processes are more important than ever when deploying applications to cloud-based environments because you need to be sure that secure development practices are in place.
Application Release Orchestration (ARO) facilitates consistent, reusable software delivery pipelines throughout the development process, from code completion to deployment in production. ARO ensures that compliance and security requirements are baked into the process from the start, with full auditability of every release. The correct ARO solution works across all of your applications, no matter whether they are deployed to on-premises infrastructure, to the cloud, or to both.
Empower Development with Configurable Pipelines
Standardized software delivery pipelines don't have to be rigid or immutable; effective ARO allows you to put consistent, reusable processes in place while giving development teams the flexibility to configure those processes for their needs. Giving teams ownership of release and deployment activities empowers them to optimize those activities as they migrate applications to the cloud and as they develop new, cloud-native applications. Facilitating standardization while allowing flexibility means you get the best of both worlds.
Published at DZone with permission of Robert Stroud , DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.