just kill it
Click here to load reader
Post on 23-Feb-2017
Embed Size (px)
Just Kill [email protected] | @paulwhitmer
Practice hopefully at least twice.Create demo:Simple web appGOCDDeploy app to AWS Show it
Legacy Code ExpertFull Stack ConsultantC#/VB/Perl/AngularJS/Node/Cloud
Full Stack ASP.NET MVCC#/AngularJS/NodeJS/CloudLinux/WindowsDevOps TIG Mentor
The goal is to deliver new features and not worry about the servers. Increasing value to our customers.
Jim: why should we care?Paul: Faster turn around for application development. Never worrying about checking in builds. Unit testing and behavioral testing the application before launch.4
Our ExperienceA little historyGo back to basics, when high level tools fail to deliverHow do we do it now?BuildDeployRemove human interaction
Paul: Jim, how did we get here?
BuildAutomatic: continuous integration on check-insCheck-in frequently to get feedback more oftenCreate fast builds to tighten up the feedback cycleReveal any hidden assumptions about your build
Jim: Discuss what a build server is.6
Build: GoCD polls git repository for changes
Jim: explain this process!!! 7
Build: Build fast
Jim: What were some ways that we were able to speed up the build and deployment times?Paul: Lesson learned we attacked the weaknesses.8
Build: Check-ins often
Example WebserverDeveloper makes changes and checks inBuild server detects changes and agent in cloud runs tests and builds softwareFinal product is zipped up and stored on cloud file serverBuild server generates a custom boot script from a template and launches a new instance to kick off the deploy
Paul: We use grunt to run our build tests and deployment from the gocd agent.10
Launch ScriptWhere to find the codeFirewall configurationSecurity RolesNetwork/VPN configurationRemote access keysSo many details automate them!
Paul: We use grunt to run our build tests and deployment from the gocd agent.11
Deploy QuicklyLoad baseline instance with custom boot scriptPull and run pre-built code from online file storageConnect to load balancer
Create amazon ami with utilities and bootstrapping software
Nodejs pre installed to run utility scripts and app itselfPreconfigured to allow non-root to run on port 80Utility scripts to fetch app packages from repositoryHealth monitoring and logging scripts
Boot scriptDownload my app, unzip, and run appAdd thy self to load balancer and wait to become healthyTell load balancer to remove other instances with a different versionTag thy selfWait ten minutes then start "Death Cron
Its another script!A generic script that the boot script invokes with parameters.
Remove human interactionNo human needs to kickoff a build/deploymentScripts are built from template for each environmentEnvironment itself has been mostly built from script as wellSelf cleaning instance destruction
Cron jobRuns every minuteAm I attached to the load balancer?No?Amazon, please kill meYes!The world loves me, keep going and check it again in a minute
aka "Death Cron"
Back To basics
High level tools promise magic, but can deliver their own set of problemsBeanstalkCloudformerDockerWhen a tool doesnt deliver, kill itRevisit the tool with a better understanding of underlying mechanics.