Inception of Eras Platform as a Service
Having been in IT industry for more than a decade, I accumulated a number of software ideas including business, web and mobile apps. Some of these pet projects where completed and released to the public that became quite popular however a majority remained in the backlog.
The idea behind leaving Microsoft was to get more time for my own projects. So after I left MS I decided to do an estimation of all such project ideas before starting with my Customer Bridge project. Often admired for speed I did an aggressive estimation but that too revealed a startling 200 man years of work.
At this point I knew I needed a smarter framework that would "auto-magically" do all the plumbing work which is redundant across different kinds of software projects. And so Eras was born to cut down 70 to 80% of the development time from each such project.
Once the core of Eras was built I released it to a few close friends (ex-colleagues) who loved it as a great platform for their own pet projects and started pouring in with suggestions and applying the platform in several interesting ways. (At this point there are many such projects running on Eras Platform)
During one of my assignment as a consulting architect at a firm for a particular project there was a need of a cloud platform that would collect information posted from devices and present analytics from such data, where Eras was immediately bought in as the requirement was accomplished in less than a day, with Eras PaaS serving as the core engine. Since this first sale, Eras Private Cloud has served many other clients with multiple projects.
Being an architect, I contributed to a number of Business Applications build or migrate to the web. I had a single blue print architecture that served as a template for each of these projects. Even the implementations were the same for all such applications based on SOA (Service Oriented Architecture).
What all SaaS (Software as a Service) implementations had in common -
1. A hosted web service accessible through web API (SOAP or preferably REST)
2. Business logic embedded in service for processing of data before storing, retrieving, interacting etc.
3. Data storage with possibly flexible security permission configuration.
4. Web application compatible with different devices.
5. A console with functionalities based on different levels of administration or management.
The road blocks such as performance, scalability, security, extensibility, customizability, etc. are all consistent in nature across all such projects, and the solutions also consistent. Assembling such solutions into a framework would easily eliminate the common nuances of SaaS projects.
Realizing a major part of time and cost involved in building web solutions from scratch, dealing with managing data and interfaces and tackling the common problems; is redundant; it can and must be available through simple configurations.
It should not require starting from scratch; development should begin directly from the point where business value is added.
It should not take ages before a software idea or website can be seen taking a shape; possibly creating working prototype without writing any code.
Identifying a pattern in service applications and with such driving forces I started working on a model of Entities, Relations, Actions and Solutions as framework for a platform that allows building software solutions through simple configuration.
And further provides -
2. An action framework that extends the web service for custom actions, again it can be developed in the programming language of choice from Java, .Net or PHP.
3. Data storage for the configured entities with automatically created actions for create, read, update, delete, import, export and file upload / download.
4. A security framework for configuring access permissions on entities and actions, with limited access on filtered data along with field level restrictions.
5. A set of UI elements such as views, forms, etc. that gets created automatically and can be easily customized and configured in sites.
6. A default site (Main Site) created for administration purpose where each user of the system gets control based on his security privileges.
Besides automating development activities as much as possible, the platform also takes care of Performance & Scalability and simplifies System Integration.