Upgrade to Pro — share decks privately, control downloads, hide ads and more …

When not to build a service-oriented architecture

Lee Edwards
November 03, 2014

When not to build a service-oriented architecture

Talk given at NY CTO Summit 2014.

Lee Edwards

November 03, 2014
Tweet

More Decks by Lee Edwards

Other Decks in Technology

Transcript

  1. When not to build an SOA Lee Edwards totally not

    representing Groupon or SideTour @terronk
  2. When to build an SOA • Huge team size or

    code base • Specific scaling requirements • API-driven business
  3. SOA has real benefits •Removal of harmful dependencies •Service reuse

    •Independent deployability •Independent scalability •Parallelized Development! •Bragging rights
  4. Losing engineers to the pan • Architecture • logical •

    physical • Tooling • deploy • routing • API • Documentation
  5. Jeff Bezos 2002 E-mail 1. All teams will henceforth expose

    their data and functionality through service interfaces. 2. Teams must communicate with each other through these interfaces. 3. There will be no other form of interprocess communication allowed: no direct linking, no direct reads of another team’s data store, no shared-memory model, no back-doors whatsoever. The only communication allowed is via service interface calls over the network. 4. It doesn’t matter what technology they use. HTTP, Corba, Pubsub, custom protocols — doesn’t matter. 5. All service interfaces, without exception, must be designed from the ground up to be externalizable. That is to say, the team must plan and design to be able to expose the interface to developers in the outside world. No exceptions. 6. Anyone who doesn’t do this will be fired. 7. Thank you; have a nice day!
  6. Conway’s Law “Organizations which design systems ... are constrained to

    produce designs which are copies of the communication structures of these organizations”
  7. A Corollary to Conway’s Law Organizations which design systems are

    fated to copy the communication structure of the system
  8. Communication Band-Aids • Architecture teams/committees/boards • Time spent on service

    documentation • Status updates with other teams • Larger meetings • Project managers
  9. Things you need to build a good SOA • Time

    to build tooling • A large, highly-experienced engineering team • The ability to say no to new features as you develop a robust, well-engineered platform
  10. Things you don’t have as an early startup • Time

    to build tooling • A large, highly-experienced engineering team • The ability to say no to new features as you develop a robust, well-engineered platform