[ 2024.09.11 TIL ] 아이템 시뮬레이터

박지영·2024년 9월 11일
0

Today I Learned

목록 보기
43/83

🎮 아이템 시뮬레이터

구현한 기능

라우터 컨트롤러 역할 분리

통상적인 express 라우터를 찾아봤는데 라우터에 비즈니스 로직을 구현한 경우는

거의 볼 수 없었다. 이유인 즉슨 소규모 프로젝트와 유지 보수가 필요없는 프로젝트의

라우터에서는 비즈니스 로직을 라우터에 구현할 수도 있지만 보통 명확한 역할 분리를 위해서

컨트롤러를 따로 구현한다는 것이다. 그래서 나도 역할 분리를 해보았다.

  • 예시 char.router

  • 예시 char.controller

단순히 라우터에 구현해놓은 비즈니스 로직을 컨트롤러에 옮겼기 때문에 많은 시간을 소요하진 않았다.

라우터가 단순히 중개의 역할만 하도록 역할을 명확히 분리했다.

📌 AWS EC2 연결

과제의 요구 사항이 IP를 EC2에 연결해서 배포까지 하는 것이기 때문에

EC2 인스턴스를 생성했다.

이미지는 프리티어 사양인 ubuntu server 24.04 lts를 사용

인스턴스 유형도 프리티어 사양인 t2.micro로

인스턴스 생성 후 RDS를 연결하려고 보니 인스턴스를 북미 지역에 생성해버렸다...

만들기 전에 확인 했어야하는데 실수해버렸다

그래서 인스턴스를 종료하고 서울 지역에 인스턴스를 다시 생성하려고 했는데 왠걸


이런 문구가 뜨면서 인스턴스 개시가 실패하는 것이 아닌가..

그래서 구글링으로 찾아 보니 네트워크 상세 설정에서 서브넷 가용 영역을 다른 곳으로 바꾸라는 말이였다.

서브넷 드롭다운 해보니 하나 밖에 고를 수 있는게 없었다.

그런데 서브넷을 선택하니 인스턴스 유형이 t3.micro로 바뀌는 문제가 생겼다.

t2.micro는 ap-northeast-2b 에서는 지원하지 않는다는 청천벽력같은 문구가 있는 것이 아닌가..

저번에 VPC 설정을 건드리면서 서브넷을 만들었는데 그때 만든 서브넷이 문제가 되는 것 같다.

그래서 서브넷을 새로 만들었다. 가용 영역에서 ap-northeast-2c를 선택하고

IPv4 CIDR을 어찌저찌 입력한 뒤 서브넷을 생성했다.

이후 다시 인스턴스를 생성하니 정상적으로 생성 완료!

RDS도 연결해주고 배포를 해보았다.

  1. 인스턴스 연결 - ssh -i 키페어 ubuntu@인스턴스 Public IPv4

  2. nodejs 설치 curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
    sudo apt-get install -y nodejs

  3. node npm 버전 확인 - node -v npm -v

  4. 원격 저장소 - git clone 내 과제 레포지토리.git 내 프로젝트로 이동 cd 프로젝트명

  5. .env 파일 생성 및 설정

  6. yarn 설치 sudo npm install -g yarn

  7. yarn 초기 설정 yarn init -y 패키지 다운로드 yarn

  8. pm2 설치 sudo -s / yarn global add pm2

  9. 서버 실행 pm2 run src/app.js

    완료!

  • 테스트

    인스턴스 IP를 연결한 도메인으로 접속하니 정상적으로 작동하는 모습

과제를 진행하면서 어려웠던 점

  1. Auth header JWT 토큰 전달

    Auth 헤더로 토큰을 넘긴다는 개념이 잘 이해가 안되서 많이 찾아봤습니다.

    jwt를 Auth 헤더로 전달하는 방식으로 인가를 할 경우

    세션스토리지 등 서버에서 jwt 토큰을 관리할 필요가 없기 때문에

    관련 라이브러리를 삭제하는 등의 해프닝이 있었습니다.


  2. 커밋 컨벤션

    커밋 컨벤션을 정하고 과제를 진행했는데 평소 github desktop 같은 gui로만 커밋 푸쉬 등을

    했었기 때문에 gui로 자체적으로 커밋 컨벤션을 진행하다가 관련해서

    변정섭 튜터님께 여쭈어보았더니 타입스크립트처럼 커밋 형식을 강제하는

    husky commitlint 등의 라이브러리를 추천해주셔서 commitlint husky 설정도 하고

    사용도 했는데 github desktop으로는 커밋을 할 수 없는 문제가 생겨버려서

    터미널로 git add/ git commit 명령어를 사용해야해서 반강제로 연습하는 계기가 되었습니다.


  3. AWS EC2 인스턴스를 생성할 때 문제

    서울 지역 동북아b 가용 영역에서는 t2.micro를 사용할 수 없는 문제가 있어서

    이유를 찾아보았더니 원래는 가용 영역이 자동으로 설정되지만

    저번에 강창민 튜터님이 올려주셨던 AWS 자료에서 IPv6 설정을 할 때 서브넷을 만들었는데

    그 서브넷이 문제였습니다. 자료에서는 할 필요 없다고 했었지만 호기심에 그만...

    이것 때문에 몇 시간을 해매서 기억에 남는데 AWS 콘솔 VPC에서 서브넷을 새로 만들고 만들 때

    가용 영역을 다른 곳으로 설정하고 만든 후 인스턴스를 생성할 때

    새로 만든 서브넷으로 가용 영역을 설정하면 정상적으로 생성되었습니다.

    이런 해프닝이 있었습니다

profile
신입 개발자

0개의 댓글