2016 nyc database meetup - containers

Upload: alvin-john-richards

Post on 06-Jul-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/17/2019 2016 NYC Database Meetup - Containers

    1/45

    Developing Just Got

    Easier ! Really!

    Powering New Opportunities at Scale

  • 8/17/2019 2016 NYC Database Meetup - Containers

    2/45

    2Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    Containers + Databases = Happy Developers

    !  Ephemeral Containers + Databases = DevOps headaches

    !  4 Things you must use to evaluate

    !  Data Redundancy

    Dynamic Self Discovery & Cluster formation

    !  Self Healing (as containers enter and leave)

    !  Application Tier discovery of Database Cluster

    Conclusion

  • 8/17/2019 2016 NYC Database Meetup - Containers

    3/45

    3Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    Part One"Here's another nice mess you have

    got me into"Laurel & Hardy circa 1929

  • 8/17/2019 2016 NYC Database Meetup - Containers

    4/45

    4Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    Existing Architectures Are Broken

    Challenges

    • 

    Complex

    •  Maintainability

    • 

    Durability

    • 

    Consistency

    • 

    Scalability

    • 

    Cost ($)

    • 

    Data Lag

    Caching Layer

    Operational Database

    Real-timeConsumer Facing

    Pricing /Inventory / Billing

    Real-timeDecisionin

    g

    StreamingData

    Legacy Database(Mainframe)

    RDBMSDatabase

    TransactionalSystems

    Enterprise Environment

    LegacyRDBMS

    HDFS BASED

  • 8/17/2019 2016 NYC Database Meetup - Containers

    5/45

    5Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    Existing Deployment Models Are Broken

    Developer

    Versioncontrol

    1. Development 2. Test 3. Stage / Production

    QA / QE Sysadmin

  • 8/17/2019 2016 NYC Database Meetup - Containers

    6/45

    6Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    Infrastructure Cannot be Fully UtilizedTRADITIONAL DATABASE

    OS FILE SYSTEM

    PAGE CACHE

    BLOCK INTERFACE

    SSD HDD

    What You Have

    BLOCK INTERFACE

    SSD SSD

    OPEN NVM

    SSD

    DATABASE

    MEMORY SYSTEM

    •  Direct device access

    •  Large Block Writes

    •  Indexes in DRAM

    •  Highly Parallelized

    What You Want

  • 8/17/2019 2016 NYC Database Meetup - Containers

    7/45

    7Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    Containers

    !  Encapsulation

    !  Deployment

    !  Isolation

    !  Databases

    Persistence

    !  Scalability

    !  Self-organizing / Self-healing

    Resource Utilization

    Meeting (some) the Challenges

  • 8/17/2019 2016 NYC Database Meetup - Containers

    8/45

    Part TwoContainers

  • 8/17/2019 2016 NYC Database Meetup - Containers

    9/45

    9Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    Container Mission – Reduce Complexity

    Build Ship Run

    !"#$ &'($)(*)+

    ,-./01$2

    ,-(34*/Clustering Distribution

    Image specContainer run-time spec

    Runtime

    Trust

  • 8/17/2019 2016 NYC Database Meetup - Containers

    10/45

    10Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    Encapsulation of Dependencies

    !  O/S packages & Patches

    !  Execution environment (e.g. Python 2.7)

    !  Application Code & Dependencies

    !  Process Isolation

    Isolate the process from anything else running

    Faster, Lightweight virtualization

    What do Containers give me?

  • 8/17/2019 2016 NYC Database Meetup - Containers

    11/45

    11Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    FROM python:2.7

     ADD . /code

     WORKDIR /code

    RUN apt-get update

    RUN apt-get -y install python-dev

    RUN apt-get -y install libssl-dev

    RUN pip install --no-cache-dir -r requirements.txt

    EXPOSE 5000

    CMD python app.py

    Dockerfile - Example

  • 8/17/2019 2016 NYC Database Meetup - Containers

    12/45

    12Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    Coalition of industry leaders join forces to eliminate

    fragmentation

    •  Form a vendor-neutral, open source governance model under the

    Linux Foundation

    • 

    Establish common standards for container format and runtime

    • 

    Docker donated its container format, runtime and associated

    specifications

    •  Appoint maintainers for the libcontainer project

    Open Container Initiative (OCI) – Polyglot Vendors

    http://www.opencontainers.org/

  • 8/17/2019 2016 NYC Database Meetup - Containers

    13/45

    13Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    Docker Landscape in Pictures

    Machine provisionsDocker Engines

    Swarm clusters

    Docker Engines

    Compose orchestrates

    Container deployment

    Containers are runby Docker Engine

    Docker Machine Docker Compose

    Docker Swarm

    Docker Engine

    Container

    Containers encapsulatesyour code, dependencies…

  • 8/17/2019 2016 NYC Database Meetup - Containers

    14/45

    Part Three – AerospikeThe Enterprise NoSQL Database

  • 8/17/2019 2016 NYC Database Meetup - Containers

    15/45

    15Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    The Bottom Line

  • 8/17/2019 2016 NYC Database Meetup - Containers

    16/45

    16Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    •  RIPE MD160 Hashing & Partitioning

    •  Primary Index is Red Black Tree

    •  Dynamically Add/Remove Nodes

    Scale

    •   Auto Rebalance

    •   Auto Heal

    •  Schema-free

  • 8/17/2019 2016 NYC Database Meetup - Containers

    17/45

    17Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    0

    100,000

    200,000

    300,000

    400,000

    Balanced Read-Heavy

    Aerospike Cassandra

    MongoDB Couchbase 2.0*

    0

    2.5

    5

    7.5

    10

    0 50,000 100,000 150,000 200,000   A  v  e  r  a  g  e   L  a   t  e  n  c  y ,

      m  s

    Throughput, ops/sec

    Balanced Workload Read Latency

    AerospikeCassandraMongoDB

    0

    4

    8

    12

    16

    0 50,000 100,000 150,000 200,000   A  v  e  r  a  g  e   L  a   t  e

      n  c  y ,

      m  s

    Throughput, ops/sec

    Balanced Workload Update Latency

    Aerospike

    CassandraMongoDB

    • 

    Flash / SSD Optimized

    •  Primary Index in DRAM

    Speed

  • 8/17/2019 2016 NYC Database Meetup - Containers

    18/45

    18Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    Challenge•  Overall SLA 750 ms

    • 

    Loss of business due to latency

    • 

    Every credit card transaction requires

    hundreds of DB reads/writes

    Need to Scale Reliably•  10 100 TB

    • 

    10B 100 B objects

    • 

    200k I Million+ TPS

    Aerospike In-Memory NoSQL•  Built for Flash

    • 

    Predictable low latency at high throughput

    • 

    Immediate consistency, no data loss

    • 

    Cross data center (XDR) support•  20 server cluster

    • 

    Dell 730xd w/ 4NVMe SSDs

    Credit Card Processing System

    Fraud Detection & Protection App

    RulesRule 1Rule 2Rule 3

    Historical Data

    Rule 1-PassedRule 2-Passed

    Rule 3-Failed

     Account Behavior

    Static Data

     Account Statistics

    Real-time Fraud Prevention 

  • 8/17/2019 2016 NYC Database Meetup - Containers

    19/45

    19Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    Cloud Deployment: 1 Million Writes/Sec on

    Google Compute

    !  Aerospike hits 1M writes/sec with 6x fewer servers than Cassandra

    !  Delivers consistent low latency with no jitter for both read and writeworkloads

    300 nodes50 nodes

    New results: 20 nodes, and 4M reads per second

  • 8/17/2019 2016 NYC Database Meetup - Containers

    20/45

    20Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    1 Aerospike Server, Not 12 Redis Shards

  • 8/17/2019 2016 NYC Database Meetup - Containers

    21/45

    Part Four Aerospike and Docker

  • 8/17/2019 2016 NYC Database Meetup - Containers

    22/45

    22Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    Data Redundancy

    !  Containers are Ephemeral – Need more than one copy of the data

    !  Dynamic Self Discovery & Cluster formation

    !  Need to start and stop Conatiners when needed

    Clusters needs to grow and shrink dynamcially

    !  Self Healing

    Loss of nodes must not be fatal to the cluster integrity

    !  Addition of nodes must scale capacity

    Application Tier discovery of Database Cluster

     Automatic discovery of nodes!  Automatic routing of requests to the correct nodes

    Requirements

  • 8/17/2019 2016 NYC Database Meetup - Containers

    23/45

    23Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    Data Redundancy

    !  Automatic Replication of Data to "n" nodes

    !  Dynamic Self Discovery & Cluster Formation

    !  Shared nothing architecture – all nodes equal

    Multi-cast & Mesh Networking models

    !  Self Healing

     Automatic hashing of keys across the cluster & rebalancing

    !  RIPEMD-160 collision free algorithm with Smart Partitions™

    Application Tier discovery of Database Cluster

     Automated cluster discovery with Smart Client™!  Java, C/C++, C#, Python, Node.js

    Example: Aerospike and Docker

  • 8/17/2019 2016 NYC Database Meetup - Containers

    24/45

    Part FiveDemo

  • 8/17/2019 2016 NYC Database Meetup - Containers

    25/45

    25Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    Build & Run an App in Development

    !  Python + Aerospike

    !  Deploy to a Swarm cluster in Production

    !  Add more Web containers behind HAProxy

    Scale Aerospike Cluster in production

    !  Add more Database nodes

    Demo: Development through to Production

  • 8/17/2019 2016 NYC Database Meetup - Containers

    26/45

    26Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    Lets build an App!

    web

    Aerospike

    Development

    python / flask

  • 8/17/2019 2016 NYC Database Meetup - Containers

    27/45

    27Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    Scale in Production

    web2 web3 web4 webNweb web1

    Aerospike

    Development

    !

     

    Production

    HA Proxy

    asd1 asdNasd2 ! 

  • 8/17/2019 2016 NYC Database Meetup - Containers

    28/45

    28Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    Demo 1 : Build an App

  • 8/17/2019 2016 NYC Database Meetup - Containers

    29/45

    29Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    FROM python:2.7

     ADD . /code

     WORKDIR /code

    RUN apt-get update

    RUN apt-get -y install python-dev

    RUN apt-get -y install libssl-dev

    RUN pip install --no-cache-dir -r requirements.txt

    EXPOSE 5000

    CMD python app.py

    Dockerfile

  • 8/17/2019 2016 NYC Database Meetup - Containers

    30/45

    30Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

     web:

     build: .

     ports:

    - "5000:5000"

    links:

    - aerospike

    hostname: dev.awesome-counter.com

    environment:

    - AEROSPIKE_HOST=dev_aerospike_1

    aerospike:

    image: aerospike/aerospike-server:latest

    volumes:- $PWD:/etc/aerospike

    docker-compose.yml

  • 8/17/2019 2016 NYC Database Meetup - Containers

    31/45

    31Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    Roll the App to Production behind HA Proxy

    web web1

    Development Production

    Aerospike

    HA Proxy

    Aerospike

  • 8/17/2019 2016 NYC Database Meetup - Containers

    32/45

    32Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    Scale the web tier

    web2 web3 web4 webNweb web1

    Aerospike

    Development

    !

     

    Production

    Aerospike

    HA Proxy

  • 8/17/2019 2016 NYC Database Meetup - Containers

    33/45

    33Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    Docker Networking

  • 8/17/2019 2016 NYC Database Meetup - Containers

    34/45

    34Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    Demo 2 : Scale the Web Tier

  • 8/17/2019 2016 NYC Database Meetup - Containers

    35/45

    35Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    discovery:

    image: aerospike/interlock:latest

    environment:

    - "DOCKER_HOST"

    volumes:- "/var/lib/boot2docker:/etc/docker"

    command: "... --plugin aerospike start"

    aerospike:

    image: aerospike/aerospike-server:latest

    volumes:- "$PWD:/etc/aerospike"

    aes_base_cluster.yml

  • 8/17/2019 2016 NYC Database Meetup - Containers

    36/45

    36Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    haproxy:

    extends:

    file: haproxy.yml

    service: haproxy-server

    environment:

    - "constraint:node==swarm-0"

    net: bridge

     web:

    image: alvinr/demo-webapp-as:latest

    extends:

    file: haproxy.yml

    service: haproxy-app

    environment:- AEROSPIKE_HOST=prod_aerospike_1

    net: prod

    docker-compose.yml

    aerospike:

    extends:

    file: aes_base_cluster.yml

    service: aerospike

    image: aerospike/aerospike-server:3.7.1

    labels:

    - "com.aerospike.cluster=awesome-counter"

    environment:

    - "affinity:com.aerospike.cluster!=awesome-counter"

    net: prod

  • 8/17/2019 2016 NYC Database Meetup - Containers

    37/45

    37Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    Scale the Aerospike cluster

    web2 web3web4

    webNweb

    web1

    mongodb

    Development

    !

     

    Production

    HA Proxy

    asd1 asdNasd2 ! 

  • 8/17/2019 2016 NYC Database Meetup - Containers

    38/45

    38Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    Demo 3 : Scale the Cluster

  • 8/17/2019 2016 NYC Database Meetup - Containers

    39/45

    39Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    API for Docker Events

    !  Start / Stop / Die etc

    !  https://docs.docker.com/engine/

    reference/api/docker_remote_api/

    !

     

    Interlock – Evan Hazlett!  Framework to listen and publish events

    !  Plugin Framework (e.g. HAPROXY)

    !  https://github.com/ehazlett/interlock

    !  Aerospike Interlock plugin

    !  Add / Remove node from Cluster

    https://github.com/aerospike/interlock

    Docker Event API & Interlock

  • 8/17/2019 2016 NYC Database Meetup - Containers

    40/45

    40Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    https://github.com/aerospike/interlock

    func (p AerospikePlugin) runAsinfoTip(args ...string) bool{

    asinfo, err := exec.LookPath("asinfo")

    if err != nil{

    log.Errorf("error finding asinfo binary: %s", err)

    return false

    }

    time.Sleep(time.Second*5) //sleep 5s for ASD to be ready

    cmd := exec.Command(asinfo,args...)

    Interlock Plugin - Aerospike

  • 8/17/2019 2016 NYC Database Meetup - Containers

    41/45

    41Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    Part SixConsiderations & Conclusion

  • 8/17/2019 2016 NYC Database Meetup - Containers

    42/45

    42Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    Inside

    !  Encapsulation of Concerns

    Storage: Inside or outside the container?

    Host

    daemon

    container

    Host

    daemon

    container e.g.SSD

    e.g.EBS

     /data/db

     /mnt/xx:/data/db

    /dev/xvdb 

    Outside

    Separation of Concerns

    Storage Features (e.g.Snapshots)

  • 8/17/2019 2016 NYC Database Meetup - Containers

    43/45

    43Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    Data Container

    !  --volumes-from

    !  Managed like other containers

    Special rules for Destruction

    !  TBD: Performance

    Storage: Data Container?

    Host

    daemon

    container

    Host

    daemon

    container

  • 8/17/2019 2016 NYC Database Meetup - Containers

    44/45

    44Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    Summary

    • 

    Define Container, their contents and how they work together once

    • 

    Deploy the same images in Dev, Pre-Prod and Production across

    Platforms

    One solution from Dev -> Production

    • 

    Ops define the whitelisted images, security policies etc.

    • 

    Dev use approved images to build upon

    • 

    Eliminate the complexity (and cost) of deployment•

     

    Scale up & down in a Flexible and Simple way

    Running Docker & Database in Production

  • 8/17/2019 2016 NYC Database Meetup - Containers

    45/45

    45Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.

    Code

    !  http://github.com/alvinr/docker-demo/tree/master/aerospike

    !  Docker Images

    !  http://hub.docker.com/r/aerospike/

    Aerospike & Docker deployment guide!  http://www.aerospike.com/docs/deploy_guides/docker/

    Contact me!

    [email protected]

    !  @jonnyeight

    Thanks and Q&A