Search This Blog

Sunday, August 7, 2011

Rapid development

In today's cloud environment, where multi-tier architecture is a must, one has to optimize code between both internal & interactive layers.
Most successful software products are those which invest on software infrastructure development such that 90% of development & enhancement tasks are automated and there is not much maintanance cost in the long run.
Here I would like to come up with a strategy which caters to both mobile & desktop devices:
1. Middle-layer that is lean & configurable. All business logic goes here.
2. Use a relational database to initially build the schema. Once the database grows and can't scale, should have the ability to move database tables into file or some other high performance i/o. The infrastructure design should be such that it should facilitate for migration from database to file storage without affecting the middle-layer.
3. Provide database transactions that will be processed reliably. Should confirm to ACID (atomicity, consistency, isolation, durability) properties.
4. Supporting high-performance api to convert binary data into xml, json or any other data format depending on end-user's device (mobile, desktop)
5. A basic CRUD (Create, Read, Update and Delete) framework that an architect should provide for building an enterprise application. Ensure all basic validations are taken care of at the middle-layer. Should support creation of UI code automatically for all targeted devices.
6. Naming conventions should be strictly followed for better readability & maintainability of the code.
7. Middle layer should be fault tolerant and also be able to handle transactions normally in such a way that even if front-end passes the data without validating it (if javascript is not supported) it should still work normally.
7. JUnit for Java, Jasmine for javascript should be used.
8. Use the most compressed data format where ever possible. With javascript now coming up with typed arrays ensure you don't hog your network with redundant data (https://developer.mozilla.org/en/javascript_typed_arrays). Don't use propreitary data formats.