Overview
1. Languages & Runtimes
Section titled “1. Languages & Runtimes”언어 자체보다 런타임 모델을 이해하고 있느냐가 대화의 깊이를 결정한다.
Languages
Section titled “Languages”-
게임 클라이언트(Unity), 툴링, 서버까지 폭넓게 사용됨
-
주요 대화 포인트
- GC 압박이 언제 발생하는가
- async/await가 Task를 어떻게 스케줄링하는가
- IL2CPP / AOT 환경에서 무엇이 달라지는가
-
“왜 이 코드는 allocation이 많죠?” 같은 질문에 답할 수 있어야 신뢰가 생김
-
JS 생태계에서 협업을 가능하게 만드는 언어
-
주요 대화 포인트
- 타입은 설계를 문서화하는 수단이다
- any를 쓰는 순간 무슨 비용이 발생하는가
- API 변경이 컴파일 타임에 어떻게 감지되는가
-
모든 웹 기술의 기반
-
주요 대화 포인트
- 이벤트 루프 / 마이크로태스크 / 매크로태스크
- Promise 체이닝 vs async/await
- 싱글 스레드인데 왜 병렬처럼 보이는가
-
빠른 검증과 자동화의 언어
-
주요 대화 포인트
- GIL의 의미와 한계
- 왜 서버는 Python으로 시작했다가 다른 언어로 옮기는가
-
단순함을 무기로 한 서버·CLI 언어
-
주요 대화 포인트
- goroutine은 스레드가 아니다
- 채널 기반 설계의 장단점
- 왜 DevOps 도구는 Go가 많은가
-
인프라 감각의 바로미터
-
주요 대화 포인트
- 사람이 아니라 CI가 실행한다는 관점
- 실패를 감지하는 스크립트 vs 성공만 가정하는 스크립트
Runtime Concepts
Section titled “Runtime Concepts”-
CLR / JIT / AOT
→ 빌드 시간 vs 실행 시간 vs 메모리 사용량의 트레이드오프 -
Garbage Collection
→ 언제 튀는가, 왜 튀는가, 어떻게 피하는가 -
Thread / Task / Async Runtime
→ CPU-bound / IO-bound 구분이 되는가 -
Event Loop (Node.js)
→ 비동기 코드 순서를 그림으로 설명할 수 있는가 -
Native Interop (P/Invoke, JNI)
→ 엔진/플랫폼 이야기로 넘어갈 때 필수 -
그 외 Model들
→ Execution Model
→ Memory Model
→ Concurrency Model
2. Architecture & Design
Section titled “2. Architecture & Design”아키텍처는 정답이 아니라 의사결정 기록이다.
Architectural Styles
Section titled “Architectural Styles”-
Layered Architecture
→ 단순하지만 의존성 방향이 무너지기 쉬움 -
Clean Architecture
→ 테스트와 장기 유지보수를 중시할 때 -
Hexagonal (Ports & Adapters)
→ 외부 세계(DB, 네트워크, UI)를 교체 가능하게 만드는 구조 -
MVC / MVP / MVVM
→ UI와 상태 관리의 책임 분리 -
CQRS / Event-driven
→ 규모가 커질 때 등장하는 선택지
Design Concepts (대화에 반드시 나오는 단어들)
Section titled “Design Concepts (대화에 반드시 나오는 단어들)”- Ownership: 이 데이터는 누가 책임지는가
- Lifecycle: 언제 생성되고 언제 파괴되는가
- Boundary: 여기까지가 이 시스템의 책임인가
- Coupling / Cohesion: 바꾸기 쉬운가
- Trade-offs: 무엇을 포기했는가
설계 리뷰에서 코드보다 먼저 나오는 질문들
3. Asynchronous & Concurrency
Section titled “3. Asynchronous & Concurrency”대부분의 버그는 비동기 경계에서 발생한다.
Async Models
Section titled “Async Models”대화 포인트
- 예외는 어디로 전파되는가
- 취소(Cancellation)는 설계에 포함되어 있는가
Concurrency Primitives
Section titled “Concurrency Primitives”“thread-safe한가요?” 라는 질문은 → 어떤 상태를 보호하고 있는가라는 질문이다.
4. Package & Dependency Management
Section titled “4. Package & Dependency Management”패키지는 코드보다 신뢰를 배포한다.
Package Managers
Section titled “Package Managers”- npm / pnpm / yarn
- NuGet
- Unity Package Manager
Dependency Strategies
Section titled “Dependency Strategies”- Semantic Versioning
- Dependency Pinning
- Peer / Transitive Dependency
- Vendoring
대화 포인트
- 왜 lockfile이 필요한가
- 버전 충돌은 언제 발생하는가
- 재현 가능한 빌드는 왜 중요한가
5. Cloud & Backend
Section titled “5. Cloud & Backend”Serverless
Section titled “Serverless”- IaaS (VMs) vs. CaaS (Containers) vs. PaaS (App Service) vs. FaaS (Serverless Functions)
- AWS Lambda
- Google Cloud Functions
- Firebase Functions
Managed Services
Section titled “Managed Services”APIs & Communication
Section titled “APIs & Communication”Messaging & Eventing
Section titled “Messaging & Eventing”flowchart LR
U[Unity Client]
A[API Server]
U -->|HTTP| A
A -->|Async| M[Messaging System]
M --> C[Consumers]
- Unity는 항상 HTTP까지만 책임
- 메시징 시스템은 서버 내부 구조
- 클라이언트는 비동기 처리 결과를 “기다리지 않는다”
SQL, NoSQL, NewSQL?
Section titled “SQL, NoSQL, NewSQL?”대화 포인트
- 동기 vs 비동기
- 요청 수 vs 연결 수
6. Data & Storage
Section titled “6. Data & Storage”Databases
Section titled “Databases”- PostgreSQL / MySQL
- Redis
- Firestore
- CDN
Data Formats
Section titled “Data Formats”- JSON
- Protobuf
- MessagePack
Storage Types
Section titled “Storage Types”- Block Storage
→ EBS, for VMs - Fire Storage
→ NFS, EFS, for shared access - Object Storage
→ S3, GCS, for blobs, backups, static assets
“왜 이 포맷을 썼나요?” 에 답할 수 있어야 함
7. Security & Identity
Section titled “7. Security & Identity”- OAuth 2.0
- JWT
- API Key
- IAM / RBAC
- OpenID Connect (OIDC)
- SAML (Enterprice SSO)
Access Control:
Section titled “Access Control:”- RBAC
- ABAC
- IAM
보안은 기능이 아니라 전제 조건이다.
8. CI / CD & Automation
Section titled “8. CI / CD & Automation”CI는 개발 문화의 압축 파일이다.
CI Concepts
Section titled “CI Concepts”- Pipeline
- Stage / Job
- Artifact
- Cache
- Triggering & Scheduling
- Matrix Build
- Reproducible Build
중요한 질문
- 이 빌드는 언제 깨지는가
- 로컬과 CI의 차이는 무엇인가
9. Containers & Execution Environments
Section titled “9. Containers & Execution Environments”Containers
Section titled “Containers”- Image vs Container
- Dockerfile
- Multi-stage Build
- Image Layer Cache
- Public vs. Private Registries (Docker Hub, AWS ECR, GCP GCR)
“내 컴퓨터에선 됐는데요” 를 없애기 위한 도구
Orchestration
Section titled “Orchestration”- Kubernetes
- Helm / Kustomize
직접 쓰지 않더라도 개념을 알면 서버 팀과 대화가 된다.
10. Observability & Operations
Section titled “10. Observability & Operations”Logging
Section titled “Logging”- Structured Logging
- Trace ID
Monitoring & Tracing
Section titled “Monitoring & Tracing”- Prometheus
- OpenTelemetry
- Sentry
Reliability Patterns
Section titled “Reliability Patterns”- Health Checks
- Retry
- Timeout
- Circuit Breaker
- Rate Limiting & Throttling
11. Unity & Game Dev Context
Section titled “11. Unity & Game Dev Context”- Unity + .NET Runtime
- IL2CPP / AOT
- Addressables / Asset Pipeline
- Build Automation
게임 개발자는 엔진·플랫폼·서버 언어를 동시에 쓴다.
이 리스트를 전부 잘할 필요는 없다. 하지만, 어떤 키워드가 나왔을 때
- 아, 그건 이런 맥락의 문제구나
- 이 선택에는 이런 비용이 따르겠구나
라고 이어서 말할 수 있다면, 이미 기술로 소통하고 있는 상태다.