“Cloud native” means designing software explicitly for the cloud, not trying to deploy to the cloud in retrospect - shoving a single replica of a monolith into Kubernetes won’t cut it. Developing for cloud platforms has many requirements for tooling and behavior of the target cloud platform(s) - for example, maintaining Dockerfiles. There are also many challenges to designing a distributed system that can maintain high consistency, reliability, and availability. We’ll explain high level solutions and get into concrete code examples. Key topics are: - Bringing ops requirements into development - Designing for accurate testing - Caching and short term data - Long term storage - Service composition This talk will give developers a foundational understanding of cloud architecture patterns, data management, and requirements building, to empower attendees to hit the ground running.