b.log()

프론트엔드부터
인프라까지,
배운 것을 기록합니다.

210 posts · 10 categories · 2026

161

디자인 패턴 전에 알아야 할 안티패턴 — 2편: 아키텍처와 프로세스

Spaghetti Code, Big Ball of Mud, Lava Flow, Golden Hammer, Premature Optimization, Reinventing the Wheel — 시스템과 개발 문화 차원의 안티패턴

2026-09-14
[architecture]
anti-patterns-architecture-and-process.md
162

디자인 패턴 전에 알아야 할 안티패턴 7가지

Magic Number, God Object, Long Method, Feature Envy, Shotgun Surgery, Primitive Obsession, Cargo Cult — 언어와 프레임워크를 가리지 않고 등장하는 대표 안티패턴 전체

2026-09-14
[architecture]
anti-patterns-before-design-patterns.md
163

리눅스 명령어, 실무에서 진짜 자주 쓰는 것들 (4) — 터미널 에디터 지형도

vi, Vim, Neovim, nano는 뭐가 다른가. 계보와 설계 철학부터 실무에서 뭘 고를지, 폐쇄망 서버에 에디터를 어떻게 들고 갈지까지 정리한 터미널 에디터 전체 지형도.

2026-09-14
[linux]
linux-commands-4-terminal-editors.md
164

왜 같은 실수가 반복되는가 — 안티패턴의 생산 메커니즘

알려진 해법이 있는데도 같은 구조가 반복되는 이유. Conway의 법칙, 도구 우선 선택, 지연 도착하는 비용, 중앙화와 분산의 진자. 시리즈 완결.

2026-09-14
[backend]
backend-antipatterns-16-why-we-repeat-ourselves.md
165

관측 불가능한 시스템 — 로그만 있는 분산 시스템

로그만 있는 분산 시스템에서 장애 원인을 못 찾는 이유. 로그·메트릭·트레이스의 역할 분담, Correlation ID, 카디널리티 폭발, 알림 피로.

2026-09-14
[backend]
backend-antipatterns-15-unobservable-system.md
166

이벤트 루프를 막는 자 — Node.js 런타임 고유 안티패턴

CSV 내보내기 하나가 무관한 엔드포인트의 p99까지 올리는 이유. CPU가 이벤트 루프를 붙잡는 네 가지 통로, 동시성 없는 async, 스트림과 백프레셔.

2026-09-14
[backend]
backend-antipatterns-14-blocking-the-event-loop.md
167

상태를 잊은 함수 — 서버리스 안티패턴

스케일 아웃된 함수가 DB 커넥션을 고갈시키는 이유, 콜드 스타트의 네 단계, Lambda Pinball, 그리고 서버리스가 오히려 정답인 경우.

2026-09-14
[backend]
backend-antipatterns-13-stateless-function-serverless.md
168

동기 호출 사슬과 장애 전파 — Retry Storm, Thundering Herd

하위 서비스 하나가 느려지자 전체가 멈추는 동기 호출 사슬. 재시도 증폭, 캐시 동시 만료, 커넥션 풀 도미노와 각 방어책의 대가.

2026-09-14
[backend]
backend-antipatterns-12-retry-storm-thundering-herd.md
169

Dual Write와 2PC의 유혹 — 분산 트랜잭션 안티패턴

DB 저장과 이벤트 발행을 나란히 쓰는 다섯 줄이 깨지는 방식, 2PC가 후퇴한 이유, Saga의 전제, Transactional Outbox와 멱등 소비자.

2026-09-14
[backend]
backend-antipatterns-11-dual-write-and-2pc.md
170

Shared Database와 Entity Service — 경계를 데이터로 그을 때

컬럼 하나를 못 바꾸는 공유 DB와 명사로 쪼갠 Entity Service의 함정. 경계를 변경 이유로 긋고 데이터 중복을 결합도의 값으로 치르는 법.

2026-09-14
[backend]
backend-antipatterns-10-shared-database-entity-service.md
171

Distributed Monolith — 가장 비싼 실패

기능 하나에 서비스 일곱 개가 같은 날 배포되는 구조. 함께 바뀌는 것을 세어 진단하고 Modular Monolith로 후퇴하는 탈출 경로.

2026-09-14
[backend]
backend-antipatterns-9-distributed-monolith.md
172

계약의 붕괴 — Chatty Interface, 버전 없는 API, Over-fetching

Chatty Interface, 버전 없는 API, Over-fetching이 한 화면에 모이는 이유와 유스케이스 기반 엔드포인트·런타임 계약으로 계약을 고정하는 법.

2026-09-14
[backend]
backend-antipatterns-8-contract-collapse.md
173

Fallacies of Distributed Computing — 네트워크를 함수 호출로 취급한 죄

네트워크 호출을 함수 호출처럼 쓴 대가. 분산 컴퓨팅의 여덟 가지 오류를 장애 시나리오로 번역하고 타임아웃·재시도·멱등성을 API의 1급 요소로 만든다.

2026-09-14
[backend]
backend-antipatterns-7-fallacies-of-distributed-computing.md
174

Smart Pipes, Dumb Endpoints — ESB 안티패턴

비즈니스 규칙이 게이트웨이 미들웨어에 숨는 순간. ESB의 실패가 API 게이트웨이로 되살아나는 구조와 게이트웨이의 책임을 문서로 고정하는 법.

2026-09-14
[backend]
backend-antipatterns-6-smart-pipes-dumb-endpoints.md
175

데이터베이스가 아키텍처가 될 때 — Smart DB와 DB-as-IPC

스토어드 프로시저에 로직이 숨은 Smart DB의 청구서, Oracle에서 PostgreSQL로 갈 때 돌아오는 비용, 무엇을 DB에 남길지의 기준.

2026-09-14
[backend]
backend-antipatterns-5-smart-db-as-architecture.md
178

God Object와 Big Ball of Mud — 경계 없는 서버

나쁜 커밋 하나 없이 1,800줄 파일이 되는 과정. 응집도·결합도를 형용사가 아닌 기준으로 말하는 법과 이음매를 찾아 경계를 되살리는 순서.

2026-09-14
[backend]
backend-antipatterns-2-god-object-big-ball-of-mud.md
179

안티패턴이란 무엇인가 — 패턴의 그림자

안티패턴의 엄격한 정의(해법이 두 개 있어야 한다), 코드 스멜·실패 사례와의 구분, 판별 체크리스트, 그리고 16편 시리즈의 지도.

2026-09-14
[backend]
backend-antipatterns-1-what-is-an-antipattern.md
180

프론트엔드 디자인 패턴 (7) — GoF 23개의 운명: 생존, 변형, 소멸

GoF 패턴 23개가 실제 프론트엔드 라이브러리 코드에서 어떤 모습으로 살아있는지 추적하고, 사라진 것들은 왜 사라졌는지 밝힌다. 시리즈 완결.

2026-09-14
[frontend]
frontend-design-patterns-7-gof-in-frontend.md

blog92@web:~$ exit