Understanding DevOps | Tools and Services
In my previous post, I described the fundamental concepts of DevOps and touched on some of the tools used in the process. In this post, I am diving deeper into the toolset we use at Saritasa to manage our DevOps process. Some of these tools are open-source and platform agnostic while others are more specific to Amazon Web Services (AWS), which is where we host most of the applications we develop for our clients.
Common DevOps Tools β Kubernetes & Terraform
As mentioned in my previous post, Kubernetes and Terraform are important components of DevOps. Kubernetes can be almost synonymous with DevOps, itβs very hard to separate the two. It is important to note that Kubernetes and Terraform are platform agnostic. They work with any cloud hosting platform and are not specific to AWS or Azure.
Kubernetes is an open-source application that aids with container orchestration. It helps automate deployment, scale, and networking. It makes it easier for DevOps engineers and developers to manage Containers.
Terraform is a tool that enables engineers to set up a template for configuring a hosting environment. These templates are called Blocks or Terraform Blocks. Terraform can help configure cloud hosting environments like AWS or Azure. A Terraform Block could be set up to configure numerous cloud hosting services, like setting up EKS, RDS, and VPC on AWS. More on this in the next section.
AWS Cloud Services
A big part of the DevOps language is all the cloud services an application might use. Setting up, configuring, and maintaining all these services is part of a DevOps engineerβs job. Below is a list of these services with a short explanation of what they are. These are AWS services, but Azure and Google Cloud offer similar services which have different names. If hosting an application locally (on your dedicated servers), you would use various utilities to manage these same resources.
- Route53 β Manages all the DNS β Points mydomain.com to the right place on AWS
- VPC β Virtual Private Cloud β The internal network for all the stuff on AWS
-
RDS β Relational Database Service β This allows you to set up any relational database on AWS. Relational databases include:
- MySQL
- SQL Server
- PostgreSQL
- Aurora (Amazon)
- EKS β Elastic Kubernetes Service β Amazonβs way of hosting Kubernetes
- NLB β Network Load Balancer β Balances the user load across multiple containers
- ECR β Elastic Container Registry β A directory for all the containers. It stores the containers we use and allows us to move them around easily.
- S3 β Storage β Think of this as disc space, but in the cloud.
- ElastiCache β Think of this as memory, enables better scaling and response time, like holding something in memory as opposed to a disc.
- SES or SendGrid β Email server
- EC2 β Elastic Compute Cloud β The cloud equivalent of a processor
Other DevOps Services
Not all DevOps services are specific to AWS. Hereβs a list of tools we use in our DevOps process that are not specific to AWS.
-
- Cert-Manager β Manages SSL (security) certifications in the cloud
- Tekton β An open-source continuous integration / continuous deployment (CI/CD) framework that helps standardize tooling and processes across languages and environments.
- Argo-CD β A continuous deployment framework that automates the deployment of application versions, aka version control. Version control helps keep deployments auditable, trackable, and, easy to understand.
- Grafana β Monitoring tool for optimal application performance. This tool enables the user to create custom dashboards to display performance and resource usage metrics. We use a set of standard dashboards for all our implementations so that any of our DevOps Engineers can easily understand the state of any application deployment.
-
Prometheus β Used to collect metrics and integrated with Grafana
- Alert Manager β Works with Prometheus to route alerts. For example: send an email to Devops if something is slow.
- Loki / Promtail β Manages application log files and allows you to query all of them at once.
- Tempo/Open Telemetry/Jaeger β Tracing tools, monitoring performance, and troubleshooting transactions
- Velero β is used for backups
- Teleport β Security platform that enables the management of access for everything in one place.
The Importance of a Standardized DevOps Process
There are many tools and services used to manage a DevOps process for an application hosted in the cloud. While this may seem like overkill, many of these tools are critical for a seamless flow from development to deployment. Consider that you must maintain and manage three typical environments for an application; Development (where the coding happens), Staging (Where QA and Testing happened), and Production (where the end users access the application). Maintaining and managing all the services for each environment while migrating code from one environment to another is a complex process with many moving parts and a lot of little details. It is good to have a well-formed and standardized set of tools and services to avoid any performance issues or application downtime.
At Saritasa we use a standardized deployment to AWS using the same toolset and set of services so that each deployment we perform is very similar. Doing so means that any of our DevOps engineers are immediately familiar with any deployment. There is no reliance on specific application knowledge to maintain the process day to day. This provides a high level of redundancy within our DevOps team; any engineer can work on any application efficiently with little or no ramp-up time.
Recommended for You
Check out related insights from the team
Get empowered, subscribe today
Receive industry insights, tips, and advice from Saritasa.