Top Banner
Surviving SOA Delivering (somewhat) continuously on a hostile planet @TomAkehurst
74
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Surviving SOA

!

Surviving SOA Delivering (somewhat) continuously on a hostile planet!

!@TomAkehurst

Page 2: Surviving SOA

You can’t always get what you want…!

Page 3: Surviving SOA

The OrgLarge, horizontally sliced programme

Page 4: Surviving SOA

The OrgLarge, horizontally sliced programme !Fixed-price contracts (inflexibility)

Page 5: Surviving SOA

The OrgLarge, horizontally sliced programme !Fixed-price contracts (inflexibility) !DevOps and testers in separate teams

Page 6: Surviving SOA

The OrgLarge, horizontally sliced programme !Fixed-price contracts (inflexibility) !DevOps and testers in separate teams !Theory X (leading to endemic risk/change aversion)

Page 7: Surviving SOA

The Process“Agile” but….

Page 8: Surviving SOA

The Process“Agile” but…. !Lack of feedback and improvement mechanisms

Page 9: Surviving SOA

The Process“Agile” but…. !Lack of feedback and improvement mechanisms !Enabling technical practices neglected

Page 10: Surviving SOA

The Process“Agile” but…. !Lack of feedback and improvement mechanisms !Enabling technical practices neglected !Very infrequent live releases, tons of WIP

Page 11: Surviving SOA

The Process“Agile” but…. !Lack of feedback and improvement mechanisms !Enabling technical practices neglected !Very infrequent live releases, tons of WIP !Long cycle times, but nobody seemed to notice

Page 12: Surviving SOA

The TechnologyBig vendor SOA + BPM !Old skool J2EE containers !!

Page 13: Surviving SOA

The TechnologyBig vendor SOA + BPM !Old skool J2EE containers !SOAP !

Page 14: Surviving SOA
Page 15: Surviving SOA

The TechnologyBig vendor SOA + BPM !Old skool J2EE containers !SOAP !Shoddy inherited codebase !!

Page 16: Surviving SOA

Database

Page 17: Surviving SOA

Database

ETL

Page 18: Surviving SOA

Database

The SOAP Layer

ETL

Page 19: Surviving SOA

Database

The SOAP Layer

The MoreSOAP Layer

ETL

Page 20: Surviving SOA

Database

The SOAP Layer

The MoreSOAP Layer

ETL

Page 21: Surviving SOA

Database

The SOAP Layer

The MoreSOAP Layer

ETL

Our thing

Page 22: Surviving SOA

The PipelineNo pre-test integration environments !Very locked-down test environments !!!!

Page 23: Surviving SOA

The PipelineNo pre-test integration environments !Very locked-down test environments !Separate test team per test environment - ReleaseTesting3 !!!

Page 24: Surviving SOA

The PipelineNo pre-test integration environments !Very locked-down test environments !Separate test team per test environment - ReleaseTesting3

!Test automation team building vast Selenium suite !

Page 25: Surviving SOA

ENERGIZED WORK / Metal Box Factory Unit 323 30 Great Guildford Street London SE1 0HS / www.energizedwork.com

!!!

Survival!!

Page 26: Surviving SOA

What does (as) good (as we can manage) look like?

Page 27: Surviving SOA

What does (as) good (as we can manage) look like?Keep our own cycle time down, but don’t locally optimise

Page 28: Surviving SOA

What does (as) good (as we can manage) look like?Keep our own cycle time down, but don’t locally optimise !Minimise the risks we can control, manage those we can’t

Page 29: Surviving SOA

What does (as) good (as we can manage) look like?Keep our own cycle time down, but don’t locally optimise !Minimise the risks we can control, manage those we can’t !Don’t compromise on quality (even if others are)

Page 30: Surviving SOA

The BasicsTDD + ATDD !Trunk-based development !Build discipline !Small batches (commits, pushes, releases)

Page 31: Surviving SOA

Service Mocking

Page 32: Surviving SOA

Service MockingFast functional tests

Page 33: Surviving SOA

Service MockingFast functional tests !Parallel development with service teams

Page 34: Surviving SOA

Service MockingFast functional tests !Parallel development with service teams !Reduce need for a dev/int environment

Page 35: Surviving SOA

Service MockingFast functional tests !Parallel development with service teams !Reduce need for a dev/int environment !Fault injection

Page 36: Surviving SOA
Page 37: Surviving SOA

Sham data

Page 38: Surviving SOA
Page 39: Surviving SOA

Sham dataHigh fidelity demos !Serendipitous bug discovery + better exploratory testing

Page 40: Surviving SOA
Page 41: Surviving SOA
Page 42: Surviving SOA

Sham dataHigh fidelity demos !Serendipitous bug discovery + better exploratory testing !Generative-style tests

Page 43: Surviving SOA
Page 44: Surviving SOA
Page 45: Surviving SOA

App JVM

App

Hermetic Testing

Test JVM

WireMock

SpockSham

Geb/Selenium

phantomjsGenerate SOAP stubs

SOAP

Templates

Page 46: Surviving SOA

SOAP minus WSDL

Page 47: Surviving SOA

SOAP minus WSDLgroovy-ws-lite - XML builders for SOAP messages, not generated source

Page 48: Surviving SOA

SOAP minus WSDLgroovy-ws-lite - XML builders for SOAP messages, not generated source !Tolerant reader

Page 49: Surviving SOA

SOAP minus WSDLgroovy-ws-lite - XML builders for SOAP messages, not generated source !Tolerant reader !Reduced need for synchronised releases

Page 50: Surviving SOA

SOAP minus WSDLgroovy-ws-lite - XML builders for SOAP messages, not generated source !Tolerant reader !Reduced need for synchronised releases !Use WSDL for unit tests (with off switch)

Page 51: Surviving SOA

Telemetry

Page 52: Surviving SOA
Page 53: Surviving SOA

TelemetrySOAP request/response history

Page 54: Surviving SOA
Page 55: Surviving SOA

TelemetrySOAP request/response history !Metrics

Page 56: Surviving SOA
Page 57: Surviving SOA

TelemetrySOAP request/response history !Metrics !Service check

Page 58: Surviving SOA
Page 59: Surviving SOA
Page 60: Surviving SOA

TelemetrySOAP request/response history !Metrics !Service check !Scenario (integration) tests

Page 61: Surviving SOA

Exploratory Testing as Peer ReviewSneaky tunnel to the test environment !Guided by common gotchas list !Reduce pressure on bottleneck - the testers

Page 62: Surviving SOA

Hermetic Demo EnvironmentLaptop install via USB key !Sham data for realism !Early feedback

Page 63: Surviving SOA

Did it work?We didn’t work weekends (everyone else did)

Page 64: Surviving SOA

Did it work?We didn’t work weekends (everyone else did) !Able to react quickly to late, complex changes

Page 65: Surviving SOA

Did it work?We didn’t work weekends (everyone else did) !Able to react quickly to late, complex changes !Defect rate so low that business sponsors thought there was a reporting problem

Page 66: Surviving SOA

Did it work?Integration bugs due to bad assumptions about semantics persisted !!!

Page 67: Surviving SOA

Did it work?Integration bugs due to bad assumptions about semantics persisted !Manual testing remained a bottleneck

Page 68: Surviving SOA

Did it work?Integration bugs due to bad assumptions about semantics persisted !Manual testing remained a bottleneck !Failed to significantly influence practices outside our team

Page 69: Surviving SOA

ENERGIZED WORK / Metal Box Factory Unit 323 30 Great Guildford Street London SE1 0HS / www.energizedwork.com

!!!

Next time we’ll…!!

Page 70: Surviving SOA

…shun container securityTight coupling !Frequent nasty surprises on deployment to test environments !Hard to mock effectively for testing

Page 71: Surviving SOA

…keep the build time downHeavy-heavy-heavyweight framework (Grails) !Selenium overuse !Build breakage frequency increased with duration !Temptation to skimp on new test cases !Adding concurrency afterwards is hard

Page 72: Surviving SOA

…choose a better optimised tech stack

Wire protocol supporting loose coupling and evolution !Small framework - fast startup, small footprint under no load !Embedded container - fast, simple deployments, no compatibility hassles !Minimise need for browser-driven tests

Page 73: Surviving SOA

If you only take away one thing

Don’t settle for the lowest common denominator - CD can be practiced in hostile environments, and it’s worth it!

Page 74: Surviving SOA

ENERGIZED WORK / Metal Box Factory Unit 323 30 Great Guildford Street London SE1 0HS / www.energizedwork.com

!!!

Ta!!!!!

@TomAkehurst!https://github.com/tomakehurst