Nest.js는 Node.js 기반의 서버 사이드 애플리케이션을 개발하기 위한 프레임워크로, TypeScript를 활용한 모듈, 아키텍처와 간결한 코드 작성을 제공하는 Node.js 프레임워크로, 효율적이고 확장 가능한 서버 애플리케이션을 개발할 때 유용한 도구다.
1. 모듈 아키텍처: Nest.js는 모듈 기반 아키텍처를 채택하여 코드의 모듈화와 재사용성을 높이고 의존성을 관리할 수 있게 해준다.
2. Decorator 사용: TypeScript의 데코레이터를 활용하여 간결하고 직관적인 코드 작성이 가능하다. 이를 통해 의존성 주입 및 미들웨어 사용 등이 용이해지는 장점이 있다.
3. 의존성 주입: 의존성 주입패턴을 적극적으로 활용하여 모듈 간의 결합도를 줄이고 테스트 용이성을 높일 수 있다.
4.강력한 CLI: Nest CLI를 통해 프로젝트 구조 생성, 모듈/컨트롤러/서비스 생성 등을 간단하게 수행할 수 있다.
5. Express 및 Fastify 지원: Express 또는 Fastify와 같은 웹 프레임워크를 내부적으로 사용할 수 있어, 선택한 웹 서버에 대한 유연성을 제공할 수 있다.
6. Middleware와 파이프: 미들웨어와 파이프를 통해 요청 및 응답 데이터를 가공하거나 검증하는 로직을 구현하기에 용이하다.
7. Exception 필터와 인터셉터: 예외 처리와 요청 인터셉트를 지원하여 에러 처리와 로깅을 효율적으로 관리할 수 있다.
8. TypeScript 지원: TypeScript를 기본 언어로 사용하며, 정적 타입 체크와 강력한 개발 도구를 제공하여 개발 생산성을 높일 수 있다.
9. 구조적 일관성: 모듈 아키텍처와 데코레이터를 통해 코드의 구조적 일관성을 유지하면서 유연한 애플리케이션을 구축할 수 있다.
10. 테스트 용이성: 의존성 주입과 모듈화된 코드로 인해 단위 테스트 및 통합 테스트를 용이하게 수행할 수 있다.
11. 확장성: 모듈 기반 아키텍처와 미들웨어, 인터셉터를 통해 애플리케이션을 쉽게 확장하고 변경할 수 있다.
12. 커뮤니티와 생태계: 활발한 커뮤니티와 다양한 패키지, 라이브러리 등을 활용하여 개발을 지원받을 수 있다.
나의 답변 😄
RDBMS는 정형 데이터를 테이블 형식으로 관리하여 데이터의 일관성과 무결성을 보장합니다. 강력한 SQL 쿼리로 복잡한 질의와 분석을 수행할 수 있지만, 대용량 데이터 처리와 확장에 제약이 있습니다. 데이터의 구조를 미리 정의해야 하고, 스키마 변화가 제한적입니다. 그에 반해 NoSQL은 다양한 데이터 유형과 비정형 데이터를 처리하며, 데이터 유연성과 확장성을 강조합니다. 분산 처리로 대용량 데이터 처리가 용이하나 ACID 특성을 모두 만족하지 않고 일관성 제어가 어려울 수 있습니다. 쿼리 언어가 표준화되지 않아 복잡한 쿼리에 제한이 있을 수 있습니다. RDBMS와 NoSQL은 각자의 강점과 제약으로 선택은 데이터 특성, 처리 방식, 요구 사항에 따라 달라집니다. 정형 데이터와 복잡한 질의에선 RDBMS가, 다양한 데이터 유형과 확장성에선 NoSQL이 유용할 수 있습니다.