1단계: 로컬 배포 및 테스트 - Amazon DynamoDB

1단계: 로컬 배포 및 테스트

이 단계에서는 로컬 컴퓨터에 Tic-Tac-Toe 게임 애플리케이션을 다운로드, 배포, 테스트합니다. Amazon DynamoDB 웹 서비스를 사용하는 대신 DynamoDB를 컴퓨터로 다운로드하여 로컬에서 필요한 테이블을 생성합니다.

1.1: 필수 패키지 다운로드 및 설치

이 애플리케이션을 로컬로 테스트하려면 다음이 필요합니다.

  • Python

  • Flask(Python용 마이크로 프레임워크)

  • AWS SDK for Python (Boto)

  • 컴퓨터에서 실행되는 DynamoDB

  • Git

이러한 툴을 다운로드하려면 다음과 같이 하세요.

  1. Python을 설치합니다. 단계별 지침은 Python 다운로드 단원을 참조하세요.

    Tic-Tac-Toe 애플리케이션은 Python 버전 2.7을 사용하여 테스트되었습니다.

  2. PIP(Python Package Installer)를 사용하여 Flask 및 AWS SDK for Python (Boto)을 설치합니다.

    • PIP를 설치합니다.

      자세한 내용은 PIP 설치 단원을 참조하세요. 설치 페이지에서 [get-pip.py] 링크를 선택하고 파일을 저장합니다. 그런 다음 관리자 권한으로 명령 터미널을 열고 명령 프롬프트에 다음을 입력합니다.

      python.exe get-pip.py

      Linux의 경우 .exe 확장자는 지정하지 마세요. python get-pip.py만 지정합니다.

    • PIP를 사용하여 다음 코드를 사용하는 Flask 및 Boto 패키지를 설치합니다.

      pip install Flask pip install boto pip install configparser
  3. DynamoDB를 컴퓨터로 다운로드합니다. 실행 방법에 대한 지침은 DynamoDB local 설정(다운로드 가능 버전) 단원을 참조하세요.

  4. Tic-Tac-Toe 애플리케이션을 다운로드합니다.

    1. Git을 설치합니다. 자세한 내용은 git 다운로드를 참조하세요.

    2. 다음 코드를 실행하여 애플리케이션을 다운로드합니다.

      git clone https://github.com/awslabs/dynamodb-tictactoe-example-app.git

1.2: 게임 애플리케이션 테스트

Tic-Tac-Toe 애플리케이션을 테스트하려면 컴퓨터에서 DynamoDB를 로컬로 실행해야 합니다.

Tic-Tac-Toe 애플리케이션을 실행하는 방법
  1. DynamoDB를 시작합니다.

  2. Tic-Tac-Toe 애플리케이션의 웹 서버를 시작합니다.

    그러려면 명령 터미널을 열고 Tic-Tac-Toe 애플리케이션을 다운로드한 폴더를 찾아 다음 코드를 사용하여 애플리케이션을 로컬로 실행합니다.

    python.exe application.py --mode local --serverPort 5000 --port 8000

    Linux의 경우 .exe 확장자는 지정하지 마세요.

  3. 웹 브라우저를 열고 다음을 입력합니다.

    http://localhost:5000/

    브라우저에 홈 페이지가 표시됩니다.

    
                            만들기 버튼과 게임, 초대장 및 최신 기록에 대한 링크가 있는 애플리케이션 홈 페이지의 스크린샷입니다.
  4. Log in(로그인) 상자에 user1을 입력하여 user1로 로그인합니다.

    참고

    이 예제 애플리케이션에서는 다른 사용자 인증을 수행하지 않습니다. 사용자 ID만 사용하여 플레이어를 식별합니다. 두 명의 플레이어가 동일한 별칭으로 로그인할 경우 애플리케이션은 사용자가 두 가지 브라우저에서 플레이하는 것처럼 작동합니다.

  5. 게임을 처음 플레이하는 경우, DynamoDB에서 필수 테이블(Games)을 만들라고 요청하는 페이지가 나타납니다. [CREATE TABLE]을 선택합니다.

    
                            애플리케이션에서 테이블 만들기 버튼의 스크린샷입니다.
  6. [CREATE]를 선택하여 첫 번째 Tic-Tac-Toe 게임을 만듭니다.

  7. Choose an Opponent(상대방 선택) 상자에 user2를 입력하고 Create Game!(게임 생성!)을 선택합니다.

    
                            상대방 대화 상자의 선택과 게임 생성 버튼을 보여 주는 스크린샷입니다.

    그러면 Games 테이블에 항목이 추가되고 게임이 생성됩니다. 게임 상태는 PENDING이 됩니다.

  8. 다른 브라우저 창을 열고 다음을 입력합니다.

    http://localhost:5000/

    브라우저는 쿠키를 통해 정보를 전달합니다. 따라서 쿠키가 전달되지 않도록 익명 모드 또는 비공개 브라우징을 사용해야 합니다.

  9. user2로 로그인합니다.

    user1의 초대가 보류 중임을 나타내는 페이지가 표시됩니다.

    
                            보류 중인 초대가 있는 애플리케이션 홈 페이지를 보여 주는 스크린샷입니다.
  10. [accept]를 선택하여 초대를 수락합니다.

    
                            진행 중인 게임 상태가 있는 빈 tic-tac-toe 그리드의 스크린샷입니다.

    빈 그리드가 표시된 게임 페이지가 나타납니다. 이 페이지에는 게임 ID, 차례가 된 사용자, 게임 상태와 같은 관련 정보도 표시됩니다.

  11. 게임을 플레이합니다.

웹 서비스는 각 사용자 동작에 대해 Games 테이블의 게임 항목을 조건부 업데이트하라는 요청을 DynamoDB에 전송합니다. 예를 들어 조건은 동작이 유효한지, 사용자가 선택한 사각형이 사용 가능한지, 움직인 사용자의 차례가 맞는지 확인합니다. 유효한 동작일 경우 보드상의 선택에 해당하는 새 속성을 업데이트 작업에서 추가합니다. 또한 업데이트 작업은 다음 동작을 할 수 있는 사용자에게 기존 특성의 값을 설정합니다.

게임 페이지에서 애플리케이션은 DynamoDB의 게임 상태가 변경되었는지 확인하기 위해 1초에 한 번씩 최대 5분간 비동기 JavaScript 호출을 수행합니다. 변경된 경우 애플리케이션은 새 정보로 페이지를 업데이트합니다. 5분 후에는 애플리케이션이 요청을 중지하며 업데이트된 정보를 불러오려면 페이지를 새로 고쳐야 합니다.