Fortunately, since many government agencies are still in the early stages of cloud adoption, they have the opportunity to learn from these outages and prepare to deploy their applications across multiple clouds in what is referred to as a multi-cloud deployment.
Multi-cloud deployments can rely upon multiple commercial cloud providers, but they can also depend on agencies’ private clouds as well as shared or community clouds.
Last year I wrote an article titled “4 Steps to Consider When Creating a Cloud Strategy in 2016.” Many of the approaches mentioned also apply to multi-cloud deployments. Here’s a look at cloud strategies agencies should consider when deploying apps in multi-cloud environments, given the events of the past year.
Make Cloud Apps Flexible
As you build applications for the cloud, make certain that the services you rely upon are standards-based, so that your apps are portable across multiple cloud providers. A failure to do so will result in apps that have no exit strategy from proprietary cloud implementations.
Locking your data and apps into a single cloud provider will sacrifice business agility and freedom. As evidenced by the multiple Infrastructure as a Service (IaaS) outages, cloud adoption is not a checkbox for the disaster recovery and continuity of operations planning requirements that agencies deal with today. Agencies should continue to plan and test their Disaster Recovery (DR) and Continuity of Operations Plan (COOP) execution, regardless of the underlying infrastructure provider.
Containers and Orchestration Enhance Portability
Containerization of application resources is now, more than ever, a reality for production environments. With containerization technology, we achieve the ability to “pick up” our app workloads and move them between environments with ease.
Further, containers leverage technology that is core to the Linux kernel and Linux operating system, deriving their secure isolation via technologies like Security-Enhanced Linux (SELinux). Mature container platforms take a holistic approach to providing application isolation, portability and security.
For developers, cloud managers and providers, the open-source project Kubernetes is becoming the standard interface for orchestrating containerized apps, and it will be key for building automation to manage workload migration across multiple cloud providers.
There is even an example of an organization proactively mitigating outages, having built their cloud deployment on Kubernetes. The inherent portability and orchestration of containerized apps will become a cornerstone for building multi-cloud deployments, including both private and public clouds. These robust open-source technologies have multiple avenues for commercial support and have found their way into multiple large-scale commercial implementations.
These technologies are supported by a vibrant open-source community. In particular, the OpenShift community has built a comprehensive container application platform based on technologies from the Open Container Initiative, the Cloud Native Computing Foundation and the Linux Foundation. Open-source communities like those behind OpenShift are the driving force for innovation in the technology industry today. Their dedication to openness and standards-based technologies guarantees that government agencies will have options for technology implementations for years to come.
The Emergence of Microservices
In concert with the arrival of containerization and robust orchestration has been the emergence of microservices as a development paradigm shift.
Microservices fit very well into modern, agile continuous integration/continuous delivery development environments where features and functionality are independently tested, verified and deployed without the need for massive outages. These capabilities can then be deployed in a variety of schemes that allow for functional testing without impacting the entire user base. Because they are small and tend to impact few endpoints, these microservices can also be rolled back quickly when an issue is discovered.
Suffice it to say, breaking apps into small components that can be scaled, modified and even relocated independently of one another will be critical to building apps that thrive in multi-cloud environments.
Automation as an Exit Strategy
I would be remiss to not mention the need for extreme automation — open-source projects like Ansible, which describes itself as a “radically simple IT automation platform,” have become the lingua franca of cloud deployments.
With Ansible, you can manage and deploy complex software platforms like a Platform as a Service or the open-source IaaS, OpenStack, upon which applications run. Ansible’s ability to manage disparate operating systems and technologies, from Windows and Linux to storage and network components, make it an ideal building block of cloud automation. When we automate our way into a cloud, we begin to define our methods to automate our way out of that cloud. As I mentioned last year, every cloud entry should have an exit strategy.
These strategies — leveraging standards, containerization, orchestration and automation, as well as decomposing apps into microservices — serve as the foundation for building an infrastructure that can survive in any cloud and ideally in a multi-cloud deployment.
Extensive testing and validation of DR and COOP capabilities will eventually ensure that, as agencies leverage cloud solutions for their mission needs, they will have the ability to not just survive, but thrive in these multi-cloud deployments. Agencies will migrate workloads to the cloud for not just availability but cost as well.
The horizon remains bright. No longer is it a question of whether or not agencies will move to a cloud, it is a question of which cloud they will choose.
I firmly believe that the prudent choice is multi-cloud, including private and public clouds; IT personnel should not put all their agencies’ eggs in a single cloud provider’s basket.