일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- OSI 7계층
- 신입 개발자 면접
- mysql index 속도차이
- mongo 4.4.18
- 밸런스 게임
- mysql like
- mongo 4.4
- 개발자 취업 준비
- token 탈취
- git
- 라즈베리바이4 mongo
- 퇴사
- ECS
- 인텔리제이 github 로그인
- index in
- 신입 면접 팁
- docker m2
- 개발자 면접 팁
- index like
- aws m2
- 회고록
- 개발자 전직
- 개발자 회고록
- nestjs
- 팩토리 패턴 언제
- 쿠버네티스
- github accesstoken
- 팩토리 패턴 예제
- kubernetes
- VUE
- Today
- Total
주니어 개발자 1호
개발자 밸런스 게임 출시 본문
잠깐 해보실래요?
출시
개발자 밸런스 게임을 정식으로 domain을 씌워, 웹으로 배포하였다.
SSL은 AWS의 ACL을 통해 발급
간단하게 frontend 는 nelify에 domain을 입혔고
백엔드는 ec2에 docker를 설치하여 특정 port로 돌아가고 있다.
( local에서 ecr에 image를 올리고 ec2에 올리고있다. )
추후 git action 등으로 자동배포 툴을 만들 것 같다.
하지만 지금은 배포 주기가 길어서 ec2에 직접 배포하려고 한다.
테스트용으로, SNS 및 카톡 단톡방에 출시한 웹에 대한 피드백을 요청드렸다
2일간 109명이 즐겨주셨는데, 내가 만든 product에 대한 유저 반응과 DB를 직접 본다는게 너무 재미있고 신났다.
추적을 위해 구글 애널리틱스를 사용하였고 처음써봤는데 간단히 사용자를 보는것은 쉬웠는데, 추후 보완을 하며 공부해보고 싶은 부분이다.
간단 로드맵
[ 이전 ]
현재는 내 머리에서 나온 질문 68가지 정도가 있었는데 전부 다 풀기전까지는 웹에서 벗어나지 못했다.
[ 이후 ]
일단 피드백을 기반으로 Front 쪽의 Flow가 바뀔 것 같다.
- 질문 시작전, 질문 개수에 대해 5, 10개등으로 선택하여 시작할 수 있도록 바뀔예정이다.
- 질문에 대한 대답시 바로 바로 선택지에 대한 %가 제공되었는데. 결과 페이지를 따로 만들것이다.
고통의 배포
사실 백엔드 배포를 하면서 **바보=성장**같은짓을 했는데..
기록해보려고 한다.
( main.ts에서 port의 직접입력이 원인 )
불길의 시작
route 53에 백엔드 domain을 추가하였고, ALB 와 TargetGroup에서 Ec2를 listen 해주면 쉽게 배포할 수 있다고 생각이 들어 별 테스트없이 진행중이였다.
하지만…
TargetGroup에서 HealthCheck가 실패..?
의심1 ( DNS Check )
아냐 그럴리 없어,. 내 기도가 부족한거겠지라고 생각하면서 추가적으로 ALB에서 나오는 ARecord 를 통해 ( DNS name ) 간단히 테스트해보면 되겠지 라고 생각하여 API 서버의 GET method ( HealthCheck ) 쪽에 접근해보았는데
어..?
어….??????? 왜 안되는거야…? 완전 울고싶었다..
의심2 ( 인바운드 규칙 )
ec2에 급히 접근하여 docker logs -t 100 -f <container-id>를 급히 입력하고 follow상태로 체크해보았는데 log가 들어온 흔적이 없다. app은 정상적으로 돌아가고 있었다..
처음에는 Inbound 규칙을 의심하였고, Security Group을 봤는데 전혀 문제가 없었다.
심지어, 임의로 다 열어서 테스트를 해보았는데 log가 쌓이지 않는다.
docker container가 run 되고 있는 상황에서 급한 마음에 container를 끄지않고, 다른 port로 run을 시켰는데 그만 ec2의 cpu도 내 멘탈도 터져버리고 말았다.
( *t2.micro 무료인스턴스 사용 )
의심3 ( linux run port )
다시 마음을 잡고 이럴리 없어, 하면서 linux에서 port를 확인해보자.. 안 돌고 있는 것 이겠지..하고
터미널을 켜서..확인해보았는데.. docker가 내가 원하는 port에서 실행이 되고 있었다\
그럼 이것도 아니였다.
의심4 ( docker network 정책 )
docker에서 뭔가 linux에서 network 관련해서 이슈를 찾아보았는데, 별 다른 소득이 없었다.
의심5 ( docker build file )
docker build file도 확인을 해보니, 평소 image 생성과 다를게 없었다.
의심6 ( nestJs main.ts )
commit: link
이게 정답이였다, 프로젝트를 진행하며 front port을 유지하려, 평소 자주쓰던 backend의 3000 port를 3030으로 바꾸어 테스트하고 있었다.
3000으로 다시 image를 올리고 배포하니 잘 되었다
후기
평소 습관의 문제점을 깨달았다. 그리고 초기 env 세팅등이 또 얼마나 중요한지 깨달았다.
추가적으로, 해결방법에 대한 내 생각을 적어보려 한다.
- env를 세팅하여 production 환경에서는, main.ts port를 내가 원하는 값으로 핸들링한다.
- dockerfile에서 port를 주입하여, main.ts의 port를 사용할 수 도 있을것이다.
- 서버가 실행될 때, Log에 Port를 명시한다 ( 추적시 시각적 효과 )
'사이드 프로젝트 진행' 카테고리의 다른 글
[DevQuiz] 개발자 이론 퀴즈 (w. ECS - Fargate 수동 구성 테스트) (0) | 2023.06.06 |
---|---|
개발자 밸런스게임 ( 진행중 2 ) (0) | 2023.04.23 |
개발자 밸런스게임 (진행 중 1 ) (0) | 2023.04.16 |
API가 없어도 웹 크롤링으로 가능한 게임 기능 수집 (0) | 2023.04.09 |
리액트 토이 프로젝트 개발, 오늘도 열심히 살았습니다. (0) | 2023.04.02 |