Raji Sankar

Raji Sankar has written 27 posts for Reflections

Supplement your ideas with freelancing

Entrepreneurship is tough. A number of factors make it tough. Financial requirements As founders we have complete faith in our ideas. After all, if we do not believe in ourselves who will? There has to be those few like us who are foolish enough to blindly trust and try out new ideas, take that leap … Continue reading

Modeling Business Transactions – 1 (For SaaS Pricing)

In the blog “Transforming a server application to cloud application“, I have talked about the changes required in business functions to transform an application to a cloud application. In this series I want to bring out the changes required in architecture to implement these use cases. Need for Re-architecting for pricing Starting with the pricing … Continue reading

Transforming a server application to cloud application

On-premise products are architected and designed for server operating environment i.e., they are web-based applications. SaaS, on the other hand is a cloud application (an application exposed as a service in a cloud operating environment) i.e., they are web applications. The major differences between the two operating environments are in: Pricing: There are inherent differences … Continue reading

Architecting a Multi-tenant Application

A multi-tenant application is an application where a single running instance serves many customers. An alternative to multi-tenancy is managed services, where one running instance is set up for each customer. The table below shows a comparison between the two approaches. Feature Multi-Tenant Application Managed Services Cost Structure Supports usage based pricing as well as … Continue reading

Need for a Saas Application Platform similar to J2EE Container

SaaS is the cutting edge technology in the current product landscape. With an increase in the adoption of SaaS products by enterprises, more and more ISVs are trying the SaaS delivery channel. But, delivering a SaaS product cannot be considered as just a rebranding exercise of existing products. Products mostly have been architected, written, refined … Continue reading

Customization in Saas using Plug and Play Architecture

There exists a lot of design patterns, architectures and design concepts that can be applied to technical aspects of implementing a product. For eg., we have MVC architecture that isolates the view, controller and model of the application. We have a factory pattern that defines how to create objects and so on. Yet, these all … Continue reading

Creating maven archetype using create-from-project

Maven archetypes are a great way to create templates for standardized projects. The advantage of creating a maven archetype is that it can easily integrate with any IDE that supports maven compilation such as Eclipse. In SMART we provide maven archetypes to get started on developing SMART flows easily. In this blog I want to … Continue reading

“Java.lang.OutOfMemory: PermGen space” – Garbage Collecting a Classloader

We recently ran into the “java.lang.OutOfMemory: PermGen space” issue. The experience has been a real eye opener.  In SMART we use Classloader isolation to isolate multiple tenants. We started testing it in beta a few weeks back and found that every 2 days our server went down giving OutOfMemory: PermGen space. We had 6 tenants … Continue reading

Using serialization to find dirty fields in an object

Say you are developing a framework to auto-save objects into a database. You need to detect changes made between two saves, so that only modified fields are saved. How to detect dirty fields. The easiest way to do this is to traverse through the original data and the current data and compare each field separately. … Continue reading

Preventing System.exit calls

When developing containers that run code written by other developers it is prudent to safe-guard against System.exit calls. If a developer inadvertently calls System.exit and deploys their code to be run by your container, it brings down the container process completely. This can be controlled using the checkExit function call in SecurityManager. According to the reference … Continue reading