SlideShare uma empresa Scribd logo
1 de 2
Baixar para ler offline
Recently, I was explaining continuous integration to my parents. My mother is a retired OB
Nurse who helped deliver hundreds of babies and my father is a retired broadcast engineer
who helped deliver tens of thousands of hours of television. Sometimes I like to explain things
to industry outsiders because it helps me solidify my own understanding of what exactly it is
that I do.
A lot of my clients use Amazon Web Services such as EC2, RDS, and Route53 to launch their
application, and a surprising number of them simply manage their instances from the Amazon
Web Site or even a mobile app. While these are the easiest ways do to it, it can be highly error
prone trying to remember which size instances need to be launched. In addition, there is a
great degree of tedium that is involved in building security groups, and determining what
ports to block.
Amazon has a great stack orchestration service called Cloudformation, that allows customers
to upload a properly formatted JSON (JavaScript Object Notation) file to the site, and AWS
will provision everything as described in the JSON. It’s a great way to build a VPC (Virtual Pri-
vate Cloud) quickly, and correctly every time.
Since the JSON file is an ASCII text file that is typically human edited, or perhaps generated
from some other application, it lends itself to fit nicely into source control systems such as
GitHub. Configuration artifacts can be checked out using git, modified with regular expres-
sions and deployed to Amazon using the command line API.
Initially I developed this as a Makefile, borrowing from decades of experience at the UNIX
command line, then I realized I had access to a powerful CI (Continuous Integration) system
known as Jenkins. Jenkins allows you to check out, build, and package releases and then add
WHAT DOES THIS GREEN BUTTON DO?
FEBRUARY 12, 2015 | JONATHAN | LEAVE A COMMENT
Jonathan Kalbfeld
What Does This Green Button Do? | Jonathan Kalbfeld http://jon.la/?p=62
1 of 2 2/15/15, 2:53 PM
any other desired post install tasks through a configurable interface.
After perfecting my JSON file for this particular client, I created a Jenkins project that checks
out the JSON file, manipulates the entries in it with sed (Stream editor) and launches a com-
plete stack, along with RDS instances, Route53 DNS configuration. This became the de facto
way for developers to launch practice environments. I even added a timeout that would auto-
matically terminate certain stacks after the end of the work day, like replicants from Blade
Runner, in essence saving money by turning off lights, or in this case, expensive AWS re-
sources.
This initial effort took about two weeks of my time to develop, and saved hundreds of hours al-
lowing developers to build and deploy their own environments, like Vagrant but on a much
larger scale and in about 17 minutes. All they had to do was click the green button.
That’s how continuous integration should be. It should be a moderate fixed cost effort, au-
tomating as much as possible, and then a low marginal cost effort. If it takes 15 minutes of a
developer’s time versus 2 weeks of a DevOps Engineer’s time, it’s a net savings of thousands
of dollars.
What Does This Green Button Do? | Jonathan Kalbfeld http://jon.la/?p=62
2 of 2 2/15/15, 2:53 PM

Mais conteúdo relacionado

Mais procurados

Using Minikube for Node.js development
Using Minikube for Node.js developmentUsing Minikube for Node.js development
Using Minikube for Node.js developmentTroy Connor
 
Minko - Windows App Meetup Nov. 2013
Minko - Windows App Meetup Nov. 2013Minko - Windows App Meetup Nov. 2013
Minko - Windows App Meetup Nov. 2013Minko3D
 
Understand Immutable infrastructure - at Build Stuff Kiev 2016
Understand Immutable infrastructure  - at Build Stuff Kiev 2016Understand Immutable infrastructure  - at Build Stuff Kiev 2016
Understand Immutable infrastructure - at Build Stuff Kiev 2016Quentin Adam
 
Beyond Fault Tolerance with Actor Programming
Beyond Fault Tolerance with Actor ProgrammingBeyond Fault Tolerance with Actor Programming
Beyond Fault Tolerance with Actor ProgrammingFabio Tiriticco
 
AWS Customer Presentation - Smugmug
AWS Customer Presentation - SmugmugAWS Customer Presentation - Smugmug
AWS Customer Presentation - SmugmugAmazon Web Services
 
DEV+OPS: How to automate infrastructure - Cloud Expo Europe 2016
DEV+OPS: How to automate infrastructure - Cloud Expo Europe 2016DEV+OPS: How to automate infrastructure - Cloud Expo Europe 2016
DEV+OPS: How to automate infrastructure - Cloud Expo Europe 2016Quentin Adam
 
JUST EAT: Tools we use to enable our culture
JUST EAT: Tools we use to enable our cultureJUST EAT: Tools we use to enable our culture
JUST EAT: Tools we use to enable our culturePeter Mounce
 
IBM and Node.js - Old Doge, New Tricks
IBM and Node.js - Old Doge, New TricksIBM and Node.js - Old Doge, New Tricks
IBM and Node.js - Old Doge, New TricksDejan Glozic
 
Electron - Solving our cross platform dreams?
Electron - Solving our cross platform dreams?Electron - Solving our cross platform dreams?
Electron - Solving our cross platform dreams?Chris Ward
 
node.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoonnode.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang YoonJesang Yoon
 
Serverless with Google Cloud Functions
Serverless with Google Cloud FunctionsServerless with Google Cloud Functions
Serverless with Google Cloud FunctionsJerry Jalava
 
Mobile Library Development - stuck between a pod and a jar file - Zan Markan ...
Mobile Library Development - stuck between a pod and a jar file - Zan Markan ...Mobile Library Development - stuck between a pod and a jar file - Zan Markan ...
Mobile Library Development - stuck between a pod and a jar file - Zan Markan ...Codemotion
 
Google cloud functions
Google cloud functionsGoogle cloud functions
Google cloud functionsPéter Nagy
 
New Horizons for Workbench: Viewing and Editing in the Browser
New Horizons for Workbench: Viewing and Editing in the BrowserNew Horizons for Workbench: Viewing and Editing in the Browser
New Horizons for Workbench: Viewing and Editing in the BrowserSafe Software
 
Aws Lambda in Golang | Wojciech Barczynski | #4 Serverless UG Warsaw
Aws Lambda in Golang | Wojciech Barczynski | #4 Serverless UG WarsawAws Lambda in Golang | Wojciech Barczynski | #4 Serverless UG Warsaw
Aws Lambda in Golang | Wojciech Barczynski | #4 Serverless UG WarsawServerless User Group Poland
 
Building a µservice with Kotlin, Micronaut & GCP
Building a µservice with Kotlin, Micronaut & GCPBuilding a µservice with Kotlin, Micronaut & GCP
Building a µservice with Kotlin, Micronaut & GCPRobert MacLean
 
What I Learned from Optimizing Workspaces through Many Years
What I Learned from Optimizing Workspaces through Many YearsWhat I Learned from Optimizing Workspaces through Many Years
What I Learned from Optimizing Workspaces through Many YearsSafe Software
 
Serverless preview environments to the rescue
Serverless preview environments to the rescueServerless preview environments to the rescue
Serverless preview environments to the rescueJoseph Lust
 
Deploy an Asp.Net Core App on Azure
Deploy an Asp.Net Core App on AzureDeploy an Asp.Net Core App on Azure
Deploy an Asp.Net Core App on AzureMichele Aponte
 
Meteor intro- ktmjs
Meteor intro- ktmjsMeteor intro- ktmjs
Meteor intro- ktmjsPiyush Thapa
 

Mais procurados (20)

Using Minikube for Node.js development
Using Minikube for Node.js developmentUsing Minikube for Node.js development
Using Minikube for Node.js development
 
Minko - Windows App Meetup Nov. 2013
Minko - Windows App Meetup Nov. 2013Minko - Windows App Meetup Nov. 2013
Minko - Windows App Meetup Nov. 2013
 
Understand Immutable infrastructure - at Build Stuff Kiev 2016
Understand Immutable infrastructure  - at Build Stuff Kiev 2016Understand Immutable infrastructure  - at Build Stuff Kiev 2016
Understand Immutable infrastructure - at Build Stuff Kiev 2016
 
Beyond Fault Tolerance with Actor Programming
Beyond Fault Tolerance with Actor ProgrammingBeyond Fault Tolerance with Actor Programming
Beyond Fault Tolerance with Actor Programming
 
AWS Customer Presentation - Smugmug
AWS Customer Presentation - SmugmugAWS Customer Presentation - Smugmug
AWS Customer Presentation - Smugmug
 
DEV+OPS: How to automate infrastructure - Cloud Expo Europe 2016
DEV+OPS: How to automate infrastructure - Cloud Expo Europe 2016DEV+OPS: How to automate infrastructure - Cloud Expo Europe 2016
DEV+OPS: How to automate infrastructure - Cloud Expo Europe 2016
 
JUST EAT: Tools we use to enable our culture
JUST EAT: Tools we use to enable our cultureJUST EAT: Tools we use to enable our culture
JUST EAT: Tools we use to enable our culture
 
IBM and Node.js - Old Doge, New Tricks
IBM and Node.js - Old Doge, New TricksIBM and Node.js - Old Doge, New Tricks
IBM and Node.js - Old Doge, New Tricks
 
Electron - Solving our cross platform dreams?
Electron - Solving our cross platform dreams?Electron - Solving our cross platform dreams?
Electron - Solving our cross platform dreams?
 
node.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoonnode.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoon
 
Serverless with Google Cloud Functions
Serverless with Google Cloud FunctionsServerless with Google Cloud Functions
Serverless with Google Cloud Functions
 
Mobile Library Development - stuck between a pod and a jar file - Zan Markan ...
Mobile Library Development - stuck between a pod and a jar file - Zan Markan ...Mobile Library Development - stuck between a pod and a jar file - Zan Markan ...
Mobile Library Development - stuck between a pod and a jar file - Zan Markan ...
 
Google cloud functions
Google cloud functionsGoogle cloud functions
Google cloud functions
 
New Horizons for Workbench: Viewing and Editing in the Browser
New Horizons for Workbench: Viewing and Editing in the BrowserNew Horizons for Workbench: Viewing and Editing in the Browser
New Horizons for Workbench: Viewing and Editing in the Browser
 
Aws Lambda in Golang | Wojciech Barczynski | #4 Serverless UG Warsaw
Aws Lambda in Golang | Wojciech Barczynski | #4 Serverless UG WarsawAws Lambda in Golang | Wojciech Barczynski | #4 Serverless UG Warsaw
Aws Lambda in Golang | Wojciech Barczynski | #4 Serverless UG Warsaw
 
Building a µservice with Kotlin, Micronaut & GCP
Building a µservice with Kotlin, Micronaut & GCPBuilding a µservice with Kotlin, Micronaut & GCP
Building a µservice with Kotlin, Micronaut & GCP
 
What I Learned from Optimizing Workspaces through Many Years
What I Learned from Optimizing Workspaces through Many YearsWhat I Learned from Optimizing Workspaces through Many Years
What I Learned from Optimizing Workspaces through Many Years
 
Serverless preview environments to the rescue
Serverless preview environments to the rescueServerless preview environments to the rescue
Serverless preview environments to the rescue
 
Deploy an Asp.Net Core App on Azure
Deploy an Asp.Net Core App on AzureDeploy an Asp.Net Core App on Azure
Deploy an Asp.Net Core App on Azure
 
Meteor intro- ktmjs
Meteor intro- ktmjsMeteor intro- ktmjs
Meteor intro- ktmjs
 

Destaque

Sta Cruz 6
Sta Cruz 6Sta Cruz 6
Sta Cruz 6ljvgtj
 
Ilyen a világ! 22
Ilyen a világ! 22Ilyen a világ! 22
Ilyen a világ! 22Arany Tibor
 
deber de informatica
deber de informatica deber de informatica
deber de informatica joger alexis
 
ふるさとぬまづ第一和数コミ用途中縦書き2
ふるさとぬまづ第一和数コミ用途中縦書き2ふるさとぬまづ第一和数コミ用途中縦書き2
ふるさとぬまづ第一和数コミ用途中縦書き2徹 長谷川
 
Reuben goldberg isaac
Reuben goldberg isaacReuben goldberg isaac
Reuben goldberg isaacYr05
 
Cincelar - 3 Estructuras para tu historia
Cincelar - 3 Estructuras para tu historiaCincelar - 3 Estructuras para tu historia
Cincelar - 3 Estructuras para tu historiaFernando Johann
 
辻畑古墳発掘資料
辻畑古墳発掘資料辻畑古墳発掘資料
辻畑古墳発掘資料徹 長谷川
 
沼津ふるさと講座四方氏と仙石氏が解説
沼津ふるさと講座四方氏と仙石氏が解説沼津ふるさと講座四方氏と仙石氏が解説
沼津ふるさと講座四方氏と仙石氏が解説徹 長谷川
 
Y1 gd engine_terminology ig2 game engines
Y1 gd engine_terminology ig2 game enginesY1 gd engine_terminology ig2 game engines
Y1 gd engine_terminology ig2 game enginesLewis Brierley
 

Destaque (15)

NCMEC Gala 2012_Release draft (1)
NCMEC Gala 2012_Release draft (1)NCMEC Gala 2012_Release draft (1)
NCMEC Gala 2012_Release draft (1)
 
Sta Cruz 6
Sta Cruz 6Sta Cruz 6
Sta Cruz 6
 
Ilyen a világ! 22
Ilyen a világ! 22Ilyen a világ! 22
Ilyen a világ! 22
 
BEEBOX in Parool
BEEBOX in ParoolBEEBOX in Parool
BEEBOX in Parool
 
Presentation1
Presentation1Presentation1
Presentation1
 
Formato para tareas......
Formato para tareas......Formato para tareas......
Formato para tareas......
 
deber de informatica
deber de informatica deber de informatica
deber de informatica
 
ふるさとぬまづ第一和数コミ用途中縦書き2
ふるさとぬまづ第一和数コミ用途中縦書き2ふるさとぬまづ第一和数コミ用途中縦書き2
ふるさとぬまづ第一和数コミ用途中縦書き2
 
Reuben goldberg isaac
Reuben goldberg isaacReuben goldberg isaac
Reuben goldberg isaac
 
Deportes
DeportesDeportes
Deportes
 
Cincelar - 3 Estructuras para tu historia
Cincelar - 3 Estructuras para tu historiaCincelar - 3 Estructuras para tu historia
Cincelar - 3 Estructuras para tu historia
 
辻畑古墳発掘資料
辻畑古墳発掘資料辻畑古墳発掘資料
辻畑古墳発掘資料
 
沼津ふるさと講座四方氏と仙石氏が解説
沼津ふるさと講座四方氏と仙石氏が解説沼津ふるさと講座四方氏と仙石氏が解説
沼津ふるさと講座四方氏と仙石氏が解説
 
Y1 gd engine_terminology ig2 game engines
Y1 gd engine_terminology ig2 game enginesY1 gd engine_terminology ig2 game engines
Y1 gd engine_terminology ig2 game engines
 
Enlace Ciudadano 389 - Tramitón
Enlace Ciudadano 389 - TramitónEnlace Ciudadano 389 - Tramitón
Enlace Ciudadano 389 - Tramitón
 

Semelhante a GreenButton-201502

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 GovernmentAmazon Web Services
 
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 GovernmentAmazon Web Services
 
Mage Titans USA 2016 - Jonathan Bownds - Magento CI and Testing
Mage Titans USA 2016 - Jonathan Bownds - Magento CI and Testing Mage Titans USA 2016 - Jonathan Bownds - Magento CI and Testing
Mage Titans USA 2016 - Jonathan Bownds - Magento CI and Testing Stacey Whitney
 
Final Report To Executive ManagersXXXXXCCA 625Un
Final Report To Executive ManagersXXXXXCCA 625UnFinal Report To Executive ManagersXXXXXCCA 625Un
Final Report To Executive ManagersXXXXXCCA 625UnChereCheek752
 
Building and Deploying a Static Application using Jenkins and Docker in AWS
Building and Deploying a Static Application using Jenkins and Docker in AWSBuilding and Deploying a Static Application using Jenkins and Docker in AWS
Building and Deploying a Static Application using Jenkins and Docker in AWSijtsrd
 
AWS DevOps: Introduction to DevOps on AWS
  AWS DevOps: Introduction to DevOps on AWS  AWS DevOps: Introduction to DevOps on AWS
AWS DevOps: Introduction to DevOps on AWSDatacademy.ai
 
The Future of Web Application Architectures
The Future of Web Application ArchitecturesThe Future of Web Application Architectures
The Future of Web Application ArchitecturesLucas Carlson
 
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdf
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdfNode.js and the MEAN Stack Building Full-Stack Web Applications.pdf
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdflubnayasminsebl
 
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
 
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
 
Why Cloud-Native Kafka Matters: 4 Reasons to Stop Managing it Yourself
Why Cloud-Native Kafka Matters: 4 Reasons to Stop Managing it YourselfWhy Cloud-Native Kafka Matters: 4 Reasons to Stop Managing it Yourself
Why Cloud-Native Kafka Matters: 4 Reasons to Stop Managing it YourselfDATAVERSITY
 
Romulus crisan + radu pascal click'n'deploy
Romulus crisan + radu pascal   click'n'deployRomulus crisan + radu pascal   click'n'deploy
Romulus crisan + radu pascal click'n'deployCodecamp Romania
 
Care and feeding notes
Care and feeding notesCare and feeding notes
Care and feeding notesPerrin Harkins
 
Velocity NYC 2016 - Containers @ Netflix
Velocity NYC 2016 - Containers @ NetflixVelocity NYC 2016 - Containers @ Netflix
Velocity NYC 2016 - Containers @ Netflixaspyker
 
Lunar Way and the Cloud Native "stack"
Lunar Way and the Cloud Native "stack"Lunar Way and the Cloud Native "stack"
Lunar Way and the Cloud Native "stack"Kasper Nissen
 
Spring Boot & Spring Cloud on PAS- Nate Schutta (1/2)
Spring Boot & Spring Cloud on PAS- Nate Schutta (1/2)Spring Boot & Spring Cloud on PAS- Nate Schutta (1/2)
Spring Boot & Spring Cloud on PAS- Nate Schutta (1/2)VMware Tanzu
 
Microservizi e container Docker in produzione: strumenti e consigli
Microservizi e container Docker in produzione: strumenti e consigliMicroservizi e container Docker in produzione: strumenti e consigli
Microservizi e container Docker in produzione: strumenti e consigliAmazon Web Services
 
Building a full-stack app with Golang and Google Cloud Platform in one week
Building a full-stack app with Golang and Google Cloud Platform in one weekBuilding a full-stack app with Golang and Google Cloud Platform in one week
Building a full-stack app with Golang and Google Cloud Platform in one weekDr. Felix Raab
 

Semelhante a GreenButton-201502 (20)

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
 
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
 
Mage Titans USA 2016 - Jonathan Bownds - Magento CI and Testing
Mage Titans USA 2016 - Jonathan Bownds - Magento CI and Testing Mage Titans USA 2016 - Jonathan Bownds - Magento CI and Testing
Mage Titans USA 2016 - Jonathan Bownds - Magento CI and Testing
 
Final Report To Executive ManagersXXXXXCCA 625Un
Final Report To Executive ManagersXXXXXCCA 625UnFinal Report To Executive ManagersXXXXXCCA 625Un
Final Report To Executive ManagersXXXXXCCA 625Un
 
Building and Deploying a Static Application using Jenkins and Docker in AWS
Building and Deploying a Static Application using Jenkins and Docker in AWSBuilding and Deploying a Static Application using Jenkins and Docker in AWS
Building and Deploying a Static Application using Jenkins and Docker in AWS
 
AWS DevOps: Introduction to DevOps on AWS
  AWS DevOps: Introduction to DevOps on AWS  AWS DevOps: Introduction to DevOps on AWS
AWS DevOps: Introduction to DevOps on AWS
 
The Future of Web Application Architectures
The Future of Web Application ArchitecturesThe Future of Web Application Architectures
The Future of Web Application Architectures
 
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdf
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdfNode.js and the MEAN Stack Building Full-Stack Web Applications.pdf
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdf
 
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...
 
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
 
Why Cloud-Native Kafka Matters: 4 Reasons to Stop Managing it Yourself
Why Cloud-Native Kafka Matters: 4 Reasons to Stop Managing it YourselfWhy Cloud-Native Kafka Matters: 4 Reasons to Stop Managing it Yourself
Why Cloud-Native Kafka Matters: 4 Reasons to Stop Managing it Yourself
 
Romulus crisan + radu pascal click'n'deploy
Romulus crisan + radu pascal   click'n'deployRomulus crisan + radu pascal   click'n'deploy
Romulus crisan + radu pascal click'n'deploy
 
Node js
Node jsNode js
Node js
 
Care and feeding notes
Care and feeding notesCare and feeding notes
Care and feeding notes
 
Velocity NYC 2016 - Containers @ Netflix
Velocity NYC 2016 - Containers @ NetflixVelocity NYC 2016 - Containers @ Netflix
Velocity NYC 2016 - Containers @ Netflix
 
NodeJS
NodeJSNodeJS
NodeJS
 
Lunar Way and the Cloud Native "stack"
Lunar Way and the Cloud Native "stack"Lunar Way and the Cloud Native "stack"
Lunar Way and the Cloud Native "stack"
 
Spring Boot & Spring Cloud on PAS- Nate Schutta (1/2)
Spring Boot & Spring Cloud on PAS- Nate Schutta (1/2)Spring Boot & Spring Cloud on PAS- Nate Schutta (1/2)
Spring Boot & Spring Cloud on PAS- Nate Schutta (1/2)
 
Microservizi e container Docker in produzione: strumenti e consigli
Microservizi e container Docker in produzione: strumenti e consigliMicroservizi e container Docker in produzione: strumenti e consigli
Microservizi e container Docker in produzione: strumenti e consigli
 
Building a full-stack app with Golang and Google Cloud Platform in one week
Building a full-stack app with Golang and Google Cloud Platform in one weekBuilding a full-stack app with Golang and Google Cloud Platform in one week
Building a full-stack app with Golang and Google Cloud Platform in one week
 

GreenButton-201502

  • 1. Recently, I was explaining continuous integration to my parents. My mother is a retired OB Nurse who helped deliver hundreds of babies and my father is a retired broadcast engineer who helped deliver tens of thousands of hours of television. Sometimes I like to explain things to industry outsiders because it helps me solidify my own understanding of what exactly it is that I do. A lot of my clients use Amazon Web Services such as EC2, RDS, and Route53 to launch their application, and a surprising number of them simply manage their instances from the Amazon Web Site or even a mobile app. While these are the easiest ways do to it, it can be highly error prone trying to remember which size instances need to be launched. In addition, there is a great degree of tedium that is involved in building security groups, and determining what ports to block. Amazon has a great stack orchestration service called Cloudformation, that allows customers to upload a properly formatted JSON (JavaScript Object Notation) file to the site, and AWS will provision everything as described in the JSON. It’s a great way to build a VPC (Virtual Pri- vate Cloud) quickly, and correctly every time. Since the JSON file is an ASCII text file that is typically human edited, or perhaps generated from some other application, it lends itself to fit nicely into source control systems such as GitHub. Configuration artifacts can be checked out using git, modified with regular expres- sions and deployed to Amazon using the command line API. Initially I developed this as a Makefile, borrowing from decades of experience at the UNIX command line, then I realized I had access to a powerful CI (Continuous Integration) system known as Jenkins. Jenkins allows you to check out, build, and package releases and then add WHAT DOES THIS GREEN BUTTON DO? FEBRUARY 12, 2015 | JONATHAN | LEAVE A COMMENT Jonathan Kalbfeld What Does This Green Button Do? | Jonathan Kalbfeld http://jon.la/?p=62 1 of 2 2/15/15, 2:53 PM
  • 2. any other desired post install tasks through a configurable interface. After perfecting my JSON file for this particular client, I created a Jenkins project that checks out the JSON file, manipulates the entries in it with sed (Stream editor) and launches a com- plete stack, along with RDS instances, Route53 DNS configuration. This became the de facto way for developers to launch practice environments. I even added a timeout that would auto- matically terminate certain stacks after the end of the work day, like replicants from Blade Runner, in essence saving money by turning off lights, or in this case, expensive AWS re- sources. This initial effort took about two weeks of my time to develop, and saved hundreds of hours al- lowing developers to build and deploy their own environments, like Vagrant but on a much larger scale and in about 17 minutes. All they had to do was click the green button. That’s how continuous integration should be. It should be a moderate fixed cost effort, au- tomating as much as possible, and then a low marginal cost effort. If it takes 15 minutes of a developer’s time versus 2 weeks of a DevOps Engineer’s time, it’s a net savings of thousands of dollars. What Does This Green Button Do? | Jonathan Kalbfeld http://jon.la/?p=62 2 of 2 2/15/15, 2:53 PM