[리팩토링] 폴더 구조의 변경
2022. 11. 15. 17:30
포트폴리오/JJINCAFE IN SEOUL
들어가며 처음 개인 프로젝트를 진행했을 당시 Express 프레임워크는 자유도가 너무 높아 디렉토리 구조에 대한 엄격한 룰이 존재하지 않아 어떻게 구조를 정해야 할 지 정말 막막했습니다. 당시 프로젝트 디렉토리 구조는 같은 이름을 가지는 파일들(*.router.js, *.controller.js) 끼리 하나의 디렉토리 안에 저장하는 형태였습니다. 예시) 라우터들은 routers 디렉토리 하위에 저장, 컨트롤러는 controllers 디렉토리 하위에 저장 한편, 개인 프로젝트 이후 회사 실무 프로젝트에서 NestJS 프레임워크를 사용하며 Nest 의 디렉토리 구조는 유지 보수 및 확장성 측면에서 괜찮은 구조라는 생각이 들었습니다. 참고) NestJS 는 비슷한 기능을 하는 컨트롤러, 서비스 등을 묶어 각 ..
[리팩토링] 회원가입 API 트랜잭션 처리 및 관심사 분리
2022. 11. 15. 17:22
포트폴리오/JJINCAFE IN SEOUL
들어가며 5월에 종료했던 개인 프로젝트 코드를 다시 열어 보았는데 내가 왜 이렇게 코드를 작성했었지? 라는 생각이 제일 먼저 들었습니다. 대표적으로 기존에 작성했던 회원가입 API 코드를 다시 보니 다음의 두 가지 문제점을 발견했습니다. 회원 정보 저장 쿼리에 대해 트랜잭션 처리가 되어 있지 않았습니다. 이는 회원가입이 실패하더라도 회원 정보가 저장되는 사이드 이펙트를 발생시킬 수 있습니다. 컨트롤러에 요청, 응답을 처리하는 로직과 데이터베이스에 데이터를 저장하는 로직이 혼재되어 있어 가독성과 유지 보수성이 떨어집니다. 문제점을 발견했으니 가만히 있을 수 없어 코드 리팩토링을 진행했고 리팩토링 과정을 기록으로 남기고자 합니다. 기존에 작성했던 회원가입 API 코드 class AuthController {..