카테고리 없음

패스트캠퍼스 환급챌린지 41일차 : 코드팩토리의 백엔드 아카데미 : 한 번에 끝내는 NestJS 패키지 - 기초부터 MSA까지 강의 후기

Laftel 2025. 4. 14. 16:08
반응형

***본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다 
NestJS와 TypeORM을 활용하여 Movie API를 리팩토링하는 과정을 학습하면서, 기존의 메모리 기반 데이터 관리 방식에서 벗어나 실제 데이터베이스 연동의 중요성과 그 효율성을 직접적으로 경험할 수 있었습니다. 특히 비동기 처리(async/await)와 TypeORM의 강력한 기능을 활용하여 API를 구현하는 방식은 현대적인 백엔드 개발에 필수적인 역량임을 깨달았습니다.

첫째, 데이터 영속성의 확보와 데이터베이스의 필요성을 명확히 인지하게 되었습니다. 이전의 메모리 기반 방식은 애플리케이션이 재시작될 때마다 데이터가 소실되는 근본적인 한계를 가지고 있었습니다. TypeORM을 도입함으로써 데이터베이스에 데이터를 안전하게 저장하고, 영구적으로 관리할 수 있게 된 것은 API의 안정성과 신뢰성을 크게 향상시키는 핵심적인 변화였습니다. 마치 모래 위에 지은 집에서 튼튼한 콘크리트 기반 위에 집을 짓는 것으로 비유할 수 있을 것 같습니다.

둘째, ORM의 추상화가 제공하는 개발 편의성과 성능 최적화의 중요성을 동시에 느꼈습니다. TypeORM은 데이터베이스 쿼리를 직접 작성하는 번거로움을 줄여주고, JavaScript/TypeScript 코드를 통해 직관적으로 데이터베이스를 조작할 수 있도록 도와줍니다. 특히 Like, find, save, update, delete 등의 메서드는 개발 생산성을 크게 향상시켰습니다. 하지만, ORM이 생성하는 SQL 쿼리의 내부 동작 방식을 이해하지 못하고 무분별하게 사용할 경우 성능 저하를 야기할 수 있다는 점을 인지하게 되었습니다. 따라서 ORM의 편리함을 누리면서도, 데이터베이스의 작동 원리를 이해하고 효율적인 쿼리를 작성하기 위한 노력이 병행되어야 한다는 중요한 인사이트를 얻었습니다. 마치 고성능 자전거를 타는 것과 같아서, 자전거의 구조와 작동 방식을 이해해야 더욱 빠르고 효율적으로 움직일 수 있는 것처럼 말입니다.

셋째, 비동기 프로그래밍의 중요성과 async/await의 효과적인 활용을 경험했습니다. 데이터베이스와의 통신은 네트워크 지연 등의 이유로 비동기적으로 처리되는 것이 일반적입니다. async/await 문법을 통해 이러한 비동기 작업을 동기적인 코드처럼 작성할 수 있게 되면서 코드의 가독성이 크게 향상되었고, Promise 기반의 콜백 지옥에서 벗어날 수 있었습니다. 이는 복잡한 비동기 로직을 더욱 쉽게 이해하고 관리할 수 있도록 돕는 핵심적인 도구임을 깨달았습니다. 마치 여러 개의 요리를 동시에 진행해야 하는 요리사가 async/await이라는 시간 관리 도구를 사용하여 효율적으로 작업을 처리하는 것과 같습니다.

넷째, NestJS의 DI(Dependency Injection) 컨테이너와 TypeORM Repository의 통합은 코드의 유지보수성과 테스트 용이성을 높이는 데 크게 기여한다는 것을 확인했습니다. @Injectable() 데코레이터로 서비스를 정의하고, @InjectRepository() 또는 타입 힌트를 통해 Repository를 주입받아 사용하는 방식은 각 컴포넌트 간의 의존성을 낮추고, 느슨한 결합(Loose Coupling)을 가능하게 합니다. 이는 단위 테스트를 용이하게 하고, 코드 변경 시 다른 부분에 미치는 영향을 최소화하여 유지보수성을 향상시키는 중요한 설계 원칙임을 이해했습니다. 마치 잘 설계된 공장의 부품처럼, 각 모듈이 독립적으로 작동하면서도 전체 시스템을 구성하는 방식은 코드의 재사용성과 확장성을 높이는 데 필수적입니다.

마지막으로, "데이터 중심 설계"의 중요성을 다시 한번 강조하고 싶습니다. API 개발의 핵심은 결국 데이터를 어떻게 효율적으로 저장하고, 조회하고, 관리하는가에 달려있습니다. TypeORM을 통해 엔티티를 정의하고, 데이터베이스 스키마를 모델링하는 과정은 API의 기반을 튼튼하게 만드는 중요한 단계입니다. 단순히 API 엔드포인트를 만드는 것을 넘어, 데이터의 흐름과 구조를 먼저 고민하고 설계하는 것이 장기적으로 안정적이고 확장 가능한 API를 구축하는 핵심이라는 인사이트를 얻었습니다. 마치 건물을 설계할 때 기능적인 요소뿐만 아니라 건물의 하중을 지탱하는 구조를 먼저 고려하는 것처럼, API 개발에서도 데이터 모델링은 가장 중요한 첫걸음이라고 생각합니다.

이번 학습을 통해 NestJS와 TypeORM은 강력한 시너지를 발휘하여 안정적이고 효율적인 백엔드 API를 구축하는 데 매우 유용한 도구임을 확신하게 되었습니다. 앞으로 더 다양한 TypeORM의 고급 기능과 NestJS의 여러 모듈들을 학습하고 실제 프로젝트에 적용하면서 숙련도를 더욱 향상시켜 나가고 싶습니다.


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

반응형