Back-end/Nest.js

[Nest.js] Multi-Tenancy Database Design (부제. NestJs + Multi-Tenancy+TypeORM)

이번 팀 sprint에서는 Firestore를 사용하고 있는 프로젝트를 GCP Cloud MySQL로 마이그레이션 하는 작업이 포함됐었습니다. 상황을 말씀드리자면 각 TF팀마다 각각 다른 프로젝트를 진행하고 있었고, Firestore에는 각 TF팀마다의 Collection 형식으로 구현한 뒤, Document로 쪼개서 데이터들을 관리하고 있었습니다. 저희 팀이 개인정보처리를 담당하는 팀이다 보니, 'Document형식의 DB가 아닌 RDB를 사용해서 개인정보를 더 안전하고 체계적으로 관리해보자'라는 생각과 함께 이 sprint가 시작이 되었죠. 여기서 고민은 시작되었습니다... 팀 리더와 제가 나눈 이야기를 바탕으로 정리한 요구사항은 세 가지였습니다. 먼저 각 TF팀마다 schema가 생겼으면 좋겠다. ..

2022.11.03 게시됨

Back-end/Nest.js

[Nest.js] jwt를 사용한 @UseGuard 구현, NestJs Guard 란?

NestJs를 사용한 프로젝트 내용을 간단하게 정리해보면 GCP IAP를 사용해서 회사 내의 Admin Application들의 접근하는 계정들을 관리하고, 각각 Admin Application 내에서의 권한들을 수정 및 추가, 그리고 모든 변경들을 로깅을 할 수 있는 Application(Admin의 Admin?)을 개발하고 있습니다. 여기 프로젝트에서 가장 중요한 부분이라고 할 수 있는 '권한'이라는 단어가 나오는데요. NestJs에서 권한들을 어떻게 받아와서 권한에 따라 요청을 보냈을 때 응답 값을 각각 다르게 보내줄 수 있는지에 대한 방법을 이번 시간에 알아보려고 합니다. 0. NestJS에서의 Guard NestJS 공식문서를 참고해보면 Guard란 특정 상황들(permissions, roles..

2022.06.15 게시됨

Back-end/Nest.js

[Nest.js] Nest.js에서 Firestore 커스텀 모듈 만들어서 활용하기

요즘 회사 프로젝트에서 Firestore를 사용하고 있습니다. GCP 생태계에서 개발을 하고 있기 때문인데요. Nest.js에서 Firestore을 사용하다 보니 구글에서 제공해주는 sdk를 사용하고 있지만 한계에 부딪혔습니다. 바로 하나의 서비스에서 여러 개의 Firestore 프로젝트를 가져와서 연결을 해줘야 하는 것이었습니다. 열심히 찾아봤지만 multiple instance를 single project에서 사용할 수 없다는 결과만 나왔죠.. Firebase(Firestore) doesn't support multiple instance in a single project. How to create multi environment DB's with Firestore I've been looking ..

2022.04.03 게시됨

Back-end/Nest.js

[Nest.js]DTO란? Entity란?

요즘 진행 중인 백앤드 리뉴얼 프로젝트는 express 기반에서 Nest.js 기반으로 migration 하고 있습니다. 프레임워크를 바꾸는 만큼 대공사가 진행 중인데요, express에서는 mongoose로 하나의 controller에서 모든 쿼리를 수행했습니다. (어마어마하게 비효율적으로 코드가 짜여 있었지만, 차마 손댈 엄두가 나지 않았었습니다..) Nest.js를 사용해서 하나하나 진행하다 보니, 작업을 할 때 사용하던 entity 와 dto에 대해서 누군가에게 entity가 뭐고 dto가 뭐야? 왜 써야하는 거야?라고 질문을 받았다면 과연 정확하게 말할 수 있나? 를 생각해봤을 때 답은 아니오 였습니다. 그래서 이번 게시물에서는 아래의 내용들을 확실하게 짚고 넘어가려고 합니다. entity, d..

2021.11.27 게시됨