| 0 comments ]

The recent new technological changes have brought about a sea change how we go ahead designing applications. Some of the technologies that i believe will have a pro-found effect on how we design and create our applications are

  • OSGi - The OSGi framework is a module system and service platform for the Java programming language that implements a complete and dynamic component model, something that does not exist in standalone Java/VM environments. Applications or components (coming in the form of bundles for deployment) can be remotely installed, started, stopped, updated and uninstalled without requiring a reboot; management of Java packages/classes is specified in great detail. Life cycle management is done via APIs which allow for remote downloading of management policies. The service registry allows bundles to detect the addition of new services, or the removal of services, and adapt accordingly. - Wikipedia. Designing new applications as OSGi bundles will require a different design mindset. Adding new features to enterprise applications will become easy. Maintenance and support cost will come down drastically. 
  • Distributed data systems - Technologies that allow us to scale and distribute our data have become stable and are being used in large applications. Handling petabytes of data have become a norm and social networking sites are doing it on a regular basis. Some of the open source technologies in the space like Hadoop, Cassandra, HBase Hive are mainstream and are all ready for use by the enterprises. 
  • Cloud Computing - Infrastructure as a platform has come into its own. Amazon EC2, RackSpace, GoGrid and others have become mainstream. Hundreds of companies are running their business on the cloud today. All of the them have launched or in the process of launching private clouds initiatives for the enterprises. Ability to connect from cloud to the enterprise data servers will mean, enterprise need not maintain costly data centers for their applications.



    Second part of the cloud is the emergence of SaaS enabled applications to connect with. Enterprise applications do not create functionality or download/deploy boxes for application features. Functionality like CRM (www.salesforce.com), Analytics (Google Analytics, Omniture, Unica etc), Payment Gateways (PayPal), Authentication (Open ID, integration with facebook, twitter etc), Web 2.0 tools (like blogs, discussion forums, online chat, bookmarking etc), Database (Amazon RDS), Source Control, Defect tracking and score of others on cloud, will mean application design will be an integration with multiple SaaS vendors with easy to use and published API's (most likely as RESTful web services)


    Do let me know, what do you think? Share your thoughts on what else you see will change the application design and development landscape !
Reblog this post [with Zemanta]

| 0 comments ]

As promised in my earlier post, I am posting the review of the book  IBM WebSphere eXtreme Scale 6 by Anthony Chaves.

IBM Websphere eXtreme Scale is an in-memory data grid which was formally known as ObjectGrid.

Chapter 1 talks about the basics of data grid. Why do we need data grids? Caching requirements in Single threaded vs multi threaded applications, failure of singleton pattern and how data grids address the issue. Good start for novice folks. Once the basics are over, getting and deploying the WebSphere eXtreme Scale is as easy as dropping a jar file in the classpath. The examples start with the basic of how to an equivalent of ‘Hello World’. The example used is very lucid and easy to understand. The example covers how to create a grid and add and retrieve data.

Chapter 2 talks about the different kinds of maps available – ObjectMap and BackupMap, how the application makes use of these and how are they configured. How does the data persistence work with Backup map and the different locking strategies available? The author has explained the locking and deadlocks very well. This topic is must read as these learning’s will be applicable when debugging and tuning the application data grid.

Chapter 3 talks about how to manage the classes with relationships between them. The Entity API allows the application developer to define the relationships so that ObjectGrid can understand the same. The author covers the Query API that provides an SQL-like view into an ObjectGrid

Chapter 4 talks about how to integrate the ObjectGrid with the database. The author demonstrates the usage of JPA API to showcase how the BackingMap is able to persist the data using the Loader. This chapter is a must read for all who want to introduce data grids in their existing applications.

Chapter 5 and 6 onwards the books starts turning advanced, with details on client/server object grid and how data grid might exist outside of your application JVMs and span across multiple computers or even data centers, Shard types , data partitioning and replication. The author details on the basic configuration required to start server instances, how to connect to a distributed object grid, managing the server/container load and tips on capacity planning. Must read for administrators, on how to tune data grids instances for effective performance and scalability.

Chapter 7 takes the reader into more advanced usage of DataGrid API on how to co-locate data and logic.  The chapters details on how to write agents that can send logic to the grid/shard.

Chapter 8 talks about the DataGrid patterns that can be deployed to build applications. The patterns are generic and are applicable for any in memory data grid (IMDG) application.

Chapter 9 talks about the WebSphere eXtreme Scale integration with Spring. How the ObjectGrid instance are injected into spring and how to write interfaces using Spring managed declarative transactions.

Chapter 10 takes the reader into the application, various problems encountered by the application developers and how to use the DataGrid to overcome the problems. We see how not only we can cache ORM objects but also non ORM objects like html fragments, xmls’ etc


Overall, the book is a must have on shelves of all, who are writing distributed applications and intends to make use of in memory data grid.

| 0 comments ]

Could not resist myself from posting this ! All manager's are currently in this state.

| 0 comments ]

The increasing demands of the customers is to build sites that scale when the traffic goes up and give superb performance. In the days of facebook launches and twitter invitations and previews, the traffic on the site becomes unpredictable. To be handle loads of traffic coming in, application architects need to exploit features that can help scale up the site.

One of the biggest challenges for a site that are heavily dependent on database, where to cache all that data.

To solve this issue, we have multiple products offerings in the market- Gigaspaces, Infinispan in the open source world. Vendors like IBM and Oracle have re-branded or released products like WebSphere extreme scale , Oracle In-Memory database.

For the discerning customers that are mostly IBM shops, the WebSphere extreme scale is a nice product that works very well with the existing WebSphere Stack of Applications. There are some good resources available on the same

IBM Redbooks: User's guide to WebSphere eXtreme Scale


Another upcoming good book is the IBM WebSphere eXtreme Scale 6 by Anthony Chaves which promises to demystify the data grid concepts and their usage in the applications. I will post my review on the book pretty soon.