KVS: Inside the Architecture of a Go Key-Value Store

Introduction KVS v1.0.0 has been released. KVS is a simple in-memory key-value store written in Go that can be used as a Go module or deployed as a standalone server. This post introduces the major features included in v1.0.0 and takes a deep dive into the core data structures: Red-Black Tree and LSM Tree implementations. Why Another Key-Value Store? Excellent key-value stores like Redis, LevelDB, and BoltDB already exist. So why build KVS? KVS started as a learning and experimentation project. The goal was to experience firsthand the design decisions and trade-offs involved in building a production-grade database. The result is a store with these characteristics: ...

2026-03-18 · 14 min · 2842 words · Sung-Kyu Yoo

What's New in ACOR v1.3.0

Introduction ACOR is a Go library that implements the Aho-Corasick algorithm with Redis as the backend storage. The latest version introduces four major features: Index APIs - Provides match position information Redis Topology Support - Supports Sentinel, Cluster, and Ring Command-Line Tool - Use directly from the terminal Server Adapters - Deploy as HTTP and gRPC services This post covers the usage and features of each. Index APIs Comparison with Existing APIs Previously, Find and Suggest APIs only told you which keywords matched. For text highlighting or position-based analysis, you had to calculate indices separately. ...

2026-03-17 · 7 min · 1488 words · Sung-Kyu Yoo

Ansible Molecule with Kind - Kubernetes Automation Testing with Docker

Introduction to Ansible Molecule with KIND Learn how to set up a Kubernetes automation testing environment by combining Ansible Molecule with KIND (Kubernetes IN Docker). Overview Ansible Molecule Ansible Molecule is a framework that helps test Ansible Roles in isolated environments using virtualization technologies. It supports various drivers and can integrate with KIND using the Delegated driver for Kubernetes environments. KIND (Kubernetes IN Docker) KIND is a tool that runs Kubernetes clusters as Docker containers. It allows you to quickly and easily create Kubernetes clusters locally, making it useful for: ...

2022-05-26 · 13 min · 2723 words · Sung-Kyu Yoo

Testing Ansible Roles with Molecule

Introduction to Molecule Molecule is a testing framework for Ansible Roles maintained by the ansible-community. With Molecule, you can systematically test Ansible Roles, enabling comprehensive testing using multiple instances, operating systems, virtualization providers, test frameworks, and test scenarios. Why Do You Need Molecule? When developing Ansible Roles, you face the following challenges: Limitations of Manual Testing: Manually running and verifying Roles each time is time-consuming. Multi-Environment Support: You need to ensure Roles work correctly on various operating systems like Ubuntu, CentOS, and Debian. Continuous Integration: Tests need to run automatically in CI/CD pipelines. Code Quality: Ansible code quality must be maintained consistently. Molecule provides the following features to address these challenges: ...

2022-05-26 · 10 min · 2031 words · Sung-Kyu Yoo

Various Terminology Used in the Workplace

I’m documenting terms I’ve encountered or learned while communicating and working in the workplace, so I won’t forget them and can refer back to them occasionally. This collection covers terminology used not only in software engineering but across business in general. Table of Contents MECE Dogfooding ISO 8601 Ice Breaking Housekeeping Job On-the-fly SLA/SLO/SLI Dogpile Effect Thundering Herd Zero Trust Shift Left Technical Debt MECE Source: Logical Analysis MECE without Duplication and Omission ...

2022-05-26 · 9 min · 1862 words · Sung-Kyu Yoo

ACOR v1.2.0 Release: Standard Project Structure and Bug Fixes

Introduction I’ve released ACOR v1.2.0. This version focuses on restructuring the project to follow Go standards and fixing a few bugs. Standard Project Structure v1.2.0 restructures the project to follow the standard Go project layout (#2). As the project grew, managing the file structure systematically became necessary. Following the Standard Go Project Layout guidelines: pkg/: Package code importable by external projects internal/: Private application code cmd/: Main applications This structure makes the project’s intent clearer and more maintainable. ...

2021-07-08 · 2 min · 272 words · Sung-Kyu Yoo

ACOR v1.1.0 Release: Migration to Go Modules and GitHub Actions

Introduction I’ve released ACOR v1.1.0. This version focuses on modernizing the project foundation rather than adding new features. Following the evolution of the Go ecosystem, I migrated the dependency management and CI/CD systems to current standards. Why Go Modules ACOR initially used Glide for dependency management. Glide was widely used in the community during the era when Go lacked an official dependency management tool. However, things changed when Go modules were officially introduced in Go 1.11. ...

2020-11-15 · 3 min · 445 words · Sung-Kyu Yoo

Developing Ansible Modules

Ansible provides features that make it relatively easy to write automation for large-scale server installation, application deployment, and service operations. It’s one of the methods enabling DevOps, Ansible runs over SSH and requires SSH access to remote machines. No separate daemons or agents are needed. Remote machines (for default Ansible Modules) only need Python 2.6 or higher installed. (Some modules may require additional Python modules.) Ansible Modules are recommended to guarantee idempotency. For modules that exceptionally don’t guarantee idempotency, be sure to document warnings. Introduction An Ansible Module can be thought of as a set of functions with a specific purpose in one Task of an Ansible Playbook. For example, if you need to “move a file from path A to path B”, you can use the “file” module provided by default in Ansible. ...

2017-11-14 · 8 min · 1636 words · Sung-Kyu Yoo

Introduction to Ansible Callback Plugin

This article focuses only on Callback Plugin among Ansible Plugins. Callback Plugin is a module used for various purposes such as logging data when specific events occur in Ansible, or writing to external channels like Slack, Mail, etc. This content is based on Ansible 2.2.1.0. What is Callback Plugin? Introduction Ansible Callback Plugin refers to plugins that can hook into various Ansible events and execute desired logic at those points. These callback plugins support defining callback functions for events like “before execution” and “after execution” for Ansible Tasks, Playbooks, etc. ...

2017-11-14 · 9 min · 1741 words · Sung-Kyu Yoo

Introducing ACOR: Redis-backed Aho-Corasick Implementation

Introduction String searching is a common problem in software development. Finding a single keyword is straightforward, but what if you need to search for hundreds of keywords simultaneously? Iterating through the text for each keyword would be inefficient. The Aho-Corasick algorithm elegantly solves this problem. Developed by Alfred V. Aho and Margaret J. Corasick in 1975, this algorithm can efficiently search for multiple patterns at once. ACOR is a Go library that implements Aho-Corasick with Redis as the backend storage. In this post, we’ll introduce ACOR, cover the basics of the Aho-Corasick algorithm, and walk through its usage. ...

2017-06-28 · 3 min · 620 words · Sung-Kyu Yoo