단순한 질문 하나가 만들어낸 여러가지 관점. "왜 CPU가 throttling을 하나요"라는 간단한 질문에 숨겨진 의도를 읽는 과정에 대한 짧은 글.
2026년 4월 15일글
- "왜 CPU가 throttling을 하나요?"에 답해보세요
- Istio 2편: Envoy config로 해부하는 Ambient mode
Istio Ambient mode의 HBONE 터널링과 traffic redirection이 Envoy config에서 어떻게 구현되어 있는지 살펴봅니다.
2026년 4월 14일 - Istio 1편: 왜 Istio Ambient mode인가?
채널톡의 Istio Ambient mode의 도입 배경과 동작 원리를 소개합니다.
2026년 3월 20일 - AuthorizationPolicy의 ext_authz를 Envoy config로 톺아보기
Istio AuthorizationPolicy의 action: CUSTOM이 Envoy config에서 어떻게 동작하는지를 실제 envoy config dump 기반으로 분석합니다.
2026년 3월 10일 - 오랜만에 만난 Python async 함정: 동기 함수 하나가 Liveness Probe를 막았다
CPU-bound sync 함수를 async handler에서 직접 돌렸던 실수가 /v1/health를 막았던 이야기
2026년 2월 17일 - HTTPRoute에서의 RegularExpression Path Matching
Istio의 HTTPRoute Path Matching 우선순위와 PathPrefix가 RegularExpression보다 항상 우선하는 이유
2025년 7월 15일 - Istio에서 Client IP 특정하기 (Proxy Protocol v2)
AWS NLB + Istio Gateway 환경에서 numTrustedProxies로도 해결되지 않는 Client IP 문제를 Proxy Protocol v2로 해결한 과정을 다룹니다.
2025년 4월 2일 - 채널톡 GitHub Actions 도입기 2부: ARC 실제 운영 및 트러블슈팅
Channel.io에서의 쿠버네티스 Actions Runner Controller(ARC) 실제 운영 및 트러블슈팅에 대한 사례들과 배운점을 소개합니다.
2025년 3월 19일 - 채널톡 GitHub Actions 도입기 1부: ARC 구축 및 Container Jobs 지원
채널톡에서 CircleCI에서 Github Actions self-hosted runner로 전환한 이야기를 소개합니다.
2025년 3월 18일 - 무언가 많이 했구나; 2024년 3분기 회고
DevOps 엔지니어로서의 첫 3개월에 비해서, 지난 3개월은 그저 지나가는 시간이라고 생각했지만, 막상 돌아보니 또 많은 일과 배움들이 있었다.
2024년 9월 30일 - Uptimeninja.io를 구상하면서 생긴 고민들; Redis stream과 Producer, Consumer scale-out에 대하여
Event-driven architecture를 Redis Stream을 활용하여 Uptimeninja.io 서비스를 구상하고 있습니다. 그 과정에서 Producer와 Consumer들을 scale-out 함에 있어서 생긴 고민들을 공유합니다.
2024년 7월 28일 - DevOps 엔지니어로서의 첫 3개월; 2024년 2분기 회고
지난 3개월동안 정말 먹고 자는 시간을 제외하면, 컴퓨터 앞에만 앉아있었다고 자신할 수 있다. 하지만, 그 시간들 모두가 즐거웠다. 1) 회사에서 있으면서, 2) 그리고 주말에도 나는 개발에 미쳐있었다.
2024년 6월 30일 - Ubuntu; kubeadm으로 on-premise Kubernetes 설치하기
Ubuntu 머신에 kubeadm을 이용해 vanilla Kubernetes 클러스터를 설치하는 전체 과정 및 겪었던 이슈에 대해 기록해두었습니다. 더 나아가 Nvidia GPU 리소스를 쿠버네티스에서 사용할 수 있는 방법 또한 적어두었습니다.
2024년 5월 11일 - custom JRE를 이용한 Java 컨테이너 경량화
jdeps 및 jlink를 사용하여 애플리케이션에 필요한 의존성만 추출하여 만든 custom JRE를 이용해서, 자바 도커 이미지 크기를 혁신적으로 줄이는 방법을 소개하고자 합니다.
2024년 4월 8일 - Arch Linux 설치, 처음부터 끝까지
이 글에서는 디스크 파티셔닝, 암호화, LVM 및 GRUB 부팅 설정을 포함하여 Arch Linux를 bare-metal에 세팅하는 전반적인 과정을 다룹니다.
2024년 3월 16일 - Arch Linux; kubeadm으로 on-premise Kubernetes 설치하기
Arch Linux 머신에 kubeadm을 이용해 vanilla Kubernetes 클러스터를 설치하는 전체 과정 및 겪었던 이슈에 대해 기록해두었습니다.
2024년 3월 14일 - [K3s-06] GitOps에서 안전하게 Git에 secret을 등록하는 방법
쿠버네티스 secrets들은 단순히 base64 인코딩을 거치기 때문에, git에 바로 업로드하기에는 적합하지 않다. Sealed secrets은 비대칭키를 이용한 암호화를 지원합니다.
2023년 12월 21일 - [K3s-05] K3s ingress에 TLS 인증서 발급 자동화
Let's Encrypt와 dns-01 challenges를 사용하여 K3s ingress에 TLS 인증서를 첨부하는 방법 및 Cloudflare Origin CA를 사용하여 Cloudflare Network에 프록시된 TLS 인증서를 첨부하는 방법에 대해 설명합니다.
2023년 12월 19일 - [K3s-04] K3s 로드밸런서 구성 (Klipper와 MetalLB)
K3s 컨테이너 서비스를 외부에 노출하는 방법에 대해 설명합니다. Klipper(K3s built-in 로드밸런서)와 MetalLB(온프레미스 환경에서 잘 알려진 로드밸런서) 두 가지 옵션이 있습니다.
2023년 12월 14일 - [K3s-03] K3s에서 Docker credentials를 주입하는 방법
AWS ECR에 Docker credentials를 요청하여 K3s 클러스터에 주기적으로 주입하는 방법과 K3s registries.yaml을 소개합니다.
2023년 12월 9일 - [K3s-02] Kubectl을 사용하여 외부에서 K3s API server에 접근하는 방법
외부에서 kubectl을 사용하여 K3s 클러스터에 접근하고 K3s API 서버에 접근하기 위한 kubeconfig 자격 증명을 발급하는 방법입니다.
2023년 12월 7일 - [K3s-01] K3s 설치 및 Terraform 설정 방법
K3s 클러스터 초기 설정 및 K3s master, agent 노드를 Terraform으로 설정하는 방법입니다.
2023년 12월 6일 - KAIST SPARCS X GIST WING 연합 세션 2023
SPARCS(KAIST 개발자 연합) X WING(GIST 전산동아리)이 각 소속원들의 개발자 경험을 공유하는 시간을 가졌습니다.
2023년 9월 16일
- GIST 개발자의 밤 2023
2023년 GIST 개발자의 밤 연사로 참여했으며, Polyglot Developer가 무엇이며, 왜 그 중 하나가 되어야 하는지 발표했습니다.
2023년 9월 13일
- Bitcoin 노드의 boostrap 프로세스와 Bitcoin 프로토콜 소개
서로 다른 비트코인 노드가 최초 단계에서 통신하는 기본 단계 및 비트코인 프로토콜 스펙을 소개합니다.
2023년 8월 10일 - 수다뒤
수능특강 문제집을 촬영하면, 해당 문제와 비슷한 유형의 문제를 추천해주는 Flutter 앱을 개발했습니다. BentoML과 AWS Lambda를 활용해서 ML을 배포했습니다.
2023년 6월 13일
- 제 1회 GIST X GDSC 해커톤; GIST Attendance
GIST 교내의 문제점을 해결하기 위해, 강의 출석체크 앱을 제작했습니다. 부정행위를 방지하기 위해 GPS, Wifi network address 검증, request payload 난독화 등을 추가했습니다.
2023년 5월 27일
- Golang context를 활용한 Custom Wrapper Function
custom wrapper function과 golang context을 활용해서, API handler에 Databse 객체와 JWT의 sub를 주입하는 방법을 소개합니다.
2023년 4월 20일 - Docker 없이 컨테이너 만들어보기
Linux의 chroot와 7개의 namespace의 탄생 배경 및 역사를 둘러보고, Linux의 기본 기능을 활용하여 컨테이너를 scratch부터 구현하는 실습 내용을 공유합니다.
2023년 3월 24일
- Rust에서의 Concurrent Database Connection과 쿼리 실행
Rust API 서버를 개발하면서, 데이터베이스의 초기 connection pool 생성과 concurrent한 쿼리 실행에 대한 고민을 공유합니다.
2023년 3월 5일 - 댓글이
댓글이는 같은 웹사이트에 있는 사람과 손쉽게 채팅할 수 있게 하는 크롬 익스텐션입니다.
2023년 3월 5일
- Python GIL (Global Interpreter Lock)
다른 프로그래밍 언어에 비해 뒤쳐지는 Python의 속도는 항상 문제가 되어 왔으며, 이는 GIL(Global Interpreter Lock)과 떼려야 뗄 수 없는 관계입니다.
2023년 1월 14일 - NAT instance란?
private subnet에서 외부망에 접근하기 위해서 terraform으로 NAT instance를 생성하는 방법을 공유합니다.
2022년 9월 28일 - Bastion Host란?
public subnet과 private subnet을 terraform을 이용해서 분리하고, bastion host를 통해서 private subnet에 접속할 수 있도록 합니다.
2022년 9월 27일 - Rust 언어로 작성한 간단한 웹서버
Rust의 built-in TcpListener 모듈을 이용한 간단한 멀티쓰레딩 웹서버를 구현합니다.
2022년 9월 14일 - C 언어로 작성한 간단한 웹서버
C언어와 소켓 프로그래밍을 활용하여 간단한 웹서버를 구현합니다.
2022년 9월 13일 - 소켓 프로그래밍
OSI 7 계층의 기본 개념과 소켓 프로그래밍의 자세한 인터페이스 및 기능을 소개합니다.
2022년 9월 12일 - 생성적 적대 신경망 (GAN)↗
생성적 적대 신경망의 기초 개념과 MNIST 생성 예제를 다룹니다.
2021년 10월 14일 - Sequence-to-Sequence: Seq2Seq↗
Seq2Seq 모델의 기초, Attention Decoder, 영불/한영 번역기를 다룹니다.
2021년 8월 5일 - 순환 신경망 (RNN)↗
순환 신경망의 기초, 간단한 RNN 구현, 감성 분류를 다룹니다.
2021년 7월 8일 - 오토인코더 (Autoencoder)↗
오토인코더의 기초 개념과 Fashion MNIST 예제를 다룹니다.
2021년 7월 2일 - 합성곱 신경망 (CNN)↗
합성곱 신경망의 기초, 신경망 구현, CNN 레이어 생성, MNIST 분류를 다룹니다.
2021년 5월 20일 - 선형 회귀: 설명과 예제↗
선형 회귀의 기본 개념과 Python 예제, Boston 주택 가격 데이터셋 실습을 다룹니다.
2021년 5월 4일