Folks working with Kubernetes would be able to relate to the word “K8ssandra” very quickly. Something related to Kubernetes (more fondly called K8s). Yes, that is right.
Apache Cassandra is a preferred database for many large-scale applications. Kubernetes has been providing orchestration tooling and infra for several of these applications. Combining these two under a single umbrella helps enterprises to meet their requirements easily.
What is K8ssandra?
It is a cloud-native distribution of Apache Cassandra that runs on Kubernetes. Pronounced as “kate”+”Sandra”, this is an open source project licensed under Apache Software License v2. This project provides a plethora of tools to provide data APIs and automated operations for Cassandra. This includes tools for monitoring, services for site reliability, and backup/restore tools.
Cassandra is a distributed database management system. It is a free and open source project that provides a scalable, highly available, fault-tolerant, column-oriented database to support large amounts of data across many commodity servers.
Kubernetes is a portable, extensible, open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available. (Source)
Creating, deploying managing various components of Kubernetes structure such pods, deployments and ConfigMaps could be time intensive and complex. As your architecture grows, this becomes all the more difficult. However, K8ssandra does the heavylifting for you. And as a infrastructure engineer or even a developer, it is always better if you have a reliable tool who does that job for you.
It provides a set of components which are glued together as part of the installation process itself. The following components are packaged and installed:
Reaper for Cassandra
Medusa for backup/restoration
Metrics collector with Prometheus integration and visuals via Grafana
This is yet another tool in the armoury of a DevOps engineer. In simple terms, Capistrano is a remote server automation tool.
Developed on Ruby, Rake, and SSH, this tool allows the DevOps team to deploy web applications to several machines simultaneously. Additionally, it also allows the engineer to script arbitrary workflows over SSH and automate common tasks in software teams.
The tool has a scripting approach, and hence it is very easy to tie it up with other scripting tools and form a part of larger toolset.
Some key features of Capistrano are:
Strong Convention: It has a standard deployment process that all Capistrano-enabled projects follow by default. Capistrano has a well defined structure which is easy to follow across the projects.
Multiple Stages: Once a flow is developed, you can simply parameterise the script for different stages/environments (QA, staging, UAT, and production)
Many-a-times simple bash script can also do the job for a DevOps engineer. However, it always helps to have a structured way of automated deployment. Tools like this one allow the agile teams to achieve their goals in shorter timespan by automating simple tasks. Other similar tools include Ansible, Chef/Puppet etc. Even Docker can address some of the automation tasks if they are as simple as creating a new image and using it across the server farm.
“What Gets Measured, Gets Improved” said by Legendary Peter Drucker and rightly so. Unless you know how something is performing, you can’t even plan to improve it. And this has become all the more important in current age of millions of applications and devices which operate all around us. If one wants to improve the usability and functioning of that App or that remote sensor, she would need to collect lot of data and this is where Telemetry” comes into picture.
Hey! I have built this cool application for Ubuntu users. And I want other users to use it. Do you know how can I publish it? Worry not. Ubuntu has a way identified to help developers publish their applications and make them available for installation and regular updates through a standardized mechanism. PPA is your answer.
These days a typical deployment consists of at least a couple of servers, behind a load balancer and a database. As your application complexity grows, you continue to add more components. Then you start collecting tons of messages from logs of all these applications. And the problem starts there! It is not easy to keep track of logs from all these components and detect patterns or anomalies which could trigger further action. Logstash helps solve this problem.