Nest.js docker 이미지 최적화 대작전 (Feat. no space left on device, multi-stage build)
·
DEV/docker
들어가며 사이드 프로젝트로 리뉴얼 중인 cherish 개발용 테스트 서버를 배포하던 중 삽질을 하던 경험을 풀어보려한다. 배포는 aws 서비스를 사용해 진행했고, 설계한 테스트 서버 전체 구조는 다음 이미지와 같다. 전체적으로 Beanstalk 환경에 ELB를 사용한 오토 스케일링 그룹을 만들고, 내부적으로는 EC2, docker 를 사용해 Nest.js 앱을 배포하는 구조이다. Beanstalk 으로 보내는 과정은 Github Actions 를 통해 자동화해보았다. 이 과정에서 배포에 실패하는 다양한 문제를 겪었는데 그 중 No space left on device 라는 킹받는 이슈를 해결하기까지 과정을 적어보려한다. 아직 docker 나 인프라 관련 지식이 많이 부족해 틀린 부분이 있을 수 있어 발견..
[Nest.js] Official Document 정리 (Controller) - 2
·
DEV/Node.js
Status Code 언급한대로 기본적으로 상태 코드는 POST 요청을 제외하고는 항상 200이다. @HttpCode() decorator 를 통해 핸들러 레벨에서 쉽게 바꿀 수 있다. @Put() @HttpCode(204) modifyCat(): string { return 'modify cat'; } HttpCode 는 @nestjs/common 패키지에서 import 한다. 종종 상태 코드가 정적이 아니라 다양한 요인에 의해 달라질 수 있다. 이 경우 library-specific response 객체를 사용할 수 있다. (@Res()) Headers custom response header 를 위해 @Header() decorator 나 library-specific response 객체를 사용 ..
[Nest.js] official document 정리 (설치, controller) - 1
·
DEV/Node.js
들어가기 전에 최근 사이드 프로젝트로 앱스토어에 이미 출시되어 있는 Cherish 애플리케이션 개편 작업에 함께하게 되었습니다. 제가 맡은 역할은 다른 두 서버 개발자와 함께 Cherish 의 서버를 전면 개편하는 일 입니다. Nest.js 와 요즘 뜨고 있다는 Prisma 를 도입하려고 합니다. 이에 당분간 Nest.js 를 빡세게 공부해보려고 합니다. 아직 많은 내용을 보진 못했지만, document 를 보면 볼 수록 꽤 tsoa 와 비슷하다는 생각이 드네요! 학습하기에 보다 수월할 것 같습니다. 해당 내용은 Nest.js official document 내용을 개인적으로 학습하며, 번역한 글 입니다. https://github.com/NewCherish/Cherish-Server-Lab/tree/j..