엔지니어링 fundamental — 필드 전체 지도
소프트웨어 엔지니어링은 한 가지 기술이 아니라 몇 개의 밴드로 나뉜 ~18개의 별개 마스터 가능 도메인이다. 아무도 전부를 깊이 갖지 못한다 — 현실은 T자형. 벽이 아니라 방향을 위한 지도.
·map · fundamentals · systems · career
모양
소프트웨어 엔지니어링은 한 가지 기술이 아니라, 별개로 마스터 가능한 도메인들이 몇 개의 밴드로 묶인 것이다. 전부를 갖는 사람은 없다. 현실적인 모양은 T자형 — 한두 개는 깊게, 나머지는 읽고 추론하고 경계에서 협업할 만큼. 이게 영토다.
토대 — 모든 게 이 위에 선다
- 전산 기초 — 알고리즘 & 자료구조, 복잡도(Big‑O), 계산가능성, 확률. 수학적 기반.
- 단일머신 시스템 — 메모리 계층, 동시성 프리미티브(락·atomic·async), OS(스케줄링·가상메모리·syscall), I/O 모델, 런타임(GC/JIT), 타입 시스템. 한 대의 컴퓨터가 프로그램을 어떻게 돌리나.
- 네트워킹 — TCP/IP, HTTP/1‑2‑3 & QUIC, DNS, gRPC/RPC, TLS, 로드밸런싱, CDN/엣지. 바이트가 기계 사이를 어떻게 움직이나.
분산 백엔드 — 클라우드 제품의 코어
- 분산 시스템 & 데이터 정합성 — 합의(Raft/Paxos), 트랜잭션 & isolation(MVCC, race-condition), 복제, 샤딩, 전달 시맨틱 & idempotent, distributed-lock, 캐싱, back-pressure, 프리미티브로서의 append-only-log. 독립적으로 죽는 기계들 위에서 상태를 정확히 유지하는 것. 백엔드 인터뷰 깊이의 대부분이 여기 산다.
- 데이터 엔지니어링 — 배치 & 스트림 파이프라인, OLAP/컬럼나, lakehouse, 데이터 모델링, 오케스트레이션. 분석·ML을 위한 대규모 데이터.
AI / ML
- ML 시스템(고전) — 선형대수 & 통계, 고전 모델, 피처 엔지니어링, 평가 & A/B, 모델 서빙, 드리프트 모니터링, GPU. LLM이 아닌 프로덕션 ML.
- 생성 AI / LLM 스택 — 트랜스포머, 임베딩 & 벡터 검색, RAG, 에이전트, eval, 추론 서빙, 파인튜닝. 거대 모델 위에 짓는 제품.
표면 — 사용자가 닿는 곳
- 클라이언트 / 프론트 / 모바일 — 렌더링 파이프라인, 이벤트 루프, 클라이언트 상태, Web Vitals, SSR, 접근성, PWA/오프라인, 모바일 플랫폼.
- 제품 / UX 엔지니어링 — 제품 감각, 사용성, 디자인 시스템, 사용자 리서치, 실험. 옳게 만드는 것을 넘어 옳은 것을 만드는 것.
가로지르는 축 — 모든 시스템이 필요로 함
- 보안 공학 — 인증 & 인가, 응용 암호, TLS/PKI, 위협 모델링, 시크릿 & 키 관리, IAM, zero-trust, 테넌트 격리.
- 신뢰성·운영·클라우드(SRE) — 관측성(로그/메트릭/트레이스), SLO & 에러버짓, 인시던트 대응, CI/CD & 릴리스(canary/롤백/피처플래그), IaC, Kubernetes, 오토스케일.
장인정신 & 판단 — 나머지를 복리로 만드는 것
- 소프트웨어 설계 & 딜리버리 — 추상화 & 결합도, SOLID, 도메인 모델링(DDD), API 계약, 테스트 피라미드, 버전관리, ADR, 리팩터링.
- 엔지니어링 판단 & 메타 스킬 — 불확실성 속 트레이드오프 분석, first-principles 추론, 결정의 경제성, 리스크, build-vs-buy, 기술 커뮤니케이션, AI-native 워크플로(그리고 언제 검증할지 아는 것), 결과에 대한 오너십.
인접 전문분야 — 각각 하나의 필드
대부분의 제품/백엔드 경로 밖이지만, 진짜 마스터 가능한 도메인들:
- 임베디드 / 실시간 — RTOS, WCET, 인터럽트/ISR, DMA, 펌웨어, 제어이론, 필드버스(CAN/I2C/SPI).
- 하드웨어 / 컴퓨터 아키텍처 — ISA 설계, RTL, 캐시 일관성(MESI), HDL, FPGA/ASIC, 가속기.
- 그래픽스 / 게임엔진 — 래스터화, 셰이더, 레이트레이싱, 물리, 게임 루프, ECS.
- 과학계산 / HPC — 밀집 & 희소 선형대수, 솔버, ODE/PDE, 시뮬레이션, MPI/OpenMP.
- 정보이론 & 압축 — 엔트로피, 소스 코딩(Huffman/LZ/zstd), 오류정정부호, 확률적 자료구조(Bloom, HyperLogLog).
읽는 법
경계는 샌다 — 느린 쿼리 하나가 단일머신이면서 동시에 분산이고 동시에 데이터 모델링이다. 그게 핵심이다: 이 지도는 벽이 아니라 방향이다. spike(깊게 파는 한두 도메인)를 고르고 나머지는 literacy 수준으로 — 만나는 지점에서 추론하고 협업할 만큼.
자주 헷갈리는 세 가지
이 지도는 지식 도메인 — 무엇을 아는가다. 인접한 두 개와 자주 섞이는데, 셋을 이름으로 갈라두는 게 제대로 쓰는 절반이다:
- 시스템 디자인은 도메인이 아니라 활동이다. 요구사항을 만족하게 컴포넌트를 스케일에서 조합하는 것. 이 지도의 부분집합 — 주로 네트워킹·분산/데이터·보안·신뢰성 + 트레이드오프 판단 — 을 끌어다 쓴다. "X를 스케일에서 설계하라" 인터뷰는 그 조합 능력을 보는 거지 필드 전체가 아니다.
- 소프트웨어 설계(OOD)는 또 다른 활동이다. 코드가 변경 가능하게 구조 잡는 것 — 추상화·결합도·SOLID·도메인 모델링. 이건 craft 밴드지 시스템 디자인이 아니다.
즉: 필드(이 지도 전체) ⊃ 시스템 디자인이 조합하는 슬라이스 ≠ 소프트웨어 설계의 코드 레벨 장인정신. 셋은 종류가 다르다 — 지식 덩어리, 스케일-조합 활동, 코드-구조화 활동.