One database that is a magic integrator of everything else. In a traditional application (circa 2019), most application store all the data in a central store. For example, user data and application data are stored in the same database.
Moving Beyond a Database
"We need to learn how to do application Architecture with API’s not databases."
Think of API’s as architecture, they localize architecture. It’s just me an that other server over there. Not me and those 50 other services.
API’s have local persistence.
Think how we connected to multiple API’s access stored data. i.e. There isn’t one big database to access data from. We have to piece together the data for our system to work.
Big Data Systems are inherently distributed and their architectures must explicitly handle
- partial failures
- communication latenecies
- Replicate data to ensure availability in the case of failure
- Design componetes to be
- tolerant of failures of dependent services
Thinking in Antifragile
- Things better when it gets attacked
- Chaos monkey
Change in thinking
- Stop thinking of serial (sync) execution and start thinking in concurrent (async) execution
- We need to (re)learn event driven programming, instead of procedure programing
Software Engineering in the Cloud
We poke the system, and then respond to the small contained poke.
- Deploying to the trunk
- Having no branching
- The code is always projection ready
- Deploying all the time
- Release is turning something on by a switch (enable and disable features)
End to End feedback
- Monitor the code and it’s health
- Get feedback from the customers
Get the product feedback to the stakeholders.
Likely 2/3 of the features are unnecessary.
Move from delivery Teams to problem solving teams.
- A delivery team is given an order and get things done. Like ordering food at a restaurant
- A Problem Solving team
- Here’s the goal, here’s the metric, figure out how to improve the metric.
Experimentation and Learning
Conformity Bias: Those who think they are in the minority self-silence
- Antifragile – Things that gain from Disorder, Nassim Nicholas Taleb
- Resilience Engineering: Learning to Embrace Failure
- DevOps Handbook
- Continuous Delivery
- Sprint – Jake Knapp