// infra

서버 & 인프라

// infra

서버 & 인프라

MySQL 병렬 복제로 복제 지연 줄이기

복제 지연은 왜 생기는가 MySQL의 비동기 복제에서 소스(source)는 트랜잭션을 병렬로 처리하지만, 레플리카(replica)는 전통적으로 릴레이 로그를 단일 SQL 스레드 가 순차적으로 재생(…

4 min read

블루-그린 DB 마이그레이션 무중단 전략

왜 DB 마이그레이션이 문제인가 애플리케이션 코드는 블루-그린 배포로 무중단 전환이 쉽지만, DB는 상태(state)를 가지기 때문에 같은 방식이 통하지 않는다. 스키마를 바꾸는 순간 구버전 코드와…

3 min read

쿠버네티스 CSI 볼륨 스냅샷과 복구 실전

왜 CSI 스냅샷이 필요한가 스테이트풀 워크로드를 운영하다 보면 PVC 데이터를 순간적으로 고정하고 복제해야 하는 순간이 온다. 스키마 마이그레이션 직전, 배포 롤백 대비, 장애 조사용 데이터 확보…

3 min read

카프카 컨슈머 리밸런싱 지옥 피하기

리밸런싱이 왜 지옥이 되는가 카프카 컨슈머 그룹은 파티션을 멤버에게 나눠 갖는다. 멤버가 들어오거나 나가면, 혹은 구독 토픽이 바뀌면 파티션을 다시 배분하는 리밸런싱 이 일어난다. 문제는 기본 프로…

3 min read

쿠버네티스 Topology Spread로 가용성 분산하기

왜 파드 분산이 문제가 되는가 레플리카를 3개로 늘렸다고 가용성이 확보되는 것은 아니다. 스케줄러는 기본적으로 리소스 여유가 있는 노드를 우선하기 때문에, 아무 제약이 없으면 3개 파드가 같은 노드…

3 min read

MySQL 갭 락과 팬텀 리드 방지 실전

팬텀 리드가 왜 문제인가 팬텀 리드(Phantom Read)는 같은 트랜잭션 안에서 동일한 조건으로 범위를 조회했는데, 그 사이 다른 트랜잭션이 조건에 맞는 행을 삽입해 결과 건수가 달라지는 현상이…

4 min read

NIC 오프로드(GRO/GSO/TSO) 튜닝과 함정

오프로드가 왜 필요한가 10G 이상 회선에서 패킷을 1500바이트씩 나눠 커널이 하나하나 처리하면 초당 수백만 개의 인터럽트와 스택 순회가 발생한다. TSO/GSO는 송신 시 큰 세그먼트를 만들어 …

3 min read

리눅스 OOM Killer 동작 원리와 메모리 튜닝

왜 프로세스가 갑자기 죽는가 운영 중인 서버에서 로그도 남기지 못하고 프로세스가 사라진 경험이 있다면 대부분 OOM Killer의 소행이다. 리눅스는 메모리를 요청 시점에 실제로 할당하지 않고, 페…

4 min read

서비스 메시 도입 판단 기준: Istio·Linkerd

서비스 메시는 마이크로서비스 사이의 통신을 애플리케이션 코드 밖으로 빼내어, 트래픽 관리·보안·관측성을 인프라 계층에서 일관되게 처리하는 기술입니다. mTLS 자동 암호화, 재시도와 서킷 브레이커,…

5 min read

CDN 캐시 전략: TTL·캐시키·퍼지 설계

CDN을 앞단에 붙였는데도 오리진 트래픽이 줄지 않는다면, 십중팔구 캐시 전략이 잘못 설계된 것입니다. CDN은 “일단 앞에 두면 알아서 캐싱해주는 마법”이 아니라, 무엇을 얼마나 오래, 어떤 키로…

6 min read

Kafka vs RabbitMQ: 언제 무엇을 선택할까

비동기 메시징을 도입할 때 가장 자주 마주치는 갈림길이 Kafka와 RabbitMQ 사이의 선택입니다. 둘 다 “메시지 큐”로 뭉뚱그려 불리지만, 설계 철학과 강점이 근본적으로 다릅니다. 잘못 고르…

5 min read

gRPC vs REST: MSA 통신 성능·설계 비교

마이크로서비스 아키텍처(MSA)를 설계할 때 서비스 간 통신 프로토콜 선택은 전체 시스템 성능과 운영 편의성을 좌우하는 핵심 결정입니다. REST는 수십 년간 표준으로 군림해왔지만, gRPC는 구글…

9 min read