본문 바로가기

프로젝트/회사 및 외주 프로젝트

민코딩 연구소 사이트 제작기(2) - 백엔드

반응형

https://mincodinglab.com/

 

민코딩연구소 [기업 대상 알고리즘 강의]

알고리즘, Problem Solving, 기업 프로그래밍 교육, 알고리즘 강의, 코딩교육, 역량강화, SSAFY, 기업교육

mincodinglab.com

 

해당 글은 위 사이트에 대한 제작기를 바탕으로 작성된 글입니다. 

 

https://loy124.tistory.com/389

 

민코딩 연구소 사이트 제작기(1) - 스택및 설계

https://mincodinglab.com/ 민코딩연구소 [기업 대상 알고리즘 강의] 알고리즘, Problem Solving, 기업 프로그래밍 교육, 알고리즘 강의, 코딩교육, 역량강화, SSAFY, 기업교육 mincodinglab.com 해당 글은 위 사..

loy124.tistory.com

 

 

 

 

 

 

기초 nest를 설치하고나서 문제는 이제 DB -> TypeOrm을 통한 DB -> Object간 연결을 위한 Entity 생성 작업이 필요했다. 

 

 

1 DB Mapping

 

2.  로그인 설계

 

3.  로그 시스템 

 

4. 데이터 후처리 

 

DB Mapping

 

처음에는 해당 DB를 전부 Entity에 옮겨담는 작업을 해야 해서 어떻게 개발을 해야할까 고민했는데

해당 작업은 생각보다 쉽게 해결 할 수 있었다.

나같은 고민을 한 사람이 많아서 그런지 이를 위한  라이브러리가 존재했다:)

 

https://www.npmjs.com/package/typeorm-model-generator

 

typeorm-model-generator

Generates models for TypeORM from existing databases.

www.npmjs.com

 

해당 라이브러리를 사용하게 되면 Mysql 데이터베이스에 있는 정보들을 읽어와서 자동으로 Entity를 생성해줘서 정말 편리했다. 

 

로그인 설계 

로그인 설계를 고려하는데에는 꽤나 많은 시간이 들었다. 

 

https://loy124.tistory.com/383

 

express + react 를 활용한 OAuth 소셜 회원가입및 로그인 진행하기 (1) - 백엔드 Sequelize 연동하기

express 를 기본 백엔드로 react를 기본 프론트엔드로 프로젝트를 구현 해야 할 일이 생겼다. 이에따라서 여러가지 자료들을 조합해 로그인 관리 방식을 고안해야 했고(주말에 쉴때 마다 고민했던

loy124.tistory.com

이를 위해 express+ react를 통해 간략하게 소셜 로그인을 만들어보는 작업을 진행했고 위를 기반으로 로그인 시스템을 제작했다. 

 

위 방식과 차이가 있다면 nest.js에서는 Guard라는 시스템을 활용해서 로그인 시스템에 접목해줬다. 

UseGuard를 통한 가드 사용 예시 

 

로그 시스템 

 

https://loy124.tistory.com/381

 

Docker + PM2 + winston.js를 활용한 무중단 운영 시스템 구축하기

최근 node.js 기반의 백엔드 서비스를 설계 + 제작 + 운영을 해야 할 일이 생겼다. 이에 따라 Node.js + express 기반의 실 운용 서버 운영에 대한 고려를 하게 되었고 그에 따라 무중단 운영 + 로깅 시스

loy124.tistory.com

 

해당 로그 시스템도 위의 글을 기반으로 제작하였다. 기존 node에서 적용되던 방식이라 크게 어렵지는 않았다. 

 

 

데이터 후처리 

 

파일 업로드가 서버에 저장되기 때문에 파일이 존재하는 경우 imageUrl 링크를 만들어서 frontend 에서 요청시 이를 응답해주는 코드가 필요했다.

 

기존 express에서는 이를 통한 개발을 하려면 일일히 함수를 넣어주는 불편함이 있었는데

nest.js에서는 조금더 편하게 작성이 가능했다.

 

 

nest.js에서는 interceptor를 제공하기 때문에 데이터를 return하기 전에 해당 interceptor를 거치고 내보낼 수 있다. 

 

인터셉터 활용

해당 FileImageInterceptor등을 통해 파일 데이터가 존재한다면  imageUrl을 같이 전송해주는 코드를 전역적으로 활용할수 있게 됐다.

 

 

기존의 개발시에 좀 차질이 있던 부분들을 nest.js를 활용하면서 해결할 수 있는 부분이 늘어나 조금 더 구조적으로 개발을 할 수 있는 좋은 기회였다 :) 

 

반응형