The term Web 2.0 has really been foxing me. I have seen the term being used at variety of places and for variety of reasons. Terms like Ajax, Folksonomy, Wikis, Blogs, Mashup , Syndication has been there for some time, but their association with Web 2.0 was not something I was able to apprehend.

As usual, I googled and came across this definition of Web 2.0 from Tim O'Reilly, which kinda of addresses the web 2.0

Web 2.0 is the network as platform, spanning all connected devices; Web 2.0 applications are those that make the most of the intrinsic advantages of that platform: delivering software as a continually-updated service that gets better the more people use it, consuming and remixing data from multiple sources, including individual users, while providing their own data and services in a form that allows remixing by others, creating network effects through an "architecture of participation," and going beyond the page metaphor of Web 1.0 to deliver rich user experiences.

In the end, applications that make use of the collective intelligence of its users/audience and able to enrich the experience of the users are truly successful. The Web 2.0 framework comprises of such technologies ( Ajax, Folksonomy, Wikis, Blogs, Mashup , Syndication etc) that allow companies to create such applications.

In the end, Web 2.0 needs to be used for creating Real enterprise value. Patty Seybold tells here, how to use the Web 2.0 principles and harness the same into a business strategy.

If you're building an application that requires a custom isolation level in a global transaction during the execution of a use case, you've probably found out the hard way that the Java™ Transaction API doesn't support custom isolation levels. Fortunately, the Spring framework lets you design Web and enterprise applications that use custom isolation levels in global transactions. In this article, Ricardo Olivieri walks through two alternative approaches to achieving this goal.
Code snippet for getting results from Omnifind Search

The esapi.jar and siapi.jar files found under the OmniFind /lib directory are required.
This technical note provides detailed information about how the WebSphere Portal login or logout flow can be extended or customized by using the login and logout commands. Focused on versions 5.1.0.x and 6.0 of Portal, the technote describes the configuration and the interfaces of the commands, followed by two code samples that are also available for download.
Some of the Top reasons

  1. Login process - Might be taking too long.
  2. Landing Page – too many portlets, data being retrieved from multiple systems
  3. Caching – to get that extra performance, lot of times, we try to get the whole data and cache, so that when the user clicks more or expand, we might be able to serve from the cache.
  4. Trace logger enabled for the Server
  5. Use of heavy themes
  6. Number of portlets / page

In these days of framework and a standard 'n' layer framework, projects are making use of Struts/JSF in the presentation tier, IoC(Spring) for the middle tier and using Hibernate/iBatis/Toplink for the data mapping.

The methodology and the pattern of using these frameworks is pretty much standard. The development standards for design, coding, testing are again pre-defined.

Given all this, my question is what value does an Architect brings to the project.

There obvious area's where I can see an architect being useful

* Design of Integration Architecture with external services/systems
* Performance Tuning of the application
* Keeping an eye on the code quality and the team to make sure that the standards are being followed
* Setting/Reviewing of the Continous Integration Build process

Again, the above tasks are more or less pre-defined.

External Systems pre-define how they need to be invoked. Not much rocket science left there.

If the Build process are good, lot of statistics for code quality and other code metrics (using tools like Checkstyle, PMD, Java NCSS, JDepend) can be generated on a daily basis.

Application tuning means running Load Tests, Checks for Memory leaks, Object usage etc - again each of these can be determined using tools available in the market.

Based on all this, where do you see the need for an Architect in a project?

The coming of Aspects in the programming world has brought so much of clean. I, no longer need to write tons of code for logging, transaction handling, security and what not. I think of a service and next I know what aspect I need to implement.

Some of the area’s where I have used or planning to use aspects

• Logging – no more putting method entry/exits
• Transaction Handling – using spring’s transaction manager
• Profiling – to implement the code instrumentation metrics
• Error Handling – the errors/exceptions can be intercepted and logged
• Security – handling security
• User Activity Tracking – log the user transactions along with the data that got changed
• Caching – caching of data

Besides this, I have aspects for things which are not easily doable in the normal world
• Transaction Retry Logic – trying for a defined ‘n’ number of times before giving up on a transaction
• Excution Flow Display – create a graph showing how the a given transaction is being processed with all the classes and methods that got invoked

To get started, please check out the following presentation here.

Here is the list of Open Source ESB products available in the market

Apache ServiceMix