A few days ago, Pure Storage hosted Pure//DEV, our first event focused 100% on developers. During the event, we reviewed Pure Fusion™, our new product that allows you to operate a full Storage-as-Code™ system, enabling a cloud-like experience for storage consumers. It was an exciting event for me personally to focus on developers exclusively and showcase how Pure Fusion can become foundational to their infrastructure-as-code efforts.
Today, we’re going to walk through how simple it is to execute the practical tasks that developers might be responsible for on a day-to-day basis when providing and consuming services from a Pure Fusion-based storage cloud.
What is Pure Fusion?
Before we get started, let me give you a quick introduction to Pure Fusion so you’ll have context for what we’re doing later. Pure Fusion helps you adopt a cloud operating model on top of your infrastructure. This creates a Storage-as-Code experience for both your own IT team and your application owners.
One thing that’s deeply built into Pure Fusion and is critical for understanding the rest of the experience is the split between the provider and consumer roles within Pure Fusion.
- Providers are responsible for defining services in Pure Fusion. They care about arrays, networking, and other physical configuration, and they don’t directly own applications that consume storage.
- Consumers are the customers of IT infrastructure. They are application owners/operators who are focused on business value. They consume Pure Fusion services and don’t know or care about the underlying infrastructure.
For a quick example of what a Pure Fusion environment looks like, here’s a high-level diagram of an active deployment.
In this example, we’ve got both a consumer side and a provider side. On the consumer side, there are multiple tenants fully isolated from each other. Each of those tenants has one or more applications (called tenant-spaces in Pure Fusion) that are consuming storage from the underlying infrastructure.
On the provider side, there’s a set of infrastructure that has been divided into multiple availability zones and regions on the provider side. These form the storage topology that consumers use to request storage.
Along with these layout objects, consumers can also choose storage services and classes, protection policies, and access policies. The provider defines these policies and provides various storage capabilities requested by the consumers.
If you’d like a full rundown of the operating principles and object model of Pure Fusion, please take a look at our Lightboard Video or our Cloud Field Day Presentations, which walk through the full model before diving into this example.
For today’s workflow, we’ll show two scenarios:
- How an IT developer can simply add new services and functionality to an existing Pure Fusion deployment without disrupting any operations.
- How an application developer might leverage those new services to improve the CI pipeline for their application with a few simple code changes.
Let’s get started!
Pure Fusion Provider: Defining a New Service
We’ll start out our day as the provider developer tasked with bringing a set of new FlashArray//C systems into the Pure Fusion cloud as a capacity-optimized storage offering. We’ll first go into our ticketing system and assign the ticket for this task to ourselves so that we don’t overlap our work with any other developers on our team.
Next, we’ll open the Pure Fusion GUI and look at the configuration that we have in place today for our deployment. Currently, we’ve got a couple of availability zones set up, and we’re already running workloads on the arrays in those availability zones.
As you can see, there are a couple of storage services defined with several storage classes residing within each storage service. Each storage service represents a different fundamental type of storage that consumers can use. They can rely on Pure Fusion to combine volumes and provide powerful capabilities like crash-consistent snapshots. Any given storage service can offer multiple storage classes that provide finer-grained options for consumers in terms of performance parameters.
In this example, we’re going to add a new “flash-capacity” storage service with a new storage class within it, and we’re going to back that service with our new FlashArray//C gear.
In addition, we’ll need to allocate our new FlashArray//C systems to different availability zones within our Pure Fusion environment so that consumers can provision workloads on our new storage service wherever they need to align with their application architecture.
With that, we’ve deployed a brand new storage service that’s available to our consumers. As you can see, doing this was a matter of adding our arrays to AZs and defining our new service. Pure Fusion handles all the required configurations and brings these services online for you.
If you were trying to operationalize a new storage service in a world without a full solution like Pure Fusion, you would have faced significantly more work and overhead to bring it online. Instead, you can close your ticket and head out early for lunch!
Pure Fusion Consumer: Improve CI System for Your App
Now that a new capacity-oriented storage service is available, let’s switch over to the perspective of a developer who’s part of an application development team that owns a production app within the same company.
This app team is already using storage from the Pure Fusion cloud to power their application, and they’re users of Terraform for their application deployment and lifecycle management. Let’s see how they can take advantage of the new storage service that has been made available by the cloud team.
First, we’ll go into the ticketing system and see that there’s an open project for reducing the cost of our product so that we can improve outcomes for our business. One of the unfinished tickets within that project is to leverage lower-cost storage from within the Pure Fusion storage cloud for the CI system we use to test our product. This should help improve the cost profile of our application without hurting customers because these test environments don’t have the full performance needs of our production deployments.
Now that we’ve picked up this ticket, we’ll open up our IDE and look at the Terraform template that we use to deploy our CI environments. We can see that we’re currently deploying some resources within Pure Fusion for each test execution and that those resources are using the “flash-performance” storage service and the “high-iops” storage class.
All we need to do to fundamentally change the storage used for our application is to make two changes to our template. First, we can update the storage class to “flash-capacity.” Second, we can choose a new storage class, “general-use.” These together will target the new storage service and limit how much performance our deployments can consume, reducing the cost of our infrastructure.
After making this update, we’ll do a dry run and then a full test of our template to ensure we don’t have any issues setting up and tearing down the new infrastructure pattern. Since we’re fully automated using infrastructure-as-code, this is as easy as running a Terraform apply command and watching it happen.
Having seen that it works, we’ll commit our code and file a pull-request so that we can get the code reviewed and out into our environment. Once that happens, every test run we conduct will benefit from the reduced cost of the new storage configuration that we’ve implemented here.
If we didn’t have access to a full Storage-as-Code solution like Pure Fusion, we would have had to choose between keeping our current infrastructure configuration and not getting the cost reduction we were looking for, or spending significant time and effort interacting with our infrastructure team to educate them about our requirements and integrate with a whole new storage system. Instead, it was a two-line code change, and we could wrap it up in just a few minutes.
This series of examples shows how having a true Storage-as-Code cloud built on top of Pure Fusion helps make developing and operating your infrastructure easier and simpler. If Pure Fusion seems like an operational model that could benefit your team, please reach out to us here at Pure Storage. And if you missed the Pure//Dev event, make sure you watch the on-demand video.