Gigaspaces powered Service Virtualization and the Cloud Part 1:

So i promised my pal Shay Hassidim over at Gigaspaces when I had time I would post the use case I demonstrated to some Cisco folks on the power of “Service Virtualization”.

To start off, “Service Virtualization” is nothing new.. Its merely another abstraction level on top of the ones that have existed in many forms throughout the decades of modern computing. You can look deep down in the edges of the Linux C-Library where there is a low level API called SYSCALL. This  interface  provides practically the lowest level of interaction from the OS to the CPU and provides the foundation for new services to be built on top..

So why should I care about this? Well as is written in the article The Free Lunch is Over: A Fundamental Turn towards Concurrency in Software. Single threaded applications will gain little improvement over the next decade as clock rates are stalled to reduce power. These applications eventually may get slower as we pack hundreds even thousands of cores on a socket. Scale-Out and utilizing proper concurrency methods allow us to break the problem into many smaller chunks and put thousands of little workers to attack the problem.

With the thermodynamic barriers in chip design driving us wide instead of tall (horizontal instead of vertical, scale-out instead of scale-up..) Okay enough analogies…,

New architectural patterns are emerging including space based architectures and event driven architectures to address the developers obstacles, a lot of the work is rooted in a more simplistic look at the application stack built on top of the well understood JVM or CLR.

The new resurgence of functional languages like Erlang, Clojure are getting more interest as well as new languages like Ruby, Groovy and Scala.

The feature rich and pithy implementation of the language offering things like no need for semicolons or parens. In a lot of cases this reduces the noise and allows the code to be read more like plain English.

This more “readable” code allows the developers to communicate with the domain experts in an easier way. Speeding up the dev/test cycle to get “good enough” code out the door for consumption.

In essence the business interface gathers around a new DSL (Domain Specific Language) which is written in the semantic language of the business. Inter-dimensional relationships are easily described through method libraries.

So what was the demo about?

This entire demo was used to show how you could build a working JEE (like) application, instaniate it over a grid which is provided by an L3 encrypted overlay and allow the application to migrate around the cloud, in and out at will. My thesis is that you can create a movable matrix of hosts around a graph of cloud resources regardless of the source… We don’t take into case any global load balancing scenarios, that’s a problem for another day.

So how do we do that…

My demonstraton had several parts:

Part 1: Figure out how to configure systems in a stateless Amazon EC2 world…

Part 2: Utilize a dynamic language, one that really anyone can learn the semantics to and be productive as a programmer with the correct style guide and well documented API..

Part 3: Connect multiple hosts across autonomous cloud entities utilizing a SSL VPN overlay network. This provides the illusion of being on the same L2 network… Oh and it has to support multicast forwarding so I can have dynamic service discovery…

Part 4: Establish the VPN, Key assignment using CohesiveFT VPNCubed and OpenVPN

Part 5: Batch the images on Elastic Server.. threw some at Seattle some at Dublin other was me in NY.

Part 6: Customer writes into the application and the data is instanty synchronized across the world

Part 1: Figure out how to configure systems in a stateless Amazon EC2 world…

Now I sure went the hard way on this.. I could have learned the S3 or EBS API and figure out how to get persistence but my objective was to be light as possible, utilizing many hosts mirrored together in a dynamic way where the host process could come up and down without impacting the application. In fact I had no persistence layer at all just tried to keep the hosts in a quorom (I believe everything has to be done in 3’s in the cloud no matter what your working on).

Since there was no persistance I didn;t configure any database instances.. I just needed to get a guest domain on EC2 supporting at least Java 5 with the gigaspaces installation in the file system.

To do this i used a great technology from http:/elasticserver.com.

Elastic Server Console

This service alllowed me to pick software artifacts including a Fedora image as well as adding packages like Gigaspaces to an AMI container. All the provisioning is done by the system. Its very cool..

Part 2: coming soon