SlideShare a Scribd company logo
1 of 34
Download to read offline
Automated deployments 
for mission-critical 
financial services 
Jeremy Alons 
Systems Engineer, Spot Trading LLC 
Views and statements are my own and may not reflect those of my employer 
v.8
A case study in 
continuous delivery
Why? 
• Previously, deployments were time consuming 
• Took hours of developer time, sometimes spread 
over weeks 
• Manual process meant many problems at many 
points
Our goals 
• Rapid feedback 
• Tie configuration to deployment 
• Be highly parallelized, if possible 
• Infrastructure as code 
• Repeatable
Challenges 
• Lots of unique software 
• Differences force complexity 
• Misused the tools we had originally 
• Required additional tooling (that continues today)
Steps: 
Build 
Deploy 
Config 
Run
Steps: 
Build 
Deploy! 
Config 
Run
Steps: 
Build 
Deploy 
Config! 
Run
Build: Bamboo (or Jenkins, travis-ci, etc) executes 
commands 
i.e. gcc -o foo foo.c 
sh tests.sh 
etc
Source code in. 
Artifacts out.
Now what? 
We need to get artifacts 
to where they need to go
This poses problems. 
• What hosts? 
• How do we get correct versions to those hosts? 
• Are we sure those hosts are suitable for the 
application?
SaltStack to the 
rescue!
Fast, scalable and flexible systems 
management software for data center 
automation, cloud orchestration, server 
provisioning, configuration management 
and more 
- www.saltstack.com
Fast, scalable and flexible systems 
management software for data center 
automation, cloud orchestration, server 
provisioning, configuration management 
and more 
- www.saltstack.com
Fast, scalable and flexible systems 
management software for data center 
automation, cloud orchestration, server 
provisioning, configuration management 
and more 
- www.saltstack.com
Fast, scalable and flexible systems 
management software for data center 
automation, cloud orchestration, server 
provisioning, configuration management 
and more 
- www.saltstack.com
Fast, scalable and flexible systems 
management software for data center 
automation, cloud orchestration, server 
provisioning, configuration management 
and more 
- www.saltstack.com
Salt is extremely extensible 
• External pillars 
* Just python 
• Interface with ZooKeeper for host discovery 
• ZooKeeper maintains source of truth 
• But how does Bamboo talk to ZooKeeper? 
• Facilitate the communication through Salt
Grains 
Interface to derive information about the underlying system 
• Static information about 
systems 
• Loaded at minion start time 
• OS (major, minor), ipv[4|6], etc 
• Something you ask the server
Pillar 
Pillar is an interface for Salt designed to offer global values 
that can be distributed to all minions. 
• Something you tell a server 
• “pillar” is a dictionary of items 
sent to minions 
• ext_pillar are derived by the 
master by executing python 
• Still sent to minions
Grain: Ask 
Pillar: Tell
Build triggered 
server1 
server2 
Salt Master 
ZooKeeper 
Stash 
Bamboo 
Zoom 
Selects build to deploy 
Tells salt to find 
matching daemons 
Returns results 
Runs deploy state 
Asks for 
hosts 
8 
Return hosts 
to target 
Displays real time 
status and 
dependency map 
Developer 
1 Pushes commit 
3 2 
4 
5 
6 
7 
0
Bamboo talks to salt via Salt’s 
RESTful api 
Salt talks to ZooKeeper via an 
external pillar
Salt asks ZooKeeper 
“What hosts are currently 
responsible for app Foo?”
ZooKeeper responds, we 
run a series of state files 
on the targeted servers
States 
• Check stats (memory, disk, etc) 
• - cmd.run salt://deploy/check_host.py 
• Apply system settings (buffers, os monitoring, etc) 
• Install software 
• yum install Foo-release-2.3-10
After build, package into 
rpm 
• Use the tools available 
• Versioning 
• Well understood 
• Reporting baked in
RPM 
• Specify version 
• Allows control over latest build, n-1, etc 
• Passed through via pillar at install time, fed by 
Bamboo deployment plan 
• Allows Bamboo to drive version released
API wrapper 
• Home grown deployment software 
• Command line utility that converts bamboo 
variables to salt states 
• Deploys itself via the deployment process 
- Dog fooding the deployment process
deploy state 
# Run the installation on the targeted server 
deploy_{{ application_name }}: 
pkg.installed: 
- name: {{ application_name }} 
- version: {{ pillar[‘deploy_pillar’][‘version’] }} 
- refresh: True 
- enablerepo: spot_applications 
- require: 
- sls: spot_applications_repo
Things we’ve learned 
• In the end, it’s all just bits on disk 
• All software is just software, and (should be) equal 
• Be specific and exact 
• Catch issues soon (test early, test often) 
• Being clever will come back to haunt you (after all, 
this is just software development)
Highlights 
• Implemented deployment pipeline 
• Artifact of the build 
• Bringing components together 
• Repeatable, rapid feedback
Thank you. 
For more about some of the interesting work Spot is doing, 
check our Engineering Blog at 
http://www.spottradingllc.com/technology/ 
email: jeremy.alons@spottradingllc.com 
Questions?

More Related Content

What's hot

Salty OPS – Saltstack Introduction
Salty OPS – Saltstack IntroductionSalty OPS – Saltstack Introduction
Salty OPS – Saltstack Introduction
Walter Liu
 
OpenNebula and SaltStack - OpenNebulaConf 2013
OpenNebula and SaltStack - OpenNebulaConf 2013OpenNebula and SaltStack - OpenNebulaConf 2013
OpenNebula and SaltStack - OpenNebulaConf 2013
databus.pro
 
Steve Singer - Managing PostgreSQL with Puppet @ Postgres Open
Steve Singer - Managing PostgreSQL with Puppet @ Postgres OpenSteve Singer - Managing PostgreSQL with Puppet @ Postgres Open
Steve Singer - Managing PostgreSQL with Puppet @ Postgres Open
PostgresOpen
 

What's hot (20)

A user's perspective on SaltStack and other configuration management tools
A user's perspective on SaltStack and other configuration management toolsA user's perspective on SaltStack and other configuration management tools
A user's perspective on SaltStack and other configuration management tools
 
Configuration Management - Finding the tool to fit your needs
Configuration Management - Finding the tool to fit your needsConfiguration Management - Finding the tool to fit your needs
Configuration Management - Finding the tool to fit your needs
 
SaltConf14 - Brendan Burns, Google - Management at Google Scale
SaltConf14 - Brendan Burns, Google - Management at Google ScaleSaltConf14 - Brendan Burns, Google - Management at Google Scale
SaltConf14 - Brendan Burns, Google - Management at Google Scale
 
Salt conf 2014 - Using SaltStack in high availability environments
Salt conf 2014 - Using SaltStack in high availability environmentsSalt conf 2014 - Using SaltStack in high availability environments
Salt conf 2014 - Using SaltStack in high availability environments
 
Salty OPS – Saltstack Introduction
Salty OPS – Saltstack IntroductionSalty OPS – Saltstack Introduction
Salty OPS – Saltstack Introduction
 
Understanding salt modular sub-systems and customization
Understanding salt   modular sub-systems and customizationUnderstanding salt   modular sub-systems and customization
Understanding salt modular sub-systems and customization
 
Real-time Cloud Management with SaltStack
Real-time Cloud Management with SaltStackReal-time Cloud Management with SaltStack
Real-time Cloud Management with SaltStack
 
The SaltStack Pub Crawl - Fosscomm 2016
The SaltStack Pub Crawl - Fosscomm 2016The SaltStack Pub Crawl - Fosscomm 2016
The SaltStack Pub Crawl - Fosscomm 2016
 
SaltConf14 - Forrest Alvarez, Choice Hotels - Salt Formulas and States
SaltConf14 - Forrest Alvarez, Choice Hotels - Salt Formulas and StatesSaltConf14 - Forrest Alvarez, Choice Hotels - Salt Formulas and States
SaltConf14 - Forrest Alvarez, Choice Hotels - Salt Formulas and States
 
Chef Provisioning a Chef Server Cluster - ChefConf 2015
Chef Provisioning a Chef Server Cluster - ChefConf 2015Chef Provisioning a Chef Server Cluster - ChefConf 2015
Chef Provisioning a Chef Server Cluster - ChefConf 2015
 
Red Hat Satellite 6 - Automation with Puppet
Red Hat Satellite 6 - Automation with PuppetRed Hat Satellite 6 - Automation with Puppet
Red Hat Satellite 6 - Automation with Puppet
 
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014Puppet Availability and Performance at 100K Nodes - PuppetConf 2014
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014
 
Experiences from Running Masterless Puppet - PuppetConf 2014
Experiences from Running Masterless Puppet - PuppetConf 2014Experiences from Running Masterless Puppet - PuppetConf 2014
Experiences from Running Masterless Puppet - PuppetConf 2014
 
Introduction to SaltStack
Introduction to SaltStackIntroduction to SaltStack
Introduction to SaltStack
 
PuppetCamp Sydney 2012 - Building a Multimaster Environment
PuppetCamp Sydney 2012 - Building a Multimaster EnvironmentPuppetCamp Sydney 2012 - Building a Multimaster Environment
PuppetCamp Sydney 2012 - Building a Multimaster Environment
 
OpenNebula and SaltStack - OpenNebulaConf 2013
OpenNebula and SaltStack - OpenNebulaConf 2013OpenNebula and SaltStack - OpenNebulaConf 2013
OpenNebula and SaltStack - OpenNebulaConf 2013
 
Salt Stack pt. 2 : Configuration Management
Salt Stack pt. 2 : Configuration ManagementSalt Stack pt. 2 : Configuration Management
Salt Stack pt. 2 : Configuration Management
 
Steve Singer - Managing PostgreSQL with Puppet @ Postgres Open
Steve Singer - Managing PostgreSQL with Puppet @ Postgres OpenSteve Singer - Managing PostgreSQL with Puppet @ Postgres Open
Steve Singer - Managing PostgreSQL with Puppet @ Postgres Open
 
SaltConf 2015: Salt stack at web scale: Better, Stronger, Faster
SaltConf 2015: Salt stack at web scale: Better, Stronger, FasterSaltConf 2015: Salt stack at web scale: Better, Stronger, Faster
SaltConf 2015: Salt stack at web scale: Better, Stronger, Faster
 
Configuration management and orchestration with Salt
Configuration management and orchestration with SaltConfiguration management and orchestration with Salt
Configuration management and orchestration with Salt
 

Viewers also liked

Viewers also liked (7)

SaltConf14 - Craig Sebenik, LinkedIn - SaltStack at Web Scale
SaltConf14 - Craig Sebenik, LinkedIn - SaltStack at Web ScaleSaltConf14 - Craig Sebenik, LinkedIn - SaltStack at Web Scale
SaltConf14 - Craig Sebenik, LinkedIn - SaltStack at Web Scale
 
Salt Air 19 - Intro to SaltStack RAET (reliable asyncronous event transport)
Salt Air 19 - Intro to SaltStack RAET (reliable asyncronous event transport)Salt Air 19 - Intro to SaltStack RAET (reliable asyncronous event transport)
Salt Air 19 - Intro to SaltStack RAET (reliable asyncronous event transport)
 
Integration testing for salt states using aws ec2 container service
Integration testing for salt states using aws ec2 container serviceIntegration testing for salt states using aws ec2 container service
Integration testing for salt states using aws ec2 container service
 
Mobilizing The Web
Mobilizing The WebMobilizing The Web
Mobilizing The Web
 
Deployment ripetibili e automatizzati con Salt
Deployment ripetibili e automatizzati con SaltDeployment ripetibili e automatizzati con Salt
Deployment ripetibili e automatizzati con Salt
 
Django: utilizzo avanzato e nuove funzionalità
Django: utilizzo avanzato e nuove funzionalitàDjango: utilizzo avanzato e nuove funzionalità
Django: utilizzo avanzato e nuove funzionalità
 
SaltConf14 - Yazz Atlas, HP Cloud - Installing OpenStack using SaltStack
SaltConf14 - Yazz Atlas, HP Cloud - Installing OpenStack using SaltStackSaltConf14 - Yazz Atlas, HP Cloud - Installing OpenStack using SaltStack
SaltConf14 - Yazz Atlas, HP Cloud - Installing OpenStack using SaltStack
 

Similar to Spot Trading - A case study in continuous delivery for mission critical financial services

DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing Environment
DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing EnvironmentDCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing Environment
DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing Environment
Docker, Inc.
 
Automatize everything
Automatize everythingAutomatize everything
Automatize everything
Boris Bucha
 

Similar to Spot Trading - A case study in continuous delivery for mission critical financial services (20)

Getting to Walk with DevOps
Getting to Walk with DevOpsGetting to Walk with DevOps
Getting to Walk with DevOps
 
DCRUG: Achieving Development-Production Parity
DCRUG: Achieving Development-Production ParityDCRUG: Achieving Development-Production Parity
DCRUG: Achieving Development-Production Parity
 
DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing Environment
DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing EnvironmentDCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing Environment
DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing Environment
 
Puppet & Perforce: Versioning Everything for Deployments
Puppet & Perforce: Versioning Everything for DeploymentsPuppet & Perforce: Versioning Everything for Deployments
Puppet & Perforce: Versioning Everything for Deployments
 
Boundary for puppet @ puppet conf2012
Boundary for puppet @ puppet conf2012Boundary for puppet @ puppet conf2012
Boundary for puppet @ puppet conf2012
 
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony AppsSymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
 
Sanger, upcoming Openstack for Bio-informaticians
Sanger, upcoming Openstack for Bio-informaticiansSanger, upcoming Openstack for Bio-informaticians
Sanger, upcoming Openstack for Bio-informaticians
 
Flexible compute
Flexible computeFlexible compute
Flexible compute
 
Infrastructure as Code - Getting Started, Concepts & Tools
Infrastructure as Code - Getting Started, Concepts & ToolsInfrastructure as Code - Getting Started, Concepts & Tools
Infrastructure as Code - Getting Started, Concepts & Tools
 
Packaging tool options
Packaging tool optionsPackaging tool options
Packaging tool options
 
Hadoop engineering bo_f_final
Hadoop engineering bo_f_finalHadoop engineering bo_f_final
Hadoop engineering bo_f_final
 
Salt at school
Salt at schoolSalt at school
Salt at school
 
Sutol How To Be A Lion Tamer
Sutol How To Be A Lion TamerSutol How To Be A Lion Tamer
Sutol How To Be A Lion Tamer
 
Infrastructure as Code
Infrastructure as CodeInfrastructure as Code
Infrastructure as Code
 
Automatize everything
Automatize everythingAutomatize everything
Automatize everything
 
How to be a lion tamer
How to be a lion tamerHow to be a lion tamer
How to be a lion tamer
 
How to be a lion tamer
How to be a lion tamerHow to be a lion tamer
How to be a lion tamer
 
Container Security
Container SecurityContainer Security
Container Security
 
20140708 - Jeremy Edberg: How Netflix Delivers Software
20140708 - Jeremy Edberg: How Netflix Delivers Software20140708 - Jeremy Edberg: How Netflix Delivers Software
20140708 - Jeremy Edberg: How Netflix Delivers Software
 
IBM InterConnect 2015 - IIB in the Cloud
IBM InterConnect 2015 - IIB in the CloudIBM InterConnect 2015 - IIB in the Cloud
IBM InterConnect 2015 - IIB in the Cloud
 

More from SaltStack

More from SaltStack (7)

SaltConf14 - Justin Carmony, Deseret Digital Media - Teaching Devs About DevOps
SaltConf14 - Justin Carmony, Deseret Digital Media - Teaching Devs About DevOpsSaltConf14 - Justin Carmony, Deseret Digital Media - Teaching Devs About DevOps
SaltConf14 - Justin Carmony, Deseret Digital Media - Teaching Devs About DevOps
 
SaltConf14 - Thomas Jackson, LinkedIn - Safety with Power Tools
SaltConf14 - Thomas Jackson, LinkedIn - Safety with Power ToolsSaltConf14 - Thomas Jackson, LinkedIn - Safety with Power Tools
SaltConf14 - Thomas Jackson, LinkedIn - Safety with Power Tools
 
SaltConf14 - Eric johnson, Google - Orchestrating Google Compute Engine with ...
SaltConf14 - Eric johnson, Google - Orchestrating Google Compute Engine with ...SaltConf14 - Eric johnson, Google - Orchestrating Google Compute Engine with ...
SaltConf14 - Eric johnson, Google - Orchestrating Google Compute Engine with ...
 
SaltStack - An open source software story
SaltStack - An open source software storySaltStack - An open source software story
SaltStack - An open source software story
 
Adding to your Python Armory - OpenWest 2013
Adding to your Python Armory - OpenWest 2013Adding to your Python Armory - OpenWest 2013
Adding to your Python Armory - OpenWest 2013
 
Real-time Infrastructure Management with SaltStack - OpenWest 2013
Real-time Infrastructure Management with SaltStack - OpenWest 2013Real-time Infrastructure Management with SaltStack - OpenWest 2013
Real-time Infrastructure Management with SaltStack - OpenWest 2013
 
Writing SaltStack Modules - OpenWest 2013
Writing SaltStack Modules - OpenWest 2013Writing SaltStack Modules - OpenWest 2013
Writing SaltStack Modules - OpenWest 2013
 

Recently uploaded

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Recently uploaded (20)

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
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
 
"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 ...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
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...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 

Spot Trading - A case study in continuous delivery for mission critical financial services

  • 1. Automated deployments for mission-critical financial services Jeremy Alons Systems Engineer, Spot Trading LLC Views and statements are my own and may not reflect those of my employer v.8
  • 2. A case study in continuous delivery
  • 3. Why? • Previously, deployments were time consuming • Took hours of developer time, sometimes spread over weeks • Manual process meant many problems at many points
  • 4. Our goals • Rapid feedback • Tie configuration to deployment • Be highly parallelized, if possible • Infrastructure as code • Repeatable
  • 5. Challenges • Lots of unique software • Differences force complexity • Misused the tools we had originally • Required additional tooling (that continues today)
  • 6. Steps: Build Deploy Config Run
  • 7. Steps: Build Deploy! Config Run
  • 8. Steps: Build Deploy Config! Run
  • 9. Build: Bamboo (or Jenkins, travis-ci, etc) executes commands i.e. gcc -o foo foo.c sh tests.sh etc
  • 10. Source code in. Artifacts out.
  • 11. Now what? We need to get artifacts to where they need to go
  • 12. This poses problems. • What hosts? • How do we get correct versions to those hosts? • Are we sure those hosts are suitable for the application?
  • 13. SaltStack to the rescue!
  • 14. Fast, scalable and flexible systems management software for data center automation, cloud orchestration, server provisioning, configuration management and more - www.saltstack.com
  • 15. Fast, scalable and flexible systems management software for data center automation, cloud orchestration, server provisioning, configuration management and more - www.saltstack.com
  • 16. Fast, scalable and flexible systems management software for data center automation, cloud orchestration, server provisioning, configuration management and more - www.saltstack.com
  • 17. Fast, scalable and flexible systems management software for data center automation, cloud orchestration, server provisioning, configuration management and more - www.saltstack.com
  • 18. Fast, scalable and flexible systems management software for data center automation, cloud orchestration, server provisioning, configuration management and more - www.saltstack.com
  • 19. Salt is extremely extensible • External pillars * Just python • Interface with ZooKeeper for host discovery • ZooKeeper maintains source of truth • But how does Bamboo talk to ZooKeeper? • Facilitate the communication through Salt
  • 20. Grains Interface to derive information about the underlying system • Static information about systems • Loaded at minion start time • OS (major, minor), ipv[4|6], etc • Something you ask the server
  • 21. Pillar Pillar is an interface for Salt designed to offer global values that can be distributed to all minions. • Something you tell a server • “pillar” is a dictionary of items sent to minions • ext_pillar are derived by the master by executing python • Still sent to minions
  • 23. Build triggered server1 server2 Salt Master ZooKeeper Stash Bamboo Zoom Selects build to deploy Tells salt to find matching daemons Returns results Runs deploy state Asks for hosts 8 Return hosts to target Displays real time status and dependency map Developer 1 Pushes commit 3 2 4 5 6 7 0
  • 24. Bamboo talks to salt via Salt’s RESTful api Salt talks to ZooKeeper via an external pillar
  • 25. Salt asks ZooKeeper “What hosts are currently responsible for app Foo?”
  • 26. ZooKeeper responds, we run a series of state files on the targeted servers
  • 27. States • Check stats (memory, disk, etc) • - cmd.run salt://deploy/check_host.py • Apply system settings (buffers, os monitoring, etc) • Install software • yum install Foo-release-2.3-10
  • 28. After build, package into rpm • Use the tools available • Versioning • Well understood • Reporting baked in
  • 29. RPM • Specify version • Allows control over latest build, n-1, etc • Passed through via pillar at install time, fed by Bamboo deployment plan • Allows Bamboo to drive version released
  • 30. API wrapper • Home grown deployment software • Command line utility that converts bamboo variables to salt states • Deploys itself via the deployment process - Dog fooding the deployment process
  • 31. deploy state # Run the installation on the targeted server deploy_{{ application_name }}: pkg.installed: - name: {{ application_name }} - version: {{ pillar[‘deploy_pillar’][‘version’] }} - refresh: True - enablerepo: spot_applications - require: - sls: spot_applications_repo
  • 32. Things we’ve learned • In the end, it’s all just bits on disk • All software is just software, and (should be) equal • Be specific and exact • Catch issues soon (test early, test often) • Being clever will come back to haunt you (after all, this is just software development)
  • 33. Highlights • Implemented deployment pipeline • Artifact of the build • Bringing components together • Repeatable, rapid feedback
  • 34. Thank you. For more about some of the interesting work Spot is doing, check our Engineering Blog at http://www.spottradingllc.com/technology/ email: jeremy.alons@spottradingllc.com Questions?