DEV/Node.js

DEV/Node.js

[Nest.js/Prisma] e2e 테스트 시 docker 로 격리된 MySQL 환경 세팅

들어가며 안녕하세요. 잡채입니다 🙇🏻 얼마 전 사이드 프로젝트 서버 작업을 하며, e2e 테스팅 중 docker 를 사용해 MySQL DB를 완전히 격리해 테스트 할 수 있도록 환경을 세팅해보았습니다. e2e 테스트 시 애플리케이션의 처음과 끝을 흐름에 따라 모두 테스트 하기 때문에 당연히 DB 접근을 해야합니다. 현재 프로젝트의 경우 개발용 MySQL DB 를 RDS에 올려 사용 중인데 아무리 개발용 데이터베이스라 하여도 여러번 진행되는 e2e 테스트 마다 테스트용 데이터들이 쌓이거나 바뀌도록 구성할 수는 없었습니다. 또한, 현재 사용중인 데이터를 잘못하여 update 시키거나 삭제할 수도 있기 때문에 e2e 테스트 중에는 격리된 데이터 베이스를 새로 구성하고 싶었습니다. 여러 자료를 찾아보던 중 pr..

DEV/Node.js

PR 좀 봐달라고 독촉 하는 Slack app (Feat. Node.js, AWS Lambda)

들어가며 사이드 프로젝트를 하며 pr 을 올려보지만 팀원들이 안봐준다면 .. 슬프잖아요 그럴땐 빨리 Node.js 와 AWS Lambda 를 사용해 15분만에 pr 독촉 슬랙 앱을 만들어봅시다. Github 슬랙 앱이 이미 있지만,, 이런 깨끗한 메시지로 경각심을 주지 못합니다. https://github.com/jokj624/approve-my-pr GitHub - jokj624/approve-my-pr Contribute to jokj624/approve-my-pr development by creating an account on GitHub. github.com Slack webhook 생성 구글에 slack webhook 을 검색하면 제일 첫번째로 뜨는 링크를 클릭합시다. 들어가면 이렇게 cre..

DEV/Node.js

[Nest.js] Official Document 정리 (Controller) - 2

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 객체를 사용 ..

DEV/Node.js

[Nest.js] official document 정리 (설치, controller) - 1

들어가기 전에 최근 사이드 프로젝트로 앱스토어에 이미 출시되어 있는 Cherish 애플리케이션 개편 작업에 함께하게 되었습니다. 제가 맡은 역할은 다른 두 서버 개발자와 함께 Cherish 의 서버를 전면 개편하는 일 입니다. Nest.js 와 요즘 뜨고 있다는 Prisma 를 도입하려고 합니다. 이에 당분간 Nest.js 를 빡세게 공부해보려고 합니다. 아직 많은 내용을 보진 못했지만, document 를 보면 볼 수록 꽤 tsoa 와 비슷하다는 생각이 드네요! 학습하기에 보다 수월할 것 같습니다. 해당 내용은 Nest.js official document 내용을 개인적으로 학습하며, 번역한 글 입니다. https://github.com/NewCherish/Cherish-Server-Lab/tree/j..

DEV/Node.js

node.js, express, typescript 로 S3에 image upload 하기 (Feat. multer, aws-sdk)

✏️ 작성자: 서팟장 잡채 📌 작성자의 한마디: "7차 세미나 때 할 내용이었는데..." 30기 THE SOPT Server part 블로그에 제가 작성한 글을 가져왔습니다! (서버파트 기술 블로그) 안녕하세요! 👻 오늘은 우리가 사용하는 Node.js 와 Express, Typescript 환경에서 아주 간단하게 이미지를 받아서 S3 bucket 에 upload 하는 코드를 작성해보려 합니다. 사실 이 내용은 7차 세미나에서 다룰 거지만, 혹시라도 합동 세미나/솝커톤에서 이미지 업로드를 다뤄보고 싶으신 분이 계시다면 유용할 것 같아 작성합니다. 기본 지식 우리가 지금까지 했던 POST API 들의 Request 가 JSON 형식이었다면, 파일은 multipart/form-data 를 사용합니다. 이러한..

DEV/Node.js

Node.js, MongoDB Change Streams 를 사용한 특정 사용자에게 특정 시간에 FCM 보내기

✅ 들어가며 안녕하세요. 저는 지금 29th SOPT 의 장기해커톤인 앱잼에 참여중입니다. 현재 참여하는 프로젝트에서 FCM (Firebase Cloud Messaging) 을 사용하는데 이 어플의 핵심 기능 중 하나가 사용자가 지정한 시간에 알림을 보내는 것입니다. 사실 그냥 FCM 을 어떤 이벤트의 응답으로 보내는 것, 또는 홍보용으로 보내는 것 이라면 크게 어렵지 않습니다. 하지만 여러 사용자가 지정한 시간에 각각 맞춰서 알람을 전송해야하므로 스케쥴러를 사용해야합니다. 먼저 생각했던 방법은 서버 내에서 node-scheduler 를 사용해서 스케쥴링 하려 했지만, 이 경우 특정 사용자의 알림을 수정하고, 삭제하는데 어려움이 있다는 문제점이 있었고, db와 연결된 스케쥴러가 아니라 만약 서버가 꺼진다..

DEV/Node.js

[CI/CD] AWS CodeDeploy, CodePipeline 으로 node.js, ec2, git 배포 자동화하기

👏🏻 들어가며 오랜만에 포스팅합니다. 학교 + 회사 + 동아리로 너무 바쁜 나머지... 오늘은 AWS Codedeploy, Codepipeline 을 통한 node.js, ec2, git 을 연동해 배포 자동화를 해보겠습니다. 사실 CI/CD는 잘 모르기도 하고, 해본 적도 없는데 그냥 회사에서 서버를 만지다 너무 비효율적인 시스템인 것 같아 배포 자동화를 시켜야겠다고 마음 먹었습니다. 마침 서버 컴 문제로 인해 기존 서버들을 ec2로 옮겨야 해서 옮긴 김에 codedeploy, codepipeline을 적용해봤습니다. 어떻게 쩌리가 이런걸 맘대로 회사 서버에 들였냐고요? 소규모 스타트업이라 서버 개발자가 저밖에 없거든요~ DevOps 책을 받게 되어서 (ucpc 상품이었나 .. ?) 방학동안 이걸 좀 ..

DEV/Node.js

[Node.js] Express, TypeScript, MongoDB 회원가입 (1)

💻 코드 https://github.com/jokj624/authCRUD-TS jokj624/authCRUD-TS Node js, Express, MongoDB, TypeScript 회원가입, 로그인 CRUD 구현 연습 - jokj624/authCRUD-TS github.com 🤔 why? 곧 .. 다가올 앱잼을 압두고 서버 말하는 감자인 내가 조금이라도 공부를 해야겠다 하고 로그인/회원가입을 3 Layer Architecture 로 설계해보자 하고 공부를 시작했다. 원래는 api 내에 라우트, 컨트롤러, 서비스 로직을 다 넣어놓는 식으로 구현했는데 제대로 설계해보고 싶다. 많은 블로그와 SOPT 세미나에서 한 내용, github들을 참고해서 해보았다. 아직 코드를 조금 더 리팩토링 해야하지만 간단한 구..

DEV/Node.js

Node.js , express, mongoDB, typescript 초기 설정

https://github.com/jokj624/node-typescript-init jokj624/node-typescript-init nodejs express mongoDB typescript 초기 개발 환경 구축 . Contribute to jokj624/node-typescript-init development by creating an account on GitHub. github.com 나는 초기 설정 맨날 까먹어서 . . . 솝커톤 때 허둥지둥 할까봐 세미나때 배운 내용 그대로 미리 레포로 파뒀다. .env 파일만 만들어 놓고, 실행시키면 로컬 서버 실행과 몽고디비 연결이 되게끔 설정 했다. tfconfig.json { "compilerOptions": { "target": "es6", "..

jobchae
'DEV/Node.js' 카테고리의 글 목록