- CPC 키워드 광고를 적용한 이커머스 플랫폼
- 구매자(지구샵 클론 코딩) 서비스와 판매자(판매자 광고 입찰) 서비스 개발
- 기존 CPC 키워드 광고주 페이지는 전달하고자 하는 정보의 양이 많아 UI가 복잡하게 설계됨
- 광고 입찰을 처음 이용하는 사용자에게 불편한 사용자 경험을 제공함
- 기존 CPC 키워드 광고주 페이지의 문제점들을 개선해 광고 입찰에 꼭 필요한 기능들만 선별하여 제공함으로써 사용자의 경험을 개선
- 편리하고 간편한 서비스를 광고주들에게 제공함으로써 신규 광고주 유입 효과 기대
- 2022.08.09 ~ 2022.08.21
- 2022.08.22 ~ 2022.10.12
- 2022.10.12 ~
Name | Position | GitHub |
---|---|---|
김다희 | Node.js | huitopia |
이담 | React | damiiya |
이효리 | React | hyooyh8910 |
조해솔 | React | sol-pine |
최수인 | React | whl5105 |
- Notion, Slack을 이용하여 스케줄 공유 및 회의 진행
- Postman을 이용하여 API 문서 공유
- HTTP 상태 코드를 사용하여 에러 공유
Name | Tech |
---|---|
Server | Node.js |
Language | JavaScript |
Database | MongoDB |
Framework | Express.js |
Package | version | Description |
---|---|---|
bcryptjs | ^2.4.3 | 비밀번호 해쉬화를 위한 라이브러리 |
body-parser | ^1.20.0 | 요청의 본문을 해석해주는 미들웨어 |
cors | ^2.8.5 | CORS 이슈 해결을 위한 라이브러리 |
dotenv | ^16.0.2 | .env의 정보를 환경변수로 등록해주는 라이브러리 |
express | ^4.18.1 | 웹 서버를 구현하기 위한 라이브러리 |
helmet | ^6.0.0 | header에 설정을 통해 웹 취약점으로부터 서버 보호 |
joi | ^17.6.0 | 입력 데이터 유효성검사 |
jsonwebtoken | ^8.5.1 | jwt로그인 방식을 위한 라이브러리 |
mongoose | ^6.5.4 | mongoDB 사용을 위한 확장 모듈 |
morgan | ^1.10.0 | 통신 로그를 남기기 위한 라이브러리 |
- 비밀번호를 해시 암호화해 저장하는 모듈로 기존 bcrypt 사용하였으나 잦은 에러 발생으로 알아보니, bcrypt는 C++기반의 node 라이브러리로 사용을 위해서 OS에 python과 C++등이 설치되어야 한다. 노트북을 변경하면서 순수 자바스크립트만 설치되어 있기에 이에 비슷한 모듈을 찾다 javascript로만 만들어진 bcryptjs를 설치하여 진행했다.
- 세션 방식은 서버의 메모리 내부에 유저의 정보를 저장한다. 유저의 수가 증가할수록 세션의 양이 많아지는 만큼 메로이에 부하가 걸릴 수 있어 JWT 토큰 인증 방식을 이용하였다. JWT는 서버의 메모리에 저장 공간을 확보하지 않고 토큰 발급 및 확인 절차만 거치므로 서버 자원과 비용을 절감할 수 있다.
- 서버에서 다양한 HTTP 헤더를 자동 설정을 통해 서버 어플리케이션의 보안을 강화해주는 대표적은 노드 보안 모듈이다. 적용 전 Response Headers에는 Server와 X-Powered-By 헤더가 노출되어 서버에서 사용중인 웹 서버 소프트웨어의 종류를 알기 쉽다. 밑의 사진은 helmet을 적용 후의 Response Headers이다. Server와 X-Powered-By 헤더의 정보가 사라져 해커에게 제공될 수 있던 서버의 주요 정보가 대부분 사라졌다. 헤더를 숨긴다고 하여 보안이 완벽한 것은 아니지만 잠재적으로 취약한 기술이 있는지 파악하는 것을 어렵게하여 공격의 전체적인 진행을 약간 늦추는 정도의 효과를 발휘한다.
- 서버의 로그 관리를 위한 미들웨어이며, 서비스 동작 상태 파악을 위해 사용하였다. 로그에 나오는 에러 코드와 IP를 확인하여 요청의 성공 여부를 파악하기 편리하다.