Archive for September, 2009


Increasing System Integration – Being a standardized method for communication allows multiple systems to interact with one another across the enterprise.

Increased Vendor Neutrality – the ability to use the proper technology at the appropriate time. Vendor neutrality within large organizations is important, in that it allows for the diversity that inherently exists within a corporation without limiting each part of the organization to it’s individual silo’s.

Enterprise Architecture – When you open up your application to other parts of the enterprise as a consumable service – or group of services, it makes the solution available to Enterprise Business Modeling and available as an entity that can be made part of a bigger problem solution. In other words, it gives the Enterprise Architects the ability to use individual solution architectures more as if they were components of a larger model, rather than as a self contained entities.

Reuse – As with the main driving force behind Object Oriented Programming, the ability to reuse logic is a compelling concept. If you build the same component each time you build a new system you in essence have to fund it’s construction each time.

Agility – The ability to use, then reuse – in different ways or for different requirements – system components as the business changes makes SOA extremely flexible to changing business dynamics.

SOA As An IT Asset.

When talking about SOA what we tend to on a technology basis is talk about Web Services.   Services typically encapsulate some unit of business logic, useing a standard method of communication.  Web Services provide a way to develop logic that is originally indicitive of a particular problem, but can be reused by other units within the enterprise.

A real world example of a webservice would be an accounts receivable service.    Calling this webservice with the proper information would cause the accounts receiveable database to be updated with the information that a particular account had been paid.   As a single unit of work this doesn’t sound so terribly exciting.

So let’s use a real world example.   A manufacturing company who manufactures generators has built a new website.   They have streamlined their entire IT infrastructure so that from this single website a client can place an order for a generator and expect turnaround and delivery time within 30 days.

Let’s break down the steps that must occur before the generator is delivered to the client. Assuming the contract was written so that 50% of the money was delivered up front, and 50% after the generated was delivered and installed.

The client would log onto the site, fill out all the specifications that were required, specify delivery location, then add a method of payment.  Easy enough, but how would this web request turn into actual manufactured goods delivered to the site on time

The first step of course is to take receipt the initial payment, and inform accounts receivable that payment has been made.  (Visa.processPayment(cardno) then AccountsReceiveable.makepayment())

The second step is to inform Manufacturing of the desired specifications of the generator and date of expected delivery.(Manufacturing.build(specs,deliveryDate, OrderNo)

Manufacturing would then have to order the parts to build the generator. (DateToBeDelivered = Parts.request(PartsList))

Manufacturing would then inform delivery that the generator is ready to be picked up.  (Delivery.pickitup(ModelNo,CustNo,OrderNo))

Delivery would check the customer database for information on this customer, and this particular order no.  Customer.getInfoOnOrder(OrderNo)

Delivery, once delivered would inform Accounts Receivable that the generator had been delievered, so that the rest of the payment could be collected.  (AccountsReceivable.theyGotIt(ModelNo,CustNo, Date))

Accounts Receivable would then take the last bit of payment.  (Visa.processPayment(cardNo))

While this is simplified in terms of what really goes on when a generater is ordered from a manufacturing company this example illustrates how many different pieces of the enterprise are involved in a given order.  So the obvious question at this point is, why doesn’t the enterprise build one massive system to handle running their entire business.

Because the risk to the enterprise in depending on 1 and only 1 system is to great.   As a nimble flexible and agile enterprise you have to have all of your departments functioning independently of one another.   In our example, you want all departments, Accounts Receivable, Manufacturing,  Delivery, Parts to be working asynchronously of each other, and not dependent.   You also don’t want to have to risk your entire business flow, if you need to do an maintainence release of the software by relying on one system.  So in order to isolate each part of their business company have built silo’s around each individual department so it can operate in a protected mode.

However while protecteing each individual group from a catastrophic failure, companies over time have made it more difficult for these groups to work together.  Each invidual group has it’s own self contained systems to perform it’s given part of the business.   So in our small example, you would have an Accounting system to do Accounts Receivable, you would have Parts System that monitors and keeps track of parts, you would have a system responsible for controlling the manufactureing process.   You would have yet another system responsible for running the delivery process.   Each one of these systems would operate entirely independent of one another.

So how do we join these systems together without making one giant enterprise level application with a single point of failure?   Enter Web Services.  Web Services are the connective tissue of the enterprise.  They open up each part of the business to other parts while maintaining control within each silo.    SOA at the enterprise level is the practice of articulating how the overall enterprise works, in terms of system and dataflow, cataloging the current state, and defining how to solve a global business problem typically using Web Services as the means of communication. A SOA architecture typically tries to align IT with the business in order to fit all the pieces together.  It involves extensive amount of modeling of the current business, so as to articulate the given solution.  This model, then because a basis for communicating how the business is run, from an IT perspective and how each piece fits together.

This is how a SOA enterprise level undertaking become an IT asset.

Follow

Get every new post delivered to your Inbox.