A SMART Architecture for Cloud Computing


When you  build a new Cloud Computing Application, it is necessary to think about your Architecture. There are several considerations when building a Cloud Application such as a SaaS Application. In the architectural point of view, it is not necessary to think about a specific Technology at first. Different Platforms offer different techniques. If you build your Application on Google App Engine, you might use Java or Python, for Amazon EC2 it might be either Java or PHP and for Windows Azure you might use Microsoft .NET. The architecture itself however is independent from the technology you use.

To get started with a Software Architecture for your next Cloud Application, you need to define the basics for your Architecture. Each Software Architecture has some requirements. An architecture should be SMART. Each of the letters in “smart” stands for a requirement.

Specific. The architecture should solve a Problem. It doesn‘t need to be the „coolest“ architecture of all. Often, Software architectures try to be solved by adding the coolest solution instead of doing a solution that is tailored to the problem it should solve. So always be specific to what you want to solve now and in the future.

Measurable. Application basics must be measurable at all time. If you build a Service, the definition could be “if 1 Million People access the service, it must respond within 1 second”. Often, this is described as “the service must be fast if a lot of people access it”. The later one is not measurable at all.

Achievable. The goals set by the architecture must be achievable. It makes no sense if the architecture allows everything but can‘t be done by the developers as it is too complex. This is similar to “Specific”.

Realistic. To sucessfully build a Cloud Platform, you should look at your organisation and figure out what potential is within that organisation. Don’t use a technology that your team is not familiar with and don’t try a Software Architecture where no one in your organisation is familiar with it.

Testable. An output must be testable. This means that Software output should be tested for several constraints such as response time.

For further references about Cloud Architectures, refer to the Book “The art of Scalability”.

The Image displayed for this post is Licenced under the Creative Commons and further details about the picture can be found here.