Tech - xCloud Architecture: The Beginning (Part 1)

It all started in the spring of 2013 when I came across an article on how Netflix was built on the Amazon cloud. It got me thinking about what is involved in building an entire application on the cloud. For example, what implications does it have on the following -
  • If any, does it have any impact on the application features?
  • What impact does it have on architecture principles?
  • How do engineering practices need to evolve?
  • Does it make it any easier to monitor, administer and support such an application?
  • How does one handle data and security?
  • Lastly, what were the trade-offs?
So, I started reading up on the various cloud providers. These ranged from IaaS, PaaS and SaaS providers. I also looked at how organizations were leveraging these providers. I jotted down a few architecture principles on which to build an entire application in the cloud.
  • All resources, tools and technologies to be based in the cloud.
  • Use a diverse set of cloud providers to test the interoperability between them. It also helps mitigate points of failure.
  • Based on the use cases, leverage all forms of cloud providers ranging from IaaS, PaaS and SaaS. 
  • Build API's on top of the cloud providers. These API's contain the business logic.
  • Build websites and mobile apps that consume the API's.
  • Monitor everything.
Given the above principles, I started formulating an architecture. I call it "xCloud Architecture", with x meaning Extreme as in "Extreme Programming". I also needed a use case to model the above architecture on. I settled down to building an ecommerce application. Of course, one could build any type of application on this architecture.

All logos are registered/trademarked/copyright of the respective organizations. They are shown in the diagram above for ease of understanding.

Before I go any further, my heartfelt thanks and admiration to all the above cloud providers. They have built outstanding products and provide great support. Many of them patiently helped me whenever I had queries or faced any issues.

I have grouped the various cloud services under different headings such as Web Applications, Mobile, API's, Data Stores, Integration, Languages, Frameworks, Content Delivery Networks (CDN), Testing, Providers, Monitoring and Others. In future posts, I will go through the journey of identifying, building, testing and deploying on these cloud services. 

The "face" of the entire application is right now the ecommerce application hosted at Appfog - ezShop. Of course, many aspects of the application are still in development. So, I am continuing to make enhancements when I have the time.

In my next post, I explain some of the principles.

Comments

Popular posts from this blog

Cloudera Quick Start VM in Hyper-V

Book Review - The Price of Being Fair

Azure Chronicles - VM Security