never done
building systems that are
jalewis@thoughtworks.com @boicy
never done jalewis@thoughtworks.com @boicy 1 never done 2 never - - PowerPoint PPT Presentation
building systems that are never done jalewis@thoughtworks.com @boicy 1 never done 2 never done Incomplete adjective not having all the necessary or appropriate parts 3 never done Incomplete adjective not having all the necessary or
building systems that are
jalewis@thoughtworks.com @boicynever done
never done
Incomplete adjective not having all the necessary or appropriate parts
never done
Incomplete adjective not having all the necessary or appropriate parts
KERRBOX!
How big are they?
never done
never done
“This, milord, is my family's axe. We have owned it for almost nine hundred years, see. Of course, sometimes it needed a new blade. And sometimes it has required a new handle, new designs on the metalwork, a little refreshing of the
the nine hundred-year-old axe of my family? And because it has changed gently over time, it is still a pretty good axe, y'know. Pretty good.”
never done
replaceable component architectures
Dan Norththe future is scary
BACK IN 2004 (ISH)
14TIME PASSES…
TIME PASSES…
16These companies are doing things a bit differently
They can deploy small, independent services on demand They scale teams independently of one another around these services They operate at web-scale if they need toCONSULTANTS! HELL YEAH!
And the speed at which they can deliver software is increasing
be cheap to replace microservices should allow us to go as “fast as possible” be deployable on demand be resilient on imperfect networks but it’s not as simple as that
“the first post-devops architectural style”
Neal Forda note on the law of unintended consequences
Consider a single application - its a website, lets call it A
A
How many environments do we need?
How many environments do we need?
compile, unit and functional test integration test acceptance test deploy to production run on build machine deployed on build machine deployed to integration environmentA B
webapp customers
webapp customers
How do we traditionally make sure that new versions of the services work with each other? Let me illustrate this
V1 V1
V1 V1
V2
git push origin masterV1 V1
V2
git push origin masterV1 V1
V2
git push origin masterV1 V1
V2
git push origin masterV1 V1
V2
git push origin masterV1 V1
V2 V1
What should V2 of the blue app be tested against here
V1
This is in production, so presumably we should test against this?
V1 V1
V1 V1
git push origin masterV2
git push origin masterV1 V1 V2
git push origin masterV2
git push origin masterV1 V1 V2
git push origin masterV2
git push origin masterV1 V1 V2
git push origin masterV2
git push origin masterV1 V1 V2
git push origin masterV2
git push origin masterV1 V1 V2
git push origin masterI’m sorry Dave, I can’t let you do that
Locks == Delay
V1 V1 s s V1 V1
4 environments =>
<thinks>
Integration testing
Integration testing Independent deployment
Integration testing Independent deployment Service versioning / evolution
Integration testing Independent deployment Service versioning / evolution
is hard
What about some of our other sacred cows?
What about some of our other sacred cows?
build out services as you need them minimise holding cost and batch size
“Every piece of knowledge must have a single, unambiguous, authoritative representation within a system”
Andrew Hunt, Dave Thomas: The Pragmatic Programmer. 1999-10-01. ISBN: 978-0-2016-1622-4 https://pragprog.com/book/tpp/the-pragmatic-programmerDRY holds across services
“The London school
Development”
Mike Feathersshould we bother with test driving our code if we are going to throw it away?
All rules are contextual
No
Do what I think is best Yes Am I Kent Beck? 65 Start Am I Dan North?No
Do what I think is best Yes Am I Kent Beck? 65 Start Am I Dan North?No
Do what I think is best Yes Am I Kent Beck? 65 Start Am I Dan North?No
Do what I think is best Yes Am I Kent Beck? 65 Start Am I Dan North?USE TDD ALREADY!
should we write unit tests?
67Most of the other stuff is made so much easier
a class should be no bigger than my head
SRP a service should be no bigger than my head
“Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better.” Edsger W. Dijkstra
(what would Joe do?)
cron, python, boto, pydot, graphviz
cron, python, boto, pydot, graphviz
cron, python, boto, pydot, graphviz
Do the simplest thing possible
maybe we can use CD to help with our testing problem?
“There is nothing so useless as doing efficiently that which should not be done at all”
Peter Drucker
QA
Test in production
Good Monitoring Fast RemediationQA
SEMANTIC MONITORING
Consumer Driven Contracts
integration environment
the death of the
production != live
the future is scary
And the speed at which they can deliver software is only increasing
EVEN FINANCE IS NOT IMMUNE
88we have to learn how to: Craft my families axe Deploy small services independently Test microservices in isolation Test microservices in production
the future is bright
we have old techniques that apply: SRP GRASP YAGNI KISS TDD DRY
and new techniques to apply: Consumer Driven Contracts Semantic Monitoring Semantic Versioning Testing in Production Failure Isolation
"ever accelerating progress of technology and changes in the mode of human life, which gives the appearance of approaching some essential singularity in the history of the race beyond which human affairs, as we know them, could not continue”
John von Neumann, as recorded by Ulam, 1958
yeah, it’s just science fiction right?
yeah, it’s just science fiction right?
“Self-Driving Trucks Are Going to Hit Us Like a Human-Driven Truck”
https://medium.com/basic-income/self-driving-trucks-are-going-to-hit-us-like-a-human-driven-truck-b8507d9c5961 source: Morgan StanleyThis is where we’re at and this is what we face as we look towards a quickly approaching horizon of over 3 million unemployed truckers and millions more unemployed service industry workers in small towns all over the country dependent on truckers as consumers of their services.
“If you aren’t worried about strong AI within the next 5-10 years then you aren’t working closely enough with AI teams” (paraphrasing Elon Musk)
101