A brief Introduction to Cgroups in Linux
Nov 13, 2024
What is it? cgroups (abbreviated from control groups) is a Linux kernel feature1 that limits, accounts for, and isolates the resource (i.e CPU, memory, disk I/O, and network) usage of a collection of processes. It is essential for managing resource allocation in modern systems, especially in environments that require efficiency and isolation like containers, virtual machines, and multi-user servers. We can create multiple cgroups with parent-child relationships, as it is organized in a hierarchical structure.…
The RPC Protocol
Nov 10, 2024
What is it? Remote Procedure Call (RPC) is a protocol used in operating systems to enable high-level communication between programs. RPC relies on lower-level transport protocols like TCP/IP or UDP to transfer data between communicating applications. It establishes a client-server communication model specifically designed for network applications. Built on the eXternal Data Representation (XDR) protocol, RPC standardizes data representation for remote communication. XDR handles the conversion of parameters and results for each RPC service.…
VPC with Public and Private Subnets Using NAT
Nov 07, 2024
This posts touches on a VPC which we could use for production severs. We’d be deploying the servers in two Availability Zones (AZs), using an Auto Scaling group with managed instances, and an Application Load Balancer (ALB). The servers will be deployed in private subnets for security, be managed by an Auto Scaling group, and receive traffic from the load balancer. Since they are in a private subnet, connectivity to the Internet would be granted through the NAT gatway.…
Upgrading an ELK Stack
Oct 26, 2024
Recently, I upgraded an internal ELK stack that was running version 7.x components to 8.x. This post outlines the process that was followed (steps might be different for other versions). Also, this post does not deep-dive into the process since the excellent Elastic docs are available, and they are regularly updated. Please consider this a process outline, rather than a guide. This specific stack has been set up for enabling observability into application logs, and multiple other related logs, of which the average daily index size is at the north of 10 G owing to business requirements.…
A Brief Introduction to the Test Pyramid
Oct 25, 2024
The Testing Pyramid1 is a conceptual framework that helps software developers and quality assurance (QA) teams optimize the process of ensuring software quality. By structuring different types of automated tests into a pyramid, it emphasizes focusing on fast, low-level tests like unit tests at the base, progressing to more comprehensive but slower integration tests, and finally minimal end-to-end tests at the top. This approach reduces the time needed to identify issues in the code and enhances the reliability of the test suite by offering rapid feedback on code changes, ensuring that new features don’t break existing functionality.…
Merge Specific Commits from a Git Pull Request
Oct 21, 2024
The scenario Think of an instance someone submits a git pull request to one of your repositories. Now, if you’ve ever been in that position, you know sometimes there are good commits, and bad commits, all inside the same pull request. In instances as above, one way to move forward is accept the changes in specific commits (good), then have approved and merged. The tools We can use the cherry-pick functionality in git when encountered with scenarios as above, which allows us to “cherry pick” only the commits we want from another branch.…
Cloud Deployment Models
Oct 20, 2024
What is Cloud computing? Cloud computing may be desribed as the on-demand availability of IT resources via the internet, with a pay-as-you-go pricing model. Instead of purchasing, owning, and managing physical data centers and servers, you can use technology services like computing power, storage, and databases as needed from a cloud provider. This approach allows educational institutions to avoid tasks such as hardware procurement, maintenance, and capacity planning. When adopting cloud solutions, organizations can choose between several models: single cloud, hybrid cloud, and multicloud.…
Linux Containers (LXC) vs Docker
Aug 17, 2024
Tools of the trade In the rapidly changing world of software development, containerization technology has become an essential tool for developers seeking to improve efficiency and maintain consistency across different environments. Among the leading container technologies, Linux Containers (LXC) and Docker are particularly popular. It’s important for us to understand the distinctions between these options to choose the best tool that suits our project’s specific requirements. Linux Containers (LXC) Linux Containers (LXC) is a sophisticated virtualization technology that leverages core Linux kernel features to create lightweight, isolated environments, allowing multiple applications to run efficiently on a single host system.…
Building Docker Images in Kubernetes with Kaniko for Jenkins CI
Jul 28, 2024
Kaniko in Kubernetes with Jenkins The Case for Kaniko If we need to build a Docker image inside a k8s cluster, Kaniko is the tool for the job. I tried using k8s agent executers in Jenkins on my k3s cluster running on Linux containers. Since I’m running containerd as the container runtime in k3s, and did not want to run a priviledged container for building the images, I did some research on the subject, which made me stumble upon Kaniko1.…
K8s Resources: Controller vs Operator
Jul 27, 2024
Controller Kubernetes controllers are integral components of the platform, responsible for maintaining the desired state of native resources within a cluster. Controllers are designed to manage built-in resources, such as ReplicaSets, Deployments, and Services. Controllers follow the Kubernetes “controller pattern,” a control loop that monitors changes in the desired state and updates the cluster accordingly. For example, when a Deployment is created, the Deployment controller ensures that the specified number of replicas for a particular application is running.…