본문 바로가기

Development/Node.js6

Express, mysql2 코드 모듈화하기 (with 트랜잭션) 하게 된 계기 릴리즈를 진행한 프로젝트에서 서버 개발자를 담당하였는데, db에 쿼리를 날릴 때 반복적인 부분(커넥션 풀 생, 반납, 트랙잭션)이 많아서 리팩토링을 맘 먹게 되었다. 프로젝트 구조는 다음과 같다. 먼저 nodejs + express에 mysql을 orm이 아닌 mapper 방식으로 사용하고 있다. 언어는 Javascript를 사용 중에 있다. 왜 orm을 안썻냐면, sql로 직접 쿼리문을 날리면서 공부를 하고 싶었다. 사용 언어에 따라 객체지향 프로그래밍을 하고 있지 않아서 의미가 없다고 생각했다. 📦src ┣ 📂config ┃ ┣ 📜db.js ┣ 📂controllers ┣ 📂models //여기서 db 접근 ┣ 📂routes ┣ 📂utils ┣ 📜app.js ┃ 📜.eslintrc.js .. 2022. 8. 18.
CodeDeploy 이해하고 푸쉬 서버와 API 서버 분리하기 해당 글에서는 AWS CodeDeploy와 팀 하우스 서버들이 CICD를 푸쉬 알림 서버와 연결하면서 발생했던 문제를 다룹니다. 👊 AWS CodeDeploy가 대체 뭔데? AWS CodeDeploy는 Amazon EC2 인스턴스, 온프레미스 인스턴스, 서버리스 Lambda 함수 또는 Amazon ECS 서비스로 애플리케이션 배포를 자동화하는 배포 서비스입니다. AWS CodeDeploy를 통해 Amazon EC2, AWS Lambda 또는 Amazon ECS에 코드를 배포하는 데는 추가 비용이 부과되지 않는다고 합니다. CodeDeploy는 서버에서 실행되고 Amazon S3 버킷, GitHub 리포지토리 또는 Bitbucket 리포지토리에 저장되는 애플리케이션 콘텐츠를 배포할 수 있습니다. CodeD.. 2022. 8. 18.
슬랙에서 서버 에러 알림 받고 유연하게 에러 대응하기 해당 글에서는 Nodejs 환경에서 슬랙 알림을 전송하는 과정에 대해서 다룹니다. 그렇다면 이게 왜 필요할까요? 사실 이건 개발하는데에 있어 꼭 필요한 부분은 아니지만, 이후 유지보수 시에 편리하게 사용될 수 있습니다! ec2에 우리의 서버를 올려두면 매일 들어가서 로그를 확인하거나 클라 분들께서 엇?! 서버 에러 났는데요?! 해야 확인이 가능한데 아주 크리티컬한 서버 에러의 경우는 슬랙 알림을 추가한다면? 바로바로 슬랙을 보고 서버 에러가 났네? 하면서 코드를 수정할 수 있겠죠? 저는 아주 유용했어서 우리 섭섭이들에게 추천드릴까 글을 적어봅니다. 슬랙이 있어야만 설정이 가능하다는 점 ..... 슬랙 웹훅(Webhook) 추가 서버 에러를 받을 채널 추가하기 서버 에러를 받을 팀슬랙에 새 채널을 추가해줍.. 2022. 8. 18.
[에러 해결] Error: No default engine was specified and no extension was provided 문제상황 node.js express engine으로 html file을 load할 때 위의 에러가 발생 해결방법 html을 ejs로 rendering한다. ejs 모듈 설치 npm install ejs app.js에 라우트 코드를 로딩하는 코드 + 화면 엔진을 ejs 로 설정 코드 추가 별도 파일에서 라우트 함수를 작성할 때는 express.Router() 함수를 통해 호출 module.exports = router 을 해주면 해당 파일에서 선언한 함수를 router를 통해서 사용 가능 // 화면 engine을 ejs로 설정 app.set('view engine', 'ejs'); app.engine('html', require('ejs').ren.. 2021. 11. 23.
bcrypt로 비밀번호 암호화 bcrypt란? //현업에서 많이 사용하고 있는 패스워드 암호화 알고리즘이라고 함! 1999 년 USENIX 에서 발표한 Blowfish 암호를 기반으로 Niels Provos 와 David Mazières가 설계한 암호 해싱 함수 (단방향 해싱 함수임) 데이터베이스에 비밀번호 저장 시 비밀번호가 보이도록 저장하면 보안성이 떨어짐 → 비밀번호 암호화를 통해 보안을 강화해야 함. 이때 bcrypt 암호화 해싱 함수 사용 단방향 해싱 함수 bcrypt 해시 문자열의 형태 $2b$[cost]$[22 character salt][31 character hash] ex) $2a$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy \__/\/ \___________.. 2021. 11. 23.
Nodejs Webpack으로 빌드하는 과정에서 발생한 에러(ERROR in ./node_modules/@mapbox/node-pre-gyp/lib/util/s3_setup.js) Webpack으로 build 하는 과정에서 발생한 에러 [error#1] bcrypt 모듈 관련 에러 문제 ERROR in ./node_modules/@mapbox/node-pre-gyp/lib/util/s3_setup.js 112:15-30 module not found: error: can't resolve 'nock' in ~ 회원가입 및 로그인 부분에서 bcrypt 모듈을 사용하여 암호화 하는 코드가 있는데 이 과정에서 파일 동작 시에는 문제가 되지 않았지만, webpack으로 압축해서 빌드하는 과정에서 문제 발생 bcrpyt와 관련된 에러가 5개 정도 떴었고, 모듈을 찾지 못하는 문제로 판단하였음 npm 공식 문서에 보면 node-gyp노드의 안정/출시 버전에서만 작동한다고 되어 있고, 노드 버.. 2021. 11. 23.