[나만무] 2주차 회고/ 트러블 슈팅

wrld_worthy·2024년 1월 23일

KraftonJungle

목록 보기
3/3

회고

우리 팀은 Motion Tetris를 주제로 선정하였고 필요한 스택이나, 요구사항을 분석하며 정리하기 시작했다.

각자 역할을 맡았고 우리 팀은 총 4명으로

2명의 프론트엔드 2명의 백엔드로 나뉘었다.

물론 공식적으로 역할군을 나눴지만

프로젝트를 진행하는데 한쪽이 먼저 끝난다면 바로 남은 쪽으로 뛰어들기로 정했기 때문에

정확한 선은 없고 같이 진행하는 식이 될 것같다.

일단 1차적으로 선정한 기술 스택이다.

front-End

  1. TypeScript
  2. React
  3. Redux
  4. PoseNet API
  5. Nginx
  6. Canvas
    위 스택드을 가지고 진행할 것 같다.

아마 필요에 따른 다른 스택들이 증가될 가능성이 매우 높다.

Back-End

  1. Nest.js
  2. TypeScript
  3. WebRTC
  4. Redis
  5. Mysql

공통

  • Docker

정도로 진행될 것 같다.
TypeORM 정도 당장 추가할 생각은 있고 물론 마찬가지로

추후에 필요에 따른 스택 변화 가능성이 다분하다.

드디어 제대로 시작이 될 것 같아서 기대가 되었다.

그리고 멘토님이 배정되었다.

서버 관련 직종에 종사하시는 현업자이셨고,

백엔드를 지원하고 있는 나의 입장에서는 매우 좋은 기회가 될 것 같다.

매주 화 목 2일 오전 10시에 함께 회의를 진행하기로 했고,

Notion을 통하여 진행 상황이나 계획, 목표, API 문서 등을 관리하기로 하여

Notion에서 모든 것을 기록하고 있다.

이번 한 주 동안 기본적인 API 구현과 화면 구현을 목표로 삼았고

나는 Lobby Server 구현을 담당하였다.

게임 로비 서버를 구현하는게 처음이라 어떻게 구현할지 모르고 검색해도 잘 나오진 않았다.

우리는 진짜 게임서버가 아니고 웹 게임으로 구현을 하다고니 많이 다르기도하고 막 다른 것 같지 않기도 하고

잘 모르겠다...

일단 진행하다보니 CRUD처럼 구현을 하고 있는 me....

Docker도 처음 사용하게 되어서 익숙하지 않아 버벅이며 진행이 느린 me...

역시 처음 사용은 많은 에러를 불러 일으킨다고 생각하고 있었는데, 역시는 역시였다.

바로 에러를 만나 하루 종일 시간을 날려먹었다

Docker Container IP

우리는 개발 환경을 로컬보다는

배포했을 때, 만날 에러를 최대한 줄이기 위해서 Docker를 사용하여 환경을 구축하기로 했다.

팀원 각자 로컬에서 docker ubuntu 이미지를 다운받아서

컨테이너를 생성하고 환경을 구축 후 작업을 진행했다.

나는 NestJS 서버를 생성하고, redis도 이미지를 다운받아 컨테이너를 생성하여 서버를 열었따.

그 후 redis와의 통신 확인을 위해서 API를 적당히 구현하고 redis와의 통신 테스트를 진행했다.

Redis 서버와 통신을 하기 위해서 콘솔로 ping을 날려보니 pong이라는 응답이 잘 오는 것을 확인했고,

nest서버에서 요청을 날려보았다.

하루 종일 이상태였다.

0.0.0.0 host를 localhost로 바인딩도 해보고,

포트 포워딩이 안되어 있나 싶어서 확인도 해보고

정상으로 보여도 다시 포워딩을 진행하고 연결해보았다.

역시나 안된다.

다른 포트로도 해보았다.

역시 안된다.

재부팅, 이미지 삭제, 재설치 다해봤다.

역시... Nope

더 이상 뭘 해봐야 할지 모르겠던 나는

docker container의 Inspect를 뒤지기 시작했다.

역시...

새로운 것을 사용하거나 배울때에는 내부적인 것을 빠르게 캐치하는게 중요한 것 같다.

사진으로 확인해보자

하... container의 IPAddress가 따로 존재했다.

나는 단지 nest서버를 열어놓은 컨테이너는 ubuntu 이미지로 생성했을 때에는

localhost로 요청을 보내고 응답을 받을 수 있었는데,

redise 컨테이너는 아니었다.

Docker의 Docs를 전부 찾아보고 완벽히 공부한 것은 아니지만

Docker는 기본적으로 컨테이너의 개념으로 독립적인 어플리케이션 환경을 제공한다.
따라서 localhost나 127.0.0.1 흔이 자기 자신을 가리키는 Host는 말 그대로 컨테이너의 자신을 가리키는 호스트를 뜻하며 Docker에서 모든 container에 독립적인 환경, 주소, 설정 값 등을 제공한다.

nest서버에서 localhost:6379(redis port번호 : 6379)로 요청을 보낸 것은 그냥 자신 컨테이너의 6379 port로 요청을 보기만 하고 있던 것이다.

그럼 왜 ubuntu 컨테이너에 있는 nestjs는 왜 요청을 받을 수 있었을까?

그것은 로컬 환경의 3000번 포트가 ubuntu 컨테이너와 포워딩이 되어있기 때문이었다.

정말 좀만 공부하고 진행했다면 하루를 날리지 않았을 에러이다...

Docs란 정말 중요한 문서이며 꼭 필요하고 세세하게 꼼꼼히 확인해야만 한다는 것을 깊게 느낄 수 있었다.


기존에 host에 localhost라고 적었던 것을 컨테이너의 주소로 바꿔서 실행해보았다.

AppModule이 성공적으로 실행된 것을 확인할 수 있었고

요청도 아주 잘 된다...

많은 것을 배운 트러블 슈팅 아닌 트러블 슈팅이었다.

그리고 Docker를 사용해보니 상당히 환경이 깔끔해지고 편리함, 쾌적함을 좀 느낄 수 있었다...

아직 깊게 사용해보진 않았지만 맘에 들어서 따로 Docker에 대한 공부를 진행해볼까 한다.

0개의 댓글