SlideShare ist ein Scribd-Unternehmen logo
1 von 42
Downloaden Sie, um offline zu lesen
Databases & Containers:
From Development to
Deployment
Powering New Opportunities at Scale
2
Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.
■  Containers + Databases = Happy Developers
■  Ephemeral Containers + Databases = DevOps headaches
■  Data Redundancy
■  Need more than one copy of the Data
■  Database Self Discovery & Cluster formation
■  Manual / Scripted configuration of Database Cluster
■  Database Self Healing (as containers enter and leave)
■  Manual / Scripted re-configuration of Database Cluster
■  Application Tier discovery of Database
■  Manual / Scripted re-routing of Application Traffic
Conclusion
3
Proprietary & 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-time
Consumer Facing
Pricing /
Inventory / Billing
Real-time
Decisionin
g
Streaming
Data
Legacy Database
(Mainframe)
RDBMS
Database
Transactional
Systems
Enterprise Environment
Legacy
RDBMS
HDFS BASED
4
Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.
Existing Deployment Models Are Broken
4
Developer
Version
control
1. Development 2. Test 3. Stage / Production
QA / QE Sysadmin
5
Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.
Infrastructure Cannot be Fully Utilized
TRADITIONAL 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
6
Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.
■  Containers
■  Encapsulation
■  Deployment
■  Isolation
■  Databases
■  Persistence
■  Scalability
■  Self-organizing / Self-healing
■  Resource Utilization
Meeting the Challenges
Containers
14
Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.
Container Mission – Reduce Complexity
Build Ship Run
Open	Standards	
Plumbing	
Pla3orm	Clustering Distribution
Image specContainer run-time spec
Runtime
Trust
15
Proprietary & 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?
16
Proprietary & 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
17
Proprietary & 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/
20
Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.
Docker Landscape in Pictures
Machine provisions
Docker Engines
Engines are
clustered by Docker
Swarm
Compose orchestrates
Container deployment
Containers are run
by Docker Engine
Docker Machine Docker Compose
Docker Swarm
Docker Engine
Container
Containers encapsulates
your code, dependencies…
Aerospike
The Enterprise NoSQL Database
22
Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.
The Bottom Line
23
Proprietary & 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
24
Proprietary & 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
AverageLatency,
ms
Throughput, ops/sec
Balanced Workload Read Latency
Aerospike
Cassandra
MongoDB
0
4
8
12
16
0 50,000 100,000 150,000 200,000
AverageLatency,
ms
Throughput, ops/sec
Balanced Workload Update Latency
Aerospike
Cassandra
MongoDB
•  Flash / SSD Optimized
•  Primary Index in DRAM
Speed
25
Proprietary & 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
Rules
Rule 1
Rule 2
Rule 3
Historical Data
Rule 1-Passed
Rule 2-Passed
Rule 3-Failed
Account Behavior
Static Data
Account Statistics
Real-time Fraud Prevention
Databases and Containers
27
Proprietary & 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
■  Automatic discovery of nodes
■  Automatic routing of requests to the correct nodes
Requirements
28
Proprietary & 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
■  Automatic healing & rebalancing of the cluster
■  Automatic hashing of keys across the cluster
■  RIPEMD-160 collision free algorithm with Smart Partitions™
■  Application Tier discovery of Database
■  Automated cluster discovery with Smart Client™
■  Java, C/C++, C#, Python, Node.js
Example: Aerospike and Containers
Demo
30
Proprietary & 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
31
Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.
Lets build an App!
web
Aerospike
Development
python / flask
32
Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.
Scale in Production
web2 web3 web4 webNweb web1
Aerospike
Development
…
Production
HA Proxy
asd1 asdNasd2 …
33
Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.
Demo 1 : Build an App
34
Proprietary & 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
35
Proprietary & 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
36
Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.
Roll the App to Production behind HA Proxy
web web1
Development Production
Aerospike
HA Proxy
Aerospike
37
Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.
Scale the web tier
web2 web3 web4 webNweb web1
Aerospike
Development
…
Production
Aerospike
HA Proxy
38
Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.
Docker Networking
39
Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.
Demo 2 : Scale the Web Tier
40
Proprietary & 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
41
Proprietary & 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
42
Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.
Scale the Aerospike cluster
42
web2 web3 web4 webNweb web1
mongodb
Development
…
Production
HA Proxy
asd1 asdNasd2 …
43
Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.
Demo 3 : Scale the Cluster
44
Proprietary & 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
45
Proprietary & 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
46
Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.
Considerations
47
Proprietary & 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)
48
Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved.
Data Container
■  --volumes-from <container name>
■  Managed like other containers
■  Special rules for Destruction
■  TBD: Performance
Storage: Data Container?
Host
daemon
container
Host
daemon
container
49
Proprietary & 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
50
Proprietary & 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!
■  alvin@aerospike.com
■  @jonnyeight
Thanks and Q&A

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

From zero to hero Backing up alfresco
From zero to hero Backing up alfrescoFrom zero to hero Backing up alfresco
From zero to hero Backing up alfresco
 
My thoughts for - Building CI/CD Pipelines for Serverless Applications sharing
My thoughts for - Building CI/CD Pipelines for Serverless Applications sharingMy thoughts for - Building CI/CD Pipelines for Serverless Applications sharing
My thoughts for - Building CI/CD Pipelines for Serverless Applications sharing
 
Case Study: Using Terraform and Packer to deploy go applications to AWS
Case Study: Using Terraform and Packer to deploy go applications to AWSCase Study: Using Terraform and Packer to deploy go applications to AWS
Case Study: Using Terraform and Packer to deploy go applications to AWS
 
Altoros Cloud Foundry Training: hands-on workshop for DevOps, Architects and ...
Altoros Cloud Foundry Training: hands-on workshop for DevOps, Architects and ...Altoros Cloud Foundry Training: hands-on workshop for DevOps, Architects and ...
Altoros Cloud Foundry Training: hands-on workshop for DevOps, Architects and ...
 
Controlling Cloud Costs with HashiCorp Terraform
Controlling Cloud Costs with HashiCorp TerraformControlling Cloud Costs with HashiCorp Terraform
Controlling Cloud Costs with HashiCorp Terraform
 
OpenStack Resources and Capacity Management - Shimon Benattar, Mark Rasin - O...
OpenStack Resources and Capacity Management - Shimon Benattar, Mark Rasin - O...OpenStack Resources and Capacity Management - Shimon Benattar, Mark Rasin - O...
OpenStack Resources and Capacity Management - Shimon Benattar, Mark Rasin - O...
 
Terraform with OCI
Terraform with OCITerraform with OCI
Terraform with OCI
 
Deploying Containers in Production and at Scale
Deploying Containers in Production and at ScaleDeploying Containers in Production and at Scale
Deploying Containers in Production and at Scale
 
Building a Serverless Pipeline
Building a Serverless PipelineBuilding a Serverless Pipeline
Building a Serverless Pipeline
 
Oracle OCI APIs and SDK
Oracle OCI APIs and SDKOracle OCI APIs and SDK
Oracle OCI APIs and SDK
 
Ports, pods and proxies
Ports, pods and proxiesPorts, pods and proxies
Ports, pods and proxies
 
Cloud Foundry Overview
Cloud Foundry OverviewCloud Foundry Overview
Cloud Foundry Overview
 
OpenShift on OpenStack
OpenShift on OpenStackOpenShift on OpenStack
OpenShift on OpenStack
 
Evolution of container orchestration in Alibaba Cloud
Evolution of container orchestration in Alibaba CloudEvolution of container orchestration in Alibaba Cloud
Evolution of container orchestration in Alibaba Cloud
 
Istio By Example (extended version)
Istio By Example (extended version)Istio By Example (extended version)
Istio By Example (extended version)
 
TIAD : Automating the aplication lifecycle
TIAD : Automating the aplication lifecycleTIAD : Automating the aplication lifecycle
TIAD : Automating the aplication lifecycle
 
20191201 kubernetes managed weblogic revival - part 2
20191201 kubernetes managed weblogic revival - part 220191201 kubernetes managed weblogic revival - part 2
20191201 kubernetes managed weblogic revival - part 2
 
Introduction to Aerospike
Introduction to AerospikeIntroduction to Aerospike
Introduction to Aerospike
 
Cloud Foundry and OpenStack – Marriage Made in Heaven !
Cloud Foundry and OpenStack – Marriage Made in Heaven !Cloud Foundry and OpenStack – Marriage Made in Heaven !
Cloud Foundry and OpenStack – Marriage Made in Heaven !
 
Introduction to Cloud Foundry #JJUG
Introduction to Cloud Foundry #JJUGIntroduction to Cloud Foundry #JJUG
Introduction to Cloud Foundry #JJUG
 

Andere mochten auch

Ordenador gráfico de las ramas de la filosofía
Ordenador gráfico de las ramas de la filosofíaOrdenador gráfico de las ramas de la filosofía
Ordenador gráfico de las ramas de la filosofía
moniharo
 
Imaginando el futuro de la tecnología
Imaginando el futuro de la tecnologíaImaginando el futuro de la tecnología
Imaginando el futuro de la tecnología
Israel Alejandro
 
Ute el emprendimiento social como marco de analisis; el liderazgo de los empr...
Ute el emprendimiento social como marco de analisis; el liderazgo de los empr...Ute el emprendimiento social como marco de analisis; el liderazgo de los empr...
Ute el emprendimiento social como marco de analisis; el liderazgo de los empr...
zctm1021339
 
Les pneumonies-nosocomiales
Les pneumonies-nosocomialesLes pneumonies-nosocomiales
Les pneumonies-nosocomiales
belaibzino
 
Stage08_사운드+FaceBook
Stage08_사운드+FaceBookStage08_사운드+FaceBook
Stage08_사운드+FaceBook
샘 칼
 
La poliomyelite aigue
La poliomyelite aigueLa poliomyelite aigue
La poliomyelite aigue
belaibzino
 

Andere mochten auch (16)

ملتقى 2016 - اليوم الأول: Can we really measure anything? Bernie Smith
ملتقى 2016 - اليوم الأول: Can we really measure anything? Bernie Smithملتقى 2016 - اليوم الأول: Can we really measure anything? Bernie Smith
ملتقى 2016 - اليوم الأول: Can we really measure anything? Bernie Smith
 
ملتقى 2016 - اليوم الأول: نموذج التميز الأوروبي - د.عماد الدين
ملتقى 2016 - اليوم الأول: نموذج التميز الأوروبي - د.عماد الدينملتقى 2016 - اليوم الأول: نموذج التميز الأوروبي - د.عماد الدين
ملتقى 2016 - اليوم الأول: نموذج التميز الأوروبي - د.عماد الدين
 
Herpes virus
Herpes virusHerpes virus
Herpes virus
 
La diphterie
La diphterieLa diphterie
La diphterie
 
Ordenador gráfico de las ramas de la filosofía
Ordenador gráfico de las ramas de la filosofíaOrdenador gráfico de las ramas de la filosofía
Ordenador gráfico de las ramas de la filosofía
 
Imaginando el futuro de la tecnología
Imaginando el futuro de la tecnologíaImaginando el futuro de la tecnología
Imaginando el futuro de la tecnología
 
Ute el emprendimiento social como marco de analisis; el liderazgo de los empr...
Ute el emprendimiento social como marco de analisis; el liderazgo de los empr...Ute el emprendimiento social como marco de analisis; el liderazgo de los empr...
Ute el emprendimiento social como marco de analisis; el liderazgo de los empr...
 
Marketing strategy yunnan
Marketing strategy yunnanMarketing strategy yunnan
Marketing strategy yunnan
 
Historia
HistoriaHistoria
Historia
 
Sintesis informativa 05 06 2015
Sintesis informativa 05 06 2015Sintesis informativa 05 06 2015
Sintesis informativa 05 06 2015
 
Les pneumonies-nosocomiales
Les pneumonies-nosocomialesLes pneumonies-nosocomiales
Les pneumonies-nosocomiales
 
Pneumothorax
PneumothoraxPneumothorax
Pneumothorax
 
Dilatations des bronches
Dilatations des bronchesDilatations des bronches
Dilatations des bronches
 
AnkitaTestimony
AnkitaTestimonyAnkitaTestimony
AnkitaTestimony
 
Stage08_사운드+FaceBook
Stage08_사운드+FaceBookStage08_사운드+FaceBook
Stage08_사운드+FaceBook
 
La poliomyelite aigue
La poliomyelite aigueLa poliomyelite aigue
La poliomyelite aigue
 

Ähnlich wie SD Times - Docker v2

OpenStack + Cloud Foundry for the OpenStack Boston Meetup
OpenStack + Cloud Foundry for the OpenStack Boston MeetupOpenStack + Cloud Foundry for the OpenStack Boston Meetup
OpenStack + Cloud Foundry for the OpenStack Boston Meetup
ragss
 
Building a PaaS Platform like Bluemix on OpenStack
Building a PaaS Platform like Bluemix on OpenStackBuilding a PaaS Platform like Bluemix on OpenStack
Building a PaaS Platform like Bluemix on OpenStack
Animesh Singh
 
AWS Summit Benelux 2013 - Enterprise Applications on AWS
AWS Summit Benelux 2013 - Enterprise Applications on AWSAWS Summit Benelux 2013 - Enterprise Applications on AWS
AWS Summit Benelux 2013 - Enterprise Applications on AWS
Amazon Web Services
 

Ähnlich wie SD Times - Docker v2 (20)

OpenStack + Cloud Foundry for the OpenStack Boston Meetup
OpenStack + Cloud Foundry for the OpenStack Boston MeetupOpenStack + Cloud Foundry for the OpenStack Boston Meetup
OpenStack + Cloud Foundry for the OpenStack Boston Meetup
 
Distributed application usecase on docker
Distributed application usecase on dockerDistributed application usecase on docker
Distributed application usecase on docker
 
OpenStack Summit: How companies of all sizes leverage OpenStack based private...
OpenStack Summit: How companies of all sizes leverage OpenStack based private...OpenStack Summit: How companies of all sizes leverage OpenStack based private...
OpenStack Summit: How companies of all sizes leverage OpenStack based private...
 
The role of NoSQL in the Next Generation of Financial Informatics
The role of NoSQL in the Next Generation of Financial InformaticsThe role of NoSQL in the Next Generation of Financial Informatics
The role of NoSQL in the Next Generation of Financial Informatics
 
Architecting with power vm
Architecting with power vmArchitecting with power vm
Architecting with power vm
 
20171122 aws usergrp_coretech-spn-cicd-aws-v01
20171122 aws usergrp_coretech-spn-cicd-aws-v0120171122 aws usergrp_coretech-spn-cicd-aws-v01
20171122 aws usergrp_coretech-spn-cicd-aws-v01
 
Adobe Ask the AEM Community Expert Session Oct 2016
Adobe Ask the AEM Community Expert Session Oct 2016Adobe Ask the AEM Community Expert Session Oct 2016
Adobe Ask the AEM Community Expert Session Oct 2016
 
The Kubernetes WebLogic revival (part 2)
The Kubernetes WebLogic revival (part 2)The Kubernetes WebLogic revival (part 2)
The Kubernetes WebLogic revival (part 2)
 
MySQL as a Document Store
MySQL as a Document StoreMySQL as a Document Store
MySQL as a Document Store
 
Building a PaaS Platform like Bluemix on OpenStack
Building a PaaS Platform like Bluemix on OpenStackBuilding a PaaS Platform like Bluemix on OpenStack
Building a PaaS Platform like Bluemix on OpenStack
 
Running Kubernetes with Amazon EKS - AWS Online Tech Talks
Running Kubernetes with Amazon EKS - AWS Online Tech TalksRunning Kubernetes with Amazon EKS - AWS Online Tech Talks
Running Kubernetes with Amazon EKS - AWS Online Tech Talks
 
Galera on kubernetes_no_video
Galera on kubernetes_no_videoGalera on kubernetes_no_video
Galera on kubernetes_no_video
 
Microservices & Serverless Architecture Principles Applied - Cisco Live Orlan...
Microservices & Serverless Architecture Principles Applied - Cisco Live Orlan...Microservices & Serverless Architecture Principles Applied - Cisco Live Orlan...
Microservices & Serverless Architecture Principles Applied - Cisco Live Orlan...
 
20191201 kubernetes managed weblogic revival - part 1
20191201 kubernetes managed weblogic revival - part 120191201 kubernetes managed weblogic revival - part 1
20191201 kubernetes managed weblogic revival - part 1
 
Overpowered Kubernetes: CI/CD for K8s on Enterprise IaaS
Overpowered Kubernetes: CI/CD for K8s on Enterprise IaaSOverpowered Kubernetes: CI/CD for K8s on Enterprise IaaS
Overpowered Kubernetes: CI/CD for K8s on Enterprise IaaS
 
Docker and Cloud - Enables for DevOps - by ACA-IT
Docker and Cloud - Enables for DevOps - by ACA-ITDocker and Cloud - Enables for DevOps - by ACA-IT
Docker and Cloud - Enables for DevOps - by ACA-IT
 
'DOCKER' & CLOUD: ENABLERS For DEVOPS
'DOCKER' & CLOUD:  ENABLERS For DEVOPS'DOCKER' & CLOUD:  ENABLERS For DEVOPS
'DOCKER' & CLOUD: ENABLERS For DEVOPS
 
AWS Summit Benelux 2013 - Enterprise Applications on AWS
AWS Summit Benelux 2013 - Enterprise Applications on AWSAWS Summit Benelux 2013 - Enterprise Applications on AWS
AWS Summit Benelux 2013 - Enterprise Applications on AWS
 
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQLMySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
 
Cloud Native Applications on OpenShift
Cloud Native Applications on OpenShiftCloud Native Applications on OpenShift
Cloud Native Applications on OpenShift
 

SD Times - Docker v2

  • 1. Databases & Containers: From Development to Deployment Powering New Opportunities at Scale
  • 2. 2 Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved. ■  Containers + Databases = Happy Developers ■  Ephemeral Containers + Databases = DevOps headaches ■  Data Redundancy ■  Need more than one copy of the Data ■  Database Self Discovery & Cluster formation ■  Manual / Scripted configuration of Database Cluster ■  Database Self Healing (as containers enter and leave) ■  Manual / Scripted re-configuration of Database Cluster ■  Application Tier discovery of Database ■  Manual / Scripted re-routing of Application Traffic Conclusion
  • 3. 3 Proprietary & 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-time Consumer Facing Pricing / Inventory / Billing Real-time Decisionin g Streaming Data Legacy Database (Mainframe) RDBMS Database Transactional Systems Enterprise Environment Legacy RDBMS HDFS BASED
  • 4. 4 Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved. Existing Deployment Models Are Broken 4 Developer Version control 1. Development 2. Test 3. Stage / Production QA / QE Sysadmin
  • 5. 5 Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved. Infrastructure Cannot be Fully Utilized TRADITIONAL 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
  • 6. 6 Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved. ■  Containers ■  Encapsulation ■  Deployment ■  Isolation ■  Databases ■  Persistence ■  Scalability ■  Self-organizing / Self-healing ■  Resource Utilization Meeting the Challenges
  • 8. 14 Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved. Container Mission – Reduce Complexity Build Ship Run Open Standards Plumbing Pla3orm Clustering Distribution Image specContainer run-time spec Runtime Trust
  • 9. 15 Proprietary & 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?
  • 10. 16 Proprietary & 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
  • 11. 17 Proprietary & 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/
  • 12. 20 Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved. Docker Landscape in Pictures Machine provisions Docker Engines Engines are clustered by Docker Swarm Compose orchestrates Container deployment Containers are run by Docker Engine Docker Machine Docker Compose Docker Swarm Docker Engine Container Containers encapsulates your code, dependencies…
  • 14. 22 Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved. The Bottom Line
  • 15. 23 Proprietary & 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
  • 16. 24 Proprietary & 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 AverageLatency, ms Throughput, ops/sec Balanced Workload Read Latency Aerospike Cassandra MongoDB 0 4 8 12 16 0 50,000 100,000 150,000 200,000 AverageLatency, ms Throughput, ops/sec Balanced Workload Update Latency Aerospike Cassandra MongoDB •  Flash / SSD Optimized •  Primary Index in DRAM Speed
  • 17. 25 Proprietary & 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 Rules Rule 1 Rule 2 Rule 3 Historical Data Rule 1-Passed Rule 2-Passed Rule 3-Failed Account Behavior Static Data Account Statistics Real-time Fraud Prevention
  • 19. 27 Proprietary & 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 ■  Automatic discovery of nodes ■  Automatic routing of requests to the correct nodes Requirements
  • 20. 28 Proprietary & 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 ■  Automatic healing & rebalancing of the cluster ■  Automatic hashing of keys across the cluster ■  RIPEMD-160 collision free algorithm with Smart Partitions™ ■  Application Tier discovery of Database ■  Automated cluster discovery with Smart Client™ ■  Java, C/C++, C#, Python, Node.js Example: Aerospike and Containers
  • 21. Demo
  • 22. 30 Proprietary & 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
  • 23. 31 Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved. Lets build an App! web Aerospike Development python / flask
  • 24. 32 Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved. Scale in Production web2 web3 web4 webNweb web1 Aerospike Development … Production HA Proxy asd1 asdNasd2 …
  • 25. 33 Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved. Demo 1 : Build an App
  • 26. 34 Proprietary & 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
  • 27. 35 Proprietary & 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
  • 28. 36 Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved. Roll the App to Production behind HA Proxy web web1 Development Production Aerospike HA Proxy Aerospike
  • 29. 37 Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved. Scale the web tier web2 web3 web4 webNweb web1 Aerospike Development … Production Aerospike HA Proxy
  • 30. 38 Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved. Docker Networking
  • 31. 39 Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved. Demo 2 : Scale the Web Tier
  • 32. 40 Proprietary & 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
  • 33. 41 Proprietary & 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
  • 34. 42 Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved. Scale the Aerospike cluster 42 web2 web3 web4 webNweb web1 mongodb Development … Production HA Proxy asd1 asdNasd2 …
  • 35. 43 Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved. Demo 3 : Scale the Cluster
  • 36. 44 Proprietary & 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
  • 37. 45 Proprietary & 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
  • 38. 46 Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved. Considerations
  • 39. 47 Proprietary & 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)
  • 40. 48 Proprietary & Confidential | © 2015 Aerospike Inc. All rights reserved. Data Container ■  --volumes-from <container name> ■  Managed like other containers ■  Special rules for Destruction ■  TBD: Performance Storage: Data Container? Host daemon container Host daemon container
  • 41. 49 Proprietary & 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
  • 42. 50 Proprietary & 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! ■  alvin@aerospike.com ■  @jonnyeight Thanks and Q&A