SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Downloaden Sie, um offline zu lesen
A bitcoin broker
on Docker
Mathieu Buffenoir
@MBuffenoir
Sebastien Goasguen
@sebgoa
1
Mathieu Buffenoir
CTO Bity.com
VP of Swiss Bitcoin Association
@MBuffenoir
Sebastien Goasguen
VP Apache CloudStack
Author of O’Reilly Docker cookbook
@sebgoa
Outline
What is Bity ?
From nothing to Docker
Docker-compose in dev env
Ansible for cloud providers
Ansible for docker orchestration
Lessons learned
Future
4
What is Bity ?
Buy, sell and store
bitcoins
Regulated
Small team
hosted in Switzerland
fast-moving space
5
6
Our needs
Follow the “Twelve factor” app
recommendations.
Scalable, CI/CD -> Docker
Cloud (Paas) + Hosted in Switzerland ->
Exoscale
Our tech stack
8
Infrastructure design
9
Zero to Prod in 8 months ?
“It works on my machine” syndrome
10
Increase team collaboration
Gain Velocity
w/
Increased reproducibility
Easy portability
Difficulty on-boarding developers
Difficulty developing across team due to time to setup
environment
Teams working on different part of the infrastructure
Challenges to gain velocity
Steps
Nothing to Docker
Code on developer laptop with custom environment
Zero portability (i.e /source/tree )
Use of Vagrant box
Reproducibility of development environment (i.e /
source/tree/Vagrantfile )
Use of Vagrant box and Docker
Build image for applications and publish for
collaboration (i.e /source/tree/Dockerfile
+Vagrantfile)
$ docker build -t sbex/bity .

$ docker run -d -p 80:80 sbex/bity
Private repositories on Bitbucket
Private repositories on Docker Hub
Automated builds
Web Hooks from Bitbucket to Docker hub
Web Hooks from DockerHub to Jenkins
Docker Hub
dev server:
$ docker-compose up
CI/CD for dev
16
One docker-compose file to deploy entire infra
Great for developers and testing
Used to test parts of applications with latest image
from repo
Used prior to merging in staging
Docker-compose for dev env
17
Impossible to run command inside containers
How to deal with secrets ?
At the time, no Swarm so compose was a single host
dev tool
Limitations of compose
18
Going to production in the cloud
19
Choosing a Cloud and “config” tool
Need a Swiss sovereign cloud
Need a tool to configure:
security groups
key pairs
manage instances
Not a configuration management tool to deploy apps.
Dev (server or laptop + docker-compose) on bitcoin-testnet
Staging (cloudstack + ansible) on bitcoin-testnet
Prod (cloudstack + ansible) on bitcoin-mainnet
separate branches for code and different image tags
20
Environments
$ git merge dev
staging tags
$ ansible-playbook deploy.yml
staging environment
Deploying on staging env
22
Create Cloud Infrastructure at Will
- name: Start Backend VM
local_action:
module: cloudstack_vm
name: backendpublic
template: "{{ template }}"
service_offering: "{{ instance_type }}"
security_groups: [ 'backend_public' ]
ssh_key: "{{ ssh_key }}"
user_data: "{{ lookup('file', '../files/backend_userdata.yml') }}"
register: backend_public
tags: create_vm
Ansible CloudStack module
- name: backend SecGroup
local_action:
module: cloudstack_sg
name: database
description: Backend public
tags: secgroup
24
Ansible Docker module in Ansible core
Deploying/Managing containers with
Ansible
25
- name: Set Docker login credentials
command: docker login -u foobar -e {{ hub_email }} --
password={{ hub_password }}
- name: Docker pull sbex/angular-frontend
command: docker pull sbex/angular-frontend
- name: Start bity
docker:
image: sbex/angular-frontend
detach: true
restart_policy: always
name: bity
ports: 80:80
tags: start_container
Ansible docker module
26
Ansible and logdriver
- name: Start backend public
docker:
name: backend
image: sbex/backend
restart_policy: always
volumes:
- /app/_env:/usr/src/app/_env:ro
detach: true
ports: 8000:8000
log_driver: syslog
log_opt:
syslog-address: udp://{{hostvars['logserver'].ansible_ssh_host}}:5000
syslog-facility: local0
syslog-tag: backendpublic
27
Ansible to configure containers
- name: Create directory for settings
file: path=/app/_env state=directory
- name: Create json settings from template
template: src=env.j2 dest=/app/_env/env.json
...
- name: Create tables
command: docker exec -ti backend ./manage.py migrate
28
Dealing with secrets
No secrets in container images
Use Ansible vault to encrypt all secrets in playbooks stored in bitbucket
$ ansible-vault create /path/to/file.yml
$ ansible-vault encrypt /path/to/file.yml
$ ansible-vault decrypt /path/to/file.yml
$ ansible-vault rekey /path/to/file.yml
29
Container “Orchestration”
Every application has its role
Several playbooks
$ ansible-playbook deploy.yml
$ ansible-playbook upgrade.yml
$ ansible-playbook stop.yml
$ ansible-playbook start.yml
30
Early on:
Logspout to ELK
Now:
Logdriver (ansible 2.0) syslog driver to logstash with ELK
Test/deploy monitoring with docker-compose.
Logging
31
ElasticSearch 1.7 (+data container)
Logstash 1.5.3 (+conf for elk logs)
Kibana 4 (+Dashboard for elk logs)
cAdvisor (Collect & View containers performance)
Ngnix Proxy 1.9.3 (for SSL + password access).
One docker-compose runs
32
33
Container restart -> thanks to restart policy (docker > 1.6)
Weird Ansible docker behavior at times
Config as volume mounts (Too many env variables to handle)
Cannot use compose in prod yet (vault, execute commands
inside containers )
Lessons Learned
34
Currently using Ubuntu 14.04
Investigate the use of Docker optimized OS (e.g coreOS,
Atomic, RancherOS)
Need Easy upgrade of Docker versions
With new versions every 2 months, and possible change of
recommended storage driver, we need an easy way to cleanly
upgrade production systems
Investigate the use of a Docker orchestrator, possible
replacing Ansible docker module
(e.g Swarm, Kubernetes, tutum…)
Future
Thank you!MATHIEU BUFFENOIR
@MBuffenoir

mathieu@bity.com
@sebgoa

runseb@gmail.com
SEBASTIEN GOASGUEN

Weitere ähnliche Inhalte

Was ist angesagt?

Docker on Google App Engine
Docker on Google App EngineDocker on Google App Engine
Docker on Google App Engine
Docker, Inc.
 

Was ist angesagt? (20)

Configuration Management and Transforming Legacy Applications in the Enterpri...
Configuration Management and Transforming Legacy Applications in the Enterpri...Configuration Management and Transforming Legacy Applications in the Enterpri...
Configuration Management and Transforming Legacy Applications in the Enterpri...
 
DockerCon EU 2015: Speed Up Deployment: Building a Distributed Docker Registr...
DockerCon EU 2015: Speed Up Deployment: Building a Distributed Docker Registr...DockerCon EU 2015: Speed Up Deployment: Building a Distributed Docker Registr...
DockerCon EU 2015: Speed Up Deployment: Building a Distributed Docker Registr...
 
DCSF19 How To Build Your Containerization Strategy
DCSF19 How To Build Your Containerization Strategy  DCSF19 How To Build Your Containerization Strategy
DCSF19 How To Build Your Containerization Strategy
 
Docker Container As A Service - March 2016
Docker Container As A Service - March 2016Docker Container As A Service - March 2016
Docker Container As A Service - March 2016
 
Docker for developers on mac and windows
Docker for developers on mac and windowsDocker for developers on mac and windows
Docker for developers on mac and windows
 
Windows Server Containers- How we hot here and architecture deep dive
Windows Server Containers- How we hot here and architecture deep diveWindows Server Containers- How we hot here and architecture deep dive
Windows Server Containers- How we hot here and architecture deep dive
 
Automatically Renew Certificated In Your Kubernetes Cluster
Automatically Renew Certificated In Your Kubernetes ClusterAutomatically Renew Certificated In Your Kubernetes Cluster
Automatically Renew Certificated In Your Kubernetes Cluster
 
Docker on Google App Engine
Docker on Google App EngineDocker on Google App Engine
Docker on Google App Engine
 
Docker Multi-arch All The Things
Docker Multi-arch All The ThingsDocker Multi-arch All The Things
Docker Multi-arch All The Things
 
Online Meetup: Why should container system / platform builders care about con...
Online Meetup: Why should container system / platform builders care about con...Online Meetup: Why should container system / platform builders care about con...
Online Meetup: Why should container system / platform builders care about con...
 
Docker Online Meetup: Announcing Docker CE + EE
Docker Online Meetup: Announcing Docker CE + EEDocker Online Meetup: Announcing Docker CE + EE
Docker Online Meetup: Announcing Docker CE + EE
 
Docker to the Rescue of an Ops Team
Docker to the Rescue of an Ops TeamDocker to the Rescue of an Ops Team
Docker to the Rescue of an Ops Team
 
It takes a Village to do the Impossible - Jeff Lindsay
It takes a Village to do the Impossible - Jeff LindsayIt takes a Village to do the Impossible - Jeff Lindsay
It takes a Village to do the Impossible - Jeff Lindsay
 
Docker for Ops - Scott Coulton, Puppet
Docker for Ops - Scott Coulton, PuppetDocker for Ops - Scott Coulton, Puppet
Docker for Ops - Scott Coulton, Puppet
 
Deeper Dive in Docker Overlay Networks
Deeper Dive in Docker Overlay NetworksDeeper Dive in Docker Overlay Networks
Deeper Dive in Docker Overlay Networks
 
The Dockerfile Explosion and the Need for Higher Level Tools by Gareth Rushgrove
The Dockerfile Explosion and the Need for Higher Level Tools by Gareth RushgroveThe Dockerfile Explosion and the Need for Higher Level Tools by Gareth Rushgrove
The Dockerfile Explosion and the Need for Higher Level Tools by Gareth Rushgrove
 
Docker for Devs - John Zaccone, IBM
Docker for Devs - John Zaccone, IBMDocker for Devs - John Zaccone, IBM
Docker for Devs - John Zaccone, IBM
 
Docker for Java Developers - Fabiane Nardon and Arun gupta
Docker for Java Developers - Fabiane Nardon and Arun guptaDocker for Java Developers - Fabiane Nardon and Arun gupta
Docker for Java Developers - Fabiane Nardon and Arun gupta
 
Docker Security Deep Dive by Ying Li and David Lawrence
Docker Security Deep Dive by Ying Li and David LawrenceDocker Security Deep Dive by Ying Li and David Lawrence
Docker Security Deep Dive by Ying Li and David Lawrence
 
What's New in Docker 1.12 (June 20, 2016) by Mike Goelzer & Andrea Luzzardi
What's New in Docker 1.12 (June 20, 2016) by Mike Goelzer & Andrea LuzzardiWhat's New in Docker 1.12 (June 20, 2016) by Mike Goelzer & Andrea Luzzardi
What's New in Docker 1.12 (June 20, 2016) by Mike Goelzer & Andrea Luzzardi
 

Andere mochten auch

DockerCon14 John Engates
DockerCon14 John EngatesDockerCon14 John Engates
DockerCon14 John Engates
Docker, Inc.
 
LXC Docker and the Future of Software Delivery
LXC Docker and the Future of Software DeliveryLXC Docker and the Future of Software Delivery
LXC Docker and the Future of Software Delivery
Docker, Inc.
 
Victor Vieux at Docker Paris Meetup #1
Victor Vieux at Docker Paris Meetup #1Victor Vieux at Docker Paris Meetup #1
Victor Vieux at Docker Paris Meetup #1
Docker, Inc.
 
DockerCon SF 2015: How to Build a Secure DevOps Environment for the Government
DockerCon SF 2015: How to Build a Secure DevOps Environment for the GovernmentDockerCon SF 2015: How to Build a Secure DevOps Environment for the Government
DockerCon SF 2015: How to Build a Secure DevOps Environment for the Government
Docker, Inc.
 
DockerCon SF 2015: Orchestration for Devs (machine + compose)
DockerCon SF 2015:  Orchestration for Devs (machine + compose)DockerCon SF 2015:  Orchestration for Devs (machine + compose)
DockerCon SF 2015: Orchestration for Devs (machine + compose)
Docker, Inc.
 
Dockerfile Basics Workshop #1
Dockerfile Basics Workshop #1Dockerfile Basics Workshop #1
Dockerfile Basics Workshop #1
Docker, Inc.
 

Andere mochten auch (20)

DockerCon EU 2015: Placing a container on a train at 200mph
DockerCon EU 2015: Placing a container on a train at 200mphDockerCon EU 2015: Placing a container on a train at 200mph
DockerCon EU 2015: Placing a container on a train at 200mph
 
Metrics at Scale @ UBER (Mantas Klasavicius Technology Stream)
Metrics at Scale @ UBER (Mantas Klasavicius Technology Stream)Metrics at Scale @ UBER (Mantas Klasavicius Technology Stream)
Metrics at Scale @ UBER (Mantas Klasavicius Technology Stream)
 
Stream Processing with Kafka in Uber, Danny Yuan
Stream Processing with Kafka in Uber, Danny Yuan Stream Processing with Kafka in Uber, Danny Yuan
Stream Processing with Kafka in Uber, Danny Yuan
 
UBER Human Resource
UBER Human Resource UBER Human Resource
UBER Human Resource
 
Kafka + Uber- The World’s Realtime Transit Infrastructure, Aaron Schildkrout
Kafka + Uber- The World’s Realtime Transit Infrastructure, Aaron SchildkroutKafka + Uber- The World’s Realtime Transit Infrastructure, Aaron Schildkrout
Kafka + Uber- The World’s Realtime Transit Infrastructure, Aaron Schildkrout
 
Spark: Interactive To Production
Spark: Interactive To ProductionSpark: Interactive To Production
Spark: Interactive To Production
 
Open source is good for both business and humanity
Open source is good for both business and humanityOpen source is good for both business and humanity
Open source is good for both business and humanity
 
The Future of Hardware-Backed Keys
The Future of Hardware-Backed KeysThe Future of Hardware-Backed Keys
The Future of Hardware-Backed Keys
 
Containerize All the (Multi-Platform) Things! by Phil Estes
Containerize All the (Multi-Platform) Things! by Phil EstesContainerize All the (Multi-Platform) Things! by Phil Estes
Containerize All the (Multi-Platform) Things! by Phil Estes
 
DockerCon 2015: Docker Engine Breakout Session
DockerCon 2015: Docker Engine Breakout SessionDockerCon 2015: Docker Engine Breakout Session
DockerCon 2015: Docker Engine Breakout Session
 
DockerCon14 John Engates
DockerCon14 John EngatesDockerCon14 John Engates
DockerCon14 John Engates
 
LXC Docker and the Future of Software Delivery
LXC Docker and the Future of Software DeliveryLXC Docker and the Future of Software Delivery
LXC Docker and the Future of Software Delivery
 
Victor Vieux at Docker Paris Meetup #1
Victor Vieux at Docker Paris Meetup #1Victor Vieux at Docker Paris Meetup #1
Victor Vieux at Docker Paris Meetup #1
 
DockerCon SF 2015: Networking Breakout
DockerCon SF 2015: Networking BreakoutDockerCon SF 2015: Networking Breakout
DockerCon SF 2015: Networking Breakout
 
DockerCon SF 2015: How to Build a Secure DevOps Environment for the Government
DockerCon SF 2015: How to Build a Secure DevOps Environment for the GovernmentDockerCon SF 2015: How to Build a Secure DevOps Environment for the Government
DockerCon SF 2015: How to Build a Secure DevOps Environment for the Government
 
DockerCon SF 2015: Orchestration for Devs (machine + compose)
DockerCon SF 2015:  Orchestration for Devs (machine + compose)DockerCon SF 2015:  Orchestration for Devs (machine + compose)
DockerCon SF 2015: Orchestration for Devs (machine + compose)
 
Contribute and Collaborate 101
Contribute and Collaborate 101Contribute and Collaborate 101
Contribute and Collaborate 101
 
Securing your Containers (Meetup at Docker HQ 4/7)
Securing your Containers (Meetup at Docker HQ 4/7)Securing your Containers (Meetup at Docker HQ 4/7)
Securing your Containers (Meetup at Docker HQ 4/7)
 
DockerCon SF 2015: MomOps in DevOps w/ Mukta Aphale
DockerCon SF 2015: MomOps in DevOps w/ Mukta AphaleDockerCon SF 2015: MomOps in DevOps w/ Mukta Aphale
DockerCon SF 2015: MomOps in DevOps w/ Mukta Aphale
 
Dockerfile Basics Workshop #1
Dockerfile Basics Workshop #1Dockerfile Basics Workshop #1
Dockerfile Basics Workshop #1
 

Ähnlich wie DockerCon EU 2015: Trading Bitcoin with Docker

Developer Experience Cloud Native - From Code Gen to Git Commit without a CI/...
Developer Experience Cloud Native - From Code Gen to Git Commit without a CI/...Developer Experience Cloud Native - From Code Gen to Git Commit without a CI/...
Developer Experience Cloud Native - From Code Gen to Git Commit without a CI/...
Michael Hofmann
 

Ähnlich wie DockerCon EU 2015: Trading Bitcoin with Docker (20)

2015 DockerCon Using Docker in production at bity.com
2015 DockerCon Using Docker in production at bity.com2015 DockerCon Using Docker in production at bity.com
2015 DockerCon Using Docker in production at bity.com
 
Develop with docker 2014 aug
Develop with docker 2014 augDevelop with docker 2014 aug
Develop with docker 2014 aug
 
DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline  DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline
 
Serverless Container with Source2Image
Serverless Container with Source2ImageServerless Container with Source2Image
Serverless Container with Source2Image
 
Serverless containers … with source-to-image
Serverless containers  … with source-to-imageServerless containers  … with source-to-image
Serverless containers … with source-to-image
 
Mihai Criveti - PyCon Ireland - Automate Everything
Mihai Criveti - PyCon Ireland - Automate EverythingMihai Criveti - PyCon Ireland - Automate Everything
Mihai Criveti - PyCon Ireland - Automate Everything
 
Docker Ecosystem on Azure
Docker Ecosystem on AzureDocker Ecosystem on Azure
Docker Ecosystem on Azure
 
Dockerizing a Symfony2 application
Dockerizing a Symfony2 applicationDockerizing a Symfony2 application
Dockerizing a Symfony2 application
 
Developer Experience Cloud Native - From Code Gen to Git Commit without a CI/...
Developer Experience Cloud Native - From Code Gen to Git Commit without a CI/...Developer Experience Cloud Native - From Code Gen to Git Commit without a CI/...
Developer Experience Cloud Native - From Code Gen to Git Commit without a CI/...
 
Docker for mere mortals
Docker for mere mortalsDocker for mere mortals
Docker for mere mortals
 
Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned  Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned
 
Continuous Delivery of Cloud Applications with Docker Containers and IBM Bluemix
Continuous Delivery of Cloud Applications with Docker Containers and IBM BluemixContinuous Delivery of Cloud Applications with Docker Containers and IBM Bluemix
Continuous Delivery of Cloud Applications with Docker Containers and IBM Bluemix
 
Microservices DevOps on Google Cloud Platform
Microservices DevOps on Google Cloud PlatformMicroservices DevOps on Google Cloud Platform
Microservices DevOps on Google Cloud Platform
 
Docker intro
Docker introDocker intro
Docker intro
 
Using Kubernetes for Continuous Integration and Continuous Delivery
Using Kubernetes for Continuous Integration and Continuous DeliveryUsing Kubernetes for Continuous Integration and Continuous Delivery
Using Kubernetes for Continuous Integration and Continuous Delivery
 
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2days
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2daysUsing Kubernetes for Continuous Integration and Continuous Delivery. Java2days
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2days
 
Delivering Docker & K3s worloads to IoT Edge devices
Delivering Docker & K3s worloads to IoT Edge devicesDelivering Docker & K3s worloads to IoT Edge devices
Delivering Docker & K3s worloads to IoT Edge devices
 
Rooting Out Root: User namespaces in Docker
Rooting Out Root: User namespaces in DockerRooting Out Root: User namespaces in Docker
Rooting Out Root: User namespaces in Docker
 
Containers, Docker, and Microservices: the Terrific Trio
Containers, Docker, and Microservices: the Terrific TrioContainers, Docker, and Microservices: the Terrific Trio
Containers, Docker, and Microservices: the Terrific Trio
 
Kubernetes: training micro-dragons for a serious battle
Kubernetes: training micro-dragons for a serious battleKubernetes: training micro-dragons for a serious battle
Kubernetes: training micro-dragons for a serious battle
 

Mehr von Docker, Inc.

Build & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWSBuild & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWS
Docker, Inc.
 
Build & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWSBuild & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWS
Docker, Inc.
 

Mehr von Docker, Inc. (20)

Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience
 
How to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker BuildHow to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker Build
 
Build & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWSBuild & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWS
 
Securing Your Containerized Applications with NGINX
Securing Your Containerized Applications with NGINXSecuring Your Containerized Applications with NGINX
Securing Your Containerized Applications with NGINX
 
How To Build and Run Node Apps with Docker and Compose
How To Build and Run Node Apps with Docker and ComposeHow To Build and Run Node Apps with Docker and Compose
How To Build and Run Node Apps with Docker and Compose
 
Hands-on Helm
Hands-on Helm Hands-on Helm
Hands-on Helm
 
Distributed Deep Learning with Docker at Salesforce
Distributed Deep Learning with Docker at SalesforceDistributed Deep Learning with Docker at Salesforce
Distributed Deep Learning with Docker at Salesforce
 
The First 10M Pulls: Building The Official Curl Image for Docker Hub
The First 10M Pulls: Building The Official Curl Image for Docker HubThe First 10M Pulls: Building The Official Curl Image for Docker Hub
The First 10M Pulls: Building The Official Curl Image for Docker Hub
 
Monitoring in a Microservices World
Monitoring in a Microservices WorldMonitoring in a Microservices World
Monitoring in a Microservices World
 
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
 
Predicting Space Weather with Docker
Predicting Space Weather with DockerPredicting Space Weather with Docker
Predicting Space Weather with Docker
 
Become a Docker Power User With Microsoft Visual Studio Code
Become a Docker Power User With Microsoft Visual Studio CodeBecome a Docker Power User With Microsoft Visual Studio Code
Become a Docker Power User With Microsoft Visual Studio Code
 
How to Use Mirroring and Caching to Optimize your Container Registry
How to Use Mirroring and Caching to Optimize your Container RegistryHow to Use Mirroring and Caching to Optimize your Container Registry
How to Use Mirroring and Caching to Optimize your Container Registry
 
Monolithic to Microservices + Docker = SDLC on Steroids!
Monolithic to Microservices + Docker = SDLC on Steroids!Monolithic to Microservices + Docker = SDLC on Steroids!
Monolithic to Microservices + Docker = SDLC on Steroids!
 
Kubernetes at Datadog Scale
Kubernetes at Datadog ScaleKubernetes at Datadog Scale
Kubernetes at Datadog Scale
 
Labels, Labels, Labels
Labels, Labels, Labels Labels, Labels, Labels
Labels, Labels, Labels
 
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment ModelUsing Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
 
Build & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWSBuild & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWS
 
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
 
Developing with Docker for the Arm Architecture
Developing with Docker for the Arm ArchitectureDeveloping with Docker for the Arm Architecture
Developing with Docker for the Arm Architecture
 

Kürzlich hochgeladen

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Kürzlich hochgeladen (20)

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 

DockerCon EU 2015: Trading Bitcoin with Docker

  • 1. A bitcoin broker on Docker Mathieu Buffenoir @MBuffenoir Sebastien Goasguen @sebgoa 1
  • 2. Mathieu Buffenoir CTO Bity.com VP of Swiss Bitcoin Association @MBuffenoir Sebastien Goasguen VP Apache CloudStack Author of O’Reilly Docker cookbook @sebgoa
  • 3. Outline What is Bity ? From nothing to Docker Docker-compose in dev env Ansible for cloud providers Ansible for docker orchestration Lessons learned Future
  • 4. 4 What is Bity ? Buy, sell and store bitcoins Regulated Small team hosted in Switzerland fast-moving space
  • 5. 5
  • 6. 6 Our needs Follow the “Twelve factor” app recommendations. Scalable, CI/CD -> Docker Cloud (Paas) + Hosted in Switzerland -> Exoscale
  • 9. 9 Zero to Prod in 8 months ?
  • 10. “It works on my machine” syndrome 10 Increase team collaboration Gain Velocity w/ Increased reproducibility Easy portability
  • 11. Difficulty on-boarding developers Difficulty developing across team due to time to setup environment Teams working on different part of the infrastructure Challenges to gain velocity
  • 12. Steps
  • 13. Nothing to Docker Code on developer laptop with custom environment Zero portability (i.e /source/tree ) Use of Vagrant box Reproducibility of development environment (i.e / source/tree/Vagrantfile ) Use of Vagrant box and Docker Build image for applications and publish for collaboration (i.e /source/tree/Dockerfile +Vagrantfile) $ docker build -t sbex/bity .
 $ docker run -d -p 80:80 sbex/bity
  • 14. Private repositories on Bitbucket Private repositories on Docker Hub Automated builds Web Hooks from Bitbucket to Docker hub Web Hooks from DockerHub to Jenkins Docker Hub
  • 15. dev server: $ docker-compose up CI/CD for dev
  • 16. 16 One docker-compose file to deploy entire infra Great for developers and testing Used to test parts of applications with latest image from repo Used prior to merging in staging Docker-compose for dev env
  • 17. 17 Impossible to run command inside containers How to deal with secrets ? At the time, no Swarm so compose was a single host dev tool Limitations of compose
  • 18. 18 Going to production in the cloud
  • 19. 19 Choosing a Cloud and “config” tool Need a Swiss sovereign cloud Need a tool to configure: security groups key pairs manage instances Not a configuration management tool to deploy apps.
  • 20. Dev (server or laptop + docker-compose) on bitcoin-testnet Staging (cloudstack + ansible) on bitcoin-testnet Prod (cloudstack + ansible) on bitcoin-mainnet separate branches for code and different image tags 20 Environments
  • 21. $ git merge dev staging tags $ ansible-playbook deploy.yml staging environment Deploying on staging env
  • 23. - name: Start Backend VM local_action: module: cloudstack_vm name: backendpublic template: "{{ template }}" service_offering: "{{ instance_type }}" security_groups: [ 'backend_public' ] ssh_key: "{{ ssh_key }}" user_data: "{{ lookup('file', '../files/backend_userdata.yml') }}" register: backend_public tags: create_vm Ansible CloudStack module - name: backend SecGroup local_action: module: cloudstack_sg name: database description: Backend public tags: secgroup
  • 24. 24 Ansible Docker module in Ansible core Deploying/Managing containers with Ansible
  • 25. 25 - name: Set Docker login credentials command: docker login -u foobar -e {{ hub_email }} -- password={{ hub_password }} - name: Docker pull sbex/angular-frontend command: docker pull sbex/angular-frontend - name: Start bity docker: image: sbex/angular-frontend detach: true restart_policy: always name: bity ports: 80:80 tags: start_container Ansible docker module
  • 26. 26 Ansible and logdriver - name: Start backend public docker: name: backend image: sbex/backend restart_policy: always volumes: - /app/_env:/usr/src/app/_env:ro detach: true ports: 8000:8000 log_driver: syslog log_opt: syslog-address: udp://{{hostvars['logserver'].ansible_ssh_host}}:5000 syslog-facility: local0 syslog-tag: backendpublic
  • 27. 27 Ansible to configure containers - name: Create directory for settings file: path=/app/_env state=directory - name: Create json settings from template template: src=env.j2 dest=/app/_env/env.json ... - name: Create tables command: docker exec -ti backend ./manage.py migrate
  • 28. 28 Dealing with secrets No secrets in container images Use Ansible vault to encrypt all secrets in playbooks stored in bitbucket $ ansible-vault create /path/to/file.yml $ ansible-vault encrypt /path/to/file.yml $ ansible-vault decrypt /path/to/file.yml $ ansible-vault rekey /path/to/file.yml
  • 29. 29 Container “Orchestration” Every application has its role Several playbooks $ ansible-playbook deploy.yml $ ansible-playbook upgrade.yml $ ansible-playbook stop.yml $ ansible-playbook start.yml
  • 30. 30 Early on: Logspout to ELK Now: Logdriver (ansible 2.0) syslog driver to logstash with ELK Test/deploy monitoring with docker-compose. Logging
  • 31. 31 ElasticSearch 1.7 (+data container) Logstash 1.5.3 (+conf for elk logs) Kibana 4 (+Dashboard for elk logs) cAdvisor (Collect & View containers performance) Ngnix Proxy 1.9.3 (for SSL + password access). One docker-compose runs
  • 32. 32
  • 33. 33 Container restart -> thanks to restart policy (docker > 1.6) Weird Ansible docker behavior at times Config as volume mounts (Too many env variables to handle) Cannot use compose in prod yet (vault, execute commands inside containers ) Lessons Learned
  • 34. 34 Currently using Ubuntu 14.04 Investigate the use of Docker optimized OS (e.g coreOS, Atomic, RancherOS) Need Easy upgrade of Docker versions With new versions every 2 months, and possible change of recommended storage driver, we need an easy way to cleanly upgrade production systems Investigate the use of a Docker orchestrator, possible replacing Ansible docker module (e.g Swarm, Kubernetes, tutum…) Future