Monday, May 30, 2011

Service Oriented Architecture (SOA) - Thought #2

What is the value proposition of SOA? It is indeed an old topic, and seems no need to touch it as SOA has already been in the corporate circle for a number of years. However, just very recently I have heard of a few rather confusing arguments, such as SOA is for interoperability, or SOA is for business data management and etc.

From my humble perceptive, I believe there are two major values that SOA can bring us. One is to achieve business & IT agility and flexibility. The intent of SOA is to achieve a better alignment between the business and the IT worlds in a way that makes both more agile. Any company must stay very competitive in the highly demanding market. As a result, companies have to constantly modify/adapt its business model and, consequently, business rules. Historically, an organization IT department/group was always lack of on-demand capabilities to support very dynamical business environment, and was slow to respond the business requirement changes. But now, SOA is promising us that the marriage of business and IT can make business more dynamical and, eventually, more competitive.
 
Another major value of SOA is to provide reuse and sharing of services. IT industry had been widely replying on products and tools. A product is hardly reusable. But services have reuse characteristics. Just taking a simple analogical example, AC unit is a product; it can be installed, but difficult to be re-used by your neighbor (if the unit is installed at your home). However, AC service can be reused anywhere; either you or your neighbor can buy the AC service and use it. Same for SOA, it is to make repeatable business activities as services that can be (re)used widely. In addition, it can be re-arranged easily to meet the different business requirements. To realize SOA, of course, we need to rely on the products and tools where different vendors are trying hard to sell.

(note added on 5/31: there is a good overview article about SOA at http://www.ibm.com/developerworks/library/ws-soa-design1)

Thursday, May 19, 2011

Politics and Technology

A news two days ago showed that Donald Trump stopped his president candidacy efforts. How coward he is?! He has no courage to even try it. On the other side, it is very obvious from beginning what he has been doing was just to gain more celebrity and publicity. I am totally not convinced by what Donald Trump has been doing is for this country and for our people. Ridiculously, he has made a lot of noises about Obama’s birth certificate, nothing to do with current critical issues facing this country such as crazy budge deficit, jobs, economy, healthcare, social security, wars and American credibility worldwide. 

In fact, I was hoping that Donald Trump can jump on the wagon of the GOP president campaign. I wanted to fight with him. I have two web sites almost ready to speed up his failure (not success) for the campaign. The domain names of the two sites are:

NODONALDTRUMP.COM

NODONALD.COM

(side note: I have another site for Sarah Palin, NOTSARAH.COM, and one for Obama, GOBAMA.US)

I strongly believe that politics and technology has been tied unprecedentedly together. Just looked at the facts how Obama was successfully elected and how the Egypt Mubarak regime collapsed. There are huge momentum from technology such as google search, facebook, twitter, youtube, etc to push the political movement. It is so unbelievable.

Donald Trump: let’s wrestle each other. You do your president campaign; I do my two web sites to stop you from being our next president! And let’s see who will lose!

I dislike Donald Trump not from my Democratic or Republican position. It is just purely from the fact what he is doing NOT in the best interest of this country and our people. In addition, I believe that he is a very mediocre business man, not really entrepreneurial (he inherited fortune from his father), neither innovative. However, I have to admit that he is rather good in making noises for his celebrity.

Sunday, May 15, 2011

Business Process Management (BPM) and Pega

Business Process Management (BPM) is currently a very in-demand area. One of the factors why it's so is that business rules are always changing. If the business system in any company can not support the changes, the consequence is that the company will be much less competitive. Hence, a lot of companies now put tremendous efforts to improve their business processes in order to make them more automated, more flexible and agile.

Currently there are a few major players of BPM product in the market, such as IBM Lombardi + iLog rule engine, Pega PRPC, Oracle BPM Suite and Progress Savvion, as well as Microsoft SharePoint. I had an opportunity to work with Pega PRPC for a few months starting beginning of this year, and I passed a few Pega certificates (man, you need to study their staff for sure!). I would like to share my comments about Pega here.

Pega is very aggressive in marketing and branding its PRPC product. In addition, its marketing efforts target very much business users. Indeed, Pega PRPC product is good for business users in terms of a few perspectives such as standard user interface, delegation of business rules to business users, easy management features (work list, work basket, monitoring and escalating rules, etc), capability of quick demonstrating the prototype.

However, I have seen a few major questions (if not issues) associated with Pega product. First of all, tt is not in consistence with current technical main stream. Pega product is away, in many aspects, from the common technology language and paradigm. In addition, Pega product is rather proprietary. I am listing a few things below.

In addition to (normal) class inheritance (concept of abstract class and implementation of interface), Pega uses another type inheritance based on the name resolution involved in the dash. For example, Transportation-Vehicle-Car is inherited from Transportation-Vehicle. Pega names this type of class Inheritance as Pattern Inheritance. 

Pega product is not BPEL based, although it provides integrations with other data format and protocols (such as FTP, MQ, HTTP(s), SOAP). 

Pega stores all rules and code in a database. The code is generated dynamically and loaded into the application server (such as WebSphere Application Server, WebLogic) or Web Servers (Such as Tomcat). One of issues from this design is that you can not uninstall it straightforwardly. You need to delete database tables and restore them from the last backup. I bet no database administrator wants to do it, and any change of database has to go through formal change request.

Pega rules are stored as BLOB in a few tables. The good thing of using BLOB is easiness and flexibility. For example, if you add more rules, there is no need to change table schema corresponding to the new rules. They are just stuffed into the BLOB. The content in the BLOB is encoded and compacted by Pega proprietary algorithm. On the other side, the BLOB may impact adversely the performance. One remedy recommended by Pega is to create (or "expose" as per Pega) new columns. Then you can apply indexes on the newly created columns. 

Finally, Pega product is not very easy to learn, not only due to the mediocre documentation and lack of end-to-end tutorials, but also there are many hidden “secrets” (if you don’t know them, it takes a lot of time to figure them out as many things are away from mainstream as mentioned above). Let me chanllege you a question. How to create a new application from scratch if NOT going through the Application Profile and Application Accelerator in PRPC? Sounds a very simple question, isn’t it? Yes, it should be a very simple thing to do with other products. However, I bet you don’t know how to do it even you take 2 weeks training provided by Pega. In this respect, I believe there will be rather tough road for Pega  product to be widely accepted by development community.

Sunday, May 8, 2011

Service Oriented Architecture (SOA) - Thought #1

Service oriented architecture is still the topic everywhere in IT. Especially, if you look at any job description of IT architect professions, I bet that you will find this buz word there.

Very recently, I was involved in a discussion with a few techies working for a big insurance company in CA. During the discussion, one of the guys said that SOA is for interoperability. As a courtesy, I didn’t argue with him a lot. However, I was very reserved with his comment.

After the discussion. I felt that I need to put my thought about it straight. Come on, SOA is primarily for business. Business domain knowledge is better to be abstracted as services that can be realized by either atomic or composite service components. The latter are further implemented and automated by IT components / objects. The major purpose of SOA is to make business more automated, flexible and adaptive to changes. 

On the other hand, SOA is not only the Web services (WS) (or SOAP). Web services can be part of implementation of SOA. In other words, implementation of SOA can be achieved with WS/SOAP. I agree with the fact that WS is for the interoperability. But, SOA is not. Just put it simple, if you want to make your whole enterprise SOA architecture interoperable, use ESB (enterprise service bus) or Web service to achieve it.