no image
[BE/Node.js] AWS S3에 log 저장하기
⚠️ 문제 지금까지 배포 후 웹 서버에서 문제가 발생하면 인스턴스에 들어가서 에러를 보고 해결하는 방법으로 프로젝트를 진행해왔었다. 오류 해결이야 이렇게 하면 되지만 실 서비스를 운영할 때는 로그 관리도 해야하기 때문에 로그 기록의 필요성을 느꼈다. 🏃 시도 Try 1 : 로그 파일 만들기 morgan : HTTP 요청을 로깅해주는 node.js 의 서드파티 모듈 winston : 로그 파일 저장 및 로그 레벨 관리를 도와주는 node.js 의 서드파티 모듈 우선 기본적인 로거 파일은 아래와 같이 작성했다. 📄 logger.js require('dotenv').config(); const winston = require('winston'); const winstonDaily = require('winst..
2022.10.04
no image
[BE/GitLab] GitLab Pipelines로 배포 자동화하기
⚠️ 문제 프로젝트를 ec2에 배포 할 때, 변경 사항이 생길 때마다 리포지토리 pull을 받고 pm2 를 다시 돌리고 하는 작업을 반복했다. 이 과정에서 pm2의 모든 프로세스를 kill 하고 다시 restart 하는 일을 반복했는데, restart를 할 때면 계속 같은 문제에 직면했다…😭 "Current process list running is not in sync with saved list. npm differs. Type 'pm2 save' to synchronize." 이 에러가 떴는데, 기존에 돌아가던 pm2의 모든 프로세스를 중단했는데도 이미 기존 프로세스는 돌아가고 있는 걸로 나오는 거였다….. Not in sync? · Issue #4556 · Unitech/pm2 What's goi..
2022.10.01
no image
[BE/Git] Git push 파일 용량 초과 문제 해결하기
⚠️ 문제 우리 프로젝트의 경우, Github에서 작업하고 Gitlab으로 작업사항을 자동으로 푸쉬하는 자동화 과정을 거치고 있다. ai 모델을 본 서비스와 합치려고 메인 브랜치에 ai 브랜치를 머지했는데 그 이후로, Gitlab에 auto sync가 안된다..ㅠㅠ 무수한 Github Actions 시도의 흔적.. ai 브랜치를 머지한 뒤로 계속 Github Actions 가 여섯시간을 혼자 돌아가다 Fail이 뜨고서야 문제인 걸 알았다. 🏃 시도 Try 1 : Gitlab에 강제로 push 하기 억지로 Gitlab Repository 에 푸쉬하면 Github Actions도 작동하지 않을 까 하는 생각에 Gitlab 레포에 Github 작업 상황을 push 했다. 그리고 나서 나온 에러…🤬 Enumer..
2022.09.06
no image
[BE/Node.js] apidoc으로 api document 만들기
💬 머리말 apidoc을 알게 된 건 지금 스프링으로 프로젝트를 진행하고 있는데 스프링에는 API document 를 자동으로 적용해주는 Swagger가 있는 걸 보고 npm 에도 당연히 있겠지 싶어서 찾아봤는데 역시 있길래 바로 적용 결정. (역시 킹PM) 🏃 시도 🌟 apidoc은 global 로 설치해야 apidoc 명령어가 작동한다!! 이점 유의!! # apidoc 설치 npm install apidoc -g # '-i' + 'api 탐색하려는 디렉토리 위치' # 우리 프로젝트의 경우 route 연결이 ./index -> ./route/ # 구조라서.. 디렉토리 하나만 추가하기엔 없어보여서 그냥 전체 디렉토리로 연결! # '-o' : 만든 apidoc html 파일을 저장해놓을 저장 위치 apid..
2022.09.02
no image
[BE/Node.js] bcrypto를 이용한 비밀번호 암호화
⚠️ 문제 공개적으로 배포하는 프로젝트일 경우, 비밀번호 암호화가 필수라고 한다. 💭 물론, db가 뚫리지않는게 가장 베스트긴 하지만,, 이게 내 맘대로 되는 건 아니니까ㅠ^ㅠ.. 그래서 crypto node.js 라이브러리를 사용해서 암호화를 진행했다. 🏃 시도 #1 암호화, 복호화 함수를 회원가입 부분에 추가했다.그래서 알게 된 게 salt 라는 건데, salt는 소금을 뿌리듯이 해시값에 임의의 값을 추가하는 것이라고 한다. 근데 생각해보니, 복호화는 회원가입 부분이 아니라 passport나 세션에 직접적으로 넣어주는 부분에 구현해야한다는 걸 간과했다... #2 bcrypto 를 사용해서 해시값을 생성하는 것 까진 됐는데.. compare 메서드로 해시값이랑 패스워드를 비교했을때 패스워드를 맞게 입력..
2022.09.02