Thursday, November 26, 2009

Cloud Computing

I have been researching about Cloud computing for one of the projects i am working on rite now. It was amazing to see the services offered through cloud computing.

In the traditional application development model, if there is a need to develop and host a internet facing applications, we need to do the capacity, infrastructure, security planning and purchase hardwares (windows, unix, websphere servers) and softwares. The process of setting up the infrastructure takes few weeks to couple months since it has to go through neccessary approvals and budgetary constraints of the organization. Lets say we crossed the first bottleneck of acquiring hardwares/softwares, the next hurdle is having the infrastructure laid down by the network group and setting up the secure environment with the Militarized zones for security purpose. Also a point to note is, if the application is mission critical and have heavy volume online transactions the capacity planning will also include the details for load balancing of the servers and the infrastructure design and environemnt set up has to account for the installation of load balancers.

Also cost wise in the traditional model, its very expensive to maintain and manage the infrastructure. The project will incur an annual maintanance cost for the servers, licenses and support to install patches and upgrades.

I think i am throwing things that is pretty normal in IT organizations. Well, the cloud computing provides a relief to all these hurdles.

The cloud computing provides the infrastructure and technology facilities over the internet. So the project team doesn't need to worry about establishing the infrastructure. The technology infrastructure is abstracted from the application development. We just need to know the type of infrastructure required for the application (For eg: windows 2008 , unix with ORACLE 10g etc.,). Once the type of technology infrasture has been determined, we can install/set up the hardwares/softwares through couple of mouse clicks and the instances will be ready to use. The infrastructure set up takes around 10-20mins and you are all set to begin development/deployment.

The cloud computing alleviates the effort/cost required to set up the infrastructure and also saves the maintanance cost. One more good thing about cloud computing is the cloud service providers automatically patche the instance/server and its free of cost.

One more point to note in cloud is, if for any reason the application requires additional servers/processing power, adding few more instance to the existing instance is pretty easy. For ex; lets say if the application requires few additioanl processing power from 8AM-5PM and can run with the normal processing power during the rest of the day, the cloud computing provides elastic facility to expand/contract the computing capacity of the server.

From cost perspective, we pay for what we use in terms of computing facility.

I was playing around with Amazon Elastic cloud and was suprised to see that within few mouse clicks i was able to mount the Unix with the ORACLE 10g database instance.

There are several providers in the cloud space but i just looked at services provided by Amazon and its extra-ordinary.

Monday, November 23, 2009

Web 2.0 & Business Process Management

Web2.0 has revolutionized the internet world and offered a seamless transition from paper forms/document to online web pages. The industries across the globe invests in IT projects to cut costs on postal and paper charges by offering the solutions online through the websites.

The telecom industry has eliminated the paper submission of application forms for new telephone/wireless connection to online submission and paper bills to electronic bills. The form submitted online is integrated with the Ordering system whereby the orders are keyed in for a customer. The created order flows through the provisioning system where the order is assigned to a network technician for physically establishing the connection to the home. Once the technician completes the order, the call charges are calculated in the Rating system and supplied to a billing system where the bills are generated and posted online for customers review and payments.

The financial services [banking] industries has integrated online submission of mortgage forms with the business process of credit approval. When the customer submit the mortgage form online, the process flow through validating credit history & residential address. Upon credit approval, the business process is coupled with the quote generation for customers review. Once the customer approves the quote online, the customer will be recieve the credit and the bills for mortgage payments are generated online for customers review and payment.

The other major financial services industry is insurance and the business process is tightly integrated with the technology. The insurance companies are promoting the sales online by selling the products through websites. When the customer requests for quote for a policy, the customers primary medical details are collected online. The medical history is verfied with medical information board and the underwriting engine generates the quotes for underwriters review based on mortality/medical history. The quotes are released by underwriters for online review of customers/policy owners. When the customer agrees for the insurance quote, the quote is converted to a policy and the policy is available online for the customers.

We can speak a lot about Web 2.0 and integration of business process management. But the ultimate benefit to the businesses are:

> Reduction in expenses incurred for paper mail
> Quickers sales
> Faster realization of cash/payments from the customers
> Reduction in manual intervention in the business process & hence decreased errors.
> Effective collection of data for generating potential leads
> Environmental friendly business

Monday, November 16, 2009

CNBC - Interview with Gates & Buffett

Last night CNBC telecasted a live show from Columbia business school. Mr.Buffett and Me.Gates answered questions from the B-School students on various aspects from past crisis (am optimistic "crisis has gone"), learnings, future opportunities, investments etc.,

I admire Mr.Buffett's strong statement about investments on education. He said he will be ready to invest $100K to his employee to go to business school as they will be worth $1M after completion of business studies. He also added that he will invest another $50K for improving communication skills and their net worth will be $1.5M.

A question was asked about Mr.Gates view on "Apple". Mr.Gates responded by applauding Steve jobs for his entreprenurial skills in bringing the Apple back on track once he rejoined the Apple when the companies sales & profits were declining.
Mr.Gates also indicated that Steve jobs brought the competition in the Software/Hardware market by introducing Mac's & iPods.

My take on the entire interview was
Success doesn't come free. You need an investment to become successful. Investment in education, investment of time, investment in research & development always fetches good results regardless of world & economic conditions. For ex; An investment banker will only be successful, only if they invest their time to research the market position, conditions, portfolios before investing in the stocks.
Mr.Buffett indicated that he studied the Moody's 1000 pages rating book twice before doing his first investment.

Thursday, November 12, 2009

GridGain for Elastic Computing

I attended a seminar on GridGaid for interfacing with Amazon Cloud. It was cool. The tool interfaces with the Cloud and performs,
Auto Scaling - Scale up/down based on the computing load
Data Grid - Split the storage across node

But it doesn't come free of cost. The enterprise edition of GridGain has these great feature and its pay per usage (On top of what we pay for Amazon). I asked the question about how to justify the pricing for the usage of GridGain on top of Cloud cost. The presenter explained that the open source version has lot more features like automatic on/off cloud, compute on the cloud etc., But the enterprise edition has more features which will be required by large organization that requires faster computing and data load power.

Tuesday, November 10, 2009

ORACLE Analytics functions

In one of the projects i have worked on recently, we had a requirement to group the user information based on the latest updated user and display the results. The usage of native SQL like ORDER BY & GROUP BY was cumbersome and leads to a poor query performance.
Upon research we discovered that the ORACLE Analytic functions can do whatever the native SQL function does with a better performance.

The requirement was to filter the unique user id, user number from the user profile table with the latest user entry and the result should be group by User Number. For Ex; the query should return the Mohan4 & Mohan 3.

UserIdUser_NumberLatest_EntryOptions
Mohan11Nov-06-2009Y
Mohan21Nov-07-2009N
Mohan32Nov-09-2009Y
Mohan41Nov-10-2009N


The result can be obtained by GROUP BY Clause, but the problem is we can only retrieve GROUP BY Columns. The non-group by columns will not be retrieved in the GROUP BY clause.

We utilized the ORACLE Analytics functions to overcome these difficulties with performance, Group by issue etc, So our query looked like,

(SELECT USER_NUMBER, USER_ID, LATEST_ENTRY, OPTIONS
FROM
(SELECT USRINF.*, ROW_NUMBER() OVER (PARTITION BY USER_NUMBER ORDER BY LATEST_ENTRY DESC) RANK
From DB_SCHEMA.USERINFO USRINF WHERE LATEST_ENTRY IS NOT NULL
ORDER BY LATEST_ENTRY DESC
)
WHERE
1=1
AND RANK=1
);

In the above query, the clause “PARTITION BY” groups the results based on the column name indicated next to it. In this case, it is acted on the column USER_NUMBER. The subquery in the above query
SELECT USRINF.*, ROW_NUMBER() OVER (PARTITION BY USER_NUMBER ORDER BY LATEST_ENTRY DESC) RANK
From DB_SCHEMA.USERINFO USRINF WHERE LATEST_ENTRY IS NOT NULL
ORDER BY LATEST_ENTRY DESC

Will display the result as


UserIdUser_NumberLatest_EntryOptionsROW_NUMBER()
Mohan11Nov-06-2009Y3
Mohan21Nov-07-2009N3
Mohan32Nov-09-2009Y1
Mohan41Nov-10-2009N3


The outer query filters the unique first record from the result set described above ordered by descending of the Latest_Entry column. So the result set of the final query will be


UserIdUser_NumberLatest_EntryOptionsROW_NUMBER()
Mohan32Nov-09-2009Y1
Mohan41Nov-10-2009N3