GETTING STARTED WITH CONTINUOUS DELIVERY -...

Post on 15-Mar-2018

217 views 2 download

Transcript of GETTING STARTED WITH CONTINUOUS DELIVERY -...

GETTING STARTED WITH CONTINUOUS

DELIVERYLana Kalashnyk

@lana_vk wcgp.co

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 !

Lana KalashnykW Consulting Group

wcgp.coTwitter : @lana_vk

THANK YOU !!