Tuesday, March 17, 2009

Do NOT EVER Underestimate Portal Project

This is the biggest lesson I learned from my yhree year's work. I believe, there are still a lot of technical engineers or mangers holding the wrong idea as I had that the portal project is nothing but a normal web application!

First of all, let's distinguish two important terms: Portal and Portlet.

Portal: It is a framework supporting a wide array of options across databases, directories, platfroms, and security.

What can Portal do for you?

1. Offers a single point of personalized, unified access to applications, content, processes, and people
2. Delivers integrated content and application
3. Offers a unified, collaborative workplace
4. Provides security, search, and workflow.

Portlet: is pluggable user interface component that is managed and displayed in a web portal. Portlets produce fragments of markup code that are aggregated into a portal page.

(Resources are from IBM Redpaper: WebSphere Portal Best Practices and Wiki)

The misunderstanding between portal project and portlet project is the main cause of our underestimation. Technical engnieers who are fresh new to the portal area can easily believe "Portal Project == Portlet Project", as I did years back. Now, let's see where this equality leads to:

Portal Project == Portlet Project, since Portlets == user interface components => Developing Portal Project == Developing user interface;

Since developing user interface is nothing but a normal web application who complies the portlet standard => Portal Project == Normal web application + Portlet Standard (JSR168 API, IBM Portlet API)

The popular design pattern for a web application is MVC, therefore, developing a portal project is to realize the MVC, and to choose a portal standard (and frameworks like Structs, and JSF).

The cost of this outcome is unvaluable! It dertermines the staff deployment/enrollment, the job emphasis, the project plan, and so on. And finally, the project release will be delayed, and customers will be lost.


Now, the question comes, what will be involved in a portal project? General speaking, there are following 6 topics:

1. Physical Topology: Cluster, High Availability(HA)
2. Custermization and advanced personalization
3. Developing portlet
* Choose portlet standard and frameworks: JSR168 or IBM Portlet API; Structs or JSF
* Design user interface: theme and skin
* Markup generation: HTML, WML(to support mobile users)
4. Integration
* Directory(LDAP) management: Tivoli Directory Server, Lotus Domino Server, ...
* Collaboration components: Lotus Sametime, Lotus QuickPlace,..
5. Performance Analysis
* Caching
* Sessions
6. Others: Security, Content Mangement, Search and Virtual Portals

Each sub topic could be expanded into a book, before you make any decisions, you must have a good understanding of the project requirements, balance the cons and pros of each technology which can reach the same goal, and have a good plan of your system. A portal project is not one person's job, no one can cover all required knowledges to build up a portal project alone, therefore, consulting from an experienced portal architect is highly recommended.

As we can see, portal is made to combine various systems and technologies, therefore a portal project is rather an infrastructure project than a development project.

BTW, I highly recommend you to read the IBM Redpaper: WebSphere Portal Best Practices which all necessary information about how to best plan and ensure a successful deployment of IBM WebSphere Portal. This Redpaper is not only suitable for WebSphere Portal customers, but for all portal architectures and developers.