SlideShare ist ein Scribd-Unternehmen logo
1 von 44
How containers have panned out
Adrian Trenaman, Raconteur & SVP Engineering, Gilt / HBC Digital
Q-Con, New York, June 2016
@gilttech @adrian_trenaman @hbc_tech
InfoQ.com: News & Community Site
‱ 750,000 unique visitors/month
‱ Published in 4 languages (English, Chinese, Japanese and Brazilian
Portuguese)
‱ Post content from our QCon conferences
‱ News 15-20 / week
‱ Articles 3-4 / week
‱ Presentations (videos) 12-15 / week
‱ Interviews 2-3 / week
‱ Books 1 / month
Watch the video with slide
synchronization on InfoQ.com!
https://www.infoq.com/presentations/
hbc-containers
Presented at QCon New York
www.qconnewyork.com
Purpose of QCon
- to empower software development by facilitating the spread of
knowledge and innovation
Strategy
- practitioner-driven conference designed for YOU: influencers of
change and innovation in your teams
- speakers and topics driving the evolution and innovation
- connecting and catalyzing the influencers and innovators
Highlights
- attended by more than 12,000 delegates since 2007
- held in 9 cities worldwide
“What competitive advantage did
containers give you?”
Gilt: luxury designer brands at discounted prices
we shoot the product in our studios
we receive, store, pick, pack and ship...
we sell every day at noon...
stampede...
this is what the stampede really looks like...
m > n
This is fundamentally a packing problem.
We have n machines, and we have m services to deploy.
1
It’s also an isolation problem
Any given service / team / engineer shouldn’t be able to take out someone else’s
work in production.
It’s also an impedance mismatch problem.
Developers often think of machines as something that’s all theirs, magically
provided by the hardware fairy.
LXC
Leveraging LXC in Tokyo for Gilt Japan
Rack 1
Load Balancer
DB (CLXC
)
Email
Email
16xCPU, 128GB RAM,
900GB Disk.
Ubuntu 12.04 (→ 16.04)
~220 CLXC
in total.
Rack 1
Load Balancer
20-40 CLXC
20-40 CLXC
20-40 CLXC
20-40 CLXC
20-40 CLXC
20-40 CLXC
DB (CLXC
)
Email
Email
✔ Scalable, performant use of machine resources.
✔ Solves the impedance mismatch: developers see ‘a machine’
✔ Limits the damage a single engineer can do.
✔ Infra/Devops engineer embedded into a tightly knit engineering team
❌ Static infrastructure
❌ Potential for resource hogging
LXC @ Gilt Japan
Immutable
Deployment
With
Docker
Prod
Core idea #1: dark canaries, canaries, release, roll-back.
Dark Canary
1.0.0
Instance_0
1.0.0
Instance_1
1.0.0
Instance_n
1.0.0
Dark Canary
1.0.1
Canary
1.0.1
Instance_0
1.0.1
Instance_1
1.0.1
Instance_2
1.0.1
Core idea #2: One container per host / EC2 instance
<<EC2 Instance>>
docker
<<container>>
Docker
registry
ION-Roller - https://github.com/gilt/ionroller
ION-Roller
(orchestrates
everything)
Elastic Load
Balancer (ELB)
Auto Scaling
Group (ASG)
Instance_0 - v1.0.0
Instance_1 - v1.0.0
Instance_2 - v1.0.0
Instance_0 - v1.0.1
Instance_1 - v1.0.1
Instance_2 - v1.0.1
Auto Scaling
Group (ASG)
Docker
registry
✔ Immutable deployment :)
✔ DNS + ELB traffic migration :)
❌ Slow to set up / tear down environments :(
❌ Potentially expensive under continuous deployment :(
❌ Open-source, but in-house. ‘A snowflake in the making’ ❅
ION-Roller deployment:
6
“We could solve this now, or, just wait six months, and Amazon will provide a
solution”
Andrey Kartashov, Distinguished Engineer, Gilt.
github.com/gilt/nova- deployment patterns
Instance_0 - v1.0.0
Instance_1 - v1.0.0
Instance_2 - v1.0.0
Live Traffic
Instance_3 - v1.0.0 Canary
Instance_4 - v1.0.0
Dark
Canary
Elastic Load
Balancer (ELB)
http://hello-world-nova.common.giltaws.com
Elastic Load
Balancer (ELB)
http://hello-world-nova-dark.common.giltaws.com
github.com/gilt/nova - creating environments
nova.yml
templates
$> nova stack create production
CloudFormation
CodeDeploy
github.com/gilt/nova- deployment
Instance_0 - v1.0.0
Instance_1 - v1.0.0
Instance_2 - v1.0.0
Live Traffic
Instance_3 - v1.0.0 Canary
Instance_4 - v1.0.0
Dark
Canary
Elastic Load
Balancer (ELB)
live
Elastic Load
Balancer (ELB)
dark
$> nova deploy common DarkCanary
1.0.1
Instance_4 - v1.0.1
$> nova deploy common Canary 1.0.1
Instance_3 - v1.0.1
$> nova deploy common Production
1.0.1
Instance_0 - v1.0.1
Instance_1 - v1.0.1
Instance_2 - v1.0.1
CodeDeployS3bundle
✔ No docker registry (shock! gasp!) :)
✔ Less boilerplate code :)
✔ Immutable deployment (on mutable infrastructure) :)
✔ Leverage AWS tooling :)
 Next up? Integrate with Code Pipeline :?
Nova deployment:
Fighting bit rot, chaos-monkey style
With long running mutable AMIs, it’s possible for bit-rot to creep in.
Think security vulnerability.
Novel approach: every day, kill and restart your oldest AMI randomly.
✔ Pick up latest AMI with fixes
✔ Fail early, noisily and loudly if there’s a problem without a production outage.
Vulnerability in container? Cut a new release against a fixed base-image.
Explorations in ECS
Sundial - running batch jobs with Docker & ECS
✔ Job dependencies (allows us to break large jobs into smaller jobs)
✔ Ease of viewing logs and debugging failures
✔ Automatic rescheduling of failed tasks within a job
✔ Isolation between jobs
✔ Low cost of setup and maintenance, as few moving parts as possible for Infra
teams to manage
http://github.com/gilt/sundial
Sundial: processes
A process in Sundial is a grouping of tasks (jobs) with dependencies between
them.
Schedule: Either manually triggered, continuous schedule, or cron schedule
Overlap strategy: if previous iteration hasn’t completed, do we
Wait
Terminate previous iteration
Run in parallel
When a process kicks off, all tasks with no dependencies kick off.
When a task finishes, any tasks blocked by that task will kick off.
ECS is getting really attractive...
We’re prototyping using for customer-facing services on our mobile team:
✔ Less configuration / moving parts than MST/Nova
✔ Automatic rollout
✔ Easy integration with IAM, CloudWatch, ECR
But:
❌ IAM roles at instance level not container level
❌ Tension between CF stack templates and deployment updates
❌ ELBs require fixed ports: we want to define the listening port.
Docker as Build Platform
Using docker as a
local build platform
The problem: keeping up
with different versions /
combinations of build
tools is crazy hard.
Why not use Docker for
build, using a versioned
build container?
docker-machine
Build Container
docker
Lesson #1
Containers have let us separate what we deploy (JVM, RoR, 
)
from how and where we deploy it (mst, nova, EC2, Triton)
and This Is Good.
Lesson #2
It’s still a wild-west in terms of how containers are deployed.
Different teams have different needs - be sensitive to that.
Lesson #3
Seek immutability in the container, not in the stack.
Lesson #4
The competitive advantage: containers let us deploy quickly, frequently and safely
to production, which help us innovate faster.
That’s it.
#thanks @adrian_trenaman
@gilttech @hbc_tech
Watch the video with slide synchronization
on InfoQ.com!
https://www.infoq.com/presentations/hbc-
containers

Weitere Àhnliche Inhalte

Andere mochten auch

Cosmetics & Toiletries & National Press
Cosmetics & Toiletries & National PressCosmetics & Toiletries & National Press
Cosmetics & Toiletries & National PressNewsworks
 
Video Marketing Project for ESL students
Video Marketing Project for ESL studentsVideo Marketing Project for ESL students
Video Marketing Project for ESL studentsDebbie Anholt
 
ă‚”ăƒŒă‚Żăƒ«ćŻŸæŠ—ăƒ†ăƒ‹ă‚čć€§äŒš!
ă‚”ăƒŒă‚Żăƒ«ćŻŸæŠ—ăƒ†ăƒ‹ă‚čć€§äŒš!ă‚”ăƒŒă‚Żăƒ«ćŻŸæŠ—ăƒ†ăƒ‹ă‚čć€§äŒš!
ă‚”ăƒŒă‚Żăƒ«ćŻŸæŠ—ăƒ†ăƒ‹ă‚čć€§äŒš!stucon
 
果汁指标
果汁指标果汁指标
果汁指标ziruwang
 
Responsive design and Drupal, case Costume.fi
Responsive design and Drupal, case Costume.fiResponsive design and Drupal, case Costume.fi
Responsive design and Drupal, case Costume.fiExove
 
Flowers fuit
Flowers fuitFlowers fuit
Flowers fuitklangmaack
 
GFR CPE Trouble Shoot Guide (JP)
GFR CPE Trouble Shoot Guide (JP)GFR CPE Trouble Shoot Guide (JP)
GFR CPE Trouble Shoot Guide (JP)Takaaki Miki
 
Ś§Ś•ŚšŚĄ ŚžŚ“Śą Ś”ŚŚ•Ś©Śš
Ś§Ś•ŚšŚĄ ŚžŚ“Śą Ś”ŚŚ•Ś©ŚšŚ§Ś•ŚšŚĄ ŚžŚ“Śą Ś”ŚŚ•Ś©Śš
Ś§Ś•ŚšŚĄ ŚžŚ“Śą Ś”ŚŚ•Ś©Śšamigrunberg
 
Presentasi kelompok 2 kelas 4_b tik dan multimedia
Presentasi  kelompok 2  kelas 4_b  tik dan multimediaPresentasi  kelompok 2  kelas 4_b  tik dan multimedia
Presentasi kelompok 2 kelas 4_b tik dan multimediaMuliono Muliono
 
Eval Presentationfinal
Eval PresentationfinalEval Presentationfinal
Eval Presentationfinalphilgheritage
 
调䟃
调䟃调䟃
调䟃meijiang
 

Andere mochten auch (11)

Cosmetics & Toiletries & National Press
Cosmetics & Toiletries & National PressCosmetics & Toiletries & National Press
Cosmetics & Toiletries & National Press
 
Video Marketing Project for ESL students
Video Marketing Project for ESL studentsVideo Marketing Project for ESL students
Video Marketing Project for ESL students
 
ă‚”ăƒŒă‚Żăƒ«ćŻŸæŠ—ăƒ†ăƒ‹ă‚čć€§äŒš!
ă‚”ăƒŒă‚Żăƒ«ćŻŸæŠ—ăƒ†ăƒ‹ă‚čć€§äŒš!ă‚”ăƒŒă‚Żăƒ«ćŻŸæŠ—ăƒ†ăƒ‹ă‚čć€§äŒš!
ă‚”ăƒŒă‚Żăƒ«ćŻŸæŠ—ăƒ†ăƒ‹ă‚čć€§äŒš!
 
果汁指标
果汁指标果汁指标
果汁指标
 
Responsive design and Drupal, case Costume.fi
Responsive design and Drupal, case Costume.fiResponsive design and Drupal, case Costume.fi
Responsive design and Drupal, case Costume.fi
 
Flowers fuit
Flowers fuitFlowers fuit
Flowers fuit
 
GFR CPE Trouble Shoot Guide (JP)
GFR CPE Trouble Shoot Guide (JP)GFR CPE Trouble Shoot Guide (JP)
GFR CPE Trouble Shoot Guide (JP)
 
Ś§Ś•ŚšŚĄ ŚžŚ“Śą Ś”ŚŚ•Ś©Śš
Ś§Ś•ŚšŚĄ ŚžŚ“Śą Ś”ŚŚ•Ś©ŚšŚ§Ś•ŚšŚĄ ŚžŚ“Śą Ś”ŚŚ•Ś©Śš
Ś§Ś•ŚšŚĄ ŚžŚ“Śą Ś”ŚŚ•Ś©Śš
 
Presentasi kelompok 2 kelas 4_b tik dan multimedia
Presentasi  kelompok 2  kelas 4_b  tik dan multimediaPresentasi  kelompok 2  kelas 4_b  tik dan multimedia
Presentasi kelompok 2 kelas 4_b tik dan multimedia
 
Eval Presentationfinal
Eval PresentationfinalEval Presentationfinal
Eval Presentationfinal
 
调䟃
调䟃调䟃
调䟃
 

Mehr von C4Media

Streaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoStreaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoC4Media
 
Next Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileNext Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileC4Media
 
Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020C4Media
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsC4Media
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No KeeperC4Media
 
High Performing Teams Act Like Owners
High Performing Teams Act Like OwnersHigh Performing Teams Act Like Owners
High Performing Teams Act Like OwnersC4Media
 
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaDoes Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaC4Media
 
Service Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideService Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideC4Media
 
Shifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDShifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDC4Media
 
CI/CD for Machine Learning
CI/CD for Machine LearningCI/CD for Machine Learning
CI/CD for Machine LearningC4Media
 
Fault Tolerance at Speed
Fault Tolerance at SpeedFault Tolerance at Speed
Fault Tolerance at SpeedC4Media
 
Architectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsArchitectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsC4Media
 
ML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsC4Media
 
Build Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerBuild Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerC4Media
 
User & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleUser & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleC4Media
 
Scaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeScaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeC4Media
 
Make Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereMake Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereC4Media
 
The Talk You've Been Await-ing For
The Talk You've Been Await-ing ForThe Talk You've Been Await-ing For
The Talk You've Been Await-ing ForC4Media
 
Future of Data Engineering
Future of Data EngineeringFuture of Data Engineering
Future of Data EngineeringC4Media
 
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreAutomated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreC4Media
 

Mehr von C4Media (20)

Streaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoStreaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live Video
 
Next Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileNext Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy Mobile
 
Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java Applications
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No Keeper
 
High Performing Teams Act Like Owners
High Performing Teams Act Like OwnersHigh Performing Teams Act Like Owners
High Performing Teams Act Like Owners
 
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaDoes Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
 
Service Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideService Meshes- The Ultimate Guide
Service Meshes- The Ultimate Guide
 
Shifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDShifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CD
 
CI/CD for Machine Learning
CI/CD for Machine LearningCI/CD for Machine Learning
CI/CD for Machine Learning
 
Fault Tolerance at Speed
Fault Tolerance at SpeedFault Tolerance at Speed
Fault Tolerance at Speed
 
Architectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsArchitectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep Systems
 
ML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.js
 
Build Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerBuild Your Own WebAssembly Compiler
Build Your Own WebAssembly Compiler
 
User & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleUser & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix Scale
 
Scaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeScaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's Edge
 
Make Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereMake Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home Everywhere
 
The Talk You've Been Await-ing For
The Talk You've Been Await-ing ForThe Talk You've Been Await-ing For
The Talk You've Been Await-ing For
 
Future of Data Engineering
Future of Data EngineeringFuture of Data Engineering
Future of Data Engineering
 
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreAutomated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
 

KĂŒrzlich hochgeladen

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 

KĂŒrzlich hochgeladen (20)

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 

How Containers Have Panned Out

  • 1. How containers have panned out Adrian Trenaman, Raconteur & SVP Engineering, Gilt / HBC Digital Q-Con, New York, June 2016 @gilttech @adrian_trenaman @hbc_tech
  • 2. InfoQ.com: News & Community Site ‱ 750,000 unique visitors/month ‱ Published in 4 languages (English, Chinese, Japanese and Brazilian Portuguese) ‱ Post content from our QCon conferences ‱ News 15-20 / week ‱ Articles 3-4 / week ‱ Presentations (videos) 12-15 / week ‱ Interviews 2-3 / week ‱ Books 1 / month Watch the video with slide synchronization on InfoQ.com! https://www.infoq.com/presentations/ hbc-containers
  • 3. Presented at QCon New York www.qconnewyork.com Purpose of QCon - to empower software development by facilitating the spread of knowledge and innovation Strategy - practitioner-driven conference designed for YOU: influencers of change and innovation in your teams - speakers and topics driving the evolution and innovation - connecting and catalyzing the influencers and innovators Highlights - attended by more than 12,000 delegates since 2007 - held in 9 cities worldwide
  • 4. “What competitive advantage did containers give you?”
  • 5. Gilt: luxury designer brands at discounted prices
  • 6. we shoot the product in our studios
  • 7. we receive, store, pick, pack and ship...
  • 8. we sell every day at noon...
  • 10. this is what the stampede really looks like...
  • 11.
  • 12. m > n This is fundamentally a packing problem. We have n machines, and we have m services to deploy.
  • 13. 1 It’s also an isolation problem Any given service / team / engineer shouldn’t be able to take out someone else’s work in production.
  • 14.
  • 15. It’s also an impedance mismatch problem. Developers often think of machines as something that’s all theirs, magically provided by the hardware fairy.
  • 16. LXC Leveraging LXC in Tokyo for Gilt Japan
  • 17. Rack 1 Load Balancer DB (CLXC ) Email Email 16xCPU, 128GB RAM, 900GB Disk. Ubuntu 12.04 (→ 16.04) ~220 CLXC in total. Rack 1 Load Balancer 20-40 CLXC 20-40 CLXC 20-40 CLXC 20-40 CLXC 20-40 CLXC 20-40 CLXC DB (CLXC ) Email Email
  • 18. ✔ Scalable, performant use of machine resources. ✔ Solves the impedance mismatch: developers see ‘a machine’ ✔ Limits the damage a single engineer can do. ✔ Infra/Devops engineer embedded into a tightly knit engineering team ❌ Static infrastructure ❌ Potential for resource hogging LXC @ Gilt Japan
  • 20. Prod Core idea #1: dark canaries, canaries, release, roll-back. Dark Canary 1.0.0 Instance_0 1.0.0 Instance_1 1.0.0 Instance_n 1.0.0 Dark Canary 1.0.1 Canary 1.0.1 Instance_0 1.0.1 Instance_1 1.0.1 Instance_2 1.0.1
  • 21. Core idea #2: One container per host / EC2 instance <<EC2 Instance>> docker <<container>> Docker registry
  • 22. ION-Roller - https://github.com/gilt/ionroller ION-Roller (orchestrates everything) Elastic Load Balancer (ELB) Auto Scaling Group (ASG) Instance_0 - v1.0.0 Instance_1 - v1.0.0 Instance_2 - v1.0.0 Instance_0 - v1.0.1 Instance_1 - v1.0.1 Instance_2 - v1.0.1 Auto Scaling Group (ASG) Docker registry
  • 23. ✔ Immutable deployment :) ✔ DNS + ELB traffic migration :) ❌ Slow to set up / tear down environments :( ❌ Potentially expensive under continuous deployment :( ❌ Open-source, but in-house. ‘A snowflake in the making’ ❅ ION-Roller deployment:
  • 24.
  • 25. 6 “We could solve this now, or, just wait six months, and Amazon will provide a solution” Andrey Kartashov, Distinguished Engineer, Gilt.
  • 26. github.com/gilt/nova- deployment patterns Instance_0 - v1.0.0 Instance_1 - v1.0.0 Instance_2 - v1.0.0 Live Traffic Instance_3 - v1.0.0 Canary Instance_4 - v1.0.0 Dark Canary Elastic Load Balancer (ELB) http://hello-world-nova.common.giltaws.com Elastic Load Balancer (ELB) http://hello-world-nova-dark.common.giltaws.com
  • 27. github.com/gilt/nova - creating environments nova.yml templates $> nova stack create production CloudFormation CodeDeploy
  • 28.
  • 29. github.com/gilt/nova- deployment Instance_0 - v1.0.0 Instance_1 - v1.0.0 Instance_2 - v1.0.0 Live Traffic Instance_3 - v1.0.0 Canary Instance_4 - v1.0.0 Dark Canary Elastic Load Balancer (ELB) live Elastic Load Balancer (ELB) dark $> nova deploy common DarkCanary 1.0.1 Instance_4 - v1.0.1 $> nova deploy common Canary 1.0.1 Instance_3 - v1.0.1 $> nova deploy common Production 1.0.1 Instance_0 - v1.0.1 Instance_1 - v1.0.1 Instance_2 - v1.0.1 CodeDeployS3bundle
  • 30. ✔ No docker registry (shock! gasp!) :) ✔ Less boilerplate code :) ✔ Immutable deployment (on mutable infrastructure) :) ✔ Leverage AWS tooling :)  Next up? Integrate with Code Pipeline :? Nova deployment:
  • 31. Fighting bit rot, chaos-monkey style With long running mutable AMIs, it’s possible for bit-rot to creep in. Think security vulnerability. Novel approach: every day, kill and restart your oldest AMI randomly. ✔ Pick up latest AMI with fixes ✔ Fail early, noisily and loudly if there’s a problem without a production outage. Vulnerability in container? Cut a new release against a fixed base-image.
  • 33. Sundial - running batch jobs with Docker & ECS ✔ Job dependencies (allows us to break large jobs into smaller jobs) ✔ Ease of viewing logs and debugging failures ✔ Automatic rescheduling of failed tasks within a job ✔ Isolation between jobs ✔ Low cost of setup and maintenance, as few moving parts as possible for Infra teams to manage http://github.com/gilt/sundial
  • 34. Sundial: processes A process in Sundial is a grouping of tasks (jobs) with dependencies between them. Schedule: Either manually triggered, continuous schedule, or cron schedule Overlap strategy: if previous iteration hasn’t completed, do we Wait Terminate previous iteration Run in parallel When a process kicks off, all tasks with no dependencies kick off. When a task finishes, any tasks blocked by that task will kick off.
  • 35.
  • 36. ECS is getting really attractive... We’re prototyping using for customer-facing services on our mobile team: ✔ Less configuration / moving parts than MST/Nova ✔ Automatic rollout ✔ Easy integration with IAM, CloudWatch, ECR But: ❌ IAM roles at instance level not container level ❌ Tension between CF stack templates and deployment updates ❌ ELBs require fixed ports: we want to define the listening port.
  • 37. Docker as Build Platform
  • 38. Using docker as a local build platform The problem: keeping up with different versions / combinations of build tools is crazy hard. Why not use Docker for build, using a versioned build container? docker-machine Build Container docker
  • 39. Lesson #1 Containers have let us separate what we deploy (JVM, RoR, 
) from how and where we deploy it (mst, nova, EC2, Triton) and This Is Good.
  • 40. Lesson #2 It’s still a wild-west in terms of how containers are deployed. Different teams have different needs - be sensitive to that.
  • 41. Lesson #3 Seek immutability in the container, not in the stack.
  • 42. Lesson #4 The competitive advantage: containers let us deploy quickly, frequently and safely to production, which help us innovate faster. That’s it.
  • 44. Watch the video with slide synchronization on InfoQ.com! https://www.infoq.com/presentations/hbc- containers