SlideShare a Scribd company logo
Domain’s Robot Army 
CloudFormation, Windows and Octopus. 
Jason Brown, DevOps Lead, Domain.com.au 
Sydney AWS Meetup, October 2014
Who Are We?
What we’ll cover 
The Challenges 
The CloudFormation 
The Supporting Code 
The Gotchas
Challenges at Domain 
● Complete Microservice re-architecture 
● Continuous Delivery 
● Agile 
● Windows 
Plus all the usual...
How we do it
Intro to CloudFormation 
● Infrastructure as code 
● Glue your AWS services together 
● Constantly expanding 
● Well documented 
● Lots of samples available 
● JSON syntax
An example... 
ELB 
Health-check 
HTTP port 
HTTPS port 
Cross-Zone 
Tags!!
CloudFormation at Domain 
We took a pre-existing template and extended it 
Then we cut it back down significantly 
Multi-AZ Load-balanced, AutoScaling & Self-healing 
Each platoon has its own template and config 
Customised LaunchConfiguration 
Uses standard AWS AMIs 
Versioned using Git
The LaunchConfiguration 
● The pivotal step 
● Lots of PowerShell 
● Pulls pre-built scripts from S3 
based on cluster name
The Powershell 
● Rename server 
● Set TZ 
● Pull files 
● cluster-config.json 
● Army config (DSC) 
● Platoon config (DSC) 
● Find latest app code 
● Notify
Octopus Deploy 
The very last PowerShell Script drives OctopusDeploy 
.NET-based, API-first deployment engine 
Pulls code from Bamboo/Nuget 
Pushes it out to servers 
Executes supporting powershell code
Gotchas 
- CFN-Init does not load windows profiles 
- So it can’t use DPAPI or user environment variables 
- More services means more stacks 
- We have to parameterise, or maintain lots of templates 
- Multi-tenancy is tricky 
- Luckily, we want the resiliency of separate clusters 
- OctopusDSC 
- We needed to customise OctopusDSC for AWS 
- Octopus Reg/Dereg 
- Custom script to clean-up scaled-down instances
In Conclusion 
You can drive the entire provisioning chain 
- (yes, including app deployment) 
New cluster ~10-15 min 
Auto-scale: <10 min 
Cloudformation is epic 
Domain’s new Microservices deploy on-commit, with the 
capacity to deploy hundreds of times per day to AWS.
Want to learn more? 
Follow Domain’s tech blog 
http://tech.domain.com.au/ 
And we are hiring! 
Big thanks to all the Invader Zim fan sites which contributed images for this presentation!

More Related Content

What's hot

DevOps 2015 - Dancing with Chef
DevOps 2015 - Dancing with ChefDevOps 2015 - Dancing with Chef
DevOps 2015 - Dancing with Chef
smalltown
 
빈스톡 첫인상 with Git
빈스톡 첫인상 with Git빈스톡 첫인상 with Git
빈스톡 첫인상 with Git
AWSKRUG - AWS한국사용자모임
 
Self Created Load Balancer for MTA on AWS
Self Created Load Balancer for MTA on AWSSelf Created Load Balancer for MTA on AWS
Self Created Load Balancer for MTA on AWS
sharu1204
 
Container Orchestration using Kubernetes
Container Orchestration using KubernetesContainer Orchestration using Kubernetes
Container Orchestration using Kubernetes
Hesham Amin
 
Deliver Docker Containers Continuously on AWS - QCon 2017
Deliver Docker Containers Continuously on AWS - QCon 2017Deliver Docker Containers Continuously on AWS - QCon 2017
Deliver Docker Containers Continuously on AWS - QCon 2017
Philipp Garbe
 
Deploy High Availability Kubernetes with Kubespray
Deploy High Availability Kubernetes with KubesprayDeploy High Availability Kubernetes with Kubespray
Deploy High Availability Kubernetes with Kubespray
Che-Chia Chang
 
Deploying Kubernetes on GCP with Kubespray
Deploying Kubernetes on GCP with KubesprayDeploying Kubernetes on GCP with Kubespray
Deploying Kubernetes on GCP with Kubespray
Altoros
 
AWS December 2015 Webinar Series - Continuous Delivery to Amazon EC2 Containe...
AWS December 2015 Webinar Series - Continuous Delivery to Amazon EC2 Containe...AWS December 2015 Webinar Series - Continuous Delivery to Amazon EC2 Containe...
AWS December 2015 Webinar Series - Continuous Delivery to Amazon EC2 Containe...
Amazon Web Services
 
[Js hcm] Deploying node.js with Forever.js and nginx
[Js hcm] Deploying node.js with Forever.js and nginx[Js hcm] Deploying node.js with Forever.js and nginx
[Js hcm] Deploying node.js with Forever.js and nginx
Nicolas Embleton
 
Cassandra Development Nirvana
Cassandra Development Nirvana Cassandra Development Nirvana
Cassandra Development Nirvana
DataStax
 
Short journey into the serverless world
Short journey into the serverless worldShort journey into the serverless world
Short journey into the serverless world
Scott van Kalken
 
Start Serverless with Golang!
Start Serverless with Golang!Start Serverless with Golang!
Start Serverless with Golang!
Kyuhyun Byun
 
Scaling WordPress - WP on AWS
Scaling WordPress - WP on AWSScaling WordPress - WP on AWS
Scaling WordPress - WP on AWS
stk_jj
 
Communication tool & Environment for Remote Worker
Communication tool & Environment for Remote WorkerCommunication tool & Environment for Remote Worker
Communication tool & Environment for Remote Worker
Shotaro Sakamaki
 
MongoDB on CloudFoundry
MongoDB on CloudFoundryMongoDB on CloudFoundry
MongoDB on CloudFoundry
Yohei Sasaki
 
Setup Kubernetes Cluster On AWS Using KOPS
Setup Kubernetes Cluster On AWS Using KOPSSetup Kubernetes Cluster On AWS Using KOPS
Setup Kubernetes Cluster On AWS Using KOPS
Sivaprakash
 
Serverless framework와 CircleCI를 통한 NoOps 맛보기
Serverless framework와 CircleCI를 통한 NoOps 맛보기Serverless framework와 CircleCI를 통한 NoOps 맛보기
Serverless framework와 CircleCI를 통한 NoOps 맛보기
Kyuhyun Byun
 
Multi host container networking
Multi host container networkingMulti host container networking
Multi host container networking
Weaveworks
 
WordCamp IL 2016 - WordPress Scale on AWS
WordCamp IL 2016 - WordPress Scale on AWSWordCamp IL 2016 - WordPress Scale on AWS
WordCamp IL 2016 - WordPress Scale on AWS
Boaz Ziniman
 
OpenShift on IBM Cloud BMS
OpenShift on IBM Cloud BMSOpenShift on IBM Cloud BMS
OpenShift on IBM Cloud BMS
Shoichiro Sakaigawa
 

What's hot (20)

DevOps 2015 - Dancing with Chef
DevOps 2015 - Dancing with ChefDevOps 2015 - Dancing with Chef
DevOps 2015 - Dancing with Chef
 
빈스톡 첫인상 with Git
빈스톡 첫인상 with Git빈스톡 첫인상 with Git
빈스톡 첫인상 with Git
 
Self Created Load Balancer for MTA on AWS
Self Created Load Balancer for MTA on AWSSelf Created Load Balancer for MTA on AWS
Self Created Load Balancer for MTA on AWS
 
Container Orchestration using Kubernetes
Container Orchestration using KubernetesContainer Orchestration using Kubernetes
Container Orchestration using Kubernetes
 
Deliver Docker Containers Continuously on AWS - QCon 2017
Deliver Docker Containers Continuously on AWS - QCon 2017Deliver Docker Containers Continuously on AWS - QCon 2017
Deliver Docker Containers Continuously on AWS - QCon 2017
 
Deploy High Availability Kubernetes with Kubespray
Deploy High Availability Kubernetes with KubesprayDeploy High Availability Kubernetes with Kubespray
Deploy High Availability Kubernetes with Kubespray
 
Deploying Kubernetes on GCP with Kubespray
Deploying Kubernetes on GCP with KubesprayDeploying Kubernetes on GCP with Kubespray
Deploying Kubernetes on GCP with Kubespray
 
AWS December 2015 Webinar Series - Continuous Delivery to Amazon EC2 Containe...
AWS December 2015 Webinar Series - Continuous Delivery to Amazon EC2 Containe...AWS December 2015 Webinar Series - Continuous Delivery to Amazon EC2 Containe...
AWS December 2015 Webinar Series - Continuous Delivery to Amazon EC2 Containe...
 
[Js hcm] Deploying node.js with Forever.js and nginx
[Js hcm] Deploying node.js with Forever.js and nginx[Js hcm] Deploying node.js with Forever.js and nginx
[Js hcm] Deploying node.js with Forever.js and nginx
 
Cassandra Development Nirvana
Cassandra Development Nirvana Cassandra Development Nirvana
Cassandra Development Nirvana
 
Short journey into the serverless world
Short journey into the serverless worldShort journey into the serverless world
Short journey into the serverless world
 
Start Serverless with Golang!
Start Serverless with Golang!Start Serverless with Golang!
Start Serverless with Golang!
 
Scaling WordPress - WP on AWS
Scaling WordPress - WP on AWSScaling WordPress - WP on AWS
Scaling WordPress - WP on AWS
 
Communication tool & Environment for Remote Worker
Communication tool & Environment for Remote WorkerCommunication tool & Environment for Remote Worker
Communication tool & Environment for Remote Worker
 
MongoDB on CloudFoundry
MongoDB on CloudFoundryMongoDB on CloudFoundry
MongoDB on CloudFoundry
 
Setup Kubernetes Cluster On AWS Using KOPS
Setup Kubernetes Cluster On AWS Using KOPSSetup Kubernetes Cluster On AWS Using KOPS
Setup Kubernetes Cluster On AWS Using KOPS
 
Serverless framework와 CircleCI를 통한 NoOps 맛보기
Serverless framework와 CircleCI를 통한 NoOps 맛보기Serverless framework와 CircleCI를 통한 NoOps 맛보기
Serverless framework와 CircleCI를 통한 NoOps 맛보기
 
Multi host container networking
Multi host container networkingMulti host container networking
Multi host container networking
 
WordCamp IL 2016 - WordPress Scale on AWS
WordCamp IL 2016 - WordPress Scale on AWSWordCamp IL 2016 - WordPress Scale on AWS
WordCamp IL 2016 - WordPress Scale on AWS
 
OpenShift on IBM Cloud BMS
OpenShift on IBM Cloud BMSOpenShift on IBM Cloud BMS
OpenShift on IBM Cloud BMS
 

Viewers also liked

Roboticsin army
Roboticsin armyRoboticsin army
Roboticsin army
Harshit Srivastava
 
I gotta dependency on dependency injection
I gotta dependency on dependency injectionI gotta dependency on dependency injection
I gotta dependency on dependency injection
mhenroid
 
Agile Systems Admin
Agile Systems AdminAgile Systems Admin
Agile Systems Admin
Julian Simpson
 
The art of .net deployment automation
The art of .net deployment automationThe art of .net deployment automation
The art of .net deployment automation
MidVision
 
Implementing Continuous Integration in .NET for Cheapskates
Implementing Continuous Integration in .NET for CheapskatesImplementing Continuous Integration in .NET for Cheapskates
Implementing Continuous Integration in .NET for Cheapskates
mhenroid
 
The art of wmb deployment automation
The art of wmb deployment automationThe art of wmb deployment automation
The art of wmb deployment automation
MidVision
 
Test driven development
Test driven developmentTest driven development
Test driven development
Shalabh Saxena
 
Agile .NET Development with BDD and Continuous Integration
Agile .NET Development with BDD and Continuous IntegrationAgile .NET Development with BDD and Continuous Integration
Agile .NET Development with BDD and Continuous Integration
Tung Nguyen Thanh
 
Buildbot
BuildbotBuildbot
Buildbot
williewu
 
Improving code quality with continuous integration (PHPBenelux Conference 2011)
Improving code quality with continuous integration (PHPBenelux Conference 2011)Improving code quality with continuous integration (PHPBenelux Conference 2011)
Improving code quality with continuous integration (PHPBenelux Conference 2011)
Martin de Keijzer
 
Core Principles Of Ci
Core Principles Of CiCore Principles Of Ci
Core Principles Of Ci
OpenSource Connections
 
Ideal Deployment In .NET World
Ideal Deployment In .NET WorldIdeal Deployment In .NET World
Ideal Deployment In .NET World
Dima Pasko
 
Technological Evolution of Robotics - Dr Sanjoy Sanyal
Technological Evolution of Robotics - Dr Sanjoy SanyalTechnological Evolution of Robotics - Dr Sanjoy Sanyal
Technological Evolution of Robotics - Dr Sanjoy Sanyal
Sanjoy Sanyal
 
Zillow Premier Agent
Zillow Premier AgentZillow Premier Agent
Zillow Premier Agent
Brad Andersohn
 
Scrum and Test-driven development
Scrum and Test-driven developmentScrum and Test-driven development
Scrum and Test-driven development
toteb5
 
Integration with Docker and .NET Core
Integration with Docker and .NET CoreIntegration with Docker and .NET Core
Integration with Docker and .NET Core
Sriram Hariharan
 
Tracxn Real Estate Tech Landscape Report, July 2016
Tracxn Real Estate Tech Landscape Report, July 2016Tracxn Real Estate Tech Landscape Report, July 2016
Tracxn Real Estate Tech Landscape Report, July 2016
Tracxn
 
C#/.NET Little Wonders
C#/.NET Little WondersC#/.NET Little Wonders
C#/.NET Little Wonders
BlackRabbitCoder
 
Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)
Dennys Hsieh
 
Tracxn Research: Real Estate Tech India Landscape, October 2016
Tracxn Research: Real Estate Tech India Landscape, October 2016Tracxn Research: Real Estate Tech India Landscape, October 2016
Tracxn Research: Real Estate Tech India Landscape, October 2016
Tracxn
 

Viewers also liked (20)

Roboticsin army
Roboticsin armyRoboticsin army
Roboticsin army
 
I gotta dependency on dependency injection
I gotta dependency on dependency injectionI gotta dependency on dependency injection
I gotta dependency on dependency injection
 
Agile Systems Admin
Agile Systems AdminAgile Systems Admin
Agile Systems Admin
 
The art of .net deployment automation
The art of .net deployment automationThe art of .net deployment automation
The art of .net deployment automation
 
Implementing Continuous Integration in .NET for Cheapskates
Implementing Continuous Integration in .NET for CheapskatesImplementing Continuous Integration in .NET for Cheapskates
Implementing Continuous Integration in .NET for Cheapskates
 
The art of wmb deployment automation
The art of wmb deployment automationThe art of wmb deployment automation
The art of wmb deployment automation
 
Test driven development
Test driven developmentTest driven development
Test driven development
 
Agile .NET Development with BDD and Continuous Integration
Agile .NET Development with BDD and Continuous IntegrationAgile .NET Development with BDD and Continuous Integration
Agile .NET Development with BDD and Continuous Integration
 
Buildbot
BuildbotBuildbot
Buildbot
 
Improving code quality with continuous integration (PHPBenelux Conference 2011)
Improving code quality with continuous integration (PHPBenelux Conference 2011)Improving code quality with continuous integration (PHPBenelux Conference 2011)
Improving code quality with continuous integration (PHPBenelux Conference 2011)
 
Core Principles Of Ci
Core Principles Of CiCore Principles Of Ci
Core Principles Of Ci
 
Ideal Deployment In .NET World
Ideal Deployment In .NET WorldIdeal Deployment In .NET World
Ideal Deployment In .NET World
 
Technological Evolution of Robotics - Dr Sanjoy Sanyal
Technological Evolution of Robotics - Dr Sanjoy SanyalTechnological Evolution of Robotics - Dr Sanjoy Sanyal
Technological Evolution of Robotics - Dr Sanjoy Sanyal
 
Zillow Premier Agent
Zillow Premier AgentZillow Premier Agent
Zillow Premier Agent
 
Scrum and Test-driven development
Scrum and Test-driven developmentScrum and Test-driven development
Scrum and Test-driven development
 
Integration with Docker and .NET Core
Integration with Docker and .NET CoreIntegration with Docker and .NET Core
Integration with Docker and .NET Core
 
Tracxn Real Estate Tech Landscape Report, July 2016
Tracxn Real Estate Tech Landscape Report, July 2016Tracxn Real Estate Tech Landscape Report, July 2016
Tracxn Real Estate Tech Landscape Report, July 2016
 
C#/.NET Little Wonders
C#/.NET Little WondersC#/.NET Little Wonders
C#/.NET Little Wonders
 
Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)
 
Tracxn Research: Real Estate Tech India Landscape, October 2016
Tracxn Research: Real Estate Tech India Landscape, October 2016Tracxn Research: Real Estate Tech India Landscape, October 2016
Tracxn Research: Real Estate Tech India Landscape, October 2016
 

Similar to Domain's Robot Army

Docker dev ops for cd meetup 12-14
Docker dev ops for cd meetup 12-14Docker dev ops for cd meetup 12-14
Docker dev ops for cd meetup 12-14
Simon Storm
 
IBM Think Session 8598 Domino and JavaScript Development MasterClass
IBM Think Session 8598 Domino and JavaScript Development MasterClassIBM Think Session 8598 Domino and JavaScript Development MasterClass
IBM Think Session 8598 Domino and JavaScript Development MasterClass
Paul Withers
 
Managing Your Cloud Assets
Managing Your Cloud AssetsManaging Your Cloud Assets
Managing Your Cloud Assets
Amazon Web Services
 
OSDC.no 2015 introduction to node.js workshop
OSDC.no 2015 introduction to node.js workshopOSDC.no 2015 introduction to node.js workshop
OSDC.no 2015 introduction to node.js workshop
leffen
 
How Ansible Tower and Prometheus can help automate continuous deployments
How Ansible Tower and Prometheus can help automate continuous deployments How Ansible Tower and Prometheus can help automate continuous deployments
How Ansible Tower and Prometheus can help automate continuous deployments
Roger Tanner
 
AWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for Government
Amazon Web Services
 
Continuous Integration e Delivery per (r)innovare lo sviluppo software e la g...
Continuous Integration e Delivery per (r)innovare lo sviluppo software e la g...Continuous Integration e Delivery per (r)innovare lo sviluppo software e la g...
Continuous Integration e Delivery per (r)innovare lo sviluppo software e la g...
Amazon Web Services
 
ContainerDayVietnam2016: Dockerize a small business
ContainerDayVietnam2016: Dockerize a small businessContainerDayVietnam2016: Dockerize a small business
ContainerDayVietnam2016: Dockerize a small business
Docker-Hanoi
 
Velocity NYC 2016 - Containers @ Netflix
Velocity NYC 2016 - Containers @ NetflixVelocity NYC 2016 - Containers @ Netflix
Velocity NYC 2016 - Containers @ Netflix
aspyker
 
AWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for Government
Amazon Web Services
 
Developer Experience at the Guardian, Equal Experts Sept 2021
Developer Experience at the Guardian, Equal Experts Sept 2021Developer Experience at the Guardian, Equal Experts Sept 2021
Developer Experience at the Guardian, Equal Experts Sept 2021
Akash Askoolum
 
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Emerson Eduardo Rodrigues Von Staffen
 
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
Amazon Web Services
 
Introduction to Kubernetes
Introduction to KubernetesIntroduction to Kubernetes
Introduction to Kubernetes
Vishal Biyani
 
56k.cloud training
56k.cloud training56k.cloud training
56k.cloud training
Brian Christner
 
Open shift and docker - october,2014
Open shift and docker - october,2014Open shift and docker - october,2014
Open shift and docker - october,2014
Hojoong Kim
 
Dark launching with Consul at Hootsuite - Bill Monkman
Dark launching with Consul at Hootsuite - Bill MonkmanDark launching with Consul at Hootsuite - Bill Monkman
Dark launching with Consul at Hootsuite - Bill Monkman
Ambassador Labs
 
Workshop; Deploy a Deep Learning Framework on Amazon ECS and Spot Instances
Workshop; Deploy a Deep Learning Framework on Amazon ECS and Spot InstancesWorkshop; Deploy a Deep Learning Framework on Amazon ECS and Spot Instances
Workshop; Deploy a Deep Learning Framework on Amazon ECS and Spot Instances
Amazon Web Services
 
Containers Anywhere with OpenShift by Red Hat
Containers Anywhere with OpenShift by Red HatContainers Anywhere with OpenShift by Red Hat
Containers Anywhere with OpenShift by Red Hat
Amazon Web Services
 
Test cloud application deployments locally and in CI without staging environm...
Test cloud application deployments locally and in CI without staging environm...Test cloud application deployments locally and in CI without staging environm...
Test cloud application deployments locally and in CI without staging environm...
Thomas Rausch
 

Similar to Domain's Robot Army (20)

Docker dev ops for cd meetup 12-14
Docker dev ops for cd meetup 12-14Docker dev ops for cd meetup 12-14
Docker dev ops for cd meetup 12-14
 
IBM Think Session 8598 Domino and JavaScript Development MasterClass
IBM Think Session 8598 Domino and JavaScript Development MasterClassIBM Think Session 8598 Domino and JavaScript Development MasterClass
IBM Think Session 8598 Domino and JavaScript Development MasterClass
 
Managing Your Cloud Assets
Managing Your Cloud AssetsManaging Your Cloud Assets
Managing Your Cloud Assets
 
OSDC.no 2015 introduction to node.js workshop
OSDC.no 2015 introduction to node.js workshopOSDC.no 2015 introduction to node.js workshop
OSDC.no 2015 introduction to node.js workshop
 
How Ansible Tower and Prometheus can help automate continuous deployments
How Ansible Tower and Prometheus can help automate continuous deployments How Ansible Tower and Prometheus can help automate continuous deployments
How Ansible Tower and Prometheus can help automate continuous deployments
 
AWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for Government
 
Continuous Integration e Delivery per (r)innovare lo sviluppo software e la g...
Continuous Integration e Delivery per (r)innovare lo sviluppo software e la g...Continuous Integration e Delivery per (r)innovare lo sviluppo software e la g...
Continuous Integration e Delivery per (r)innovare lo sviluppo software e la g...
 
ContainerDayVietnam2016: Dockerize a small business
ContainerDayVietnam2016: Dockerize a small businessContainerDayVietnam2016: Dockerize a small business
ContainerDayVietnam2016: Dockerize a small business
 
Velocity NYC 2016 - Containers @ Netflix
Velocity NYC 2016 - Containers @ NetflixVelocity NYC 2016 - Containers @ Netflix
Velocity NYC 2016 - Containers @ Netflix
 
AWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for Government
 
Developer Experience at the Guardian, Equal Experts Sept 2021
Developer Experience at the Guardian, Equal Experts Sept 2021Developer Experience at the Guardian, Equal Experts Sept 2021
Developer Experience at the Guardian, Equal Experts Sept 2021
 
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
 
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
 
Introduction to Kubernetes
Introduction to KubernetesIntroduction to Kubernetes
Introduction to Kubernetes
 
56k.cloud training
56k.cloud training56k.cloud training
56k.cloud training
 
Open shift and docker - october,2014
Open shift and docker - october,2014Open shift and docker - october,2014
Open shift and docker - october,2014
 
Dark launching with Consul at Hootsuite - Bill Monkman
Dark launching with Consul at Hootsuite - Bill MonkmanDark launching with Consul at Hootsuite - Bill Monkman
Dark launching with Consul at Hootsuite - Bill Monkman
 
Workshop; Deploy a Deep Learning Framework on Amazon ECS and Spot Instances
Workshop; Deploy a Deep Learning Framework on Amazon ECS and Spot InstancesWorkshop; Deploy a Deep Learning Framework on Amazon ECS and Spot Instances
Workshop; Deploy a Deep Learning Framework on Amazon ECS and Spot Instances
 
Containers Anywhere with OpenShift by Red Hat
Containers Anywhere with OpenShift by Red HatContainers Anywhere with OpenShift by Red Hat
Containers Anywhere with OpenShift by Red Hat
 
Test cloud application deployments locally and in CI without staging environm...
Test cloud application deployments locally and in CI without staging environm...Test cloud application deployments locally and in CI without staging environm...
Test cloud application deployments locally and in CI without staging environm...
 

Recently uploaded

“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website
Pixlogix Infotech
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Zilliz
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 

Recently uploaded (20)

“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 

Domain's Robot Army

  • 1. Domain’s Robot Army CloudFormation, Windows and Octopus. Jason Brown, DevOps Lead, Domain.com.au Sydney AWS Meetup, October 2014
  • 3. What we’ll cover The Challenges The CloudFormation The Supporting Code The Gotchas
  • 4. Challenges at Domain ● Complete Microservice re-architecture ● Continuous Delivery ● Agile ● Windows Plus all the usual...
  • 6. Intro to CloudFormation ● Infrastructure as code ● Glue your AWS services together ● Constantly expanding ● Well documented ● Lots of samples available ● JSON syntax
  • 7. An example... ELB Health-check HTTP port HTTPS port Cross-Zone Tags!!
  • 8. CloudFormation at Domain We took a pre-existing template and extended it Then we cut it back down significantly Multi-AZ Load-balanced, AutoScaling & Self-healing Each platoon has its own template and config Customised LaunchConfiguration Uses standard AWS AMIs Versioned using Git
  • 9. The LaunchConfiguration ● The pivotal step ● Lots of PowerShell ● Pulls pre-built scripts from S3 based on cluster name
  • 10. The Powershell ● Rename server ● Set TZ ● Pull files ● cluster-config.json ● Army config (DSC) ● Platoon config (DSC) ● Find latest app code ● Notify
  • 11. Octopus Deploy The very last PowerShell Script drives OctopusDeploy .NET-based, API-first deployment engine Pulls code from Bamboo/Nuget Pushes it out to servers Executes supporting powershell code
  • 12. Gotchas - CFN-Init does not load windows profiles - So it can’t use DPAPI or user environment variables - More services means more stacks - We have to parameterise, or maintain lots of templates - Multi-tenancy is tricky - Luckily, we want the resiliency of separate clusters - OctopusDSC - We needed to customise OctopusDSC for AWS - Octopus Reg/Dereg - Custom script to clean-up scaled-down instances
  • 13. In Conclusion You can drive the entire provisioning chain - (yes, including app deployment) New cluster ~10-15 min Auto-scale: <10 min Cloudformation is epic Domain’s new Microservices deploy on-commit, with the capacity to deploy hundreds of times per day to AWS.
  • 14. Want to learn more? Follow Domain’s tech blog http://tech.domain.com.au/ And we are hiring! Big thanks to all the Invader Zim fan sites which contributed images for this presentation!

Editor's Notes

  1. We are Domain.com.au One of Australia’s leading property classified websites About four million Australians check us out every month We’ve been around since ‘99 We’re historically a windows shop with a big, monolithic .NET application, but we’re currently in the middle of a huge project to overhaul almost everything we do, tech-wise And who am I? I’m Jason Brown, the DevOps lead at Domain. I’m the field marshall heading up the Robot Army. I came on board about six months ago, and it’s my job to drive the ‘ops’ side of DevOps, and to essentially automate myself of one job and into another, every few weeks. I was recently joined by a couple more skilled engineers, who make things significantly smoother, which means I can come out and talk to groups like this
  2. We’ll cover the CF and Powershell needed to drive the Robot Army Supporting Code: We’re still mainly a Windows shop, so parts of this will be windows-centric, but the core concepts apply to any platform We’ll mention the CI and CD pipelines, but not in depth do jump in if you have questions, it’ll slow me down and stop me skimming over important points
  3. Point one: we’re completely rearchitecting our software on a Microservice architecture, as well as migrating a number of other apps into the Cloud. This means our capacity planning is somewhat at the ‘guesswork’ end of educated guesswork We could respond to this in a couple of ways We could just guess We could over-engineer so that we never hit our limits We could leverage autoscaling capacities in AWS to make sure we’re at optimum scale all the time - which could also deliver us significant cost savings We may also incur a significant management overhead, with many different services spread across many different servers, so we need to automate as much as we can. Point two: We’re doing this with a continuous delivery model backing it up So we can’t predict what code will be on a given node on a given day. Which means our provisioning pipeline MUST integrate tightly with our delivery pipeline Point Three: we’re super-agile, and we run light. we need to do this stuff quickly. If we need a new environment, we don’t want to wait a week, but our ops team is very lean Point Four: We’re on Windows. There aren’t that many shops doing microservices in the cloud on Windows Platforms, and those that do aren’t leveraging every feature they possibly can There are lots of companies out there doing cloud. There are lots who use autoscaling. There are lots who do automation. And there are lots trying to implement CD. We don’t know many that are doing them all. The point is though, it’s combining continuous delivery with microservices that is the tricky part. We could be throwing code out literally hundreds of times per week, so making sure that our auto-scaling clusters are always on prime code is a difficult process, and we’ll touch on that towards the end because we think we nailed it
  4. The Robot Army refers to our entire AWS server fleet it’s made up of smaller Robot Platoons - essentially microclusters consisting of an auto-scaling group, an ELB and two or more EC2 servers, spanning two availability zones. This is a fairly standard configuration - it’s what you see in, for example, Elastic Beanstalk containers. But we’ve added a whole lot of smarts under the covers, driven from the CloudFormation template
  5. Worth mentioning on the constantly expanding bit that ELB tagging appeared YESTERDAY (30th Sept) along with the ability to update SNS topics - both of which have been “want” items for a while now.
  6. Will drop this slide if the projector is terrible. CLoudformation is very texty so it’s not great for a slide presentation, but let’s see if it works Now this will be terribly hard to read but these slides will be available later, I just wanted to show a basic example of a CloudFormation resource With cross-zone load balancing, your load balancer nodes route traffic to the back-end instances across all Availability Zones. By default the CrossZone property is false.
  7. https://s3-us-west-2.amazonaws.com/cloudformation-templates-us-west-2/AutoScalingMultiAZWithNotifications.template Why does every cluster have its own template and config script? Well, the template is actually pretty-much generic. But when we started this project, we weren’t sure how much variance would be needed between individual platoons. As it turns out, the robots are far more generic than we expected them to be Still, by maintaining separate templates for now, we also maintain a separate revision history for them in git, and we can see where we’ve made changes The intention is, eventually, to drive ALL our stacks - of which there will be many - from ONE CloudFormation template
  8. This is a vital link in the chain because it’s where CloudFormation meets the Operating System. IN essence what we do here is write a lot of powershell commands and supporting files onto the disk from S3, then execute them Three key sections within AWS::CloudFormation::Init “files: : {} writes a few files to the disk, a couple of which came with the template "commands" : { } contains five powershell commands in total “services”: {} contains the standard cfn-hup It’s a bit tricky to go into depth on this LaunchConfig, but at some point in the future there’ll be a detailed blog post on this and we may even end up open-sourcing it, though we’ll go into the powershell on the next slide
  9. cluster-config.json persists some of the parameters we’ve passed to the CloudFormation template onto disk, for later use - it’s written from the CF launchconfiguration directly, using parameters pushed into the CF template the common config script installs New Relic, The Sysinternals Suite, some DSC and Powershell modules we want common to every node in the entire army The cluster config DSC script is currently unique per-cluster, and allows us to make significant variations between individual setups. So if one cluster out of ten requires, say, MSMQ, or CGI support, or we can add it here with DSC. It allows the army as a whole to have minimal configurations across the entire army, with some platoons having extras here and there as needed. We could make quite radical changes here if we wanted (but we don’t) All of this is itself driven by a powershell script back at home base, making it an easy one-liner to stand up one of these clusters There’s then a final script, generic across the entire army, called cluster-deploy.ps1 - this picks up cluster-config.json and uses that to find the latest app code from…. <next slide>
  10. This is the final piece in the puzzle. It’s no good having all these beautiful auto-scaling doohickeys if you end up deploying stale code to them - and “stale code” for us can mean literally minutes out of date This seems to be what makes continuous delivery and Auto Scaling daunting for some organisations - how do you get your latest code onto the servers as they scale (or indeed self-heal)? In linuxworld there’s things like Puppet, chef, mcollective etc. You could roll your own solution, perhaps using powershell and S3 (as we occasionally do to bring a platoon online for the first time) You could bake AMIs somewhere in your Continuous Integration pipeline, so your app code is already on-board. You could use EBS snapshots to attach an entire drive of app code. We chose to be more lean and flexible, so we went with OctopusDeploy To be honest, if it weren’t for the continuous delivery aspect, if we were still deploying only twice a week, then AMI baking or pulling zipfiles from S3 would be fine for us. But we want the ability to deploy many times a day, either automated or manually, and we want pretty much anyone in the organisation, from a first-day developer to the Technical Director, to be able to deploy code. Not that we want that happening a lot, but we want it to be possible. So Octopus it is. (and it’s good). We found we can drive many of the variances between platoons from Octopus, and therefore simplify the build pipeline
  11. CFN-Init not loading profiles doesn’t appear to be a problem at first, until you need to use, say, the Data Protection API in windows. Octopus needs this to register its server agents (called tentacles). We eventually got round it using a DSC module for Octopus which was not even two weeks old when we found it. DSC always load a user profile. Good tip to know. There’s a balance to be struck between either having lots of parameters in your master template, or having lots of templates, and there are risks on either side. Finding the sweet spot is tricky. We’re starting with one and moving towards the other Note: multi-tenancy is tricky, but we’re also deliberately isolating our services - other organisations may want to multi-tenant, in which case they’d need to build some extra smarts. OctopusDSC, while it saved our bacon quite well, had to be modified. By default, it uses Amazon public IP addresses. Because we’ve designed the robot army to be highly secure, none of the individual soldiers has a public IP. So we changed it to use private IPs and sent the code to Octopus for integration into the product - yes, windows shops do open source too. And finally, autoscaling means a box could be terminated at any time, but Octopus does not automatically de-register dead servers. So we had to roll our own code to handle the cleanup. Luckily: API-first, so easy to do with powershell.
  12. You can have your cake and eat it, CD-wise Without Cloudformation, this would be significantly harder We will be open-sourcing components of this pipeline, if not the whole thing
  13. Follow domain’s tech blog, including career opportunities.