DevOps

 What is DevOps?

Development and operations


the word DEVOPS is a combination of 2 words development and operation


this is culture that promotes the collaboration between development team and the operations team. With the help of DevOps , the application can be delivered faster and serve their customer need nicely



developer and tester


why do we need devops

thIs is more about how devops addresses dev and ops challenges



dev challenges

 

devops solution

 

code deployment time s higher

 

quick deployment of code

 

poor code management

 

effective ode management due to continuous integrations

 



ops challenges

 

devops solution

 

up time maintenance is difficult

 

maximum reliability of software uptime

 

poor code management

 

automation tools are highly effective

 

server monitoring is tough

 

continuous monitoring

 

feedback if not given well

 

continuous monitoring

 



Devops lifecycle



Devops is the effective collaboration between development and IT operations. It is not possible to understand Devops without knowing Devops lifecycle.



The important phase of DevOps life cycle are shown which promotes continuous integration and continuous monitoring


Devops vs agle

Customer                                                Developer                                    Operations

    +                                        <=====>        +                <========>            +

Software Requirements                            Tester                                            IT infrastructure


Agile approach address gap between customer and developer communities





DevOps approach address gap between developer and IT operations communication





Devops principles

customer- centric actions

end to end responsibility

Continuous integration and automate every thing

monitor and test every thing

work together as a team


devops automation tools


continuous integration

continuous delivery

configuration management

configuration monitoring



Continuous integration



Integrating all code changes into a single, authoritative code branch from which production environments are deployed / production software is build

'' failed to upload. Invalid response: Unexpected token U in JSON at position 0


enables early problem detection and provides immediate feedback on code quality, allowing for issues to be identified, diagnosed and fixed immediately, without interruption to a production environment















CI/CD

CI/CD stands for continuous integration and continuous deployment

one of the top challenges for software companies is to respond quickly to market and customer demands

facilitates agile software development methodology

simply put CI/CD is a practice of software development in which you're able to release updates at any time in a sustainable way

changing code is routine, development cycles are more frequent, meaningful and faster

Accepted worldwide to reduce the software development and delivery time



CI

CI is a practice of integrating code in a common branch and producing an artifact(build file / binary file) that can be deployed across environment

Developer merge their changes to the main code branch many time per day

each code merge triggers an automated code build and test sequence


The main point of continuous integration is to detect error as early as possible in build process



check-in ---> source repository ===> server (build, test, result)=====> result



CI pipeline process

Detect changes to the source code repository (new commit appear)


Analysis of the quality of source code(sonar)

project build

perform all unit tests

Generate deployable artifacts

status of report


CI trobleshooting

if any above steps fails


Integration may stop or continue depending on their severity and configuration of the detect


Result are reported to the team via email or chat system


teams fixed the defect and commits it again


task are carried out again



CD


Continuous delivery is an extension of continuous Integration

CD ensures that the code is ready and can be delivered


CD deploys all code changes to testing or staging environment in the build


CD enables builds to be released to the production environment when needed


CD effectively reduces time on the market




automated deployment of artifacts produced from the CI process

requires no human intervention

reduce the risk

painless deployment happier team

reduce cost

a fully automated and transparent 



Benefits of CI/CD

detecting bug in early stage- early bug detect less harm it makes

reduct bug count

the development process become more transparent team will are notified when build fails and what caused it

efficient since whole process is automated, manual testing is reduced


Benefits of CD

Reduce the risk

Painless deployment , happier team

reduce costs

a fully automated and transparent




Cost of implementing CI/CD

its an investment and as each investment has its own cost that are worth knowing before implementing this process



CI cost

multiple team need to collaborate

teams needs to write automated tests

server for automated tests

developers need to merge their changes as often as possible


CD

strong foundation in C process

testing culture must be at its best

cd precess reqre the highest quality of test

documentatoin need to be updated frequuently to keep tupn after deployments (JIRA)

the whole process



Some CI/CD tools


Bamboo


Jenkins


Octopus Deploy




TC



bamboo and octopus as CI.CD tools 

pull request 2 man rule

trunk based development

ticketing system


Jira-> Branch -> pull request-> build->Deploy


Bamboo

bamboo is a CI/CD tools that ties automated










for stakeholders in company













Configuration management

Configuration management is process for maintaining computer system, server and software in a desired consistent state

Configuration management applies to a verity of system but most often you will be concerned with these:

servers

database and other storage system

operating systems

networking

applications

software


Features of configuration management

  • classify and manage system by groups and subgroups
  • centrally modify base configurations
  • roll out new setting to all applicable system
  • automate system identification , patches and updates
  • identify outdated, poor performing and non compliant configurations
  • prioritize action
  • access and apply prescriptive remediation


Why configuration management
  • Idempotency
  • Distribution design to improve managing large number of remote servers
  • Helps you automate other wise tedious task and allow an organization to increase agility

Useful term

jinja
list
Dictionaries
Yaml(must have proper intendation)

list of dictionaries




Some popular CM tool
  1. Ansible
  2. Hashicorp Terraform
  3. CHEF
  4. Puppet
  5. Saltstack


imperative (how you do it)



Saltstack

released on 2011
open source
python based
declarative approach(What you want)
Organization like eBay, LinkedIn, oracle are using salt stack


why saltstack
execution speed
multi master
easy to learn and manage
windows support
saltstack community


saltstack and ansible is easy to learn



Saltstack terms

top.sls
init.sls
pillars
Grains
macros (class)


saltstack architecture








saltstack remote execute

salt * test.ping


target        Module.function
























Monitoring

  • DevOps lifecycle is continuous loop of several stages, continuous monitoring is the last stage in this loop



Tools. 


Orion








Alertsite








Nagios




Appdynamics















Comments