Post on 15-Mar-2018
ABOUT ME• Lana Kalashnyk
• BAAS Computer Science minor Business Administration
• AS in Computer Science emphasis on Networking
• Cisco CCNA I-IV, Red Hat JAX-RS, NetSuite, WPF, Oracle Java training
• Houston Java User Group, Houston .Net User Group, Texas DevOps User Group, PuppetConf
• On Center Software 8+ years enterprise software development for high availability platforms
• W Consulting Group. Consulting services in cloud platforms design to customers debt trading, auto finance and defense industries.
• Some of our past projects
• Debt Trading
• Defence
• Auto Finance
• Construction
Continuous Delivery ?
WHY TALK ABOUT CONTINUOUS DELIVERY?
• Not a new concept
• Many not sure what it means
• Few actually use it
WHAT IS CONTINUOUS INTEGRATION?
Continuous Integration (CI) is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early. (ThoughtWorks)
WHAT IS CONTINUOUS DELIVERY?
Continuous Delivery (CD) is a software engineering approach in which teams keep producing valuable software in short cycles and ensure that the software can be reliably released at any time.Techniques such as automated testing and continuous integration (CI) allow software to be developed to a high standard and easily packaged and deployed to test environments, resulting in the ability to rapidly, reliably and repeatedly push out enhancements and bug fixes to customers at low risk and with minimal manual overhead. (Wikipedia)
WHAT IS DEVOPS?Born of the need to improve IT service delivery agility, the DevOps movement emphasizes communication, collaboration and integration between software developers and IT operations. Rather than seeing these two groups as silos who pass things along but don’t really work together, DevOps recognizes the interdependence of software development and IT operations and helps an organization produce software and IT services more rapidly (New Relic)
CONTINUOUS DELIVERY IS NOT CONTINUOUS DEPLOYMENT
Continuous Delivery doesn't mean every change is deployed to production ASAP. It means every change is proven to be deployable at any time - Puppet ( Carl Caum)
While continuous deployment may not be right for every company, continuous delivery is an absolute requirement of DevOps practices. Only when you continuously deliver your code can you have true confidence that your changes will be serving value to your customers within minutes of pushing the "go" button, and that you can actually push that button any time the business is ready for it. (PuppetLabs)
STAGES OF CONTINUOUS DELIVERY
Theory:
Module Unit Tests
Platform Tests Deliver
To Staging
ApplicationAcceptance
TestsDeploy ToProduction
Post DeployTests
Build
Fully Automated Steps
STAGES OF CONTINUOUS DELIVERY
Practice : Write down the actual steps in your Development Process
Commit
Code
Build
Test Stage Deploy
AGILE & CONTINUOUS DELIVERY
• Continuous Integration was born in Agile roots
• Continuous Delivery was born out of CI, hence inherits its Agile qualities
REAL WORLD ISSUES
• Broken deployments
• Magical servers
• Exciting releases
WHAT IF YOU AREN’T A DEVOPS PRO ?
• Engineering approach not tools
• Scope wisely
• Be Agile
FAST TRACK ROAD MAP• Start Small & Simple
• Think The biggest ROI
• Monitor your process !
• Think in abstract terms
• Educate your team
START SMALL & SIMPLE
• Start with small tasks
• Automate things you understand
• Don’t automate the automation
THINK THE BIGGEST ROI
• Automate the most re-used components .
• Automate the most error-prone components.
• If time / budget are an issue don’t automate UI testing. UI changes too frequently
MONITOR YOUR PROCESS!
• Automation has to be monitored!
• Feedback is the reason we automate
ADOPT THE PRINCIPLES NOT TOOLS
• Speak in CD terms not tools
• Containers not “Docker”
• Automated testing not “Cucumber”
EDUCATE TO BREAK DOWN THE SILOS
• Introduce CD into Development
• Agile needs cross team collaboration. Educate the team !
• Automated testing is a must.
BONUS : IMMUTABLE CONTAINERS
• Immutable - not changeable
• Don’t waste time updating servers.
• Updating live environments is dangerous
• Deploy new ones
• Turn off the old ones when ready
BONUS: ONE STEP DEPLOYMENTS
• Quote “ If your setup is longer than one line, you are coding in prototype”
• Offload custom steps into scripts
REVELATIONS
• Non DevOps Engineers should be involved in Continuous Delivery !
• CD lets you re-purpose the Super Stars
• Boring is good
• Frequent Releases make Developers happy
JOIN THE PARADE
• Stepping into DevOps / CD can feel like :
• “Stepping out of an office building into a parade”
• Explosive innovation in CD/CI/DevOps space
HOW TO SELECT YOUR TOOLS
• Thinking of Continuous Delivery as an approach rather than a particular tool implementation helps with solving a problem not adopting a hot trend.
Puppet JMeter SonarQubeChef Arquillian Jenkins PylingSalt Selenium Go CD JSHintAnsible TestComplete Cloud Bees New RelicPacker Bamboo Snap Logic MonitorDocker Vagrant CA Release
AutomationPager Duty
LXD Jenkins Live Rebel Server SpecRocket GO CD DerbyIT Test KitchenDrawBridge TeamCity Maven CucumberSpoon Bamboo Ant Chaos MonkeyCodeDeploy RDS for PostGRES Rake BASHCloud Formation RDS for MySQL Gradle CURLOPSWorks IBM Urban Code Grunt EC2CLI TeamCity Python Code ClimateCode Pipeline Electric Cloud Cucumber SonarCode Commit and many many
more…
Continuous Delivery Tools Continuous Integration Tools
DevOps Tools
Puppet SonarQubeChef Arquillian Jenkins PylingSalt Selenium Go CD JSHintAnsible TestComplete Team City
BambooBamboo Snap Logic Monitor
Docker Packer
Vagrant Cucumber
CA Release Automation
Pager Duty
LXD Rocket DrawBridge Spoon
Live Rebel DeployIT
Server Spec JMeterTest Kitchen Cucumber Chaos MonkeyCode Climate
Maven SonarAnt
CodeDeploy Code Commit
RDS for PostGRES RDS for MySQL
Rake Gradle Grunt
BASH Python CURL
Cloud FormationOPSWorks IBM Urban CodeCLI TeamCityCode Pipeline Electric Cloud
Containers
Configuration/DevOpsTest Automation
Amazon AWS
CI
DB Scripting
Monitoring
Testing
Scripting
Build
Infrastructure / Load
CI/CD
REFERENCES• Wikipedia
• ThoughtWorks
• Docker
• PuppetLabs
• New Relic
• Jenkins
• CloudBees
SAMPLE IMPLEMENTATION• First Let’s see what we need :
• 1. Build Tool : Maven
• https://maven.apache.org/download.cgi
• 2. CI Tool : Jenkins
• https://jenkins-ci.org
• 3. Automated Testing Arquillian / Selenium / Cucumber
• http://arquillian.org
• https://cucumber.io
• http://www.seleniumhq.org
• 4. Provisioning tool for new Servers :
• https://puppetlabs.com/download-learning-vm-thank-you
• https://www.cloudbees.com/event/continuous-delivery-jenkins-and-puppet-debug-bad-bits-production
SAMPLE IMPLEMENTATION• 5. Container Tool : Docker
• http://www.docker.com
• 6. Monitoring Tool: Logic Monitor
• http://lp.logicmonitor.com
• http://www.pagerduty.com/
• 7. Vendors Sample Demos
• Puppet & Jenkins (CloudBees)https://www.youtube.com/watch?v=vl3ElHTXt78
• GoCD and Docker
• http://www.go.cd/2014/05/18/manage-agents-with-docker.html
RAFFLE !