As children, elders often advised us to share. Sharing helps us live together in an amicable and positive manner. However, I never realized that this holds true even in technology, until I started delving into the world of cloud.
Most cloud tenets are based on the idea of sharing. In cloud, where there are different environments with different computing requirements, sharing infrastructural resources is possible by way of virtualization and consolidation. Many organizations have already implemented it. What still remains unexplored is the idea of sharing the common parts of the application layers comprising software components.
There are many platforms available for cloud deployment, which offer benefits such as better utilization, parallel computing, higher availability and reliability. However, most of these have been built keeping one technology platform in mind. Hence, often the co-existence of multi-technology applications in a single cloud becomes difficult. This also reduces the possibility of sharing application layers between these applications.
So, a true cloud platform should ideally be able to host multi-technology applications and allow sharing of resources between them. Cloud Foundry® is one such platform that can cater to such scenarios. However, it is still in a nascent stage and we will have to wait until it matures. Until then, we can look at mixing and matching different platform components to achieve this. Let us understand how we can do this.
Consider an organization has a sizable population of .Net applications along with Java applications, Java being the majority. Now, let us suppose this organization wishes to implement cloud and has to choose a platform to do so.
The decision should be based on what the platform would be able to support. If we go by the majority and choose a platform that supports Java then there are two options left. One is to convert all .Net applications to Java and the second is to migrate these .Net applications, as is, onto the cloud infrastructure on the traditional platform, which is IIS.
The first scenario will incur a large cloud migration cost but will result in homogeneity and easier management. The second scenario is less costly but .Net applications will not be able to reap the benefits of a cloud platform. They will still be able to leverage the benefits of cloud infrastructure but not the platform. The second approach is a better approach and becomes an alternative until a cloud platform for .Net Applications that can co-exist with the Java cloud platform is implemented. Even in this scenario, there are opportunities of consolidation and sharing.
Instead of having separate data layers for Java and .Net, one can decide on a common cloud data layer which can be used by both the Java and .Net applications. So, while choosing this common cloud data layer, we will have to ensure that this layer can interact with both the Java and .Net applications and provide the benefits of data scaling, availability and performance to both of them without discrimination.
In cloud, RDBMS is not a preferred choice because of its limited scalability and the steep costs of highly available databases. NoSQL and in-memory databases are better suited for cloud deployment. So, any of these solutions can be picked up to analyze and find out the redundancies in data entities between the .Net and Java applications. These redundancies need to be removed and thoroughly tested to ensure that both groups of applications are able to share the data and do not have any performance or scalability issues. One of the inherent features of these cloud databases (in-memory and NoSQL) is that they provide reliability, availability and scalability of data across the cloud. Hence, if both Java and .Net are sharing this data layer, they will be able to leverage the benefits, which would otherwise have required two different solutions and redundant data entities.
So, whenever you start architecting or designing cloud applications, remember what your teachers taught you in school about sharing and apply the same principle!
Siddharth Jaiswar is a Principal Architect with Syntel’s Cloud Computing Center of Excellence. He...