Moving applications and services to the cloud has enabled tremendous opportunity for businesses to reshape their operations and offerings in this age of digital transformation. Of the numerous benefits of the cloud to organizations, one of its key aspects that can mature a digital business more quickly is its elastic nature.
In simple terms, cloud elasticity is the dynamic deployment and collapsing of computing resources as demand on an organization’s IT infrastructure increases or decreases. A simple metaphor for this is a rubber band stretching to fit around an object and collapsing to its original size when it’s removed.
Elastic Cloud: The Benefits
The roadmap for organizations leveraging the cloud is unique in every case and should evolve according to their individual needs. Accordingly, they can design their architecture by leveraging any or all of the following substantial benefits of cloud elasticity:
In pre-cloud days, the problem of having sufficient capacity to support sudden bandwidth spikes was addressed by expanding the architecture with more servers and drives. This effort required large up-front investments in hardware, datacenter space, power, cooling, and network bandwidth, along with intensive and often argumentative capacity planning. With the cloud, however, that capacity is already in place and ready to scale up or down in real time, virtually eliminating the concern for traffic spikes.
This aspect of elasticity is often referred to as autoscaling, which encompasses three different types of configurations. The most common configuration is based on the monitoring threshold of existing servers. Another is called predictive scaling, the predetermined scaling up of server capacity based on expected periods of high traffic, for example a Super Bowl or Black Friday ad or marketing campaign. The third configuration is referred to as scheduled scaling, where server resources are deployed based on expected regular high-traffic periods, such as peak business hours. All of these configurations can be collapsed as demand lowers, of course.
Pay only for what you use
Another prime benefit of cloud elasticity is paying only for the computing, networking and storage resources that you actually use, offering the opportunity to save substantial IT investment capital formerly wasted on paying for idle resources.
Now there is no need for production, development or test servers to run at night or over the weekend. With automation scripts configured for scheduling (as in the autoscaling example above), they can be turned off when not needed and then powered back on during business hours. Amazon details savings of up to 70% by utilizing its elastic cloud optimally; similar savings can be seen for other clouds such as Microsoft’s Azure or the Google Cloud.
A note of caution: Process discipline of checking code into the version control is required to prevent the loss of code and configuration on machines that are powered down.
Failover and fault tolerance
The concept of server virtualization revolutionized IT, and the cloud has taken it to another level. With the use of autoscaling in AWS or availability sets in Azure, a “clone” of a failing server can be proactively triggered by up/down monitoring. This allows for fast and effective redeploying of exact copies of a production server in a matter of minutes in an “always on” fashion.
The cloud also enables isolated, fault-tolerant component partitioning. For example, in AWS the Elastic Block Store (EBS) network attached drive is hosted on separate hardware away from compute components and can be easily attached, detached and reattached to those components. Coupled with automation, this can be done with little or no human interaction.
Leveraging cloud elasticity for fault tolerance gives rise to a new change practice to treat servers as “cattle” rather than “pets,” making servers uniform, duplicable and easily replaceable with little or no setup overhead. The old-school way was to hard-code rigid processes into an application either on purpose or by laziness, leading to customization of servers to perform singular functions (server as a pet). But the cloud forces the restructuring of applications so servers can be engineered for failure, with their resources repurposed automatically (servers as cattle).
Historically, building an IT ecosystem required significant knowledge of hardware setup and configuration knowledge, accompanied by extensive documentation. There was also a tendency to not document the ecosystem, for reasons of job security, understaffing or a combination of both. Now, with the concept of “infrastructure as code” where configuration and setup are written in Python, JSON, YML or XML files that anyone can interpret, future admins do not have to find the chief of the tribal knowledge to learn the environment. Additionally, there’s a far lesser chance of intellectual property loss when developers in these languages move on to other companies.
The use of these common coding languages and the wide availability of developers in these languages make enabling cloud elasticity less of a challenge.
Ease of implementation
Numerous online courses exist that specialize in teaching the methods, processes, technologies and best practices for running IT ecosystems in the AWS, Azure and Google clouds. Each cloud provider also offers extensive documentation of their technologies and best practices available to the public. Each also provides 2–3 different interface methods for administration, focused on various user-proficiency populations ranging from the browser-based UI for new users to command-line interface or SDKs for advanced users.
Elastic Cloud: The Challenges
This is not to say that implementing elastic cloud aspects into your architecture is as easy as stretching a rubber band. Like any technology, it requires knowledge, know-how and patience to do it right the first time. Here are a few specific challenges regarding cloud elasticity:
Because working with the elastic cloud involves maneuvering in and around an organization’s IT infrastructure, a learning curve and period of time are required to understand how to manage the environment in the most cost-effective manner.
When managing the cloud, the line between system administrators and developers becomes blurred, and increasingly, workers need to be a little of each. Despite the ubiquity of common languages in elastic cloud computing, there’s still a learning curve to obtain proficiency in automation programming and the development tools for managing the environment. Additionally, each cloud provider has its own documentation that must be learned and mastered. It might take six months to a year to become relatively proficient in a specific provider’s cloud technology, even with active engagement and learning initiatives supported by the organization.
In the always-connected world of the cloud, security is always a major challenge. The major cloud providers have gone out of their way to meet every security and regulatory requirement in an environment of continual change. With the cloud, organizations no longer own the hardware, and in most cases, they can’t touch it. This was an initial challenge for old-school IT managers. However, it’s important to keep in mind the notion of shared responsibility — even though an organization’s applications are in the cloud, it’s still up to the organization to secure them. Cloud providers are responsible for physical security and machine-level updates, while application owners are responsible to manage user- and application authentication, and overall access to the application.
Privacy and compliance
There’s also a shared model for privacy and compliance, with responsibility lying with both cloud providers and enterprises. These measures require massive amounts of discipline and knowledge from both parties. It’s highly critical to maintain rigid and well-defined audit logs and trails; reach out to the AWS, Azure and Google Cloud audit teams for assistance, as all three providers offer logging functionalities in their systems. Particularly with the General Data Protection Regulation (GDPR) compliance deadline in May 2018, it’s important to stay on top of these matters to avoid heavy fines for non-compliance.
AIM Consulting Can Help
AIM Consulting offers a Cloud Infrastructure and Efficiency Optimization Assessment, a short non-agnostic engagement that looks at a client’s cloud environment in terms of how resources are provisioned, individuals’ skillsets, cost savings, and security and performance levels in the environment. Through client interviews, AIM shows how the use of cloud provider best practices and other measures can help clients get the most out of their cloud investment, particularly in leveraging elastic cloud benefits.
Contact AIM today for more information or to schedule an assessment.
About the Author: Mark Pruitt
Mark has over 20 years of experience working within the Cloud and DevOps implementation space in the government, healthcare, education, and technology sectors. Mark is passionate about helping clients realize the benefits of leveraging the latest Cloud and DevOps technologies and practices.