Tuesday, November 11, 2008

SOA - My paradigm...

Just thought of sharing my thought process that I had when I started with SOA... 

SOA, Service Oriented Architecture. But before knowing what the SO called Architecture Is??, I wanted to know what is service oriented computing.

The definition of Service Oriented Computing can be devised as:- Service oriented computing represents a new generation distributed computing platform. It encompasses many things, including its own design paradigm and design principles, design pattern catalogs, pattern languages, a distinct architectural model, and related concepts technologies and frameworks. 

And the elements of SOC are, 
  • Service - Oriented Architecture
  • Service - Orientation
  • Service Oriented Solution Logic
  • Services
  • Service Composition
  • Service Inventory
Now if we define start looking at SOA, it can be said as,
  • An architecture that relies on “service-orientation” as its fundamental design principle.
  • Allows for easier management of business processes through the use of flexible IT connections within a well defined, standards-based interface.
  • An architectural style that emphasizes implementation of components as modular services that can be discovered and used by clients.
  • SOA is a design for linking business and computational resources (principally organizations, applications and data) on demand to achieve the desired results for service consumers (which can be end users or other services). 
  • SOA establishes an architectural mode that aims to enhance the efficiency, agility, and productivity of an enterprise by positioning services as the primary means through which solution logic is represented in support of the realization of the strategic goals associated with Service Oriented Computing.
  • As a form of technology architecture, SOA implementation can consist of a combination of technologies, products, APIs, supporting infrastructure extensions and various other parts.

OASIS (Organization for the Advancement of Structured Information Standards) defines SOA as:- A paradigm for organizing and utilizing distributed capabilities that may be under the control of different ownership domains. It provides a uniform means to offer, discover, interact with and use capabilities to produce desired effects consistent with measurable preconditions and expectations.

Services and Service-orientation
  • Service-orientation is a design paradigm comprised of a specific set of design principles.
  • Service-orientation describes an architecture that uses loosely coupled services to support the requirements of business process and users.
  • Resources in a network in an SOA environment are made available as independent services that can be accessed without knowledge of their underlying platform implementation.
  • Is a distinct design paradigm that, when applied, facilitates the creation of service-oriented automation logic in the form of services.
  • Provides a distinct means of achieving a separation of concerns.
  • Is the core to the design of services regardless of what underlying technology is used to implement them.
  • Services exist as physically independent software programs with specific design characteristics that support the attainment of the strategic goals associated with service-oriented computing.
  • Each service is assigned its own distinct functional context and is comprised of a set of capabilities related to its context. Those capabilities suitable for invocation by external consumer programs are commonly expressed via a published service contract.

Service Composition

A service composition is a coordinated aggregate of services. A composition of services is comparable to a traditional application in that its functional scope is usually associated with the automation of a parent business process. The ability for a service to be naturally and repeatedly composable is fundamental to attaining several of the strategic goals of service-oriented computing.

Service Inventory

A service inventory is an independently standardized and governed collection of complementary services within a boundary that represents an enterprise or a meaningful segment of enterprise. 

Larger initiatives may result in an enterprise environment that contains multiple service inventories, each of which can be individually standardized, governed, and supported by its own service-oriented technology architecture. The service inventory grows as projects deliver new services. Plus, opportunities to reuse existing services increase with each subsequent project.

A conceptual view of Service Oriented Computing

A physical view of Service Oriented Computing

Now summarizing the definition towards the SOA paradigm,

Service-oriented architecture represents a distinct form of technology architecture designed in support of service-oriented solution logic which is comprised of services and service compositions shaped by and designed in accordance with service-orientation.

Service-orientation is a design paradigm comprise of service-orientation design principles. When applied to units of solution logic, these principles create services with distinct design characteristics that support the overall goals and vision of service-oriented computing.

Service-oriented computing represents a new generation computing platform that encompasses the service-orientation paradigm and service-oriented architecture with ultimate goal of creating and assembling one or more service inventories.

Did I make the paradigm shift??

Jai Hind

Sunday, November 09, 2008

How does search inside websites work?

I have had the same questions when I started myself in this industry. Initial days, when exposed to RDBMS, I felt that there should be a database and a query associated to this search. Later when I get deep into RDBMS, had a feeling really is a database being used? Later I learnt that there are website search engines available which initially index the pages of the site and then render them based on query against the engine.

How may of you have heard of the word "Lucene"? Lucene, from Apache, is a full featured search engine library completely written in Java. It is an open source project and is available for Free. For those who want to take a overview of Lucene, please visit (http://lucene.apache.org/).

But I am NOT going to talk about Lucene here. Lucene requires you to take the compiled files and have it in your application. I wish to talk about two different search engines that do the work that we need and have a comparison of the same. Keep in mind that my intention is NOT to conclude on any specific implementation.

The two search engine are Apache Solr Project and ht://Dig project.

Apache Solr (http://lucene.apache.org/solr/)
Solr is again an Apache project, built on top of Lucene. Solr is a search server. It need not only feature indexing/search of websites, but anything under the SUN. Let me explain.

Solr is basically a WAR file which can be deployed with any web container. It comes with the examples which have the XML format to upload data and also a shell / dos script to do that. All we need to do, is have our data in that specific XML format and then upload the same to Solr instance. Once that is done, Solr is ready to render the search data for you based on the query string. Slor has it's own set of programming APIs also.

Solr has an excellent Administrator screen through which all the admin operations for the server can be performed.

A typical scenario where I use Solr is:- I have a requirement where I need to have a search engine in my application which is the heart of it. I convert all my data to XMLs and index it with Solr. The same in my RDBMS takes 2 secs and in Solr it is in very few milli secs. Experience it yourself by working with Solr.

ht://Dig (http://www.htdig.org/)
ht://Dig is an website search engine. All you need to do is configure the website URL int the ht dig config file htdigconfig.xml and ht://Dig index's all the page of the site and give you the output results.

ht://Dig is an Unix project and hence best suited for Unix. You need to download the software and follow a set of simple setps to setup ht://Dig. ht://Dig runs as a separate engine and would render search results based on the URL.

ht://Dig can be used at the same time to index multiple website and render search results for multiple queries. Once you have an entry to the config file for a site an indexing is performed and a database is created. Multiple web-site URLs can be configured in the same config file or you can have multiple config files.

The best practice is to have a single config file per site.

Geeks, try both, it just took 3 hours for me to try. But this a good piece of software / solution to be known..

Jai Hind

Thursday, November 06, 2008

The feeling of warmth

Good to see from Google Analytics that more people visit the blog. As I type this, a warm smile peeps through my face.

Good guys, while viewing please feel free to post your comments too, so that I start writing more about lot of topics which would be interesting for all of us..

Welcoming you all..

Jai Hind

Wednesday, November 05, 2008

America elects it's historic president

The long waited answer is finally here and Americans have elected their first black president. 

Let's congratulate to Sen Barack Obama on this his historic win to the White House. This would have been really a dream come. True to his campaign statement, "Change we need", now the Americans have decided and getting ready for the change. 

Let's see if the Democrats this time would bring peace to this world by having a peaceful agenda for the country and work towards the betterment of the same.
Picture courtesy CNN.

Jai Hind

Tuesday, November 04, 2008

Enterprise Service Bus - Who are the passengers?

Back in 2004, when I heard this work for the first time, I was just nodding my head as if I was understanding the context. It was a design discussion going on where we were deciding on a SOA based framework to be architected, developed and deployed for one of my clients whom I was working with then.

Post the meeting, I gave a quick read of what is an ESB. Having exposure to EAI, I was quickly able to grasp the crux of what an ESB is. From then on, it has been a constant journey to explore and get exposed to ESB.

In IT layman term if you want me to define ESB? Let me try it out.

"From architecting a system / solution, scalability is one major factory that comes into play. The second one is what do I do to the legacy systems?

Answering short, messaging and asynchronous programming is the proven and practised way for Q1. And for Q2, the EI layer helped us to make heterogeneous systems talk. We were actually using a messaging layer constructed out of message queues to communicate.

Now putting both together, a specification was designed on how build a platform to integrate systems in an enterprise and make them talk with each other. This is ESB in crux".

This is in initial definition that I gave to myself when I read about ESB. But now I still believe it is the same. Over a period of time, when you start yourself to work with much complex and integrated systems, with different patterns, the above definition would help you to dissect and read between the lines and make your understanding much better.

Overall ESB is definitely not rocket science, it is just a platform to make heterogeneous systems talk together and a scalable platform for larger enterprises.

For taking a quick sneak of ESB, try MULE which is an open source ESB.

Jai Hind

Is Google App Engine really worth?

Had we been asked this question few years back, atleast someone would have thought before answering. But with the trend today, "why not give it a try??" would be the answer.

The cloud computing has picked up drastically and people are ready to immediately try any open source and free software. And from google, definetly give it a try.

Google App Engine is 100% developed in Python and requires you too develop applications in Python, at present. But Google is working on J2EE too as a technology to develop and deploy applications in App Engine.

Being a Java guy, I made my hands dirty with Python to get myself started with Google App Engine and I found the quick drive to be interesting. Python is an interesting and exiciting language to work with. It is also pretty easy to develop and deploy applications (running applications) in Google App Engine. 

Having a bit of knowledge in MDA (Model Driven Architecture), I also assembled a quick code generation piece for Google App Engine and enjoyed myself.

Give it a try, you will also find it interesting....

Wednesday, October 29, 2008

BarCamp Chennai 2 Vs Google Developer Day 1


Ya, BCC2 was really a good. Had a chance to diversify myself and also meet a much larger community.

Few session were focussed on social awareness which is really good.

But I did not enjoy Google Developer Day 1 in Bangalore on Saturday. Someway or other Google has raised it's bars amongst us and my expectation from the event was also different, but they were trying to teach how to write a "helloworld" program!

I really felt bad for missing the first day of BCC2 and the travel time / trip to bangalore.

Really waiting for more events like BCC to go and attened.

Friday, October 17, 2008

BarCamp Chennai 2nd Edition

Finally yet another waited event of the year for chennai geeks has arrived, BarCamp Chennai, 2nd Edition.

BCC2 is happening on 18th & 19th of Oct, 2008 at the IC&SR Auditorium, IIT-Madras.

Me representing CSS Labs is an active volunteer in organizing the event with The Knowledge Foundation chennai. 

It really feels good to be amonst people like this. I really enjoy this exposure. Actually it always feels good to be with passionate people, who are like minded.

I am planning to present a session on code generation, and hope to see you all there...

Jai Hind