design, deployment und betreiben von microservices mit docker

Download Design, Deployment und Betreiben von Microservices mit Docker

Post on 13-Feb-2017

215 views

Category:

Documents

2 download

Embed Size (px)

TRANSCRIPT

  • Design, Deployment und Betreiben von

    Microservices mit Docker und dem EC2

    Container Sevice

    Oliver Arafat, Enterprise Evangelist, AWS

    arafato@amazon.de

    @OliverArafat

    Microservices Webday

  • Agenda

    What are Containers?

    EC2 Container Service

    Common Patterns

    Demo

  • What are Containers?

  • Shipping code to the server is

    hard!

    Solomon Hykes, CTO & Founder of Docker

  • Anwendungskomplexitt

    Java, Go, Python,

    JavaScript, C#, C, C++, Ruby, Perl,

    PHP

    .NET, LAMP, Java EE,

    Node, Rails, Erlang

    MySQL, PostgreSQL,

    CouchDB, MongoDB, Cassandra

    Web Front End, API Endpoint, Queues,

    Analytics DB

  • Java, Go, Python,

    JavaScript, C#, C, C++, Ruby, Perl,

    PHP

    .NET, LAMP, Java EE,

    Node, Rails, Erlang

    MySQL, PostgreSQL,

    CouchDB, MongoDB, Cassandra

    Web Front End, API Endpoint, Queues,

    Analytics DB

    On

    PremiseCloud

    Dev Test

    ProdStaging

  • Java, Go, Python,

    JavaScript, C#, C, C++, Ruby, Perl,

    PHP

    .NET, LAMP, Java EE,

    Node, Rails, Erlang

    MySQL, PostgreSQL,

    CouchDB, MongoDB, Cassandra

    Web Front End, API Endpoint, Queues,

    Analytics DB

    On

    PremiseCloud

    Dev Test

    ProdStaging

  • How is this different from VMs?

    Virtual Machines Containers

  • Container advantages

    Portable

  • Container advantages

    Flexible

  • Container advantages

    Fast

  • Container advantages

    Efficient

  • A container pipeline

    Base

    image

    Patches

    IT Operations

    Utilities

  • A container pipeline

    Base

    image

    Patches

    IT Operations

    Ruby

    Redis

    Logger

    Utilities

  • A container pipeline

    Base

    image

    Patches

    IT Operations Developer

    Ruby

    Redis

    Logger

    Utilities

    App

  • A container pipeline

    Base

    image

    Patches

    IT Operations Developer

    Ruby

    Redis

    Logger

    Utilities

    App

  • Server

    Bins/Libs

    Guest OS

    Bins/Lib

    s

    App2App1

  • Amazon EC2 Container Service

  • Easily manage clusters for any scale

    Eliminates cluster management software

    Manages cluster state

    Control and monitoring

    Scale from one to tens of thousands of

    containers

  • Scheduling aka Flexible Container Placement

    Applications

    Batch jobs

    Multiple schedulers

  • Designed for use with other AWS services

    Elastic Load Balancing

    Amazon Elastic Block Store

    Amazon Virtual Private Cloud

    AWS Identity and Access

    Management (IAM)

    AWS CloudTrail

    Amazon CloudWatch

  • Extensible

    Comprehensive APIs

    Open source agent

    Custom schedulers

  • Common Patterns

  • Pattern 1: Services and applications

    Simple to model

    Micro services

    Blue/green

    deployments

    Phong Nguyen, Founder at Gilt

    Groupe, said, "As we Dockerize

    all our services, it is very

    important for us to have a

    platform that can help us speed

    up deployments, automate our

    services, and gain greater

    efficiencies. The new service

    scheduler and ELB integration

    make Amazon ECS an excellent

    platform for our services.

  • Pattern 2: Batch jobs

    Share resource pools

    Ideal for short-lived

    and bursty jobs

    Spot instances

    We required a solution on which

    we could securely and efficiently

    deploy Docker containers to

    encapsulate learner

    programming assignment

    submissions, said Brennan

    Saeta, Architect at Coursera. We

    are using Amazon EC2 Container

    Service to power our new

    programming assignments

    infrastructure for next-generation

    On-Demand course platform.

  • Amazon ECS Terminology

  • Amazon EC2 instances

    Docker daemon

    Amazon ECS agent

    Key Components: Container Instances

  • Regional

    Resource pool

    Grouping of container instances

    Start empty, dynamically scalable

    Key Components: Clusters

  • Key Components: Task Definitions

    Volume definitions

    Container definitions

  • Key Components: Task Definitions

    Shared data volume

    PHP appTime of day

    app

  • Key Components: Task Definitions{

    "environment": [],

    "name": "simple-demo",

    "image": "my-demo",

    "cpu": 10,

    "memory": 500,

    "portMappings": [

    {

    "containerPort": 80,

    "hostPort": 80

    }

    ],

    "mountPoints": [

    {

    "sourceVolume": "my-vol",

    "containerPath": "/var/www/my-

    vol"

    }

    ],

    "entryPoint": [

    "/usr/sbin/apache2",

    "-D",

    "FOREGROUND"

    ],

    "essential": true

    },

    {

    "name": "busybox",

    "image": "busybox",

    "cpu": 10,

    "memory": 500,

    "volumesFrom": [

    {

    "sourceContainer": "simple-demo"

    }

    ],

    "entryPoint": [

    "sh",

    "-c"

    ],

    "command": [

    "/bin/sh -c \"while true; do

    /bin/date > /var/www/my-vol/date; sleep 1; done\""

    ],

    "essential": false

    }

  • {

    "environment": [],

    "name": "simple-demo",

    "image": amazon/amazon-ecs-sample",

    "cpu": 10,

    "memory": 500,

    "portMappings": [

    {

    "containerPort": 80,

    "hostPort": 80

    }

    ],

    "mountPoints": [

    {

    "sourceVolume": "my-vol",

    "containerPath": "/var/www/my-

    vol"

    }

    ],

    "entryPoint": [

    "/usr/sbin/apache2",

    "-D",

    "FOREGROUND"

    ],

    "essential": true

    },

    Key components: task definitions

    [

    {

    "image": "mysql",

    "name": "db",

    "cpu": 10,

    "memory": 500,

    "essential": true,

    "entryPoint": [

    "/entrypoint.sh"

    ],

    "environment": [

    {

    "name": "MYSQL_ROOT_PASSWORD",

    "value": "pass"

    }

    ],

    "portMappings": []

    }

    ]Essential to our task

    Create and mount volumes

    Expose port 80 in container

    to port 80 on host

    10 CPU Units (1024 is full CPU),

    500 megabytes of memory

  • {

    "name": "busybox",

    "image": "busybox",

    "cpu": 10,

    "memory": 500,

    "volumesFrom": [

    {

    "sourceContainer": "simple-demo"

    }

    ],

    "entryPoint": [

    "sh",

    "-c"

    ],

    "command": [

    "/bin/sh -c \"while true; do

    /bin/date > /var/www/my-vol/date; sleep 1; done\""

    ],

    "essential": false

    }

    Key Components: Task Definitions

    From Docker Hub

    Mount volume from other container

    Command to exec

  • Key Components: Tasks

    Container

    Instance

    Schedule

    Shared data volume

    PHP appTime of day

    app

  • Unit of work

    Grouping of related containers

    Run on container instances

    Key Components: Tasks

  • Key Components: Run a task

    Good for short-lived

    containers, e.g.

    batch jobs

  • Key components: Create a service

    Good for long-

    running applications

    and services

  • Key components: Create a service

    Load balance traffic across containers

    Automatically recover unhealthy containers

    Elastic Load Balancing

  • Key components: Update a service

    (Automated) Scale up

    (Automated) Scale down

    Elastic Load Balancing

  • Key components: Update a service

    Deploy a new version

    Drain connections

    Elastic Load Balancing

  • Demo

  • AWS Free Tier

    aws.amazon.com/free

    http://aws.amazon.com/de/free/?sc_ichannel=il&sc_icampaign=de2015Q3_il_microservices-breakfast_pdf-download&sc_icountry=de&sc_ipublisher=aws&sc_imedium=&sc_icontent=event_registration&sc_icategory=aws_cloud_computing&sc_isegment=event_registration&trkCampaign=aws_contact_us_sales&trk=de2015Q3_il_microservices-breakfast_pdf-downloadhttp://aws.amazon.com/de/free/?sc_ichannel=il&sc_icampaign=de2015Q3_il_microservices-breakfast_pdf-download&sc_icountry=de&sc_ipublisher=aws&sc_imedium=&sc_icontent=event_registration&sc_icategory=aws_cloud_computing&sc_isegment=event_registration&trkCampaign=aws_contact_us_sales&trk=de2015Q3_il_microservices-breakfast_pdf-downloadhttp://aws.amazon.com/de/free/?sc_ichannel=il&sc_icampaign=de2015Q3_il_microservices-breakfast_pdf-download&sc_icountry=de&sc_ipublisher=aws&sc_imedium=&sc_icontent=event_registration&sc_icategory=aws_cloud_computing&sc_isegment=event_registration&trkCampaign=aws_contact_us_sales&trk=de2015Q3_il_microservices-breakfast_pdf-downloadhttp://aws.amazon.com/de/free/?sc_ichannel=il&sc_icampaign=de2015Q3_il_microservices-breakfast_pdf-download&sc_icountry=de&sc_ipublisher=aws&sc_imedium=&sc_icontent=event_registration&sc_icategory=aws_cloud_computing&sc_isegment=event_registration&trkCampaign=aws_contact_us_sales&trk=de2015Q3_il_microservices-breakfast_pdf-downloadhttp://aws.amazon.com/de/free/?sc_ichannel=il&sc_icampaign=de2015Q3_il_microservices-breakfast_pdf-download&sc_icountry=de&sc_ipublisher=aws&sc_imedium=&sc_icontent=event_registration&sc_icategory=aws_cloud_comput