Part of the challenge with solid-state storage is to make sure that when you implement it that your application will actually perform faster. Just because you put a race car engine inside your storage system does not mean that your application will instantly go faster. Everything else in the environment needs to be tuned to take advantage of this new faster storage platform.
As we discuss in our webinar on "Understanding Solid State Performance," the way your application is structured or can be re-structured has a lot to do with how much bang you will get for your solid-state buck. A great place to look for tuning advice is the various storage performance benchmarks. While these benchmarks basically give vendors a chance to beat their chests about how fast their various systems are, you can learn from them to help understand if your environment can be tuned to take advantage of a faster storage tier like solid-state storage.
For the purposes of this entry though, let's net out the results. You will see basically you need a lot of requests being made of storage from applications or users to maximize the capabilities of solid-state storage. You also need a high performance connection between the storage and the application, but that is a discussion for a future entry.
The number of storage I/O requests that can justify solid-state storage can come from a few large systems making a lot of requests simultaneously or a few requests each from hundreds of smaller systems, like user desktops. In most cases high storage I/O requesters tend to be a database application, but could be a file system where thousands of users are accessing the same file at the same time. It also can be an analytics type of application that needs to respond to a single user request and scan across million of rows in a database or even tens of millions of discrete files in a file system. Depending on your application, building a server or system to respond to that high number of requests may be the biggest challenge. There are two basic options--scale the application up or scale the application out.
Scale up means to have fewer, preferably one, powerful application server that can send requests to storage as fast as the storage can take it. Now, thanks to solid state the storage they can take those requests very fast. Scaling up an environment, assuming you can afford the upfront investment, may be less expensive and less complex in the long run. As we discussed in a recent article "Addressing Storage Challenges in Cost Effective Oracle Environments" a single server with 64 cores or more are now affordable to the enterprise and managing a single application server or even a few application servers is often easier than managing a cluster of application servers. There are fewer changes, if any that need to be made to the application and there are fewer decisions to be made on where to put what sections of code and sections of the data set since it is all on one entity. An issue with a scale up architecture is to make sure that there are enough storage I/O requests and that you can afford the upfront investment.
Scale out applications allow you to grow as your needs grow. Many application environments are not automatically scale out though. There has to be some manual dividing of the application and the database to spread the workload across multiple machines. This process, often called sharding, can create a complex environment, but for some very large environments or environments with extremely high user counts like online applications it may be the best option available. There are however a growing number of applications, especially in the analytics area, that are designed from the ground up to scale out so designing and maintaining a scale out infrastructure may become easier over time.
An important final thought on scaling applications to meet solid-state storage performance is that just because the storage can handle an extreme number of IOPS does not mean you need to wreck your environment reaching it. All you need to do is solve today's problem and maybe be in a position to handle tomorrow's. Tuning and maximizing performance is an endless loop, get off the loop as soon as you meet today's performance demand. The advantage of solid-state storage is that when the next storage performance challenge surfaces you can be confident that the storage can handle it, so that is one less area of the loop to look at.
Follow Storage Switzerland on Twitter