Achieving boto3 Compatibility in a Local AWS Emulator

Introduction Developing cloud-native applications comes with recurring pain points: AWS calls in CI pipelines incur costs, development stops without VPN, and onboarding requires credential setup. DevCloud is a local AWS emulator that solves these problems entirely offline. It achieves 671/699 test cases passing (96%) in boto3 compatibility tests. That number isn’t just a test pass rate — it’s a measure of how precisely the protocol layer replicates AWS behavior. This post explains how a single Go binary achieves this level of compatibility, covering protocol detection, serialization challenges, the plugin architecture, and the path from 96% to production-ready. ...

2026-04-19 · 13 min · 2630 words · Sung-Kyu Yoo

Auto-Generating AWS Services from Smithy Models

Introduction AWS provides over 200 services, each with its own API protocol and request/response structure. Manually implementing them one by one is practically impossible. At DevCloud, we built a codegen pipeline that reverse-engineers AWS’s internal modeling language, Smithy, to auto-generate Go code for nearly all AWS services. This post covers the full flow from parsing Smithy models to generating Go code, and how the auto-generated code powers a local AWS emulator. But the more fundamental question is: why generate code from an IDL at all? To understand the value beyond simple “productivity automation,” we need to first understand the problem this approach solves. ...

2026-04-19 · 17 min · 3477 words · Sung-Kyu Yoo

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 v0.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 v0.2.0 Release: Standard Project Structure and Bug Fixes

Introduction I’ve released ACOR v0.2.0. This version focuses on restructuring the project to follow Go standards and fixing a few bugs. Standard Project Structure v0.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 v0.1.0 Release: Migration to Go Modules and GitHub Actions

Introduction I’ve released ACOR v0.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