Social Networking Mashups

March 22nd, 2008

I posted my first blog post on November 10th, 2006. The title of the blog post was Web 2.0 and it was a result of me attending the Portals & Collaboration conference in Boston, MA. It is interesting to go back and read this post. I gave a summary of what I learned to be Web 2.0 along with some thoughts on how Web 2.0 might help enterprises and traditional web applications. Well, here we are…silo social networking sites such as MySpace, FaceBook, etc are not enough anymore. I am not saying that MySpace and Facebook are going anywhere as there is definitely a place for them. However, I see users wanting more from the applications they use often.

Users are asking for Social Networking Mashups. My definition of a Social Networking Mashup is a mixture of traditional application functionality + social networking. For a typical large enterprise, this maybe a CRM application which provides the basic functionality of managing future and existing customer relationships along with a social networking aspect. The social networking aspect provides the ability for sales reps, marketing and customer support the ability to collaborate and share thoughts and ideas right along side the core CRM functionality.

I am not talking about this on just a theoretical basis. Here are some firsthand evidence that the need for social networking mashups are not only coming, but are here:

1. We at CityTech have seen a very common demand lately in that our existing and new clients are asking for a sprinkle of social networking functionality in almost every new application we are commissioned to develop.

2. Look at some of the new web applications coming online lately. You will see that many of them are providing social networking alongside of the functional aspects of the application. For example, Zecco.com is a free trading community. Zecco.com not only provides users the ability to execute trades and manage their portfolio, it also wraps this functionality with a community aspect. You can setup an avatar, profile yourself as a specific type of trader, participate in discussion forums, meet online friends that are possibly trading the same stocks as you, etc. Zecco.com does not charge any commissions for trading stocks just as long as you trade under a certain number of transactions per month. A common question about Zecco.com is how can these guys survive without charging any type of fee or commissions. Look at the writing on the wall! Zecco.com is providing trading functionality along with social networking. They know that if they can get people to sign-up for free trading that they can keep those users coming back by adding value to their experience through social networking. This will keep existing users coming back and also attract new users. I suspect that Zecco.com will primarily drive revenue with advertising and of course the interest or leverage they realize when users put cash in their account, margin interest, etc. This is a good example of a traditional web application providing a social networking mashup.

3. I read about a new startup called Ringside Networks. This startup is lead by Bob Bickel the former head of business development at JBoss as well as Bluestone which was aquired by Hewlett-Packard. Ringside Networks is building an open source, Social Application Server. According to Ringside Networks:

The Ringside Social Application Server is the first open source platform that enables website owners to build and deploy social applications that operate with existing website content and business applications while seamlessly integrating with social networks such as Facebook. Ringside Networks is going to enable any web site to enhance their communications with their user base by creating and deploying social applications, and expand it beyond by allowing web sites to integrate with the large social networks like Facebook.

Very interesting. I am excited to watch this product evolve as I can really see value in externalizing this functionality using APIs and being able to add the social networking aspects to existing and new applications in a modular fashion.

Being in the technology business is great. There is always something new to learn. Being in the technology consulting business is even better as we are constantly challenged to help our clients increase their value proposition to their customers through the use of technology based solutions such as social networking mashups. They are in demand now and they will continue to be in the future. We look forward to helping our clients integrate social networking into their applications and products as I believe it is a value add to any public or enterprise application. I look forward to anyone’s comments, perspectives and opinions on this subject.

The Chicago weather definitely tried to challenge the attendance at the inaugural Alfresco Regional Meetup last week. Despite the snow and cold, roughly 45 people showed up. I thought this was pretty good considering the weather and that it was the first Chicago event for Alfresco. Here is a quick list of highlights taken from the event:

  • The meeting was kicked off by Michael Uzquiano (Alfresco) giving an in-person “Alfresco in an Hour” presentation.
  • Ian Howells (Alfresco CMO) presented the latest findings from the Open Source Barometer - a survey using opt-in data provided by Alfresco community members.
  • Matria Healthcare and CityTech (Jeff Brown) talked about the use of Alfresco in Matria’s next generation touch system.
  • TSGRP talked about a social networking proof of concept which uses Alfresco to store content related to a user’s network.
  • Michael Uzquiano (Alfresco) showed a demo of Alfresco’s website framework application. The demo was very impressive. The product walked the user through a series of questions related to the new website, then created a drag and drop based site for managing the content.  The framework passes JSON between the Alfresco Web Script tier (REST based services) and the web front-end for rendering and interacting with content. There was talk about whether this framework will be available via the Alfresco Forge or possibly even being rolled into the core Alfresco product. Either way, we can’t wait to get our hands on it as it has been a long time coming.

After the presentations were over, Alfresco sponsored a cocktail hour where some of the attendees stuck around, drank a couple beers and chatted about technology. A few of the CityTech guys (Jeff Schwartz, Jeff Palmer and Tom Kelly) ripped out their laptops and setup shop on the cocktail tables to show a couple more real-life examples of Alfresco centric applications. One of the applications the guys demoed is a contract management application we developed using Alfresco to manage a highly complex contract approval workflow (over 50 steps!) and related documents for a large municipality. The other demo showed how Hyperic (and open source enterprise application monitoring system) could be used to monitor the health of Alfresco through the use of Hyperic monitoring plugins. On a side note, it is amazing how the open source application eco-system is growing. There is great value in bringing the top tier open source applications such as Alfresco, Hyperic, Mule and JBoss together to provide enterprise caliber solutions at a fraction of the cost.

It looks like the next North American Alfresco Community Conference will be held in San Jose, California on March 12, 2008. We might actually have someone attending as Shane Johnson happens to be in the Bay area for a while working on a large WCM project. Hopefully, Shane can continue to carry the torch and blog on the west coast version of the North American Community Conference, so please check back to http://blogs.citytechinc.com often to keep up with the scoop!

Our very own Shane Johnson has been asked to present at the 2008 TheServerSide Java Symposium in Las Vegas on Friday, March 28. Shane’s session will address the emergence of web content management and portal integrations specifically discussing his experience integrating Day’s Communiqué WCM and BEA’s WebLogic Portal. He will share his hands-on experience in web content management and portal integration by using a case study as the basis of the presentation.

We are excited to see Shane’s name in the same mix as Eugene Ciurana, Rod Johnson, Neal Ford, Ted Neward, etc. This is yet another example of a CityTech’s consultant being recognized as a leader in an emerging technology such as web content management and portal integration.

If you can swing a trip to Las Vegas for a few days in March, come on out and sit in on Shane’s presentation. I don’t think he can make any promises in offering any gambling advice, but there is a very good chance you will learn a few things about integrating a web content management system with a portal.

Goodbye 2007 and Welcome 2008!

December 30th, 2007

As we say goodbye to 2007 and welcome the new year, I would like to thank our employees and clients who have contributed to CityTech’s success and growth in 2007. I can’t say enough on how fortunate I feel to have the opportunity to work with such great people on a daily basis.

Happy New Year!

Records Management
According to AIIM
, Records Management can be defined as: “The application of systematic and scientific control to recorded information required in the operation of an organization’s business, standardizing access to complete information through common classification and indexing methods and ensuring the preservation of records in accordance with regulatory and operational business requirements.”. Wow, what a mouthful. Records Management as simply a process in which an organization follows for managing the lifecycle of documents used within an organization’s business context. These documents are of special interest because they have been used to make a business decision or were a by product of a business process.

Records Management is not just for public companies needing to comply with new laws and regulations. Records Management should be employed by any organization wishing to organize and manage documents that are used as part of a business process or a by product of a business process. Having a solid Records Management initative in place can save an organization money today by managing the lifecycle of important documents, making them easier to discover by end users as well as in the future by setting an organization to field any type of eDiscovery request.

What is a Record?
Records are defined as any recorded information that is created, received, and maintained by an organization in the transaction of business, in pursuance of legal obligations, or in the conduct of day-to-day activities and kept as evidence of such. There is a fine line between a record and a document. A record can be a document (or any other piece of content). What makes a document a record? If a document was used in a business decision or process, then it should be treated as a record and managed by a Records Management system. Examples of documents that could be managed as a record for an organization are:

  • Reports involved in decisions (i.e. I sold 500 shares of xyz because this report indicated I should do so)
  • Communications (i.e. email, IM)
  • Document containing information related to an official action (i.e. we are going to tow your car, etc.)
  • Policies (i.e. human resources communications with employees, etc.)
  • Legal or financial information (i.e. financial statements,
  • Business Transactions (i.e. invoices, past due notices)
  • Web Content (i.e. information provided to end viewers related to special pricing, etc.)

What is the Motivation for Records Management?
Recent dramatic headlines have made it quite apparent that records management (or the lack thereof) is an essential activity to ascertain and confirm the credibility of many business transactions and government activities. The proliferation of electronic documents and the potential litigation exposure that they cause are becoming the bane of legal advisors and records managers in many corporations and government agencies. There are several notable court cases that have resulted in corporations and government agencies being liable for large sums of money due to their inability to produce an electronic (or paper) document that was requested in trial.

Another motivation for having a Records Management initiative in place is to minimize information overload. A short-sighted approach to information management is to continue increasing data warehouses and storage subsystems to be able to hold more and more business records. But, without the means for easily categorizing business records for easy retrieval or classifying key e-mail messages as business records from basic non-critical communications, organizations are, in effect, creating “digital landfills” where every record is stored but no record is very easy to find. The inability to easily find the information you are looking for continues to drag down businesses. A Records Management initiative will help manage the “digital landfill” and only preserve what is required and useful to the business while minimizing the time for users to access the information they need.

One mistake many organizations make is making the policy of: “We will keep everything forever”. This is the worse thing an organization can do because it makes the organization liable to possibly reproduce any document that has been created since the organization’s inception. We know that even if this is possible, that the discovery cost in finding a specific document from decades ago would be a very expensive operation. In the Rowe Entertainment, Inc. v. The Willam Morris Agency, Inc. (205 F.R.D. 421 S.D.N.Y 2002) case, the litigant estimated it would take approximately $10 million to produce a single requested document! Needless to say, this organization did not have a Records Management system in place.

Successful Records Management
What are the requirements for a successful Records Management implementation? We at CityTech believe that a Records Management initiative can only be successful if end users are using the Records Management system. This means they are actively evaluating whether a document should be a record and then figuring out what file plan that document should follow (a file plan provides the structured, subject-based filing scheme required to support a retention schedule sot hat proper retention and disposition can be carried out for the appropriate records). The technical solution could be the best on this planet, but if it does not overcome the human factor, it won’t be successful.

In order to minimize the human factor as described above, a Records Management solution must be transparent to the end users. It should provide the end users a simple process for classifying and creating records. The system should understand the context in which the user is working and provide as help/hints in the creation and management of the record as possible. The more pervasive the Records Management solution is in an enterprise, the more successful and comprehensive the Records Management initiative will be. Make sure you choose a Records Management solution that provides your users access to the Records Management system either through a specific client application or integrated with the application they work with on a daily basis (the better option). Beware of vendors requiring you to buy a CAL (license) for each user that will use the Records Management system. This can be a “buzz kill” for any Records Management initiative.

Getting Started with Records Management
We believe that a Records Management initiative should evolve from within an organization’s departments and also have executive sponsorship. In many cases the Records Management initiative is typically initiated by the IT/IS department. This is ok as the IT/IS department should be involved in the solution evaluation from a technical perspective. It is best when the IT/IS department plus a user from each department in an organization are involved in the evaluation of the Records Management solution (typically a component of an overall ECM solution). The IT/IS department’s role is to make sure that the solution fits their technical environment and will be something they will feel comfortable supporting. The end user from each department will evaluate the product based on its functional offering. They will confirm that the solution will be something their fellow colleagues can use with minimal impact to their daily tasks.

After the solution is selected and procured, we recommend a small Records Management pilot be executed. This pilot might be an entire department (i.e. Human Resources) or just a segment of a department (i.e. Recruiting). This can depend on the size of your organization and/or the availability of the participants. For example, you would not want to choose a department that is under the gun on something else such as a marketing department who is currently in the middle of performing a product launch. You also need commitment from a couple key representatives of the selected department to help champion the initiative. Once you have buy-in for the pilot, you will then need to identify the department’s Records Management needs. What are the records? What are the retention requirements? When should the records be destroyed? When can a hold take place? Is there approval processes required before a document is created as a record? All of these questions (and more!) should be answered for the scope of the pilot. Once the records and file plans have been identified, it is time to figure out how the identified content is created today by the end users. If they are created by another system (i.e. ERP, Web Application, Jane’s 2001 VB App, etc.), then looking at a way to integrate that system with the Records Management solution is a good strategy. Remember, the key to successful Records Management is pervasiveness. In order to be pervasive, the solution must be as close to transparent as possible to the end user. So, integrating with existing applications or making the creation of a record simple is important. Once the pilot is up and running, it will be important to gather feedback from the users of the Records Management solution. These users are not only the end users that are creating the documents (ultimately records) but also the records managers who review the records, authorize destruction, etc.

CityTech’s Records Management Solution
CityTech’s Records Management solution is based on Alfresco’s ECM product. We are excited to have Alfresco be the core of our Records Management solution. Alfresco is based on open standards and has the ability to integrate with just about any existing application through a variety of integration methods. These qualities enable the Records Management solution to be pervasive in an enterprise. As discussed above, this drives the success of Records Management in an organization. The Records Management functionality is in accordance to the Department of Defense (DOD) Standard 5015.2. This standard defines the basic requirements based on operational, legislative and legal needs that must be met by records management application (RMA) products acquired by the Department of Defense (DoD) and its Components. It also defines requirements for RMA’s managing classified records. Contact me if you would like to learn more about our Records Management solution.

In future postings, I will be going over our Records Management solution along with some real life use cases where we have seen great success in employing Records Management solutions for our clients.

Posted in ECM | No Comments »

Alfresco WCM 1.0

March 13th, 2007

The 2.0 release of Alfresco’s successful ECM product includes the long awaited Web Content Management (WCM) module. In this blog I summarize a couple key features I believe are worth noting which could set traditional web content management solutions into playing catch up. Try it for yourself by downloading the Community Edition, in a matter of minutes you will be up and running.

Traditional web content management provided content authors the ability to edit content declaratively using a content authoring environment offered by the web content management product. This authoring environment would be something the content authors would be trained in since it was most likely drastically different than the tools they were used to using (i.e. Dreamweaver, etc.). Additionally, the website became a victim of vendor lock-in since most traditional web content management solutions dictate the methods in which you will create the layout of your pages, content and navigation. The “framework” in which you built your website content assets was something the web content management solution made you use, so you were at a loss if you wanted to do something outside the box, such as integrate an RSS reader or grab some data from one of your company’s databases or a web service (i.e. stock quotes, etc.). Some of the more advanced [traditional] web content management solutions tried to keep ahead of the curve offering proprietary toolsets that enabled external data access. However, these toolsets and work around strategies introduced bad practices from a technical architecture perspective, violating the very popular Model View Controller (MVC) pattern since you were adding business logic and enterprise integration “hooks” directly into the View.

In the Web 2.0 world, being able to manage web applications that live within a world where they must participate in mashups and integrations with other products is becoming very important. Alfresco’s WCM solution has changed the approach to web content management. There are two very unique features that make it standout amongst the other commercial web content management solutions:

1. Web Framework Independence
Alfresco’s WCM does not dictate or assume the implementation framework your website was developed on. Unlike traditional web content management solutions where the vendor dicated the framework and tools you used to implement the website, Alfresco completely leaves this up to you. This means if you have an existing site that is based on any of the popular web application frameworks such as Struts, SiteMesh, Tapestry, ASP.NET and it is composed of structured content (i.e. database driven content) AND unstructured content (i.e. news releases, marketing information, images, etc.), Alfresco’s WCM can manage it as it is without any unnecessary conversions to a proprietary framework. This means that your existing development staff can continue to use the tools and frameworks you have already invested in with complete freedom to use the features offered by those tools and frameworks. A content author or developer can map a Alfresco CIFS drive on their local workstation, point Dreamweaver, Eclipse or Visual Studio to the CIFS share and work freely just as if they had a local copy of the website. The CIFS drive still takes on any of the workflow triggers and aspects that you may have configured for the workspace. So, if the author saves the next press release to the site, it could potentially triger a jBPM based workflow which would manage the approval process and any other enterprise integration that was setup for that content type. Your imagination is the limit.

2. Virtualization
“Virtualization” is a hot topic these days. If you are a system administrator, when you hear “Virtualization” then you probably think of VMware, Xen or Virtual Iron. Alfresco’s WCM Virtualization does not virtualize the hardware in which it runs, but provides virtualization of the website it is managing. What does this mean? This means that you can view your website as it will be in the future given one or more content changes your content authors or developers may have in their sandbox. Alfresco’s WCM provides content authors and developers their own sandbox in which they work. At any given time, these authors and developers can view their updates along with the entire website just as it would be rendered for the end user. Additionally, they can choose other author and developer’s sandbox content in addition to their own changes and then be able to view the entire site. Alfresco accomplishes this by running a virtual web application server that serves up snapshots of the web application per a unique URL that is designated by the content repository. You might ask, if you can virtualize a site to see what it might look like at some time in the future, can you see what the site looked like in the past? The answer is yes, you can view a site’s content for any previous snap shot in its entirety for any given time in the past.

As with all of Alfresco’s ECM components, the WCM content is stored in the same repository as the other content managed by a typical ECM solution. This is important as it provides the ability to leverage common aspects, content models and workflows that are used by the other ECM components such as records management, document management and digital asset management.

Look for Alfresco’s 2.1 release in early April, 2007 which will include more WCM features such as new tools to simplify page layout, site management, deployment and dependency management. Other core product features will also include a preview of the Microsoft Office plugins which will enable integration with the popular Office product.

Alfresco 2.0 Released

March 3rd, 2007

Alfresco has released the 2.0 version of their successful ECM platform. The release has been issued to the community (free) and via the Alfresco Enterprise Network (24/7 support) which includes top notch support from Alfresco’s development engineers. This will be the beginning of a series of posts that I will be writing on the Alfresco 2.0 product.

First, I will do a short introduction on the management team at Alfresco as I think this is an important component of their success so far. Alfresco was founded as an open source alternative for enterprise content management. The founding members of Alfresco consist John Newton (Co-Founder of Documentum), John Powell (Former COO, Business Objects), Dr. Ian Howells (Former VP Marketing, SeeBeyond), Kevin Cochrane (Former VP Web Content Management, Interwoven), Matt Asay (Founder and Organizer of the Open Source Business Conference). The development team consists of the former Documentum Java Web Development and Portal Team and former Interwoven TeamSite and OpenDeploy Engineers. They are funded by leading investment firms Accel Partners and Mayfield Fund. Having the right people on board with funding is a good start to any successful company.

Now for the fun stuff….the 2.0 release packs in several new features as well as extensions to features included in the 1.4 release. Here is a short list summarized from Alfresco’s site:

  1. Document Management (enchancements) - more multi-language support capabilities
  2. Web Content Management (new) - first release of WCM leveraging same repository as document and records management features with rapid import of existing web applications of all types (J2EE, Static HTML, etc.). This first release offers many other features as well including virtualization (i.e. show me what my site displayed to users on 1/3/2007 @ 1:30 PM, etc.).
  3. OpenSearch (new) - Parallel, Federated and Secure Search capabilities (huge!!)
  4. Alfresco Application Exchange (new) - Alfresco Module Package (AMP) capabilities to provide simple methods of packaging functionality that may be shared within an organization or Alfresco partner.
  5. Records Management (new) - advanced customization capabilities for FilePlan execution, advanced scheduling management for record cutoff, hold and disposition
  6. Web Client (enhancements) - additional rich client features leveraging AJAX

In upcoming blogs I plan to go over each of the features listed above in more detail. I also will be talking about Alfresco’s implementation architecture which I believe presents a major competitive advantage over the existing [legacy] ECMs in the marketplace today.

It won’t take much to find a conversation with a bunch of .NET architects sitting around having a beer discussing why ADO.NET DataSets are good or bad compared to PONOs (Plain Old .NET Objects) and if DataSets are better whether the effort spent maintaining a Generic DataSet based application is less than the effort required up front in designating the schema for the Typed DataSet. My opinion is PONOs are the way to go, but too many people have written about this debate and I don’t intend to be another. If you Google enough, you can find a wealth of discussion around this matter. In this blog posting, I talk about a performance test I have conducted that shows the difference in timing in the instantiation/creation and DB data mapping between PONOs, Typed DataSets and Generic DataSets.

The test apparatus has a main for loop that loops 500 times. Within this main for loop, I have a individual for loop for each the PONOs, Typed DataSet and Generic DataSet. Each of these individual for loops calls a data access object which exposes three methods: GetObject(int id), GetTypedDS(int id) and GetGenericDS(int id). The GetObject(..) method uses the SqlDataReader to fill the PONO and the GetTypedDS(..) uses the SqlDataAdapter.fill for filling the DS. The database connection is created and opened prior to the testing and is kept open for the entire test, thus removing the penalty to open the connection from the results. The database table has 37 columns in it which all map to 37 properties on the PONO and 37 columns on the Typed DataSet (no mapping on the Generic DataSet of course). No ORM (i.e. nHibernate or iBatis) was used for the PONO test, just straight DataReader code. The System.Diagnostics.Stopwatch class was used for tracking the time. For each of the 500 loops, I write a sample to a data file for later analysis. This file writing is done outside of the timing tests. The results are shown below:

Data Structures

The time it takes to create a PONO and fill it with data from a database is less than 1/2 of what it takes to do the similiar operations with DataSets. In most applications, going to the database to get data so that it can be shown to the user is a normal use case. This test has proven that by using the DataReader and a PONO, you can cut down on the time it takes to do this simple operation in 1/2 versus using a DataAdapter and DataSet.

Open Source Business Model

November 29th, 2006

In the past year the open source business model has intrigued me. I have used open source based software in the last 6 years here at CityTech in my role as a principal consultant, using some of the great frameworks, APIs, applications, etc. for various commercial projects. I have been nothing less than pleased with the quality and flexibility provided. After reading various articles, listening to several podcasts and talking to various executives, I now get how and why the open source software business model will work and succeed for both the vendor and customer.

There are differences between the various open source projects. Some are projects are driven by a loosly structured organization without much structure outside of code management and some are driven by more formally structured organizations where the organization is organized much like a traditional structure with a sales team, marketing team and of course a development team. Here are some points that really rang the bell for me in understanding why any commercial organization should seriously look at open source as an option for enterprise software:

Quality
Open source development teams are quite strict in the methodology they follow for development software. For example, almost all open source projects have a long waiting period before they let a developer commit code. You cannot simply join the team and start pushing code into the trunk and eventually see your updates in the an upcoming release. You must EARN the right to be a commiter on the project. Some critics of open source talk about the risk of using software that has been written by developers that have not been qualified at some crazy time of the night. This is not true. However, let’s take the typical software firm for an example: they may hire 20-30 developers at one crack. Each developer probably goes through a strict interview process over several days which tests their ability to communicate and develop software. Once those developers are hired, they immediately will be a committer to the project they are working on. There is no “baking” period for them. They walk in, get requirements, start coding and commit they code to the source code repository. What happens when one or two of those developers are bad hires and technically imcompetent? In the open source world, you earn the right to commit by your hands-on ability writing code and contributions to the project (meritocracy at its best).

Risk
The aspect of risk comes to mind all the time when considering an open source product. This is quite humorous to me. Take the traditional software company: You pay $xxxx for the initial license and then pay $yyyy for support each year. As soon as you sign the dotted line for the $xxxx the risk has shifted from the software vendor to you. As soon as you pay for the initial license, you are on the hook for keeping that sofware around until the return on its investment has been met. The software vendor could supply sub-par support in the upcoming years and get away with it, because what are you going to do? You paid the $xxxx up front and your management knows this, if the software vendor under performs, you can’t just write it off without being embarassed by others in your organization. You stick it out with a sub-par product and support contract. With a professional open source based software vendor, you pay $0 for the initial license fee but own the source code and then pay $yyyy each year for support. As soon as you sign the deal with the open source vendor, the risk STAYS WITH THE SOFTWARE VENDOR since the customer is not paying for an initial license fee. The customer is in the driver’s seat, not the software vendor. It is up to the open source software vendor to provide top notch support to keep earning the customer’s business since that customer could cut the support contract at anytime without losing any initial investment.

As with most of my blog entries, my thoughts and opinions are driven by the various information channels I keep in contact with. These include articles on the web to open source vendor podcasts all the way to Berkley podcasts on the topic of open source law (yes, it is true, I listened to a Berkley law professor teach several classes related to the open source business model AND I did NOT fall asleep!). Comments? Related Links: http://www.opensourcestrategies.org/

Does your SOA Need to Drink SODA?

November 21st, 2006

In the past year I have seen SOA (Services Oriented Architecture) gain momentum with our clients. In this post, I offer my perspective of how an SOA can evolve organically in an enterprise after the basic infrastructure has been put in place. Too often I see a project plan that shows the development of a new, custom enterprise type application as a deliverable, and then I see about the same size (or bigger) effort for providing an “interface” or “service” to the organization’s SOA to be consumed by other enterprise application(s). I believe that if the custom application is designed the correct way from an architecture standpoint, the effort of exposing an interface or service into the custom application’s business logic/action can be much simpler of an effort which can truly enable payback for SOA enterprise initiative. I introduce what is a new industry acronym SODA which stands for Services Oriented Development of Applications as a possible catalyst for moving an enterprise’s SOA initiative forward enabling faster pay back on investment.

Governance, security, enabling technologies (i.e. application servers, ESBs) are just a couple key elements of any SOA. Another key element of a SOA is the services! Most enterprises will invest in the infrastructure which will be the basis for the SOA early on. Once the infrastructure is in place they might employ some proof of concepts or low risk projects which expose low visibility services via the SOA. In most cases these are utility type services and not really business services. After the proof of concept(s) have been completed and were successful, an enterprise will realize some momentum behind their SOA initiative. This momentum will mostly be driven by the IT organization. Soon after the proof of concept has been completed, the IT organization would begin to communicate the SOA vision formally across an organization’s business units. Hopefully, the IT organization positions the SOA enterprise imitative as guided by business value driven use cases and not technology based use cases (important point in the enterprise wide “selling” process of SOA).

There are a couple ways that a service can be categorized: (1) data services (i.e. SDO), (2) application services and (3) utility services (i.e. email service, logging service, etc.). These categories are not business driven categories, these are technical categories which can be used to help evaluate technologies that might best be used for a particular service. For the purpose of this blog, let’s define the “application” in the “application services” category into two types of applications: (1) COTs - commercially off the shelf and (2) custom - meaning those applications that are built by in-house developers or consultants to meet some custom need for an organization. I see a great opportunity to grow an enterprise SOA organically in the custom application space in an enterprise. Thus the introduction of SODA (Service Oriented Development of Applications)…

What does “Service Oriented Development of Applications” (SODA) mean? It applies the concepts of service oriented architecture to the design of a single application. Service oriented applications are composed of a set of loosely coupled services. There are very theoretical meanings behind SODA, but like with anything technology related, I like to look at it from tactical, hands-on perspective and not get too hung up on a purist view. Most things are better understood with a real world example, so let’s take one on. Let’s say an IT department at a city is building an online permitting web application. A good technical architect would set forth a layered architecture that looks like the diagram below.

Layered Architecture

I don’t want to go into all of the advantages of a layered architecture because others have done that over and over, but the idea is that the web tier or presentation tier is decoupled from the business services tier. The business services tier exposes operations that the web tier will use to accomplish what the user wants. The business logic lives in the business services tier and not the web tier. If you have been in this business as long as I have, you might say “duh” to this statement. However, I have to say this because 7/10 enterprise applications I see have business logic stuck in the web/presentation tier! Bad, bad, bad architecture for many reasons that others have written endless articles about.. Anyway, getting back to my point…the business services tier will offer operations that not only the web tier will use but it may also offer operations that other enterprise applications [connected via an enterprise SOA] might want to consume. This is where we see organic service creation. Getting back to our example of an online permitting application, let’s take an operation that you might expect to implement such as “GetPermit(..)” where the parameters passed might be of several kinds (i.e. address, customer ID, etc.). The web tier would use this operation whenever a user wanted to lookup the details for a submitted permit, maybe to see if the permit was approved or just to look back at their permitting history and lookup a past permit. Also, maybe there is a signature of this operation where you pass it an address and it tells you the permits that were applied for at the address given. If this operation was created in a loosely coupled manner with the web tier, it could also be exposed by a thin, veneer like layer (i.e. web service) to an enterprise’s SOA. Let’s hit a quick example given that this “GetPermit(..)” service is exposed via the SOA. Looking out into the future, this might open up the opportunity for that city’s 311 system (citizen service request system) to do a lookup via the SOA for any permits that happen to have been purchased or are in the approval queue at the location where a service request is being opened. Why would the 311 system want to know if a permit exists at the location where a citizen service is being requested? Well, how about someone is calling to submit a 311 request complaining that their neighbor has been working on their porch at all hours of the night. It is probable that the neighbor does not have a permit for the work they are doing and by tying the 311 request to the permitting system, this can easily be identified. Ooooh, just think then given this information an internal service request could be generated to have a city official go out to that neighbor the next day and solicit a violation for not having a permit. I see a concrete $$ payback already – and some say that it is tough to measure an SOA’s ROI ?. This example could provide a city more revenue (permit revenue + possible violation fee) but more importantly is agile enough to prevent a safety issue later (porch collapsing). So, getting back to SOA and SODA…the above example could have been accomplished in a variety of ways. The main point I am trying to convey here is that if the permitting web application was designed in a service oriented strategy, exposing the GetPermit(..) operation on the SOA is quite simple. Yes, you need to consider security and yes you may need to add a thin web service (depending on your SOA strategy, firewall traversal, etc.) layer, but the big point here is that the business logic used behind the GetPermit(..) business function is in one place.

SODA #1 One point that I want to stress (and is shown in the diagram above) is that I am not saying that the business services in your application is web service (i.e. WSDL) based and that your presentation tier (web app in the above example) call to web services on the business tier. I think web services should be leveraged for cross application (i.e. SOA) integration, but definitely not used inter-application calls between an application’s layers. Your application’s business services layer be based on whatever makes sense for your application (i.e. EJB, POJO, POCO, etc.), so that the SOA required plumbing that might be required later does not influence or slow down your application development. The big thought here is to use good software design principles to make sure that your services tier is not tightly coupled with the presentation tier which will make the SOA integration later much easier where you just have to add a thin veneer-like layer for exposing the business service(s) to the SOA.

In summary, designing new applications from the ground up using service oriented design principles can yield valuable course grained services for an enterprise’s SOA with minimal effort. None of this is new or revolutionary to say the least. It all just once again emphasizes that a good architecture should be considered at all levels of a enterprise application development. Moreover, these principles should also be considered when evaluating your next COTs (commercially off the shelf) purchase as well to guarantee it can be included in your SOA.

Posted in SOA | No Comments »