Microservices Architecture
MSA 는 서비스를 어느 기준으로 가를 것인가의 결정이다. 도메인 경계, 데이터 소유권, 스케일 패턴, 장애 격리 — 어느 것을 우선하느냐가 경계를 만들고 통신과 데이터를 차례로 결정한다.
MSA 는 서비스를 어느 기준으로 가를 것인가의 결정이다. 도메인 경계, 데이터 소유권, 스케일 패턴, 장애 격리 — 어느 것을 우선하느냐가 경계를 만들고 통신과 데이터를 차례로 결정한다.
ES 와 CQRS 는 시스템의 원본 데이터와 그 표현의 분리를 다룬다. 도입 비용이 시스템 전반에 분산되므로 채택 가치를 명시할 수 있을 때 채택할 만하다고 본다.
분산 트랜잭션은 모놀리스의 단일 ACID 트랜잭션이 분산 환경에서 어떻게 분해되고, 그 조각을 어떻게 재조립하는가의 문제다. 2PC, Saga (Choreography vs Orchestration), Outbox 의 역할과 트레이드오프.
settings.json, CLAUDE.md, slash commands, subagents, hooks. Claude Code 커스터마이징 표면은 ‘언제 개입하는가’라는 축 하나로 네 레이어로 정돈된다.
alacritty + tmux + nvim + zsh + Claude Code 다섯 도구로 구성한 터미널 중심 개발 환경. 각 도구의 선택 이유와 조합 방식을 정리한다.
JIRA의 이슈와 워크플로우를 작업 단위의 그래프로 보고, Sprint 라이프사이클·이슈 계층·Git/GitHub 연동 패턴·자동화 흐름을 정리한다.
GitHub Actions를 저장소 이벤트 기반 자동화 엔진으로 보고, workflow / job / step 3단 추상과 trigger·runner·secret 운영을 정리한다.
GitHub PR을 Git 변경 그래프 위에 협업 레이어를 더한 추상으로 보고, Code Review 사이클·PR 단위 설계·머지 전략을 정리한다.
Git을 명령어 모음이 아닌 변경의 그래프로 보고, commit hygiene·branch strategy·merge vs rebase 결정이 그래프 모양에 대한 선택임을 정리한다.
Security Group(stateful, 인스턴스 단위)과 NACL(stateless, Subnet 단위)이 어떻게 서로 다른 계층의 방어선을 만드는지, 그리고 흔한 함정 시나리오를 정리한다.
VPC 간/온프레미스/서비스 연결을 책임지는 4가지 메커니즘 — Peering, Transit Gateway, Site-to-Site VPN, PrivateLink — 의 토폴로지와 비용 트레이드오프를 정리한다.
VPC 안의 트래픽 경로를 결정하는 Route Table, 외부 출입구 역할의 Internet Gateway와 NAT Gateway, Public/Private Subnet 구분의 실체를 정리한다.
VPC가 IP CIDR, Subnet, Tenancy 세 요소를 조합해 사설 네트워크 경계를 시뮬레이션하는 원리를 정리한다. AWS/GCP/Azure/Alibaba 벤더 명칭 매핑 포함.
이중 쓰기와 fallback 읽기를 조합하여 운영 중인 서비스의 데이터 형식을 무중단으로 전환하는 3단계 패턴을 정리한다.
봉투 암호화의 CMK/DEK 2중 키 구조가 키 유출 영향을 제한하고 키 회전을 단순화하는 원리를 정리한다.
MLflow의 네 조각이 ML Lifecycle의 어느 칸을 메우는지, 그리고 경량 팀이 그 중 어떤 조각을 고를 수 있는지.
Circuit Breaker 의 차단 트리거와 회복 전략은 함께 설계되어야 한다. 회복 없는 차단은 의존성을 영구히 끊고, 차단 기준 없는 회복은 무의미한 cycling 이다.
Rate Limit 알고리즘을 고르기 전에, 어느 계층에서 보호할지가 먼저 알고리즘의 선택지를 좌우한다. L4/L7/Application 계층과 Token/Leaky/Sliding/Fixed 알고리즘의 교차 관계를 정리한다.
sklearn과 ONNX는 같은 레이어의 경쟁자가 아니다. 두 도구의 자리를 분리해서 보면 ‘ONNX 레이어가 필요한가’라는 질문이 자연스럽게 남는다.
CTR 예측의 baseline으로서 Logistic Regression의 구조와 특성을 정리한다. 오래된 모델이 여전히 baseline 으로 쓰이는 이유.
Container 오케스트레이션의 기본 구조와 백엔드 개발자가 알아야 할 핵심 오브젝트, 네트워크, 스케일링, 운영 방법을 정리한다.
Go의 동시성 모델은 CSP를 기반으로 Goroutine과 Channel을 핵심 도구로 제공한다. 각 도구의 동작 원리와 선택 기준을 정리한다.
같은 NoSQL 우산 아래에서 MongoDB 와 Redis 가 서로 다른 역할로 자리잡은 이유. 데이터 모델·스토리지·스키마·확장·사용 사례를 기준으로 비교 정리.
Spring MVC는 요청당 스레드를 할당한다. I/O 대기가 길어지면 스레드가 묶인다. WebFlux는 이벤트 루프 기반 논블로킹 모델로 이 문제를 해결한다. MVC와의 구조적 차이, Reactor 패턴, 선택 기준을 정리한다.
HTTP/1.1은 요청과 응답이 순차적이다. HTTP/2는 멀티플렉싱, 바이너리 프레이밍, 헤더 압축으로 이 구조를 바꿨다. 두 프로토콜의 차이와 HTTP/2 위에서 동작하는 gRPC의 특성을 정리한다.
Container의 개념과 VM과의 차이를 정리하고, Docker의 아키텍처, Dockerfile, Docker Compose의 기본 사용법을 설명한다.
코드를 기술 계층별로 나누는 수평 분할과, 기능/도메인별로 나누는 수직 분할의 차이를 정리한다. 각각의 장단점과 선택 기준.
Nest.js는 Node.js 생태계에서 DI 컨테이너와 Module 시스템을 프레임워크 수준에서 제공한다. IoC, DI, Module, Provider 등 핵심 설계 원칙을 정리한다.
레이어드 아키텍처는 기술적 책임 기준으로 코드를 수평 계층으로 나눈다. 4계층 구조의 각 역할, 의존성 방향 규칙, DIP로 계층 간 결합을 끊는 방법을 정리한다.
Kafka의 핵심 개념(토픽, 파티션, 컨슈머 그룹, 복제)을 정리하고, ZooKeeper 의존성을 제거한 KRaft 모드의 등장 배경을 설명한다.
Hexagonal Architecture의 핵심 개념과 Go에서의 관용적 구현. 암묵적 인터페이스와 패키지 구조를 활용한 의존성 방향 제어.
Builder 는 생성자의 세 가지 한계가 동시에 모일 때의 해결책이다. 매개변수 수가 많고, 일부가 선택적이고, 단계적 검증이 필요한 경우. 셋이 같이 모이지 않으면 다른 도구로 충분하다. 언어가 named/default 매개변수를 제공하면 Builder 의 필요도 자연스럽게 줄어든다.
Factory 의 공통 의도는 객체 생성과 사용의 분리다. 세 변형 (Factory Method / Abstract Factory / Static Factory Method) 은 분리 방식이 다르고 적합한 상황도 다르다. 실무에서는 Static Factory Method 가 가장 자주 쓰이고, DI 컨테이너가 등장하면 명시적 Factory 의 일부 역할이 컨테이너로 흡수된다.
Singleton 은 가장 단순한 패턴이지만 안티패턴 논란의 대표 사례다. 단일 인스턴스 보장과 전역 접근을 한 패턴에 묶은 결정이 강한 결합과 테스트 어려움의 원인. DI 가 두 의도를 분리한 일반 대안이다.
DIP(원칙), IoC(패턴), DI(기법)는 서로 다른 추상 수준에 있는 개념이다. 위계를 분명히 봐야 프레임워크 기능과 설계 원리가 섞이지 않는다.
전량 갱신 방식의 캐시를 변경분만 갱신하도록 전환하는 패턴. 데이터를 성격별로 분리하고 변경 감지 전략을 적용하여 네트워크 비용을 줄이는 구조를 정리한다.
RDB 트랜잭션의 ACID 4개 속성이 실제로 무엇을 보장하는가. A/C/D 는 비교적 명확한 보장이지만 I 만 ‘단계’ 가 존재하는 이유 — 정확성과 동시성의 트레이드오프 도입.
백엔드 개발에서 자주 마주치는 두 전송 프로토콜, TCP와 UDP의 동작 원리를 정리한다. 연결 수립, 신뢰성 보장, 흐름/혼잡 제어 메커니즘과 선택 기준.
HTTP는 stateless다. 사용자 인증을 유지하려면 상태를 어딘가에 저장해야 한다. 서버에 저장하는 세션 방식과 토큰에 담아 클라이언트에 위임하는 JWT 방식의 구조, 트레이드오프, 저장 전략을 정리한다.