I am re-writing an old line of business application that is built upon legacy infrastructure and is becoming more difficult to deploy on new systems. The plan for this application is to build it on the cloud, so it will be a web application. I have built many many web applications in my career but now they are called cloud applications and I would like to take advantage of some of the new technologies that are available.I will be evaluating technology and determining if it is worth using for this project and documenting my results.
The basic architecture of this the project consists of a web application that is hosted on an Amazon EC2 instance, this provides us with the ability to scale quickly and let us pay for only what we need. There will be several “agents” that are Windows Services that sit on various machines some on the cloud and some on the local network. All of the agents will report back to the Web App which provides the main user interface for the user.
I am investigating NoSQL in the form of Amazon DynamoDB and also looking at using Amazon RDS (Relational Database System). We have been very pleased with the Amazon Infrastructure on the Cloud and my goal is to see what other benefits can be discovered.
Amazon DynamoDB is a NoSQL database system, this means that it is NOT a relation database. You can create 2 indexes, one a hash and one a range (such as date). NoSQL is basically a key/value dictionary on the cloud, with the extended benefit of being stored on SSD (Solid State Drives), so it is extremely fast. The data is automatically replicated across regions within an Amazon Zone. So, using DynamoDB I am gaining extremely fast access and high availability.
The video above is from Amazon’s web site, which can be accessed using this link http://aws.amazon.com/dynamodb/. My initial experiment is finding that DynamoDB is very fast and indeed. DynamoDB is schema less allow you to modifed the class that is being stored in the value of the table. By “putting” an object with new properties it is automatically saved if the hash is the same as an existing hash key.
I am trying to determine where NoSQL is best suited, right now I am building a small system that will store all internaly developed applications and various details about them. This is system has a single domain class and so far is suited perfect for NoSQL, but I will be expanding on this in the near future. I am also considering using NoSQL as a place to hold the details on all of the “agents” that are developed, which can be used for sending monitoring heartbeats and also store details that are returned from the agents for display to the user.
This rewrite will be completed this year and will be highly availability and also very fast for my end users, they currently have to wait over an hour for some of the queries that run which is NOT exceptable.
Stay tuned for me infomation.