본문 바로가기

전체 글

(29)
Final Project: 4주차 (express-middle-ware) 백엔드 포지션을 맡은 나는 프론트엔드에 비해 비교적 작업이 빨리 끝나게 되어 남은 기간동안 코드 퀄리티를 좀 더 살려보기 위해 이것저것 리팩토링을 시도해보았습니다. 그 중 jwt 토큰기반의 인증방식을 따로 미들웨어로 적용시켰던 부분에 대해 글을 남겨보려 합니다. 원래의 코드에서는 각 api중 인증정보가 필요한 부분들의 가장 위쪽에 직접 토큰검증로직을 일일이 넣어줬었습니다. 코드로 살펴보면, // 토큰이 유효한지 검사하는 jwt.verify를 promise화 하여 따로 함수로 빼낸 부분 const verifyToken = (token, secretKey) => { return new Promise((resolve, reject) => { jwt.verify(token, secretKey, (err, dec..
Final Project 3주차 (typeorm-seeding) 3주차에 들어서면서 어느정도 기능의 규모가 커지다 보니 연관성있는 데이터들이 많이 생기게 되어 개발단계에서 api들의 기능이 잘 작동하는지 테스트해볼때마다 그 api와 연관된 데이터들을 미리 넣어 줘야 확인을 할 수 있어 번거로움이 느껴졌다. 그래서 예전에 보기만하고 직접 적용해보지는 않았던 seed라는 개념을 이번 프로젝트에 적용해 보기로 했다. 먼저, 아래와 같은 패키지를 설치해준다. npm install typeorm-seeding 그리고 ormconfig.js(또는 ormconfig.json)파일에 다음과 같은 코드를 추가해준다. module.exports = { ... seeds: ['src/database/seeds/**/*.seed.ts'], // seed파일들을 생성할 경로 factorie..
Final Project: 2주차 (Deploy) 총 4주의 프로젝트를 3가지 기점으로 나누었었는데, 그중 첫번째 지점인 아주 기본적인 기능들에 대한 구현이 끝나게 되어 aws의 ec2와 rds를 이용해 배포를 시도해보게 되었다. 배포중에 생긴 이슈들과, 해결과정들을 정리해보려 한다. 기본적인 ec2의 인스턴스생성, 보안설정, rds 데이터베이스 생성 등등에 대한 이야기는 이 글에서는 생략할 것이다. 배포를 하며 겪은 문제들은 많았지만 큼직한 부분들만 이야기하자면 이렇게 두가지가 있다. 1. .gitignore에 추가해놓은 파일, 폴더들은 clone해올 수 없기 때문에 ec2컴퓨터에 그대로 직접 작성해 주어야 하는데 너무 비효율적인 것 아닌가? 2. NODE_ENV를 스크립트 명령어마다 나누어놓았는데, pm2 start로 서버를 실행시킬때, NODE_E..
Final Project: 2주차 (multer-s3) 프로젝트 기간 2주차에 들어섰다. 1주차에서 간단한 api들과, 테스트케이스들까지 작성을 완료하였고 2주차에 들어서면서 처음으로 부딫힌 어려운 부분은 '이미지 파일 저장'관련 내용이였다. 현재 우리가 만들고있는 기능중에는 클라이언트가 이미지파일을 업로드하면 서버에서 그 이미지파일을 어딘가에 저장해놓고, 해당 요청이 오면 클라이언트에게 보내줄 수 있는 기능이 필요했다. 이미지파일 저장 방법에 대해 알아보면서 할 수 있는 방법은 크게 세가지가 있는것 같았다. 1. 클라이언트에게 받은 이미지파일을 aws s3버킷에 업로드 해놓고, 그 url을 db에 저장해놓은후, 필요할때마다 클라이언트에게 그 url을 제공 2. 서버 컴퓨터 자체에 그 이미지파일을 저장해놓고, 클라이언트가 요청할때 이미지 파일자체를 제공 3...
Final Project: 1주차 (testcase 환경설정) typescript, typeORM 초기 환경설정을 한 후 필요한 api들 몇가지를 정의했다. 진행상황을 확인한 기업에서 testcase를 작성해보는것이 어떠냐고 제안을 해주셨다. 이미 작성되어있는 testcase들을 통과하기위해 각각의 유닛테스트의 내용을 자세히 살펴본적은 많지만, 어떻게 우리가 작성한 코드들과 연결이 되고, 어떤 흐름으로 테스트가 돌아가는지에 대해 자세히 공부해본적은 없어서 그럴 수 있는 좋은 기회인것 같아 도전해보겠다고 했다. 테스트 프레임워크/라이브러리는 해당 기업에서도 사용하고 있다는 mocha/chai 를 사용하기로 했다. 먼저 다음과 같은 package들을 설치했다 npm install -D mocha chai @types/mocha @types/chai npm install..
Final Project: 1주차 (typeORM 초기환경 설정) 운좋게 기업에서 제안해준 4주짜리 프로젝트에 참여하게 되었다. 이미 있는 어플리케이션에 어떤 이벤트들을 추가할 수 있는 관리자 페이지를 만드는 프로젝트인데, 기능들을 구현하는것 자체는 크게 어렵지 않을것 같았다. 하지만 역시나.. 초기 환경설정에서 많은 애를 먹었다. 이 프로젝트에서는 백엔드를 맡게 되었는데 처음 사용해보는 typescript, typeORM, tslint등등 잘 알지 못하는 것들을 한번에 익혀서 초기환경을 설정하려니 어떤부분이 잘못된것인지 파악하는것이 쉽지 않았다. 먼저 node.js의 express에서 typeORM을 사용할 수 있도록 설정하는 과정에 대해 기록해놓으려 한다. 가장먼저 프로젝트에 typescript를 설치해야한다. npm install -D typescript 그 후 ..
First Project : My Type 단순히 부분적인것들을 구현하는게 아닌, 처음 기획부터 배포까지 팀원들과 함께 진행한 첫 프로젝트에 대해 글을 남기려고 한다. My Type이라고 이름붙인 이 웹 어플리케이션은 자신이 만든 카테고리에 자신만의 기준으로 유튜브 동영상들을 저장해놓을 수 있는 기능을 가지고 있다. 기본적으로 추천하는 키워드들이 표시되어있고, 검색을 통해 실제로 유튜브에 올라와있는 영상들을 검색할 수 있다. 아래는 MyType의 기능시연 영상이다.(클릭해야 재생됨) 이 프로젝트는 front-end쪽에 한명, back-end쪽에 한명, 그리고 팀장 및 full-stack을 맡은 나까지 총 세명의 팀원이 진행을 하게되었다. Q. 내가 맡은 부분과, 그것들을 구현하기 위해 사용한 스택 및 이슈사항은? 맡은 포지션은 full-stack..
deploy AWS (Amazon Web Services) 를 이용해 배포하는 과정 s3: 정적 파일을 클라이언트에게 제공해줄 수 있게 url을 할당해주는 역할 ec2: 서버를 구동시킬 수 있는 원격 서버컴퓨터를 제공해주는 역할 rds: 내 컴퓨터의 database가 아닌, aws의 특정 데이터베이스를 사용하여 어디서든 접속할 수 있게 해주는 역할 1. s3버킷에 클라이언트앱을 빌드해서 배포하는법 1) 클라이언트앱을 빌드한다. 2) aws에서 s3서비스에 접속하여 버킷을 만든다. 3) 버킷의 속성에서 정적웹사이트 호스팅 설정값을 바꿔준다. (실행해야할 파일 (index.html)을 입력해준다.) 4) 버킷의 권한의 퍼블릭 엑세스 설정에서 설정을 변경한다. (차단되어있는것 모두 해제?) 5) 버킷의 권한의 버킷 정책에..