Development transformation at Amazon: 2001–2002 monolithic application + teams 2001 Lesson learned: decompose for agility 2002 microservices + 2 pizza teams
Microservice development lifecycle developers services monitor release test build delivery pipelines monitor release test build monitor release test build monitor release test build monitor release test build monitor release test build
What changes do you need to make to adopt these best practices? Serverless No provisioning/management Automatic scaling Pay for value billing Availability and resiliency Microservices Componentization Business capabilities Products not projects Infrastructure automation DevOps Cultural philosophies Cross-disciplinary teams CI/CD Automation tools DEV OPS Architectural patterns Operational Model Software Delivery
Approaches to modern application development • Simplify environment management • Reduce the impact of code changes • Automate operations • Accelerate the delivery of new, high-quality services • Gain insight across resources and applications • Protect customers and the business Simplify environment management with serverless technologies Reduce the impact of code changes with microservice architectures Automate operations by modeling applications & infrastructure as code Accelerate the delivery of new, high-quality services with CI/CD Gain insight across resources and applications by enabling observability Protect customers and the business with end-to-end security & compliance
Approaches to modern application development • Simplify environment management with serverless technologies • Reduce the impact of code changes with microservice architectures • Automate operations by modeling applications & infrastructure as code • Accelerate the delivery of new, high-quality services with CI/CD • Gain insight across resources and applications by enabling observability • Protect customers and the business with end-to-end security & compliance
Approaches to modern application development Serverless containers Long-running Abstracts the OS Fully managed orchestration Fully managed cluster scaling Serverless functions Event-driven Many language runtimes Data source integrations No server management
Approaches to modern application development • Simplify environment management with serverless technologies • Reduce the impact of code changes with microservice architectures • Automate operations by modeling applications & infrastructure as code • Accelerate the delivery of new, high-quality services with CI/CD • Gain insight across resources and applications by enabling observability • Protect customers and the business with end-to-end security & compliance
IaC goals 1. Make infrastructure changes repeatable and predictable 2. Release infrastructure changes using the same tools as code changes 3. Replicate production environment in a staging environment to enable continuous testing
AWS Serverless Application Model (SAM) • Open source framework for building serverless applications on AWS • Shorthand syntax to express functions, APIs, databases, and event source mappings • Transforms and expands SAM syntax into AWS CloudFormation syntax on deployment • Supports all AWS CloudFormation resource types github.com/awslabs/serverless-application-model
SAM CLI: test, package and deploy pip install --user aws-sam-cli sam logs sam validate sam local sam init sam build sam package sam deploy sam publish github.com/awslabs/aws-sam-cli
Continuous integration goals 1. Automatically kick off a new release when new code is checked in 2. Build and test code in a consistent, repeatable environment 3. Continually have an artifact ready for deployment 4. Continually close feedback loop when build fails
AWS CodePipeline • Continuous delivery service for fast and reliable application updates • Model and visualize software release process • Builds, tests, and deploys your code every time there is a code change • Integrates with third-party tools
AWS CodeBuild • Fully managed build service that compiles source code, runs tests, and produces software packages • Scales continuously and processes multiple builds concurrently • No build servers to manage • Pay by the minute, only for the compute resources you use • Monitor builds through CloudWatch Events
Continuous deployment goals 1. Automatically deploy changes to staging environments for testing 2. Deploy to production safely without impacting customers 3. Deliver to customers faster: increase frequency, reduce failure rate
AWS CodeDeploy • Automates code deployments to any instance or function • Handles the complexity of updating your applications • Avoid downtime during deployment • Roll back automatically if failure is detected • Deploy to Amazon EC2, Lambda, or on-premises
CodeDeploy – Lambda canary deployment API Gateway Lambda function weighted alias “live” v1 code 100% Run PreTraffic hook against v2 code before it receives traffic v2 code 0%
CodeDeploy – Lambda canary deployment API Gateway Lambda function weighted alias “live” v1 code 90% Wait for 10 minutes, roll back in case of alarm v2 code 10%
CodeDeploy – Lambda canary deployment API Gateway Lambda function weighted alias “live” v1 code 0% Run PostTraffic hook and complete deployment v2 code 100%
14:00 Choosing the right Database for your Applications [Steven Bryen] 15:00 Making Sense of Machine Learning for Your Organization [Antje Barth] 16:00 Getting Started with Serverless Chatbots [Marcia Villalba] Today
10:00 How to build on AWS without knowing much about AWS [Sebastien Stormacq] 11:00 Chaos Engineering: Why Breaking Things Should be Practiced [Boaz Ziniman] 12:00 Data lakes and analytics in the Cloud for developers and founders [Javier Ramirez] 13:00 An Introduction to Deep Learning [Antje Barth] 14:00 Tools for Building your MVP on AWS [Rob de Feo] 15:00 Improving your security posture with the AWS Cloud [Steven Bryen] 16:00 Understanding Graph Databases [Robert Zhu] Tomorrow
10:00 How to build on AWS without knowing much about AWS [Alex Casalboni] 11:00 Microservices and containers [Frank Munz] 12:00 Building modern APIs with GraphQL [Robert Zhu] 13:00 Why adding a Service Mesh to your containers? [Frank Munz] 14:00 Immutable & distributed transactions: your ledger databases & blockchain in the cloud [Javier Ramirez] 15:00 Improving UX through observability [Enrique Duvos] 16:00 Build a mobile app with machine learning [Nicki Stone] (no ML expertise required) Thursday