Designing Applications for the Cloud

Saturday October 15, 2011,

3 min Read

Applications for Cloud

Two prominent developments in the recent past are influencing how we design and deploy software, Cloud Computing and Mobile Computing. Cloud computing with its inherent scale on demand removes the constraint to design for a fixed hardware capacity; software has to scale as and when required. With mobile computing becoming pervasive, having a mobile application is as important as a web application; so multiple user interfaces have to be supported by a single business logic server. With this background I will share some of our experiences in designing applications for our products.Separating the User Interface. Similar to how client server applications were designed the user interface is separated from the business logic server and client interfaces with the server in a flexible contract, say XML. The choice of communication can be a simple XML over Http or REST/SOAP over Http. Mobile apps have their own specific languages and tools to develop them, web applications can be developed in Html/Javascript or using tools such as GWT/Flex. These interfaces leverage the native device, mobile or the desktop browser to render the User Interface and in turn reduce the load on the server.

Standalone Business Logic Server. Backend business logic servers are designed as pure SOA stateless services exposed via XML over Http. The stateless nature of these services helps scale up or down seamlessly based on load. As business logic is separated from user interface both can be tested independent of each other and the loose coupling also helps them to evolve more independently. A number of solutions are available to scale the business servers. Scalr is one of the earlier ones on Amazon Cloud and now Amazon has an in-built scaling mechanism in its services.

Distributed Database and Storage. RDBMS databases though not designed to leverage distributed computing natively have a surprisingly large number of add-on solutions to make them scale. Solutions vary from having a distributed cache in front of a database to a Master Slave architecture to separate writes and reads. Xeround has a distributed scalable database service and now Google App Engine offers a SQL database service as well designed for scale. Another way to scale transactional data is to embrace document database model where a host of services from CouchDB to MongoDB are available out of the box. Document database model has the added benefit of flexibility in changing the business layer faster but will need throwing away the familiar SQL for a custom API interface to the data layer. Scaling file storage is a lot simpler than the database with services from Amazon S3, Hadoop readily available to use.

Montage of TechSparks Mumbai Sponsors
    Share on