Skip to content

Overview

언어 자체보다 런타임 모델을 이해하고 있느냐가 대화의 깊이를 결정한다.

  • 게임 클라이언트(Unity), 툴링, 서버까지 폭넓게 사용됨

  • 주요 대화 포인트

    • GC 압박이 언제 발생하는가
    • async/await가 Task를 어떻게 스케줄링하는가
    • IL2CPP / AOT 환경에서 무엇이 달라지는가
  • “왜 이 코드는 allocation이 많죠?” 같은 질문에 답할 수 있어야 신뢰가 생김

  • JS 생태계에서 협업을 가능하게 만드는 언어

  • 주요 대화 포인트

    • 타입은 설계를 문서화하는 수단이다
    • any를 쓰는 순간 무슨 비용이 발생하는가
    • API 변경이 컴파일 타임에 어떻게 감지되는가
  • 모든 웹 기술의 기반

  • 주요 대화 포인트

    • 이벤트 루프 / 마이크로태스크 / 매크로태스크
    • Promise 체이닝 vs async/await
    • 싱글 스레드인데 왜 병렬처럼 보이는가
  • 빠른 검증과 자동화의 언어

  • 주요 대화 포인트

    • GIL의 의미와 한계
    • 왜 서버는 Python으로 시작했다가 다른 언어로 옮기는가
  • 단순함을 무기로 한 서버·CLI 언어

  • 주요 대화 포인트

    • goroutine은 스레드가 아니다
    • 채널 기반 설계의 장단점
    • 왜 DevOps 도구는 Go가 많은가
  • 인프라 감각의 바로미터

  • 주요 대화 포인트

    • 사람이 아니라 CI가 실행한다는 관점
    • 실패를 감지하는 스크립트 vs 성공만 가정하는 스크립트


아키텍처는 정답이 아니라 의사결정 기록이다.


설계 리뷰에서 코드보다 먼저 나오는 질문들


대부분의 버그는 비동기 경계에서 발생한다.

대화 포인트

  • 예외는 어디로 전파되는가
  • 취소(Cancellation)는 설계에 포함되어 있는가

“thread-safe한가요?” 라는 질문은 → 어떤 상태를 보호하고 있는가라는 질문이다.


패키지는 코드보다 신뢰를 배포한다.

  • npm / pnpm / yarn
  • NuGet
  • Unity Package Manager
  • Semantic Versioning
  • Dependency Pinning
  • Peer / Transitive Dependency
  • Vendoring

대화 포인트

  • 왜 lockfile이 필요한가
  • 버전 충돌은 언제 발생하는가
  • 재현 가능한 빌드는 왜 중요한가

  • SQS: 안전한 비동기 작업 큐
  • RabbitMQ: 실시간 이벤트 분배
  • Kafka: 대규모 이벤트 기록과 분석
  • Kinesis: AWS 기반 실시간 스트리밍
flowchart LR
    U[Unity Client]
    A[API Server]

    U -->|HTTP| A
    A -->|Async| M[Messaging System]
    M --> C[Consumers]
  • Unity는 항상 HTTP까지만 책임
  • 메시징 시스템은 서버 내부 구조
  • 클라이언트는 비동기 처리 결과를 “기다리지 않는다”

대화 포인트

  • 동기 vs 비동기
  • 요청 수 vs 연결 수

  • PostgreSQL / MySQL
  • Redis
  • Firestore
  • CDN
  • JSON
  • Protobuf
  • MessagePack

“왜 이 포맷을 썼나요?” 에 답할 수 있어야 함


  • OAuth 2.0
  • JWT
  • API Key
  • IAM / RBAC
  • OpenID Connect (OIDC)
  • SAML (Enterprice SSO)
  • RBAC
  • ABAC
  • IAM

보안은 기능이 아니라 전제 조건이다.


CI는 개발 문화의 압축 파일이다.

  • Pipeline
  • Stage / Job
  • Artifact
  • Cache
  • Triggering & Scheduling
  • Matrix Build
  • Reproducible Build

중요한 질문

  • 이 빌드는 언제 깨지는가
  • 로컬과 CI의 차이는 무엇인가

  • Image vs Container
  • Dockerfile
  • Multi-stage Build
  • Image Layer Cache
  • Public vs. Private Registries (Docker Hub, AWS ECR, GCP GCR)

“내 컴퓨터에선 됐는데요” 를 없애기 위한 도구

  • Kubernetes
  • Helm / Kustomize

직접 쓰지 않더라도 개념을 알면 서버 팀과 대화가 된다.


  • Structured Logging
  • Trace ID
  • Prometheus
  • OpenTelemetry
  • Sentry
  • Health Checks
  • Retry
  • Timeout
  • Circuit Breaker
  • Rate Limiting & Throttling

  • Unity + .NET Runtime
  • IL2CPP / AOT
  • Addressables / Asset Pipeline
  • Build Automation

게임 개발자는 엔진·플랫폼·서버 언어를 동시에 쓴다.


이 리스트를 전부 잘할 필요는 없다. 하지만, 어떤 키워드가 나왔을 때

  • 아, 그건 이런 맥락의 문제구나
  • 이 선택에는 이런 비용이 따르겠구나

라고 이어서 말할 수 있다면, 이미 기술로 소통하고 있는 상태다.