00. Setup

Spirit of Kiro 게임의 클라이언트와 서버를 로컬에서 띄우고 AWS 계정과 연결하여, Kiro로 작성한 변경 사항을 바로 확인할 수 있도록 개발 환경을 준비합니다.

로컬 개발 환경 구성

이 가이드는 오픈 소스 게임 Spirit of Kiro를 직접 실행해 보면서 Kiro의 워크플로우를 익히는 시리즈의 첫 단계입니다. 아래 절차를 따라가면 컨테이너 기반의 풀 스택 환경을 손쉽게 띄울 수 있습니다.

1. 저장소 클론

먼저 GitHub에서 코드를 가져오고 워크숍용 challenge 브랜치로 이동합니다.

git clone git@github.com:kirodotdev/spirit-of-kiro.git
cd spirit-of-kiro/
git checkout challenge

아키텍처를 큰 그림에서 이해하고 싶다면 저장소의 docs/architecture.md를, 컴포넌트들이 어떻게 맞물리는지 자세히 보고 싶다면 docs/appsec-overview.md를 먼저 살펴보면 좋습니다.

2. 사전 요구사항

  1. 컨테이너 런타임: Docker Desktop 또는 Podman (이 가이드에서는 Podman을 권장합니다)
  2. AWS 계정과 AWS CLI 설치, 그리고 자격 증명 설정 완료
  3. 다음 모델 중 하나 이상에 대한 Amazon Bedrock 액세스 권한
    • Amazon Nova Pro
    • Anthropic Claude Sonnet 3.7
    • Anthropic Claude Sonnet 4

3. 의존성 점검

준비된 환경이 요구사항을 충족하는지 스크립트로 한 번에 확인합니다.

./scripts/check-dependencies.sh
check-dependencies.sh 실행 화면
의존성 검사 스크립트가 필요한 도구와 AWS 설정을 확인합니다.

4. Cognito 사용자 풀 배포

플레이어 계정을 관리할 Amazon Cognito 사용자 풀을 배포합니다. AWS Free Tier에서도 운영할 수 있습니다.

./scripts/deploy-cognito.sh game-auth
Tip. game-auth 인자는 CloudFormation 스택 이름으로 사용됩니다. 원하는 다른 이름으로 바꿔도 됩니다.
Cognito 배포 진행 화면
CloudFormation을 통해 Cognito 사용자 풀이 생성되는 모습.

5. 빌드와 실행

이제 컨테이너를 빌드하고 스택을 띄웁니다. 변경 사항을 자동으로 반영하기 위해 --watch 옵션을 사용합니다.

podman compose build && podman compose up \
  --watch \
  --remove-orphans \
  --timeout 0 \
  --force-recreate

처음 실행할 때는 이미지를 받아오느라 몇 분이 걸릴 수 있지만 이후에는 훨씬 빠르게 기동됩니다. 스택을 멈추려면 터미널에서 Control + C (macOS는 Command + C)를 누르세요.

Podman을 처음 쓰나요? 가상 머신이 한 번도 초기화된 적이 없다면 podman machine init && podman machine start를 먼저 실행해야 합니다.
주의. Podman 가상 머신은 호스트가 절전 모드에 들어갔다 나오면 시간이 어긋나서 AWS 호출이 실패할 수 있습니다. 이럴 때는 다음 명령으로 시간 동기화를 다시 맞춰 주세요.
podman machine ssh sudo systemctl restart chronyd.service
빌드 및 실행 과정
compose 빌드와 실행이 동시에 진행되는 모습.
Podman UI에 표시된 컨테이너 목록
스택이 정상 기동되면 Podman UI에서 실행 중인 컨테이너를 확인할 수 있습니다.

6. 데이터베이스 부트스트랩

로컬 스택은 DynamoDB Local 컨테이너를 사용합니다. 게임이 동작하려면 필요한 테이블을 미리 생성해 두어야 합니다. 스택이 떠 있는 상태에서 새 터미널을 열고 다음을 실행하세요.

podman exec server mkdir -p /app/server/iac && \
podman cp scripts/bootstrap-local-dynamodb.js server:/app/ && \
podman cp server/iac/dynamodb.yml server:/app/server/iac/ && \
podman exec server bun run /app/bootstrap-local-dynamodb.js
DynamoDB 테이블 생성
스크립트가 로컬 DynamoDB에 필요한 테이블을 만들어 줍니다.
데이터 초기화. DynamoDB Local 데이터는 docker/dynamodb/shared-local-instance.db 파일로 보존됩니다. 처음 상태로 되돌리려면 이 파일을 삭제하고 스택을 재시작한 뒤 위 부트스트랩 명령을 다시 실행하면 됩니다.

7. 동작 확인

  1. 서버가 살아 있는지 확인합니다. curl localhost:8080을 실행하면 OK가 응답으로 와야 합니다.
  2. 브라우저에서 localhost:5173을 열어 클라이언트에 접속합니다.
  3. 계정을 새로 만든 뒤 게임을 시작해 보세요.

게임 플레이 가이드

본격적으로 코드를 고치기 전에 게임 메커닉을 익혀 두면 이후 실습이 훨씬 수월합니다.