SlideShare ist ein Scribd-Unternehmen logo
1 von 109
July 2016 | Behind the Scenes
Agenda.
● Welcome & introduction
● From Code to Node
● Short Break
● A look to the future of deployment
● Tour of our office
● Drinks
● Fin
July 2016 | Behind the Scenes
Flynn Bundy <@bundyfx> & Matthew Hodgkins <@matthodge>
“I was trying to sleep last night but all I
could think about was how to make our
pipelines better.”
Matt
PLAN.
CODE.
[sensu]Get(){...}
[void]Set(){...}
[boolean]Test(){...}
static [void] XMLConversion ()
{...}
static [void] InstallService ()
{...}
static [void] ConfigureAgentTransport([Transport]$Transport)
{...}
CODE.
node $AllNodes.Where{$_.Role -eq "our_app"}.role
{...}
node $AllNodes.Where{$_.Role -eq "our_app_1"}.role
{...}
node $AllNodes.Where{$_.Role -eq "our_app_2"}.role
{...}
node $AllNodes.Where{$_.Role -eq "our_app_3"}.role
{...}
node $AllNodes.Where{$_.Role -eq "our_app_4"}.role
{...}
BUILD.
BUILD.
TEST.
Context Download Agent Method
[+] Should download the Sensu client 7.58s
[+] Should be the full file 101ms
Context Install Agent Method
[+] Should Install the Sensu client 38.49s
Context ConfigureAgentClient Method
[+] Should be correctly formatted into JSON 1.77s
[+] Should contain the Correct Information in the JSON | Subscriptions 20ms
[+] Should contain the Correct Information in the JSON | Name 19ms
[+] Should contain the Correct Information in the JSON | Private IPv4 Address 15ms
Context ConfigureAgentTransport Method
[+] Should be formatted correctly into JSON 154ms
[+] Should contain the Correct Information in the JSON | Name 16ms
[+] Should contain the Correct Information in the JSON | Reconnect on Error 13ms
Context InstallService Method
[+] Should deploy and install the Sensu client service 256ms
Context Conversion XML Method
[+] Should correctly create an valid XML configuration file 119ms
Context RemoveAgent Method
[+] It should remove the agent 239.16s
Describing DSC Based methods
Context Testing DSC based methods
[+] Test() Method should return a Boolean Type 283ms
[+] Get() Method should return a Sensu Type 31ms
TEST.
Move fast and break things. Unless you are breaking
stuff, you are not moving fast enough.
Mark Zuckerberg
DEPLOY.
DEPLOY.
WHAT IS DSC?.
WHAT IS DSC?.
WHAT IS DSC?.
OPERATE.
PILLARS OF MONITORING.
WHY MONITORING IS HARD.
â–ȘAutomation is an after thought
â–ȘForgetting to add new services
â–ȘChecks are hard to write
â–ȘDon’t want to do annoying things
ENTER SENSU.
IIS
/purchases
Sensu
Agent
Sensu
Server
Rabbit
MQ
STEP 1 - DEPLOY AGENT WITH DSC.
Sensu Install
{
Ensure = "Present"
DownloadURL = 'https://sensu.global.net/msi/sensu-0.24.0-1.msi'
RabbitMQServer = 'coolblue-rabbitmq.internal.fake'
Transport = 'rabbitmq'
vHost = 'sensu'
User = 'sensu'
Port = '5672'
Password = 'some_password' #Encrypted of course
Subscription = 'windows_base'
}
IIS
/purchases
Sensu
Agent
Sensu
Server
Rabbit
MQ Deploy Agent
STEP 2 - CREATE SOME CHECKS.
{
"checks": {
"disk_usage": {
"command": "check-windows-disk.rb.bat -w 85 -c 95",
"interval": 600,
"subscribers": [
"windows"
]
},
"windows_update": {
"command": "powershell.exe -file C:/coolblue_checks/win_last_updated.ps1 -w 30 -c 60",
"interval": 86400,
"subscribers": [
"windows"
]
}
}
}
SENSU CHECK DEFINITIONS.
IIS
/purchases
Sensu
Agent
Sensu
Server
Rabbit
MQ
Add Check
Definitions
STEP 3 - UPDATE THE CONFIG.
Sensu Install
{
Ensure = "Present"
DownloadURL = 'https://sensu.global.net/msi/sensu-0.24.0-1.msi'
RabbitMQServer = 'coolblue-rabbitmq.internal.fake'
Transport = 'rabbitmq'
vHost = 'sensu'
User = 'sensu'
Port = '5672'
Password = 'some_password' #Encrypted of course
Subscription = 'windows_base','my_iis_app'
}
STEP 4 - ADD APP SPECIFIC CHECKS.
{
"checks": {
"iis_purchases": {
"command": "check-http.rb http://localhost/purchases",
"interval": 60,
"playbook": "https://github.com/devTeam/readme.md",
"subscribers": [
"my_iis_app"
]
}
}
}
WHY MONITORING IS HARD.
â–ȘAutomation is an after thought
â–ȘForgetting to add new services
â–ȘChecks are hard to write
â–ȘDon’t want to do annoying things
THE SENSU SOCKET INPUT.
IIS
/purchases
Sensu
Agent
Sensu
Server
Rabbit
MQ
3030
TCP/
UDP
My App
JUST SEND IN JSON.
{
"name": "ravendb_connectivity",
"output": "Could not connect to RavenDB!",
"status": 2,
"team": "TeamName",
"application": "My App",
"playbook": "https://github.com/devTeam/readme.md"
}
USING A DEAD-MAN SWITCH.
{
"name": "daily_sql_backup",
"output": "Backup of SQL databases performed",
"status": 0,
"team": "OpsTeamName",
"application": "sql_backups",
"playbook": "https://github.com/opsTeam/readme.md",
"ttl": 86400
}
MONITORING CAN BE EASY.
â–ȘAutomation is an after thought
â–ȘForgetting to add new services
â–ȘChecks are hard to write
â–ȘDon’t want to do annoying things
FIN.
Matthew Hodgkins
@matthodge
hodgkins.io
Flynn Bundy
@bundyfx
flynnbundy.com
BREAK TIME.
July 2016 | Behind the Scenes
Flynn Bundy <@bundyfx> & Chris Thorp <@thorpgeek>
Challenges.
● OS Base Memory Usage
● Large HDD Usage
● Build Times for Servers
● Further increase the development speed of Coolblue
SAD (Server And a Desktop).
Install web server feature
Server Core.
WE
Nano Server.
Nano Server Features.
Results.
Server Core Nano Server
Build Time: 6 min ~40 Seconds
Start Time: 25 Seconds 2 Seconds
Restart Time: 15 Seconds 1 Seconds
Hard Drive Space used: 8 GB 600 MB
Basic Memory Usage 250 MB 160 MB
Nano Server Thoughts.
● No 32 Bit Support
● MSI is gone
● Not all server core features available
● No Full .Net Framework Support
Challenges.
● OS base Memory Usage
● Large HDD Usage
● Build and Deployment Times for Servers
● Further increase the development speed of Coolblue
Summing up challenges.
● OS Base Memory Usage
● Large HDD Usage
● Build Deployment Times for Servers
● Further increase the development speed of Coolblue
FIN.
Chris Thorp
@thorpgeek
Flynn Bundy
@bundyfx
flynnbundy.com
Events: coolblue.nl/behindthescenes DevBlog:
devblog.coolblue.nl

Weitere Àhnliche Inhalte

Was ist angesagt?

Persistent mobile JavaScript
Persistent mobile JavaScriptPersistent mobile JavaScript
Persistent mobile JavaScriptYorick Phoenix
 
Service workers
Service workersService workers
Service workersjungkees
 
Automation in angular js
Automation in angular jsAutomation in angular js
Automation in angular jsMarcin Wosinek
 
Service Worker - Reliability bits
Service Worker - Reliability bitsService Worker - Reliability bits
Service Worker - Reliability bitsjungkees
 
OpenSource ToolChain for the Hybrid Cloud
OpenSource ToolChain for the Hybrid CloudOpenSource ToolChain for the Hybrid Cloud
OpenSource ToolChain for the Hybrid CloudIsaac Christoffersen
 
Instant and offline apps with Service Worker
Instant and offline apps with Service WorkerInstant and offline apps with Service Worker
Instant and offline apps with Service WorkerChang W. Doh
 
Matthew Eernisse, NodeJs, .toster {webdev}
Matthew Eernisse, NodeJs, .toster {webdev}Matthew Eernisse, NodeJs, .toster {webdev}
Matthew Eernisse, NodeJs, .toster {webdev}.toster
 
Svelte JS introduction
Svelte JS introductionSvelte JS introduction
Svelte JS introductionMikhail Kuznetcov
 
DJUGL - Django and AWS Lambda
DJUGL - Django and AWS LambdaDJUGL - Django and AWS Lambda
DJUGL - Django and AWS LambdaMalcolm Box
 
Performance and stability testing \w Gatling
Performance and stability testing \w GatlingPerformance and stability testing \w Gatling
Performance and stability testing \w GatlingDmitry Vrublevsky
 
Monitoring with sensu
Monitoring with sensuMonitoring with sensu
Monitoring with sensumiquelruizm
 
Service worker API
Service worker APIService worker API
Service worker APIGiorgio Natili
 
Service workers
Service workersService workers
Service workersPavel Zhytko
 
Correcting Common Async/Await Mistakes in .NET
Correcting Common Async/Await Mistakes in .NETCorrecting Common Async/Await Mistakes in .NET
Correcting Common Async/Await Mistakes in .NETBrandon Minnick, MBA
 
MongoDB World 2019: Life In Stitch-es
MongoDB World 2019: Life In Stitch-esMongoDB World 2019: Life In Stitch-es
MongoDB World 2019: Life In Stitch-esMongoDB
 
Docker in Action
Docker in ActionDocker in Action
Docker in ActionSimon Su
 
IRC HTTP Stream in YAPC::Asia 2009
IRC HTTP Stream in YAPC::Asia 2009IRC HTTP Stream in YAPC::Asia 2009
IRC HTTP Stream in YAPC::Asia 2009Yusuke Wada
 
Wrangling WP_Cron - WordCamp Grand Rapids 2014
Wrangling WP_Cron - WordCamp Grand Rapids 2014Wrangling WP_Cron - WordCamp Grand Rapids 2014
Wrangling WP_Cron - WordCamp Grand Rapids 2014cklosowski
 

Was ist angesagt? (20)

Persistent mobile JavaScript
Persistent mobile JavaScriptPersistent mobile JavaScript
Persistent mobile JavaScript
 
Service workers
Service workersService workers
Service workers
 
Automation in angular js
Automation in angular jsAutomation in angular js
Automation in angular js
 
Service Worker - Reliability bits
Service Worker - Reliability bitsService Worker - Reliability bits
Service Worker - Reliability bits
 
Learning Svelte
Learning SvelteLearning Svelte
Learning Svelte
 
OpenSource ToolChain for the Hybrid Cloud
OpenSource ToolChain for the Hybrid CloudOpenSource ToolChain for the Hybrid Cloud
OpenSource ToolChain for the Hybrid Cloud
 
Instant and offline apps with Service Worker
Instant and offline apps with Service WorkerInstant and offline apps with Service Worker
Instant and offline apps with Service Worker
 
Matthew Eernisse, NodeJs, .toster {webdev}
Matthew Eernisse, NodeJs, .toster {webdev}Matthew Eernisse, NodeJs, .toster {webdev}
Matthew Eernisse, NodeJs, .toster {webdev}
 
Svelte JS introduction
Svelte JS introductionSvelte JS introduction
Svelte JS introduction
 
DJUGL - Django and AWS Lambda
DJUGL - Django and AWS LambdaDJUGL - Django and AWS Lambda
DJUGL - Django and AWS Lambda
 
Performance and stability testing \w Gatling
Performance and stability testing \w GatlingPerformance and stability testing \w Gatling
Performance and stability testing \w Gatling
 
Monitoring with sensu
Monitoring with sensuMonitoring with sensu
Monitoring with sensu
 
Service worker API
Service worker APIService worker API
Service worker API
 
Service workers
Service workersService workers
Service workers
 
Correcting Common Async/Await Mistakes in .NET
Correcting Common Async/Await Mistakes in .NETCorrecting Common Async/Await Mistakes in .NET
Correcting Common Async/Await Mistakes in .NET
 
MongoDB World 2019: Life In Stitch-es
MongoDB World 2019: Life In Stitch-esMongoDB World 2019: Life In Stitch-es
MongoDB World 2019: Life In Stitch-es
 
Docker in Action
Docker in ActionDocker in Action
Docker in Action
 
Serenity Now
Serenity NowSerenity Now
Serenity Now
 
IRC HTTP Stream in YAPC::Asia 2009
IRC HTTP Stream in YAPC::Asia 2009IRC HTTP Stream in YAPC::Asia 2009
IRC HTTP Stream in YAPC::Asia 2009
 
Wrangling WP_Cron - WordCamp Grand Rapids 2014
Wrangling WP_Cron - WordCamp Grand Rapids 2014Wrangling WP_Cron - WordCamp Grand Rapids 2014
Wrangling WP_Cron - WordCamp Grand Rapids 2014
 

Ähnlich wie Coolblue - Behind the Scenes Continuous Integration & Deployment

Sufan presentation
Sufan presentationSufan presentation
Sufan presentationSufanhk
 
Cutting through the fog of cloud
Cutting through the fog of cloudCutting through the fog of cloud
Cutting through the fog of cloudKyle Rames
 
Serverless in production, an experience report (FullStack 2018)
Serverless in production, an experience report (FullStack 2018)Serverless in production, an experience report (FullStack 2018)
Serverless in production, an experience report (FullStack 2018)Yan Cui
 
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)Wesley Beary
 
Serverless in Production, an experience report (AWS UG South Wales)
Serverless in Production, an experience report (AWS UG South Wales)Serverless in Production, an experience report (AWS UG South Wales)
Serverless in Production, an experience report (AWS UG South Wales)Yan Cui
 
Serverless in production, an experience report (Going Serverless)
Serverless in production, an experience report (Going Serverless)Serverless in production, an experience report (Going Serverless)
Serverless in production, an experience report (Going Serverless)Yan Cui
 
DevOps with Serverless
DevOps with ServerlessDevOps with Serverless
DevOps with ServerlessYan Cui
 
fog or: How I Learned to Stop Worrying and Love the Cloud
fog or: How I Learned to Stop Worrying and Love the Cloudfog or: How I Learned to Stop Worrying and Love the Cloud
fog or: How I Learned to Stop Worrying and Love the CloudWesley Beary
 
Vertically Scaled Design Patters
Vertically Scaled Design PattersVertically Scaled Design Patters
Vertically Scaled Design PattersJeff Malnick
 
Serverless in production, an experience report (linuxing in london)
Serverless in production, an experience report (linuxing in london)Serverless in production, an experience report (linuxing in london)
Serverless in production, an experience report (linuxing in london)Yan Cui
 
Serverless in production, an experience report
Serverless in production, an experience reportServerless in production, an experience report
Serverless in production, an experience reportYan Cui
 
iOS build that scales
iOS build that scalesiOS build that scales
iOS build that scalesTobias Hutzler
 
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...Amazon Web Services
 
Self Service Agile Infrastructure for Product Teams - Pop-up Loft Tel Aviv
Self Service Agile Infrastructure for Product Teams - Pop-up Loft Tel AvivSelf Service Agile Infrastructure for Product Teams - Pop-up Loft Tel Aviv
Self Service Agile Infrastructure for Product Teams - Pop-up Loft Tel AvivAmazon Web Services
 
Building a serverless company on AWS lambda and Serverless framework
Building a serverless company on AWS lambda and Serverless frameworkBuilding a serverless company on AWS lambda and Serverless framework
Building a serverless company on AWS lambda and Serverless frameworkLuciano Mammino
 
Deploying 3 times a day without a downtime @ Rocket Tech Summit in Berlin
Deploying 3 times a day without a downtime @ Rocket Tech Summit in BerlinDeploying 3 times a day without a downtime @ Rocket Tech Summit in Berlin
Deploying 3 times a day without a downtime @ Rocket Tech Summit in BerlinAlessandro Nadalin
 
Serverless in production, an experience report (CoDe-Conf)
Serverless in production, an experience report (CoDe-Conf)Serverless in production, an experience report (CoDe-Conf)
Serverless in production, an experience report (CoDe-Conf)Yan Cui
 
Advanced iOS Build Mechanics, Sebastien Pouliot
Advanced iOS Build Mechanics, Sebastien PouliotAdvanced iOS Build Mechanics, Sebastien Pouliot
Advanced iOS Build Mechanics, Sebastien PouliotXamarin
 
AWS Lambda from the trenches
AWS Lambda from the trenchesAWS Lambda from the trenches
AWS Lambda from the trenchesYan Cui
 
Hazelcast and MongoDB at Cloud CMS
Hazelcast and MongoDB at Cloud CMSHazelcast and MongoDB at Cloud CMS
Hazelcast and MongoDB at Cloud CMSuzquiano
 

Ähnlich wie Coolblue - Behind the Scenes Continuous Integration & Deployment (20)

Sufan presentation
Sufan presentationSufan presentation
Sufan presentation
 
Cutting through the fog of cloud
Cutting through the fog of cloudCutting through the fog of cloud
Cutting through the fog of cloud
 
Serverless in production, an experience report (FullStack 2018)
Serverless in production, an experience report (FullStack 2018)Serverless in production, an experience report (FullStack 2018)
Serverless in production, an experience report (FullStack 2018)
 
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
 
Serverless in Production, an experience report (AWS UG South Wales)
Serverless in Production, an experience report (AWS UG South Wales)Serverless in Production, an experience report (AWS UG South Wales)
Serverless in Production, an experience report (AWS UG South Wales)
 
Serverless in production, an experience report (Going Serverless)
Serverless in production, an experience report (Going Serverless)Serverless in production, an experience report (Going Serverless)
Serverless in production, an experience report (Going Serverless)
 
DevOps with Serverless
DevOps with ServerlessDevOps with Serverless
DevOps with Serverless
 
fog or: How I Learned to Stop Worrying and Love the Cloud
fog or: How I Learned to Stop Worrying and Love the Cloudfog or: How I Learned to Stop Worrying and Love the Cloud
fog or: How I Learned to Stop Worrying and Love the Cloud
 
Vertically Scaled Design Patters
Vertically Scaled Design PattersVertically Scaled Design Patters
Vertically Scaled Design Patters
 
Serverless in production, an experience report (linuxing in london)
Serverless in production, an experience report (linuxing in london)Serverless in production, an experience report (linuxing in london)
Serverless in production, an experience report (linuxing in london)
 
Serverless in production, an experience report
Serverless in production, an experience reportServerless in production, an experience report
Serverless in production, an experience report
 
iOS build that scales
iOS build that scalesiOS build that scales
iOS build that scales
 
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
 
Self Service Agile Infrastructure for Product Teams - Pop-up Loft Tel Aviv
Self Service Agile Infrastructure for Product Teams - Pop-up Loft Tel AvivSelf Service Agile Infrastructure for Product Teams - Pop-up Loft Tel Aviv
Self Service Agile Infrastructure for Product Teams - Pop-up Loft Tel Aviv
 
Building a serverless company on AWS lambda and Serverless framework
Building a serverless company on AWS lambda and Serverless frameworkBuilding a serverless company on AWS lambda and Serverless framework
Building a serverless company on AWS lambda and Serverless framework
 
Deploying 3 times a day without a downtime @ Rocket Tech Summit in Berlin
Deploying 3 times a day without a downtime @ Rocket Tech Summit in BerlinDeploying 3 times a day without a downtime @ Rocket Tech Summit in Berlin
Deploying 3 times a day without a downtime @ Rocket Tech Summit in Berlin
 
Serverless in production, an experience report (CoDe-Conf)
Serverless in production, an experience report (CoDe-Conf)Serverless in production, an experience report (CoDe-Conf)
Serverless in production, an experience report (CoDe-Conf)
 
Advanced iOS Build Mechanics, Sebastien Pouliot
Advanced iOS Build Mechanics, Sebastien PouliotAdvanced iOS Build Mechanics, Sebastien Pouliot
Advanced iOS Build Mechanics, Sebastien Pouliot
 
AWS Lambda from the trenches
AWS Lambda from the trenchesAWS Lambda from the trenches
AWS Lambda from the trenches
 
Hazelcast and MongoDB at Cloud CMS
Hazelcast and MongoDB at Cloud CMSHazelcast and MongoDB at Cloud CMS
Hazelcast and MongoDB at Cloud CMS
 

KĂŒrzlich hochgeladen

TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
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)wesley chun
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
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
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
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
 
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
 
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...apidays
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
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 Processorsdebabhi2
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
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.pdfsudhanshuwaghmare1
 
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...Miguel AraĂșjo
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 

KĂŒrzlich hochgeladen (20)

TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
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)
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
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
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
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
 
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
 
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...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
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
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
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
 
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...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 

Coolblue - Behind the Scenes Continuous Integration & Deployment

  • 1. July 2016 | Behind the Scenes
  • 2.
  • 3. Agenda. ● Welcome & introduction ● From Code to Node ● Short Break ● A look to the future of deployment ● Tour of our office ● Drinks ● Fin
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14. July 2016 | Behind the Scenes Flynn Bundy <@bundyfx> & Matthew Hodgkins <@matthodge>
  • 15.
  • 16.
  • 17. “I was trying to sleep last night but all I could think about was how to make our pipelines better.” Matt
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29. PLAN.
  • 30. CODE. [sensu]Get(){...} [void]Set(){...} [boolean]Test(){...} static [void] XMLConversion () {...} static [void] InstallService () {...} static [void] ConfigureAgentTransport([Transport]$Transport) {...}
  • 31. CODE. node $AllNodes.Where{$_.Role -eq "our_app"}.role {...} node $AllNodes.Where{$_.Role -eq "our_app_1"}.role {...} node $AllNodes.Where{$_.Role -eq "our_app_2"}.role {...} node $AllNodes.Where{$_.Role -eq "our_app_3"}.role {...} node $AllNodes.Where{$_.Role -eq "our_app_4"}.role {...}
  • 32.
  • 35.
  • 36. TEST. Context Download Agent Method [+] Should download the Sensu client 7.58s [+] Should be the full file 101ms Context Install Agent Method [+] Should Install the Sensu client 38.49s Context ConfigureAgentClient Method [+] Should be correctly formatted into JSON 1.77s [+] Should contain the Correct Information in the JSON | Subscriptions 20ms [+] Should contain the Correct Information in the JSON | Name 19ms [+] Should contain the Correct Information in the JSON | Private IPv4 Address 15ms Context ConfigureAgentTransport Method [+] Should be formatted correctly into JSON 154ms [+] Should contain the Correct Information in the JSON | Name 16ms [+] Should contain the Correct Information in the JSON | Reconnect on Error 13ms Context InstallService Method [+] Should deploy and install the Sensu client service 256ms Context Conversion XML Method [+] Should correctly create an valid XML configuration file 119ms Context RemoveAgent Method [+] It should remove the agent 239.16s Describing DSC Based methods Context Testing DSC based methods [+] Test() Method should return a Boolean Type 283ms [+] Get() Method should return a Sensu Type 31ms
  • 37. TEST.
  • 38.
  • 39.
  • 40. Move fast and break things. Unless you are breaking stuff, you are not moving fast enough. Mark Zuckerberg
  • 41.
  • 47.
  • 48.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 57. WHY MONITORING IS HARD. â–ȘAutomation is an after thought â–ȘForgetting to add new services â–ȘChecks are hard to write â–ȘDon’t want to do annoying things
  • 59. STEP 1 - DEPLOY AGENT WITH DSC. Sensu Install { Ensure = "Present" DownloadURL = 'https://sensu.global.net/msi/sensu-0.24.0-1.msi' RabbitMQServer = 'coolblue-rabbitmq.internal.fake' Transport = 'rabbitmq' vHost = 'sensu' User = 'sensu' Port = '5672' Password = 'some_password' #Encrypted of course Subscription = 'windows_base' }
  • 61. STEP 2 - CREATE SOME CHECKS. { "checks": { "disk_usage": { "command": "check-windows-disk.rb.bat -w 85 -c 95", "interval": 600, "subscribers": [ "windows" ] }, "windows_update": { "command": "powershell.exe -file C:/coolblue_checks/win_last_updated.ps1 -w 30 -c 60", "interval": 86400, "subscribers": [ "windows" ] } } }
  • 63.
  • 64. STEP 3 - UPDATE THE CONFIG. Sensu Install { Ensure = "Present" DownloadURL = 'https://sensu.global.net/msi/sensu-0.24.0-1.msi' RabbitMQServer = 'coolblue-rabbitmq.internal.fake' Transport = 'rabbitmq' vHost = 'sensu' User = 'sensu' Port = '5672' Password = 'some_password' #Encrypted of course Subscription = 'windows_base','my_iis_app' }
  • 65. STEP 4 - ADD APP SPECIFIC CHECKS. { "checks": { "iis_purchases": { "command": "check-http.rb http://localhost/purchases", "interval": 60, "playbook": "https://github.com/devTeam/readme.md", "subscribers": [ "my_iis_app" ] } } }
  • 66. WHY MONITORING IS HARD. â–ȘAutomation is an after thought â–ȘForgetting to add new services â–ȘChecks are hard to write â–ȘDon’t want to do annoying things
  • 67.
  • 68. THE SENSU SOCKET INPUT. IIS /purchases Sensu Agent Sensu Server Rabbit MQ 3030 TCP/ UDP My App
  • 69. JUST SEND IN JSON. { "name": "ravendb_connectivity", "output": "Could not connect to RavenDB!", "status": 2, "team": "TeamName", "application": "My App", "playbook": "https://github.com/devTeam/readme.md" }
  • 70.
  • 71. USING A DEAD-MAN SWITCH. { "name": "daily_sql_backup", "output": "Backup of SQL databases performed", "status": 0, "team": "OpsTeamName", "application": "sql_backups", "playbook": "https://github.com/opsTeam/readme.md", "ttl": 86400 }
  • 72.
  • 73. MONITORING CAN BE EASY. â–ȘAutomation is an after thought â–ȘForgetting to add new services â–ȘChecks are hard to write â–ȘDon’t want to do annoying things
  • 74.
  • 76.
  • 78. July 2016 | Behind the Scenes Flynn Bundy <@bundyfx> & Chris Thorp <@thorpgeek>
  • 79.
  • 80.
  • 81.
  • 82.
  • 83. Challenges. ● OS Base Memory Usage ● Large HDD Usage ● Build Times for Servers ● Further increase the development speed of Coolblue
  • 84.
  • 85. SAD (Server And a Desktop). Install web server feature
  • 87. WE
  • 90.
  • 91. Results. Server Core Nano Server Build Time: 6 min ~40 Seconds Start Time: 25 Seconds 2 Seconds Restart Time: 15 Seconds 1 Seconds Hard Drive Space used: 8 GB 600 MB Basic Memory Usage 250 MB 160 MB
  • 92. Nano Server Thoughts. ● No 32 Bit Support ● MSI is gone ● Not all server core features available ● No Full .Net Framework Support
  • 93. Challenges. ● OS base Memory Usage ● Large HDD Usage ● Build and Deployment Times for Servers ● Further increase the development speed of Coolblue
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
  • 101.
  • 102.
  • 103.
  • 104.
  • 105.
  • 106. Summing up challenges. ● OS Base Memory Usage ● Large HDD Usage ● Build Deployment Times for Servers ● Further increase the development speed of Coolblue
  • 108.