AWS Summit: Software Development Process from Amazon by Jonathan Weiss


10 Lessons learned over years

1. Monolyth development and release process -> Microservices!

  • Service-oriented architecture (SOA)
  • Single-purpose primitive
  • Connected w/ APIs
  • Highly decoupled "Microservices"

Two pizza teams: as large teams as you can feed them with 2 big pizzas! Benefits: * decentralized * autonomy * agility * accountability * ownership

2. DevOps Teams

3. Self-service Tools

  • technology agnostic
  • encourage best practices
  • single-purpose services

Deployment tool: Apollo - no downtime deployments, health tracking, versioned artifacts and rollbacks.

4. Continuous Delivery

Pipelines:

  • continuous delivery,
  • automated release process,
  • faster & more reliable,
  • adopted virtually by all teams.

Delivery pipelines: build -> test -> deploy

Thousands of teams x Microservice architecture x Continuous Delivery x Multiple Env = Millions of Deployments !

5. Pessimistic Deployments

Release pipelines: Source -> Build -> Staging -> Production

6. Automated testing

  • integration tests
  • load/perf tests
  • other tests

7. Optimize ECT (Edit-Compile-Test) Loop

8. Monitor Everything

9. Measure Everything

  • data culture
  • business meeting
  • metrics decks: feature adaption, segment growth, funnel analysis, cost structure

10. Listen to Customers

  • ask them what they want
  • get feedback
  • correct course if needed

Links

https://www.allthingsdistributed.com/2006/11/working_backwards.html