이번 주에는 NestJS 기반의 마피아 게임 개발을 진행하면서 웹소켓, TypeORM, 인증 시스템(JWT), 환경 변수 관리 등을 다뤘다.
특히 AppModule
을 구성하면서 여러 기능 모듈을 정리하고, 환경 변수 검증을 추가하는 작업을 했다.
또한, TypeORM
설정을 비동기(forRootAsync()
) 방식으로 적용하고, SnakeNamingStrategy
를 활용해 데이터베이스 컬럼 네이밍을 일관성 있게 맞췄다.
추가적으로 웹소켓을 활용한 실시간 기능을 고민하면서 EventEmitterModule
과 JwtModule
을 어떻게 활용할지 검토했다.
NestJS의 모듈 시스템이 처음에는 복잡해 보였지만, 점점 구조가 익숙해지면서 모듈 단위로 관리하는 것이 유지보수에 강력한 장점이 된다는 걸 느꼈다.
처음 ConfigModule
에서 환경 변수 검증을 추가할 때는 설정할 게 많아 번거로웠지만, 명확한 검증 기준을 정해두면 실수를 줄일 수 있어 안정성이 높아진다는 점이 인상적이었다.
또한, TypeORM
설정을 동기적으로 하면 ConfigService
를 활용하기 어렵다는 점을 깨닫고, 비동기 방식(forRootAsync
)으로 전환한 것이 큰 개선이었다.
웹소켓과 이벤트 기반 시스템을 고민하면서, NestJS가 단순한 API 서버뿐만 아니라 실시간 기능에도 강력한 프레임워크라는 걸 체감했다.
✅ ConfigModule
에서 Joi
를 활용해 환경 변수를 검증하면 실수를 줄이고 보안성을 높일 수 있다.
✅ TypeORM
을 forRootAsync
로 설정하면 ConfigService
를 활용할 수 있어 환경 변수 기반의 유연한 설정이 가능하다.
✅ SnakeNamingStrategy
를 사용하면 테이블 컬럼 네이밍이 일관되게 유지된다.
✅ 웹소켓을 활용한 실시간 기능을 설계할 때, 이벤트 기반 시스템(EventEmitterModule
)을 함께 고려하면 확장성이 높아진다.
✅ JwtModule
을 비동기적으로 설정하여 ACCESS_SECRET_KEY
와 ACCESS_EXPIRES_IN
을 환경 변수로 관리하면, 인증 시스템을 더 안전하게 구축할 수 있다.
🚀 다음 주에는 웹소켓을 본격적으로 활용하여 실시간 마피아 게임 로직을 구현해볼 계획이다.
🚀 EventEmitterModule
을 활성화하여 게임 내 이벤트 처리를 효율적으로 관리하는 구조를 고민할 예정이다.
🚀 JWT 기반 인증 시스템을 웹소켓과 연동하여 게임 참여자의 신원을 검증하는 기능을 추가할 계획이다.
🚀 TypeORM
을 활용한 게임 기록 저장 및 통계 데이터 관리 시스템을 구축해볼 예정이다.
이번 한 주 동안 NestJS의 구조와 기능을 더 깊이 이해할 수 있어서 좋았고, 실시간 기능을 적용하는 과정이 기대된다!