I was fortunate to present at both conferences. At ApacheCon, I discussed Guaranteeing Storage Performance in CloudStack and at CloudStack Days, I switched gears and talked about Real-World Integration Testing with Marvin.
In a public or private cloud that’s expected to cost-effectively run mission-critical workloads, leveraging a shared storage infrastructure is imperative. Traditionally though, storage systems in such environments have been plagued by “noisy neighbors.”
A “noisy neighbor” is an application that unpredictably consumes a disproportionate amount of resources from a shared environment (i.e., unexpectedly consuming too many IOPS from a shared storage system). This complication is the primary reason many businesses hesitate to port their most business-critical workloads to a cloud environment. It’s difficult to justify migrating such applications to a shared environment if it results in unpredictable performance.
My presentation, Guaranteeing Storage Performance in CloudStack, demonstrated how — today — you can confidently run all your application workloads (dev, test, production) in a CloudStack-based cloud that’s backed by SolidFire storage.
SolidFire delivers the unique capability for you to specify performance on a volume-by-volume basis. The performance associated with a given volume is allocated independently from its capacity, enabling you to run mixed workloads confidently on a shared storage system. You can rest easy that application IO associated with one volume on the system will not impact the IO of any other volume on the system. SolidFire enables the economics of a shared storage infrastructure along with performance predictability. Not only can you specify performance criteria when creating a volume, but you can later change those criteria on the fly (without having to purchase additional hardware or experience delays due to data movement in the background).
At CloudStack Days, I changed topics to the subject of delivering reliable software in CloudStack by making use of Marvin, which is a collection of software and tools for building automated integration tests.
CloudStack is a very dynamic product enhanced and extended by many developers from many companies across a variety of industries. Marvin, written in Python, contains a variety of software to facilitate end-to-end testing of CloudStack:
A module, cloudstackConnection, that handles low-level details of communication with the CloudStack Management Server (such as building a signature for an API command).
Modules that make it easier to send commands and receive responses to/from the CloudStack Management Server (e.g., CreateStoragePoolCmd and CreateStoragePoolResponse).
Common abstractions like volumes, snapshots, hosts, etc.
Utility modules for performing common activities (e.g., restarting the CloudStack Management Server).
I provided a real-world example where SolidFire has developed integration tests using Marvin. You can view the presentation here.
Apache and the Linux Foundation did a great job bringing together its developers and users in Austin last week. I had a lot of fun discussing performance predictability in a cloud storage environment with a variety of individuals. It was also nice to hear how useful my Marvin discussion was for new CloudStack developers. I’m definitely looking forward to attending future events from those organizations.