Beruflich Dokumente
Kultur Dokumente
elastic software
Skill Level: Intermediate
03 Mar 2010
New concepts and strategies require changes in vocabulary. With a move toward
lower cost, highly flexible, cloud-friendly architectures, the concept of elasticity has
been established for an enterprise IT solution. This article explores a specific
definition of elasticity by describing examples present in IBM® WebSphere® eXtreme
Scale, an elastic in-memory data grid.
Each installment of Innovations within reach features new information and
discussions on topics related to emerging technologies, from both developer and
practitioner standpoints, plus behind-the-scenes looks at leading edge IBM®
WebSphere® products.
It's easy to fall into the trap of using the idea of elasticity to make a point about the
set goal for a given solution. In its simplest form, a solution might be elastic by
simply enabling more resources to be added or removed without bringing the system
offline. For the sake of creating a higher and more useful standard, I'd like to
We shouldn't expect much controversy regarding the idea that an elastic system can
be scaled up and down without a significant effect on the availability of the system
during these operations. However, I believe we should also expect that the system
itself not place any real restriction on a reasonable scale-up scenario. By this, I
mean that the infrastructure itself should be architected to enable the continued
growth of the system and make the new resources available with little or no
overhead. This implies the possibility of true linear scaling.
catalog service only once to bootstrap into the grid. In that interaction, the
catalog service returns information about the grid, including a complete
routing map defining the location of all grid partitions and the associated
key space for each. After this, the clients interact directly with the
partitions and even keep this routing table up to date through subchannel
interactions during the normal transaction process. The catalog service is
then free to focus its attention on simply managing the balance and
membership of the grid as resources are added and removed.
With approaches like these, we've been able to effectively scale a grid to an
arbitrarily large size. In the lab, we've achieved a 1,500 container grid with no real
difference in perceived performance. After that, we simply ran out of time to go
further, but there is no specific or reasonable limitation to this scaling. This is an
important factor to truly considering a solution to be elastic.
It's important to know that this doesn't imply that EVERY deployment of an elastic
infrastructure will provide the overall application with linear scaling as resources are
added. There are still considerations regarding the logic and business being
conducted within that infrastructure, and whether or not they employ scalable
extreme transaction processing fundamentals. In this regard, the enterprise
application itself must also have elastic characteristics. An elastic infrastructure
should, however, provide the plumbing to effectively achieve these goals.
If you're going to expect a deployer to trust your solution to scale indefinitely, you
must also tolerate the events that occur with greater probability and frequency as a
system grows, such as the addition or loss of nodes due to maintenance or fault,
network faults and changes, and so on. With more resources comes a greater
chance for failure, and an elastic system must be able to overcome these failures in
a predictable and efficient manner, while again returning to a state of fault tolerance,
if possible.
Continuing with our WebSphere eXtreme Scale data grid example, as you grow to
grids of hundreds or thousands of container processes, the loss or maintenance of
one of those processes is more and more probable. Through replication -- which is a
core competency of WebSphere eXtreme Scale and similar in-memory data grid
offerings -- these events can be tolerated. Not only that, but since the placement and
migration of the data is completely transparent behind the "black box" of the
WebSphere eXtreme Scale client APIs, a new replica is automatically created and
fault tolerance is achieved again.
Administrative simplicity
The key concept here is that the configuration and maintenance of each node should
be either identical or very minimally different. You shouldn't expect the deployer to
provide a list of all member machines or processes for the system to operate. There
should be some level of automatic discovery and management based on a common
set of configuration artifacts.
We can find many more examples of this, such as the decoupling of replica
placement through the use of the zone abstraction, or the ability to upgrade the
actual grid code level without bringing the grid itself offline. The key concept is that
administrative tasks should have a constant complexity as the system scales
outwards, or at least as close to constant as possible. From this, you can see how
nicely elastic software and elastic hardware (that is, virtualization and cloud
deployments) can dovetail to provide a new level of freedom to enterprise solutions.
In praise of buzzwords
It's probably safe to say that even our most pervasive foundational technologies
within computing started out as some sort of buzzword. We simply need to strive to
define meaning and useful purpose when adding a new concept or goal set to our
vocabulary. In this way, I think it's clear that elasticity in enterprise solutions can be a
valuable concept when clearly defined and thought through to logical conclusions.
We have consistently tried to relate concrete and useful meaning when we talk
about WebSphere eXtreme Scale as an elastic data grid, and will strive to continue
to do so as we apply these concepts to other solutions that are designed to create
truly flexible infrastructures.
Resources
Learn
• WebSphere eXtreme Scale product information
• WebSphere eXtreme Scale Information Center
• IBM developerWorks WebSphere
Get products and technologies
• IBM developerWorks WebSphere eXtreme Scale trial download
Discuss
• WebSphere eXtreme Scale XTP Development Community