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.