Building resilient applications with Cisco Metacloud

This post walks through the models for building resilient applications on OpenStack infrastructure with Cisco Metacloud, OpenStack Orchestration, and configuration management tools like Ansible.

Agile Infrastructure, Some Background

In 2001, when a group of software developers discussed a growing trend of lightweight methods for producing software, they decided to group those together and write a new Agile Software Development Manifesto. By providing a shared set of values and trust, along with methods for disciplined practice, these technologists gave us all ways to think about software development, and we can simply lift those over to the infrastructure on which the software runs. Agile infrastructure embodies the characteristics of cloud: on-demand, flexible, elastic growth, with workloads and resources set up and torn down with costs based on use. Just as agile software development is responsive, collaborative, and interactive, you can create agile infrastructure as well.

What Models for Cloud Architecture Offer Agility?

For applications, you can group workloads by need for infrastructure capacity over time.

On and off: Some applications are on and off, such as an event-based web application. During the event time period, you’d better be sure you have enough capacity for the on time period.

Fast growth: Other apps require fast growth, and rather than rack and stack physical servers, ensure you can flexibly grow the infrastructure over time. Think of a retail store that starts selling a trendy product. Their app had better be ready for traffic.

Variable: Then there’s the variable workload, where you might have peak needs that would be unmet with traditional infrastructure. Think of a mobile run tracker app. When the sun is shining in a particular region and lots of runners decide to track their run, can additional servers be deployed at a moment’s notice?

Consistent: Finally there’s the consistent workloads, such as a payroll tracking system. Of course we know that the payroll calculation timeframe has the highest usage, so why pay for infrastructure while the payroll calculation doesn’t need to run?

Those examples are all for the workload itself; how do you create application architecture that offers agility? You monitor the infrastructure and automatically build new resources as your monitoring indicates a need.

Also consider that you want to be able to release new code regardless of the traffic patterns. Agile infrastructure enables code releases without taking down the entire application.

Let’s walk through the principles that Metacloud delivers:

Early and continuous delivery. Cloud servers on demand offer exactly this: providing value as quickly as possible, with new capacity always available.

Changing requirements even late in the overall process. When your traffic patterns indicate a change in required data capacity, our agile infrastructure lets that change happen right away.

Shorter timescales abound in cloud workloads. Think of a time when your CEO had a time-bound idea for giving back to a community, but your base business is selling blankets online. You can create the application for the charity work while letting your business infrastructure continue, hands-off.

Business needs met by eager developers and infrastructure providers. By working with a provider’s cloud infrastructure, business needs win prioritization over the overhead of running a cloud.

Collaboration. By offering REST APIs on each service, you can provide connection points across data resources, compute power, and storage capacity. In some places the storage group is far separated from the computing group; an API gives a common language for the groups to speak.

Give users the environment and support they need, and let the get their job done. This one rings true for any private cloud’s value proposition.

Working software is a primary measure of progress, and so is working infrastructure.

Sustain. This idea of agile infrastructure offers a sustainable, consistent pace for infrastructure provisioning.

Continuous attention to great technical solutions. This principle means monitoring effectively and good initial design enhances that agility.

Simplicity and ensuring work is not wasted is an essential component. At the simplest layers, your application treats each resource – server, database, network, storage – as a piece that can be brought in and out as needed. Your application shouldn’t need to know the difference in a given resource whether it’s on a local development computer or a different host entirely.

How does Cisco Metacloud deliver resilient applications?

Many customers have found that when Cisco provides the cloud infrastructure, they are freed to add speed and agility to their teams. Our customers are examples of “born in the cloud” companies that understand the value to their business model when they can provide IT services automatically. When they’re on the front lines, delivering business-critical IT, they appreciate that Metacloud backs them up with an operational, expandable private cloud based on OpenStack. Plus, with integrations from solid providers like Pivotal and Apprenda, the infrastructure becomes invisible and the platform provides everything their teams need to go fast, be strong, and maintain uptime.

We have a couple of Learning Labs on Cisco DevNet that walk through how to orchestrate applications. Check these out:

Metacloud: Create an Orchestration Template

Metacloud: Run an Ansible playbook when starting cloud instance