About

전체 아키텍처

카테고리별로 정리된 네트워크 통신 구조

DNS / Domain

DNS 도메인 설정은 어떻게 반영되나?

onamae.com 같은 사이트에서 도메인 설정하면 실제로 어떤 일이 일어나는가

DNS(Domain Name System)는 도메인명(예: example.com)을 IP 주소(예: 93.184.216.34)로 변환하는 인터넷의 전화번호부. onamae.com 같은 레지스트라에서 도메인을 설정하면 루트 서버 → TLD 서버 → 권한 네임서버 순으로 계층적으로 전파되어 전 세계에서 접속 가능해진다

네임서버 변경은 왜 24~72시간 걸리나?

네임서버(NS) 변경 시 전파가 느린 진짜 이유와 각 단계별 캐시 구조

네임서버 변경은 단순한 DNS 레코드 변경과 달리 TLD(.com/.net) 레벨의 캐시까지 갱신이 필요하다. TLD NS 레코드의 TTL이 보통 48시간이고, ISP 리졸버가 이를 캐시하므로 전 세계에 반영되기까지 24~72시간이 소요된다

DNS-PERSIST-01이란? DNS-01과의 차이와 _validation-persist 레코드

Let's Encrypt의 지속적 DNS 인증 레코드로 반복 검증 제거

DNS-PERSIST-01은 Let's Encrypt의 새 ACME 인증 방식. _validation-persist.example.com TXT 레코드에 CA와 ACME 계정 URI를 한 번만 넣으면 갱신 때마다 DNS를 고칠 필요가 없다. DNS-01과의 차이와 주의점 정리

onamae.com은 DNS 제공 업체가 되려면?

ICANN 인증부터 Anycast 인프라까지, 도메인 레지스트라의 뒷면

onamae.com 같은 DNS 제공 업체(레지스트라)가 되려면 ICANN 인증, Anycast DNS 네트워크, EPP 프로토콜 구현, WHOIS/RDAP 데이터베이스, DDoS 방어 등 대규모 인프라와 규정 준수가 필요하다

도메인 사는 법 — TLD 고르기부터 갱신 관리까지

WHOIS 프라이버시 · DNS 초기 설정 · 도메인 도난 방지까지

도메인 구매는 TLD 선택 → WHOIS 가용성 확인 → 레지스트라 선택 → 등록 (연락처 정보 + WHOIS Privacy) → DNS 초기 설정 → 갱신 관리의 순서로 진행된다. 도메인 라이프사이클, 프리미엄 도메인 시장, 도메인 도난 방지까지 포괄 해설

무료 HTTPS 서비스들의 원리

Let's Encrypt, Cloudflare, ACM이 무료 인증서를 제공하는 방법

ACME 프로토콜, 도메인 검증, CA 신뢰 체인, TLS 핸드셰이크 등 무료 HTTPS 서비스의 핵심 원리를 해부합니다

DNS 장애 사례 — Dyn·Facebook·Fastly에서 무슨 일이

인터넷을 멈춘 대형 DNS 장애들과 교훈

Dyn DDoS, Facebook BGP 사고, Fastly 장애 등 주요 DNS 관련 장애 사례를 분석하고, 단일 장애점 방지를 위한 실무 교훈을 정리합니다

How It Works

ngrok은 어떻게 동작하나? 역방향 터널과, 돈을 내는 진짜 이유

원리는 단순하다. 값은 공개 서버 운영비라서 frp · bore 로 직접 세울 수도 있다

ngrok 은 내 PC 의 에이전트가 밖의 서버에 먼저 연결을 걸어 두고, 공개 URL 로 온 요청을 그 연결로 들여보내는 역방향 터널이다. 돈을 내는 건 터널 기술이 아니라 공개 서버 · 도메인 · TLS 인증서를 남이 운영해 주는 값이다. 그래서 frp · bore 로 직접 세울 수도 있다.

Slack Socket Mode는 어떻게 동작하나?

Webhook 없이 아웃바운드 WebSocket으로 이벤트 수신

Slack Bot이 공개 URL 없이 이벤트를 수신하는 방식. Bot 서버가 Slack에 WebSocket 연결을 먼저 열면, Slack이 그 연결을 통해 이벤트를 push. 방화벽 뒤에서도 동작

ChatGPT 스트리밍은 어떻게 동작하나?

SSE로 토큰 단위 실시간 응답 전달

ChatGPT가 답변을 한 글자씩 표시하는 비밀. OpenAI API가 SSE(Server-Sent Events)로 생성된 토큰을 즉시 스트리밍 전송하면, 클라이언트가 하나씩 받아 화면에 렌더링

GitHub Webhook은 어떻게 동작하나?

git push → HTTP POST → CI/CD 트리거

GitHub에서 코드 push, PR 생성 등 이벤트 발생 시, 사전에 등록한 URL로 HTTP POST를 보내 외부 시스템(CI/CD, 슬랙 알림 등)을 자동으로 트리거하는 방식

Sidekiq는 어떻게 동작하나?

Redis 기반 백그라운드 잡 큐 시스템

Rails에서 무거운 작업(이메일 발송, 이미지 처리 등)을 백그라운드로 넘기는 시스템. 웹 프로세스가 Redis 큐에 잡을 넣으면, Sidekiq 워커 프로세스가 꺼내서 비동기 처리

WebRTC는 어떻게 동작하나?

브라우저 간 직접 영상/음성/데이터 전송

브라우저끼리 중앙 서버 없이 영상통화, 화면공유, 파일전송을 하는 기술. 시그널링 서버로 연결 정보를 교환한 뒤, STUN/TURN으로 NAT를 뚫고 P2P 직접 연결

MCP는 어떻게 동작하나?

AI 모델과 외부 도구를 표준 방식으로 연결하는 오픈 프로토콜

MCP(Model Context Protocol)는 AI 모델(LLM)과 외부 도구·데이터 소스를 표준화된 방식으로 연결하는 오픈 프로토콜. Host(Claude 등)가 Client를 통해 MCP Server에 연결하면, Server가 DB·파일·API 등 외부 시스템을 AI에 노출

MCP 전송 방식 stdio vs Streamable HTTP 차이

로컬 개발과 클라우드 SaaS 배포의 차이

MCP는 두 가지 공식 transport를 지원: stdio(로컬)와 Streamable HTTP(원격/SaaS). 2025년 3월 도입된 Streamable HTTP로 SaaS 벤더가 MCP 서버를 클라우드에 배포하고 다수의 클라이언트가 접근 가능

tmux는 어떻게 동작하나?

터미널 멀티플렉서로 세션 유지 & 분할

tmux는 하나의 터미널에서 여러 세션을 관리하는 터미널 멀티플렉서. 서버-클라이언트 구조로, SSH 연결이 끊겨도 세션이 유지되고 나중에 다시 attach 가능

Vercel Subdirectory Reverse Proxy는 어떻게 동작하나?

Next.js 도메인 아래 서브디렉토리로 외부 서버 콘텐츠를 통합하여 SEO 권위를 집중

negabaro.com(Vercel/Next.js)에서 /blog/* 경로를 Rails(DigitalOcean) 또는 Jekyll(GitHub Pages) 등 외부 서버로 리버스 프록시. 사용자에게는 단일 도메인으로 보이면서, 실제 콘텐츠는 별도 서버에서 렌더링. 백엔드 기술 스택에 무관하게 canonical/robots.txt/asset 절대 URL 설정으로 SEO 권위를 메인 도메인에 집중하는 구조

Docker 컨테이너의 내부 구조

Linux 네임스페이스부터 macOS 지원, GPU까지 — 10년간의 기술적 진화

2013년 등장한 Docker는 Linux 네임스페이스로 VM 없이 프로세스를 격리한다. CLI 뒤에는 수십 년간의 시스템 연구가 숨어 있고, macOS/Windows 지원을 위해 라이브러리 VMM이라는 역발상 아키텍처를 채택했다.

Keploy — eBPF로 트래픽을 가로채 API 테스트를 자동 생성하는 구조

eBPF가 커널에서 connect() 목적지를 몰래 바꿔치기하는 투명 프록시 패턴

keploy record로 앱을 감싸면, eBPF가 커널 레벨에서 모든 아웃바운드 연결의 목적지를 로컬 프록시로 리다이렉트한다. 앱은 모른다. 프록시가 프로토콜별로 트래픽을 파싱해서 테스트 케이스+Mock을 YAML로 뽑아낸다.

Postgres 볼륨 경로가 3년 틀렸는데 멀쩡했던 이유 — VOLUME 선언이 몰래 붙인 이름 없는 볼륨

데이터는 경로가 아니라 볼륨 이름을 따라간다. down 을 쓰는 사람만 DB 를 잃는다

docker-compose 에서 Postgres 볼륨을 엉뚱한 경로(/data/db)에 붙여도 DB 는 잘 돈다. 이미지가 VOLUME 으로 선언한 PGDATA 경로에 Docker 가 이름 없는 볼륨을 붙여 주기 때문이다. 그 볼륨은 up · stop 으로는 살아남고 down → up 에서 버려진다. 그래서 같은 버그가 3년 동안 사람마다 다르게 보였다.

Finder 색 태그는 AI 가 아니라 과거의 내가 붙였다 — xattr 속 「빨간색\n6」 문자열

사진 내용을 설명하는 태그는 파일 안에 없다. 서비스 서버에만 있다

로컬 사진에 붙은 「태그」 는 대부분 사람이 Finder 에서 붙인 색 라벨이다. 파일의 확장 속성(xattr)에 「이름\n색번호」 문자열로 들어 있고, 이름은 붙일 때의 macOS 언어를 따른다. 사진 내용을 설명하는 AI 태그는 파일이 아니라 사진 앱 · OneDrive 서버에 있다. 그래서 「웃는 사진」 같은 검색은 로컬 메타데이터로는 안 된다.

Agentic AI

Agentic AI — 자율 에이전트의 기본 구조

LLM이 도구를 쓰고, 판단하고, 반복하는 구조

Agentic AI는 LLM이 단순히 텍스트를 생성하는 걸 넘어, 스스로 계획을 세우고 도구를 호출하며 목표를 향해 반복 실행하는 시스템이다. "챗봇"과 "에이전트"의 차이는 자율성이다. 챗봇은 질문에 대답하고, 에이전트는 목표를 향해 스스로 행동한다.

Agent Loop — 에이전트의 실행 루프 해부

while 루프 하나가 에이전트의 전부다

에이전트의 핵심은 "LLM을 루프 안에서 돌리는 것"이다. 한 번 호출하고 끝나는 게 아니라, 도구 호출 결과를 받아서 다시 LLM에 넘기고, LLM이 다음 행동을 결정하는 사이클. 이 루프를 어떻게 설계하느냐가 에이전트의 품질을 결정한다.

Tool Use 패턴 — LLM에 손과 발을 달아주기

함수 호출을 통해 LLM이 외부 세계와 상호작용하는 구조

LLM은 텍스트만 생성할 수 있다. 파일을 읽거나, API를 호출하거나, DB를 조회하려면 "도구"가 필요하다. Tool Use는 LLM에게 사용 가능한 함수 목록을 알려주고, LLM이 필요할 때 함수를 호출하게 하는 패턴이다.

Ralph Wiggum Loop — 에이전트가 같은 삽질을 반복할 때

"I'm in danger" — 에이전트가 빠져나오지 못하는 루프의 원인과 대책

에이전트가 같은 에러에 같은 수정을 반복하고, 진전 없이 토큰만 태우는 상태. 심슨 가족의 Ralph Wiggum이 "I'm in danger"라고 하면서 멍하니 앉아있는 밈에서 따온 이름. AI 에이전트 개발에서 가장 흔하고 비용이 큰 안티패턴이다.

Human-in-the-Loop — 사람이 끼어드는 타이밍

완전 자율 vs 적절한 개입, 그 균형점

에이전트가 모든 걸 자동으로 하면 편하지만, 돌이킬 수 없는 행동(데이터 삭제, 프로덕션 배포, 결제)은 사람이 확인해야 한다. Human-in-the-Loop은 "언제 사람한테 물어볼 것인가"를 설계하는 패턴이다.

Harness Engineering

하네스(Harness)란? 대상을 감싸서 제어하는 실행 환경

Test Harness에서 시작해 AI 에이전트로 — 결과는 감싸는 쪽 설계가 좌우한다

Harness는 AI에 국한된 개념이 아니다. 원래 소프트웨어 공학의 Test Harness에서 온 것으로, "대상을 감싸서 제어하는 실행 환경" 전체를 뜻한다. AI 하네스든, 테스트 하네스든, 핵심은 같다 — 대상 자체보다 대상을 감싸는 시스템의 설계가 결과를 좌우한다.

하네스 엔지니어링 vs 프롬프트 엔지니어링 차이

프롬프트를 잘 짜는 것과 실행 환경을 잘 짜는 것은 다르다

Prompt Engineering은 모델에게 "뭘 해라"를 잘 전달하는 기술이다. Harness Engineering은 모델이 "어떤 환경에서 실행되느냐"를 설계하는 기술이다. 같은 프롬프트라도 하네스가 다르면 결과가 완전히 달라진다.

가드레일 설계 — 모델이 삽질하기 전에 막는 법

입력 필터, 출력 검증, 행동 제한으로 안전한 하네스 만들기

모델은 확률적으로 출력한다. 10번 중 9번 맞아도 1번은 틀린다. 가드레일은 그 1번이 프로덕션에서 터지지 않게 막는 안전장치다. 입력 단계, 실행 단계, 출력 단계 각각에 가드레일을 둔다.

평가 파이프라인 — 하네스 품질을 측정하는 법

감으로 판단하면 진다, 자동화된 평가 체계가 필수다

하네스를 바꿨는데 좋아졌는지 나빠졌는지 모르면 의미가 없다. 평가 파이프라인은 하네스 변경의 효과를 정량적으로 측정하는 시스템이다. SWE-bench, HumanEval 같은 벤치마크도 결국 평가 파이프라인의 일종이다.

컨텍스트 윈도우 관리 — 유한한 기억의 전략

100만 토큰이어도 넣는 방법이 중요하다

컨텍스트 윈도우는 모델의 "작업 기억"이다. 크기가 커져도 무한하지 않고, 넣는 순서와 내용에 따라 성능이 달라진다. 하네스의 핵심 역할 중 하나가 이 제한된 공간을 효율적으로 관리하는 것이다.

오케스트레이션 패턴 — 모델 호출을 조합하는 법

한 번의 호출로 안 되면, 여러 번을 어떻게 엮는가

복잡한 작업은 모델 한 번 호출로 끝나지 않는다. 여러 모델 호출을 어떤 순서로, 어떤 조건에서 실행하느냐가 오케스트레이션이다. Agentic AI의 에이전트 루프도, RAG도, 코드 생성 파이프라인도 전부 오케스트레이션 패턴이다.

gstack이란? Garry Tan의 Claude Code 스킬 23개를 하네스 구조로 해부

Garry Tan이 Claude Code로 60일간 60만 줄을 칠 수 있었던 구조

gstack이란 Y Combinator CEO Garry Tan이 공개한 Claude Code 스킬 팩이다. /office-hours → /review → /qa → /ship 등 23개 명령어로 하나의 모델을 역할별 팀으로 나누는 구조를 라우팅·가드레일·피드백 루프로 해부한다.

Git

Git은 내부적으로 어떻게 동작하나?

Blob, Tree, Commit — Git의 3가지 객체

Git은 content-addressable 파일 시스템이다. 모든 파일과 디렉토리, 커밋은 SHA-1 해시로 식별되는 객체로 저장된다. Blob(파일), Tree(디렉토리), Commit(스냅샷) 세 가지 객체만 이해하면 Git의 대부분이 설명된다.

rebase vs merge, 언제 무엇을 쓰나

히스토리 보존과 선형화의 트레이드오프

merge는 두 브랜치를 merge commit으로 합친다. rebase는 커밋을 다른 베이스 위로 다시 쌓는다. merge는 히스토리를 있는 그대로 남기고, rebase는 선형으로 정리한다. 공유 브랜치에는 merge, 개인 브랜치에는 rebase가 기본 원칙이다.

reset vs revert, 뭘 언제 쓰나

히스토리를 고치는 법 vs 되돌리는 커밋을 추가하는 법

reset은 브랜치 포인터를 과거 커밋으로 옮긴다. revert는 반대 변경을 담은 새 커밋을 추가한다. 혼자 작업 중이면 reset, 이미 push한 커밋이면 revert가 안전하다.

stash 제대로 쓰기

작업 중 브랜치 전환이 필요할 때

stash는 커밋하지 않은 변경을 임시 저장소에 밀어넣고 working tree를 깨끗하게 만든다. 브랜치 전환, cherry-pick, 긴급 bugfix 대응에 쓴다. checkout -- . / reset --hard 대신 stash를 쓰면 실수로 변경을 날릴 일이 없다.

git worktree 는 심볼릭 링크도 클론도 아니다 — .git 하나에 작업 폴더 여러 개

Claude Code 세션을 여러 개 돌린다면 세션마다 worktree 하나

worktree 는 작업 파일만 진짜로 따로 두고 저장소(.git)는 하나를 같이 쓴다. 둘을 잇는 건 gitdir 한 줄짜리 텍스트 파일이다. 브랜치 · 커밋은 바로 공유되고 HEAD · index 는 따로라서, Claude Code 병렬 세션을 서로 안 밟게 나누는 데 딱 맞다.

worktree는 심볼릭 링크도 클론도 아니다

파일은 복사본, 저장소는 하나

추가한 worktree의 .git은 디렉토리가 아니라 gitdir: 한 줄이 든 텍스트 파일이다. 작업 파일은 진짜 복사본이고, objects와 refs는 메인 저장소를 그대로 쓴다. 그래서 한쪽 커밋이 fetch 없이 다른 쪽에 바로 보인다.