Skip to content

A simple Linux shell scripting project, with focus on shell basic and shell permissions implementation.

Notifications You must be signed in to change notification settings

musakanneh/alx-system_engineering-devops

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

System Engineering Devops

Overview

DevOps is not a specific position, nor is it a set of tools. It is rather a movement/culture centered around the marriage of development and operations teams, which have traditionally been siloed within a company. It is an outgrowth of the Agile methodology which emphasizes rapid software development through small but continuous changes to a company’s codebase, rather than large and infrequent overhauls. DevOps seeks to encourage collaboration between the software developers who write the code, and operations (systems engineers, system administrators, release engineers, database administrators, network engineers, security professionals, etc.) who put the code into production.

Several separate concepts/services have been developed out of the DevOps movement such as:

  • Build Automation

    • Build automation is the process of using tools to automatically build code from source in order to prepare it for deployment to a live environment. This includes compiling, linting, minifying, transforming, and unit testing.
    • Some of the benefits are that it makes building fast, consistent, repeatable, portable, and reliable.
  • Continuous Integration

    • The process of continuously pushing code and integrating with the code base.
    • It is done with the help of a CI server which executes automated builds/tests.
    • If there is a problem, developers are notified so that they may act upon bugs immediately.
    • It eliminates the scramble to release that is a frequent issue with monolithic architectures, makes frequent releases possible, and makes continuous testing possible.
  • Continuous Delivery

    • Continuous delivery is about always maintaining code in a state which could be pushed into production.
    • This allows changes to be rolled back much more easily.
    • The benefits include a faster time to market, fewer issues with deployment, and lower risk.
  • Continuous Deployment

    • Continuous deployment consists of frequently making small changes to code which are pushed to production continuously.
    • This differs from continuous delivery in that it is about actually pushing the code into production, rather than maintaining it in a state which is ready for deployment.
  • Infrastructure as Code (IAC)

    • IAC is about managing and provisioning infrastructure through code and automation
    • Infrastructure consists of servers, instances, environments, containers, clusters, etc.
    • IAC allows for consistency, reusability, and scalability.
  • Configuration Management

    • CM is the process of maintaining and changing the state of infrastructure in a consistent and stable way.
    • eg. upgrade a software package on a bunch of servers automatically rather than manually.
    • CM saves time, provides insight into current state of infrastructure, and is maintainable because the infrastructure is stable.
  • Orchestration

    • Orchestration is a type of automation that supports processes and workflows, such as the provisioning of resources.
    • eg. a system is experiencing increased load, a customer or monitoring tool recognizes an increased need for resources, and automatically puts together additional resources.
    • It is scalable, stable, time-saving, and self-servicing.
  • Monitoring

    • It is the collection and presentation of data about the performance and stability of services and infrastructure.
    • It collects information and statistics on memory use, cpu, disk i/o, application logs, network traffic.
    • Provides real-time notifications; postmortem analysis.
    • Allows for fast recovery, better root cause analysis, visibility across teams (both dev and ops), and automated responses.
  • Microservices

    • A particular software architecture which breaks an application up into a collection of small, loosely-coupled services.
    • The services work together via APIs
    • Microservices are modular which reduces complexity in maintenance, technological flexibility (you can use different tools, languages, etc.), and provide optimized scalability,

As mentioned above, DevOps is not a set of tools, however, in order to make the idea a reality, several tools have been developed.

Example DevOps Tools:

  • Build Automation
    • Java - ant, maven, gradle
    • Javascript - npm, grant, gulp
    • Unix-based - Make
    • Machine images and containers - Packer
  • Continuous Integration
    • Bamboo
    • Gitlab
    • Jenkins
    • Travis CI
  • Configuration Management
    • Puppet
    • Chef
    • Ansible
    • Salt
  • Virtualization and Containerization
    • Vagrant
    • Docker
  • Monitoring
    • SenSu
    • SumoLogic
    • NewRelic
    • AppDynamics
    • DataDog
  • Orchestration
    • Docker Swarm
    • Kubernetes
    • Zookeeper
    • Terraform

For a more full listing of DevOps tools, see the Periodic Table of DevOps Tools

Check out:

About

A simple Linux shell scripting project, with focus on shell basic and shell permissions implementation.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published