Wednesday, May 13, 2009

How do we do both SOA and Agile in a big enterprise ?

The project I am working on currently is a big enterprise application, mostly structured around the SOA model. Since we evolved a legacy code base, the service boundaries have just started to become crisp and clear. We are slowly starting to think of certain teams in the project owning a set of services, and also deciding on service contracts as a norm.

I am now starting to wonder how this model is going to work with Agile teams.

* Will this force us to do Big Design Upfront ? (BDUF)
* Will this force us to have service level teams ?
* How can we write good user stories (which are testable and showcaseable) for service level teams ?
* How can we structure the teams when we have multiple consumers (teams?) for one service ?
* Will this force developers to communicate using service contracts and documents more than unit tests?
* If we try to encourage cross functional teams, will it put a lot of stress on resourcing, with the need of shuffling people around a lot ?

I do not have answers to any of these yet, and a quick look at the Agile community , also does not give me any concrete answers.

4 comments:

  1. Hi Anand. I just sent an email to your TW account. Come chat with me if you are in the Bangalore office... I'm at the training table. I might be able to help you out.

    Sharlene

    ReplyDelete
  2. - Will this force us to do Big Design Upfront ? (BDUF)
    No, you need do "just enough", but just enough can sometimes be quite a lot.
    - Will this force us to have service level teams ?
    Managed service level teams that live with a service from conception, through development, to operation and then, perhaps, retirement can be a good thing - as long as these are business-meaningful services, not some anemic "three-layered-application-architecture-at-distributed-proportions" services.
    - How can we write good user stories (which are testable and showcaseable) for service level teams ?
    - How can we structure the teams when we have multiple consumers (teams?) for one service ?
    Consumer-driven contracts at the technical level, a cross-team "war room" at the project management and programme governance level (and do speak to Sharlene - she's done this).
    - Will this force developers to communicate using service contracts and documents more than unit tests?
    Exchange tests between teams, a la consumer-driven contracts: these comprise far more useful and insightful contracts than trad WSDL.
    - If we try to encourage cross functional teams, will it put a lot of stress on resourcing, with the need of shuffling people around a lot ?
    Align around business goals, not project goals. Yes, this will impact resourcing, and it will demand a lot of any culture that likes to wall itself off behind a project costing structure. BUt we're now in the business of delivering business goals, not projects.

    http://soaconference2009.spaces.live.com/blog/cns!FA6FC7F5DB1C07!189.entry
    http://qconlondon.com/london-2009/file?path=/qcon-london-2009/slides/IanRobinson_SteeringTheNorthwestPassageBeginningAnSOAInitiative.pdf

    ReplyDelete
  3. @Sharlene @Ian

    Thanks for your prompt responses. I will surely catchup with Sharlene and look at a lot of what Ian has suggested.

    I think we can discuss this case in a lot of detail when we do that in person.

    ReplyDelete
  4. We are in the same SOA architecture where Web services provide data, clients consume & implement the functionality.

    Not sure how Agile works in practice

    @sukumarraju

    ReplyDelete