CI/CD Pipelines
Agile practices with Devops
Continuous Integration Continuous Delivery Continuous Deployment
DELETE
Used to delete a resource. Idempotent Not safe Not cacheable Not form allowed May have request body May have response body
Has request body means
the request can contain content in the request body
When is CD achieved
when every change is proven, by automated process, to be deployable at any time.
Continuous Integration establishes the foundation for an automated DevOps pipeline, because
-Ensures the entire team works on the most up to date code --Frequently pushing code allows developers to account for changes performed by other team members quickly. -Detects broken builds quickly --If problems arise, version control software can help detect the root cause or rollback changes when necessary. -Code can be tested easily by creating separate, test or development branches based on the mainline code. -Reduces risk in development when a large codebase has already been established. -Reduces the overall amount of bugs in a project
POST
-Sends data to he server. Commonly used for creation of and updating resources. Response body generally contains the updated resource representation. Not idempotent Not safe Typically not cacheable Form allowed Has request body Has response body
PUT
-Sends data to server. Commonly used to replace current resource representation with the content contained in this request. Idempotent Not safe Not cacheable Not form allowed Has request body No response body
Get http request
-used to retrieve data Idempotent Safe Cacheable Form allowed No request body Has response body
The steps or phases for Dev Ops
1. Source code Control: Producing (writing) code and pushing to a repository 2. Building and Testing Automation: Test basic functionality of code (Generally unit testing) and create a new, working build 3. Deploying to Staging: Deployment of working build to a temporary environment 4. Acceptance Testing: Undergo other more complex tests (systems, integration) within temporary environment 5. Deployment of Build: Migrate working build to Production environment accessible by end users
Aggregate Functions
Aggregate functions perform operations on a set of data and produce a single output for the whole set. COUNT() SUM() AVG() MIN() MAX() FIRST() LAST()
Pros and cons of continuous Deployment
Benefits of CD: Rapid development process Rapid feedback Smaller and less risky releases Regular updates offering users improvements Costs: Requires substantial initial investmentMoneyTimeMajor paradigm shift Requires continuous investment for maintaining pipeline Documentation, communication, coordination become even more important
Continuous Delivery depends on
CI and is a stepping stone on the way to CD (a fully automated development pipeline).
Advantages of jenkins
Completely Open Source Free Supports all Operating systems Supports all source code repositories
Devops vs agile
Devops: -involves the creation of a systematic approach to producing code -pertains to the entire system working together to produce, test, deploy and maintain the code base Agile: -place a focus on producing code through iteration and collabortion rather than following a rigid plan -mentality that focuses on creating products by adapting to change quickly, seem contradictory -allow for each step of that process to change wherever and whenever needed.
How does CI work?
Each time a developer completes some amout of work and merges that work with the repository, each unit of that new code is tested, and then that new code is integrated and tested with the rest of the code -If testing methodology is done well, this should provide rapid feedback about bugs and failures as each module develops
disadvantage of jenkins
Requires custom jenkinsfile syntax for pipeline configuration
Scalar functions
Scalar functions perform operations on a set of data and produce one output for each input. LCASE() UCASE() LEN() ROUND() NOW()
Devops
a combination of Development and Operations, is a set of practices and methodologies designed to combine the development (production/writing of code), deployment and maintenance of code into a streamlined process.
Continuous Delivery
a paradigm in which the building, management and testing of produced software is automated such that deployments can be performed at the push of a button. -seeks to automate every possible step up to but not including deployment
Agile
a philosophy utilized when approaching the creation of information systems, and is a flexible approach of addressing the steps of the Software Development Life Cycle
Jenkins
a self-contained, open source automation server, which can be used to automate the building, testing and deployment of software. Jenkins can be installed standalone, through native system packages, or using Docker.
Has response body means
a successful response should contain content in the response body
Jenkins Pipeline
a suite of plugins which support the implementation of a Continuous Delivery Pipeline in Jenkins
Continuous Deployment
advances continuous delivery by also automating the deployment of software to production environments -refers to the entire automated development pipeline including merging of code, testing, staging, and finally deployment.
Practicing infrastructure as code means
applying the same rigor of application code development to infrastructure provisioning.
The primary goal of DevOps is to
expedite the lifecycle of application development, particularly through the automation of tasks.
The goal of Devops and Agile is to
produce working and valuable product more efficiently
Development teams who practice an Agile methodology place a focus on
producing code through iteration and collabortion rather than following a rigid plan
Continuous Integration (CI)
the most fundemental step in creating an autonomous development pipeline -achieved by the practice of consistently merging code into a central repository. -benefits greatly from the inclusion of rigorous testing as part of your CI process. Particularly important are unit and integration testing.
Unit testing
the process of testing individual software units, like methods or functions. -The idea is to test each component in isolation to make sure it behaves as expected.
Integration Testing
the process of testing modules of software, composed of many units. -Modules are combined and tested to make sure they behave as expected.
A fundamental principle of DevOps is to
treat infrastructure the same way developers treat code.