ci-cd and devops with ruby

20
CI/CD and DevOps with Ruby Make easy your life

Upload: pierluigi-riti

Post on 12-Apr-2017

713 views

Category:

Software


1 download

TRANSCRIPT

CI/CD and DevOps with Ruby

Make easy your life

Definition

DevOps is a set of practices intended to reduce the time between committing a change to a system and the change being placed into normal production, while ensuring high quality.

I don’t need DevOps there is no risk with my actual

process • On August 1, 2012, Knight Capital had an upgrade failure that ended up costing 440 million US Dollar• On August 20, 2013 Goldman

Sachs had an upgrade failure that, potentially, could cost millions of dollars

DevOps practice• In DevOps, the “Ops” people must be treat like as first-class

citizens from the point of view of requirements• The “Dev” people must be more responsible for relevant

incident• Enforce the deployment process used by all, including dev

and ops• Use Continuous Delivery• Use the “infrastructure as code”

DevOps life cycle processes

Requirements Development Build Testing Deployment Execution

• Operations people as first class stakeholders

• Get the Ops input when developing requirements

• Small Agile team• Limited

Coordination• Unit Testing

• Tools for building• Continuous

Integration

• Automate testing• User Acceptance

Testing

• Continuous Delivery

• Deployments Tools

• Continuous Monitoring

• Responding to error conditions

Continous DeliveryContinuous Delivery (CD) is a set of practices and principles in software engineering aimed at, building, testing, and releasing software, faster and more frequently. These principles help reduce the cost, time and risk of delivering changes, and ultimately value, to customers by allowing for more incremental changes to applications in production.

Build

DeliveryTest

Release

Continuous Delivery

Continous IntegrationContinuous integration (CI) is the practice, in software engineering, of merging all developer working copies to a shared mainline several times a day. The main aim of CI is to prevent integration problems.In XP, CI was intended to be used in combination with automated unit tests written through the practices of test-driven development. Initially this was conceived of as running all unit tests in the developer's local environment and verifying they all passed before committing to the mainline. This helps avoid one developer's work-in-progress breaking another developer's copy. If necessary, partially complete features can be disabled before committing using feature toggles.

CI/CD and DevOpsAccelerated Time to Market: CD lets an organization deliver the business value inherent in new software releases to customers more quickly.

Building the Right Product: Frequent releases let the application development teams obtain user feedback more quickly. This lets them work on only the useful features.

Improved Productivity and Efficiency: Significant time savings for developers, testers, operations engineers, etc. through automation.

Reliable Releases: The risks associated with a release have significantly decreased, and the release process has become more reliable. Improved Product Quality: The number of open bugs and production incidents has decreased significantly.Improved Customer Satisfaction: A higher level of customer satisfaction is achieved.

I need my featureI need stability

Development Operational

Wall of the m

iscomm

unication

QA

Development OperationsDevOps

Roadmap for DevOps• Improve the transparency across the company• Implement the CI and CD practice• Improve the communication between the Developer and the

Operational• Define some common rule for improve the communication• Change the company culture

Connect Jenkins with Git1. Grant the access to your private Git Repository2. Install the Git and GitHub Plug-in3. Grant access to your Jenkins to your Github instance4. Configure the Hook on Jenkins

Conclusion