It can be dispiriting to find that a well-designed system that has been carefully implemented runs into problems as soon as it hits production, but such things do happen. This session explores why this happens and discusses why good software development practice is important but ultimately isn't sufficient to create a reliable and effective enterprise system. We'll discuss what being "production ready" really means in order to allow us to understand the principles, patterns and practices that we need to be aware of and apply in order to get our systems into production safely and keep them there.
Talk given at London Java Community on 1st December 2016.
4. What is a production system?
4
Any systemâš
being usedâš
for real work
5. Why is Productionisation Hard?
No one teaches you about production
who do you talk to?
what do they want?
what is the deïŹnition of âdoneâ ?
Production is difïŹcult for developers
hard to access, interrogate, debug, change, ...
5
6. A new cast of characters
6
Developers
Development
Users
7. A new cast of characters
6
Production
Users
Developers
Auditors
Operations
Acquirers
Infrastructure
Businessâš
Management
18. Key requirements for production
Functionally correct
does what the business process requires
Stability
behaves predictably in all situations
Capacity
can process the workload required (at all times)
Security
limits access to those who are authorised to have it
17
25. Stability - process principles
Repeatability
deïŹned processes, practice scenarios, prelive
environments
Automation
automate the routine, automate the difïŹcult
allow the human back in the loop on demand
Transparency
logging, monitoring, alerts, trends
24
28. Capacity - design principles
Minimise workload
efïŹciency is important
Flatten the peaks
move workload around
Design for the large (scalability)
understand where the time goes
multiply by a million
27
29. Capacity - technology solutions
Measure and minimise
understand where the work is
Caching and pre-computing
reduce the work to be done
Sharding and partitioning
separate workload to allow scale
28
32. Capacity - process principles
Model and estimate
Test capacity on realistic environments
allows model calibration
Monitoring and trend analysis
tests theory against reality
spots impending storms before they hit
31
34. Security - design principles
What they donât have wonât hurt you
least privilege - grant the minimum needed
Security needs simplicity
what you canât analyse you canât be sure about
Donât put your eggs in one basket
separate privileges to avoid total breaches
Fail safely
33
39. Production is just different
itâs not yours and you need to respect that
Production is demanding
Correctness
Stability
Capacity
Security
Summary
38
41. Summary (iii)
Production requirements and principles
go back to the age of the mainframe
CD and DevOps the latest incarnation
welcome attention from developers
new tech enabling new possibilities
breaking down silos to make it happen
40