패스트캠퍼스 환급챌린지 48일차 : 코드팩토리의 백엔드 아카데미 : 한 번에 끝내는 NestJS 패키지 - 기초부터 MSA까지 강의 후기
***본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다
NestJS를 이용하여 Director 엔티티에 대한 CRUD작업을 구현하고, 이를 위한 API 엔드포인트를 완성하는 과정을 학습하면서 백엔드 개발의 핵심적인 흐름을 더욱 명확하게 이해하게 되었습니다. 특히, 클라이언트의 요청을 받아 데이터베이스와 상호작용하고, 응답을 반환하는 일련의 과정을 직접 구현해보면서 API 설계 및 개발의 중요성을 실감할 수 있었습니다.
첫째, RESTful API 설계의 중요성과 각 HTTP 메서드의 역할을 다시 한번 강조하게 되었습니다. Director 엔티티를 위한 엔드포인트를 설계하면서 POST (생성), GET (조회), PUT/PATCH (수정), DELETE (삭제)와 같은 각 HTTP 메서드가 수행해야 하는 역할과 그 의미를 명확히 이해하고 API를 설계하는 것이 얼마나 중요한지 깨달았습니다. 이는 클라이언트와 서버 간의 명확한 약속을 정의하고, API의 예측 가능성과 사용성을 높이는 데 필수적인 과정이라고 생각합니다. 마치 도시의 도로 체계를 설계하는 것처럼, 각 요청 방식에 따른 명확한 규칙을 정의해야 클라이언트가 원하는 기능을 정확하고 효율적으로 사용할 수 있습니다.
둘째, DTO (Data Transfer Object)를 활용한 데이터 유효성 검사의 중요성을 깊이 인식하게 되었습니다. 클라이언트로부터 전달받는 데이터를 처리하기 전에 DTO를 통해 데이터의 구조와 유효성을 검증하는 것은 서버의 안정성을 확보하고 예기치 않은 오류를 방지하는 데 매우 중요한 단계입니다. NestJS의 ValidationPipe과 class-validator를 활용하여 간편하게 유효성 검사 로직을 구현할 수 있다는 점은 개발 생산성을 크게 향상시키는 요소라고 생각합니다. 마치 건물을 짓기 전에 설계 도면을 꼼꼼히 검토하여 안전 기준을 확인하는 것처럼, API 요청 데이터를 검증하는 것은 서버의 안정성을 확보하는 기본적인 안전 장치입니다.
셋째, Service 레이어에서의 비즈니스 로직 처리와 데이터베이스 상호작용 분리의 중요성을 체감했습니다. Controller는 클라이언트의 요청을 받고 응답을 반환하는 역할에 집중하고, 실제 데이터베이스와의 상호작용 및 비즈니스 로직 처리는 Service 레이어에서 담당하도록 분리하는 것은 애플리케이션의 유지보수성과 확장성을 높이는 핵심적인 아키텍처 패턴임을 이해했습니다. 이를 통해 각 레이어의 관심사를 분리하고, 코드의 재사용성을 높일 수 있습니다. 마치 공장의 생산 라인처럼, 각 단계별로 명확한 역할을 분담하여 작업 효율성을 높이는 것과 유사한 원리입니다.
넷째, TypeORM Repository를 활용한 데이터베이스 CRUD 작업의 효율성을 경험했습니다. TypeORM이 제공하는 save(), find(), update(), delete() 등의 메서드를 통해 데이터베이스와 간편하게 상호작용하고, 엔티티를 객체 형태로 관리할 수 있다는 점은 개발 생산성을 크게 향상시키는 요소입니다. 또한, TypeORM의 다양한 쿼리 옵션을 활용하여 필요한 데이터를 효율적으로 조회할 수 있다는 것도 큰 장점이라고 생각합니다. 마치 숙련된 목수가 다양한 연장을 능숙하게 사용하여 원하는 결과물을 빠르게 만들어내는 것처럼, ORM 도구를 잘 활용하는 것은 개발 속도와 효율성을 높이는 데 필수적입니다.
다섯째, 예외 처리의 중요성과 HTTP 상태 코드의 올바른 사용을 다시 한번 강조하게 되었습니다. API 요청 처리 과정에서 발생할 수 있는 다양한 예외 상황 (예: 데이터 없음, 유효성 검사 실패 등)을 적절하게 처리하고, 각 상황에 맞는 HTTP 상태 코드를 클라이언트에게 반환하는 것은 API의 신뢰성을 높이고 사용자 경험을 개선하는 데 매우 중요합니다. NestJS의 HttpException과 내장된 예외 필터를 활용하여 효과적으로 예외를 관리할 수 있다는 점을 확인했습니다. 마치 건물의 비상 탈출구나 소화 설비처럼, 예외 처리는 예상치 못한 상황 발생 시 시스템의 안전한 작동을 보장하는 중요한 메커니즘입니다.
마지막으로, API 개발은 단순히 기능을 구현하는 것을 넘어, 사용자의 요구사항을 정확히 이해하고, 효율적이고 안정적인 방식으로 데이터를 제공하는 것을 목표로 해야 한다는 것을 다시 한번 깨달았습니다. Director CRUD API를 완성하는 과정을 통해 클라이언트-서버 간의 통신 방식, 데이터 처리 흐름, 그리고 발생 가능한 문제점들을 직접 경험하면서 API 개발의 전체적인 그림을 더욱 명확하게 그릴 수 있게 되었습니다. 마치 고객의 주문을 받고, 재료를 준비하고, 요리하고, 서빙하는 일련의 과정처럼, API 개발은 사용자의 요청을 정확히 이해하고, 필요한 데이터를 적절한 방식으로 제공하는 것을 목표로 하는 서비스 제공 과정이라고 생각합니다.
이번 Director CRUD 작업 및 엔드포인트 완성 학습을 통해 백엔드 개발의 핵심 과정을 이해하고, API 설계 및 개발 능력을 향상시키는 데 큰 도움을 받았습니다. 앞으로 더욱 복잡한 API 개발 시나리오를 경험하고, 다양한 NestJS 기능과 데이터베이스 관련 기술들을 학습하면서 숙련된 백엔드 개발자로 성장해 나가고 싶습니다.




#패스트캠퍼스 #직장인자기계발 #직장인공부 #환급챌린지 #패스트캠퍼스후기 #오공완
https://bit.ly/4hTSJNB