container days: architecting modern apps on aws

Download Container Days: Architecting Modern Apps on AWS

Post on 11-Jan-2017

87 views

Category:

Technology

0 download

Embed Size (px)

TRANSCRIPT

  • 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

    Architecting Modern Applications on AWS: VMs, Containers, Microservices, Lambda

    and More

    2016-11-04

    Mackenzie Kosut@mkosut AWS Startup Evangelist

    Tara E. Walker@taraw

    AWS Technical Evangelist

  • 15 min Evolution from Monoliths to Microservices

    15 minCore Principles of Microservices Approaches to building Microservices on AWS

    15 min Other Architectural Principles

    5 min Additional Resources

    Architecting Modern Applications on AWS: VMs, Containers, Microservices, Lambda and More

  • 2006 EC2 & S3

    2016 70+ Managed Services

    Kinesis Streaming Analytics, Mobile Testing, Redshift Datawarehouse, Code Deploy/Build Tools, Elastic Container Service, Application Load Balancer, Lambda, API Gateway, DynamoDB, Elastic Map Reduce (Hadoop/Spark/Presto/etc), Elastic Beanstalk, Elastic Transcoder, RDS, Elasticsearch, more..

  • ENTERPRISE APPS

    DEVELOPMENT & OPERATIONSMOBILE SERVICESAPP SERVICESANALYTICS

    DataWarehousing

    Hadoop/Spark

    Streaming Data Collection

    Machine Learning

    Elastic Search

    Virtual Desktops

    Sharing & Collaboration

    Corporate Email

    Backup

    Queuing & Notifications

    Workflow

    Search

    Email

    Transcoding

    One-click App Deployment

    Identity

    Sync

    Single Integrated Console

    PushNotifications

    DevOps Resource Management

    Application Lifecycle Management

    Containers

    Triggers

    Resource Templates

    TECHNICAL & BUSINESS SUPPORT

    Account Management

    Support

    Professional Services

    Training & Certification

    Security & Pricing Reports

    Partner Ecosystem

    Solutions Architects

    MARKETPLACE

    Business Apps

    Business Intelligence

    DatabasesDevOps Tools

    NetworkingSecurity Storage

    RegionsAvailability Zones

    Points of Presence

    INFRASTRUCTURE

    CORE SERVICES

    ComputeVMs, Auto-scaling, & Load Balancing

    StorageObject, Blocks, Archival, Import/Export

    DatabasesRelational, NoSQL, Caching, Migration

    NetworkingVPC, DX, DNS

    CDN

    Access Control

    Identity Management

    Key Management & Storage

    Monitoring & Logs

    Assessment and reporting

    Resource & Usage Auditing

    SECURITY & COMPLIANCE

    Configuration Compliance

    Web application firewall

    HYBRIDARCHITECTURE

    Data Backups

    Integrated App Deployments

    DirectConnect

    IdentityFederation

    IntegratedResource Management

    Integrated Networking

    API Gateway

    IoT

    Rules Engine

    Device Shadows

    Device SDKs

    Registry

    Device Gateway

    Streaming Data Analysis

    Business Intelligence

    MobileAnalytics

  • 2009

    48

    280

    722

    82

    2011 2013 2015

    706

    September2016

  • Migrating from Monolith to Microservice

  • The Monolith

  • Challenges with monolithic software

    Long Build/Test/Release Cycles(who broke the build?)

    Operationsis a nightmare(module X is failing, whos the owner?)

    Difficult to scale

    New releasestake months

    Long time to addnew features

    Architecture is hard to maintain and evolve

    Lack of innovation

    Frustrated customers

    Lack of agility

  • Challenges with monolithic software

    Long Build/Test/Release Cycles(who broke the build?)

    Operationsis a nightmare(module X is failing, whos the owner?)

    Difficult to scale

    New releasestake months

    Long time to addnew features

    Architecture is hard to maintain and evolve

    Lack of innovation

    Frustrated customers

    Lack of agility

  • Challenges with monolithic software

    Long Build/Test/Release Cycles(who broke the build?)

    Operationsis a nightmare(module X is failing, whos the owner?)

    Difficult to scale

    New releasestake months

    Long time to addnew features

    Architecture is hard to maintain and evolve

    Lack of innovation

    Frustrated customers

    Lack of agility

  • Monolith development lifecycle

    releasetestbuild

    delivery pipeline

    app(aka themonolith)developers

    Photo by Sage Ross. No alterations other than cropping. https://www.flickr.com/photos/ragesoss/2931770125/Image used with permissions under Creative Commons license 2.0, Attribution Generic License (https://creativecommons.org/licenses/by/2.0/)

  • Too much software coupling

  • Too much software coupling

    Shared libraries

  • Too much software coupling

    Shared libraries

    Shared data

  • Evolving towards microservices

    IMG_1760 by Robert Couse-Baker. No alterations other than cropping. https://www.flickr.com/photos/29233640@N07/14859431605/Image used with permissions under Creative Commons license 2.0, Attribution Generic License (https://creativecommons.org/licenses/by/2.0/)

  • IMG_1760 by Robert Couse-Baker. No alterations other than cropping. https://www.flickr.com/photos/29233640@N07/14859431605/Image used with permissions under Creative Commons license 2.0, Attribution Generic License (https://creativecommons.org/licenses/by/2.0/)

  • service-oriented

    architecture

    composed of

    loosely coupled

    elements

    that have

    bounded contexts

    Adrian Cockcroft (VP of Cloud Architecture @ AWS, former Cloud Architect at Netflix)

  • service-oriented

    architecture

    composed of

    loosely coupled

    elements

    that have

    bounded contexts

    Services communicate with each other over the network

    Adrian Cockcroft (VP of Cloud Architecture @ AWS, former Cloud Architect at Netflix)

  • service-oriented

    architecture

    composed of

    loosely coupled

    elements

    that have

    bounded contexts

    You can update the services independently; updating one service doesnt require changing any other services.

    Adrian Cockcroft (VP of Cloud Architecture @ AWS, former Cloud Architect at Netflix)

  • service-oriented

    architecture

    composed of

    loosely coupled

    elements

    that have

    bounded contexts Self-contained; you can update the code without knowing anything about the internals of other microservices

    Adrian Cockcroft (VP of Cloud Architecture @ AWS, former Cloud Architect at Netflix)

  • Do one thing, and do it well

    Swiss Army by by Jim Pennucci. No alterations other than cropping. https://www.flickr.com/photos/pennuja/5363518281/Image used with permissions under Creative Commons license 2.0, Attribution Generic License (https://creativecommons.org/licenses/by/2.0/)

  • Tools by Tony Walmsley: No alterations other than cropping. https://www.flickr.com/photos/twalmsley/6825340663/Image used with permissions under Creative Commons license 2.0, Attribution Generic License (https://creativecommons.org/licenses/by/2.0/)

    Do one thing, and do it well

  • Anatomy of a Microservice

  • Anatomy of a Microservice

  • Data Store(eg, RDS, DynamoDB

    ElastiCache, ElasticSearch)

    Anatomy of a Microservice

  • Application/Logic(code, libraries, etc)

    Anatomy of a Microservice

    Data Store(eg, RDS, DynamoDB

    ElastiCache, ElasticSearch)

  • Public API

    POST /restaurantsGET /restaurants

    Application/Logic(code, libraries, etc)

    Anatomy of a Microservice

    Data Store(eg, RDS, DynamoDB

    ElastiCache, ElasticSearch)

  • Avoid Software Coupling

  • Driversmicroservices

    Paymentsmicroservice Location

    microservices

    Orderingmicroservices

    Restaurantmicroservice

    Ecosystem of Microservices

  • = 50 million deployments a year

    Thousands of teams

    Microservice architecture

    Continuous delivery

    Multiple environments

    (5708 per hour, or every 0.63 second)

  • Gilt: Luxury designer brands at members-only prices

  • ... Sale every day at noon EST

  • Microservices Architecture on Amazon Web Services

  • Application Services

    API GatewayBuild, Publish and Manage APIs

    Performance at any scale via worldwide edge locations, traffic

    throttling, and API output caching

    Monitor API activity

    Integrates with Lambda functions

    Run multiple versions of the same API

    Fully Managed

  • Elastic Compute Cloud (EC2)Virtual Servers in the Cloud

    Resizable Compute Capacity

    Complete control of your computing resources

    Reduces time to obtain and boot new server

    instances to minutes

    Choose from 30+ different instance types

    Scale as your requirements change

    Pay only for what you use

    Compute

  • EC2 Container ServiceRun and Manage Docker Containers

    A high performance container management service for

    running Docker containers on EC2 instances

    Use the built in scheduler, write your own, or use a

    third-party scheduler

    Integrates with other services like ELB and EBS

    No additional charge

    EC2 Container Registry

    Compute

  • LambdaRun Code in Response to Events

    Runs code in response to triggers such as S3 upload,

    DynamoDB updates, Kinesis streams, and API

    Gateway requests

    Automatically scales

    You only need to provide the code; there is no

    infrastructure to manage

    Pay only for what you use

    Compute

  • DynamoDBPredictable and Scalable NoSQL Data

Recommended

View more >