Skip to content

Instantly share code, notes, and snippets.

@adeisbright
Last active December 15, 2021 07:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save adeisbright/340510db94cf21a8af8b57e2d4c292b5 to your computer and use it in GitHub Desktop.
Save adeisbright/340510db94cf21a8af8b57e2d4c292b5 to your computer and use it in GitHub Desktop.
A DevOps primer

DevOps is a software delivery philososhpy that increases a teams capabiltity to produce results at high frequency. It is a combination of two words : "Development" and "Operations" which is a term that describes the operation of a team collaborating throughout a software production process.

In this DevOps training , we will focus on :

  1. How to change our software delivery process
  2. Using DevOps tools
  3. Testing Softwares
  4. Monitoring and Logging

For this course , we will be using NodeJS as the runtime environment for our API development. We will leverage on the services of the three major cloud computing providers.

What is DevOps

Let us take an Hypothetical ecommerce company (shoekiddies) that deals in the sell of shoes for kids. They have a team of developers and also a team dedicated to monitoring how the shoekiddies is running in production. There is a new plan to release a feature that enables parents to buy bundle shoes for group of kids.

The Developers have been assigned the task to come up with a solution to this. The Developers will make a plan that includes :

  • Designing the system (pick optimal algoritms)
  • Selecting appropriate data and file storage solutions
  • Pick a programming environment that supports there working processes (Programming Language , Server , etc)

And they go ahead to build the solution for this particular feature. To achieve this , they may break the developemnt team into :

  • Front end
  • Backend (Internal Web/Mobile API , external API development)

This team needs to be able to work together seamlessly to meet with the deadline. Should one part of the team wait for the other to complete before starting ? It could be yes , and that was a lot of teams work before now.

Waiting for a segment of a team to complete work before the other starts leads to delay and friction in delivery.

Assuming the friction between developemnt team is overcomed using the Waterfall model , what about software delivery ? Who delivers the software that ends users will see ?

Delivering software is a critical tasks and failures in delivery could lead to loss in revenue or lives.

If the company waits for System Managers to handle software delivery , the SM may not know how to configure the software to properly run in production.

We begin to hear phrase like : "it works on my system"

Those who build software should be empowered with the responsibility to deliver software. Before a software is delivered , it should be properly tested.

There needs to be an independent and working program that ensures build programs are tested before merging with existing programs.

So , we need a tool that handles automated testing for us.

When the software is finally launched , end users will be using it. A software may behave differently in production than in staging maybe as a result of user interaction or due to events that could impact reliability.

The operations team will be monitoring the software to pinpoint areas running below expectations or collecting metrics that could be used to further develop the business.

What if a failure occurs in production ? How fast can it be reproduced , fixed ,and shipped into production ?

DevOps solves the issues we've hightlighted above. DevOps is a Software Delivery Philosophy that covers :

  • People and Culture : There should be no barrier between teams. People should collaborate more
  • Processes and Practices : An agile process for software delivery is a critical part of DevOps
  • Tools and Technologies : Without the right tools , DevOps is not a sustainable model. Tools and technologies enable automation , continous integration , Configuration Management ,Infrastructure as code , testing , packaging , releasing , monitoring , and logging

A typical Development part for us to add DevOps could be :

  • Track our project with Git
  • Package our ready proeject with Docker
  • Add automated testing
  • Use Github
  • Setup Github action for CI/CD or use CircleCI
  • Link up our Repo to a Cloud Service using CI/CD pipeline
  • Gather Monitoring

So , DevOps covers :

  • Source Code Tracking
  • Collaboration
  • Containerization
  • Testing
  • Automation
  • Continous Integration and Delivery
  • Monitoring
  • Cloud Computing
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment