DevOps fundamentals terminologies and tools

Default featured post

DevOps fundamentals terminologies and tools. This post is about DevOps basics which essentially consists of a compiled version of some of my notes and a bunch of my recent Toots in my Mastodon account, here.

What’s DevOps

DevOps is culture and practice that aims at unifying software development (Dev) and software operation (Ops). It’s initiated by Patrick Debois. Keep in mind that DevOps is not a set of tools.

Benefits of DevOps

  • Fast time to market (TTM)
  • Few production failures
  • Immediate recovery from failures

What’s Continuous Integration

Continuous Integration refers to merging all developer working copies to shared mainline several times a day to build and run tests automatically.

What’s Continuous Delivery

Continuous Delivery refers to keep the code ready to deploy regardless of deploying it or not.

What’s Continuous Deployment

Continuous Deployment refers to deploying the small code changes multiple times to the production.

Benefit of Continous Deployment

With continuous delivery and continuous deployment, the deployment process is not a big and scary stage anymore because they are the day to day practice which is highly automated and has the ability to rollback quickly. In other words, fail fast and recover fast.

What’s Infrastructure as code

Infrastructure as code refers to provisioning and managing infrastructure through the code and highly automated.

Benefits of infrastructure as code

  • Consistency because of automation.
  • Reusability because of having infra code committed somewhere.
  • More manageable
  • Self-documented

List of DevOps related tools

Tools automation in different languages

  • Java: ant, maven, gradle
  • Scala: sbt
  • JavaScript: npm, grunt, gulp
  • Unix: Make
  • Python: pip

For the full list refer to this link.

Known CI tools

  • Jenkins
  • Circle CI
  • Travis CI
  • TeamCity
  • Bamboo
  • GitLab CI

Configuration management tools

  • Ansible
  • Puppet
  • Chef
  • Salt

The advantage of Ansible is that it doesn’t require a control server. So you can push the changes to the server via your laptop. If you wish to have the server, you can have Ansible tower. It also doesn’t require an agent. It relies on simple ssh. This is exactly opposite of Puppet and Chef.

Infrastructure monitoring tools

  • Datadog
  • New Relic

Application monitoring tools

  • New Relic
  • Istana
  • AppDynamics

Log analytics tools

  • ELK stack
  • AWS CloudWatch

Tools for infrastructure as code:

  • Terraform
  • AWS Cloud Formation
  • Chef OpsWork

Tools for orchestration:

  • Docker Swarm
  • Kubernetes
  • Apache ZooKeeper

What’s Infrastructure as a Service (IaaS)

infrastructure as a service (IaaS) is a form of cloud computing that provides virtualized computing resources over the internet. IaaS takes care of bare OS and network connection, hard disk, CPU, etc.

  • AWS (Amazon EC2)
  • Microsoft Azure
  • Google Compute Engine

What’s Platform as a Service (Paas)

Platform as a Service (PaaS) is an abstraction layer over everything and developers just need to take care of about the application and data layer.

  • Heroku
  • OpenShift
  • AWS Elastic Beanstalk
  • Google App Engine

What’s Software as a Service (SaaS)

Software as a Service (SaaS) means everything is ready and users just need to consume it.

  • Gmail
  • Microsoft Office 365

What’s Function as a Service (FaaS)

Function as a Service (FaaS) or Serverless abstracts everything and developers just need to deploy small single purpose function with being worry about the infrastructure and scalability

  • AWS Lambda
  • Microsoft Azure functions
  • Google Cloud functions

A great resource for discovering #DevOps tools is XebiaLabs Periodic table.