SlideShare uma empresa Scribd logo
1 de 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

Mais conteúdo relacionado

Mais procurados

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
 
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
 
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
 

Mais procurados (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
 

Semelhante a 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
 
(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
 

Semelhante a 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
 

Último

Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
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
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
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
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
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
 
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
 
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
 
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
 
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
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
🐬 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
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
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
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
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
 
[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
 
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
 
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
 

Último (20)

Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
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
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
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...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
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
 
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
 
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
 
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...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
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 ...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
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
 
[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
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
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
 

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.