목차
- Rust 언어 현황과 전망
- NestJS 공부 및 추천 서적
- Typia + SWC 사용 경험과 제한 사항
- NestJS 기반 모바일 & 웹 API 분리 설계
- Prisma 스키마 멀티 파일 지원
- BFF (Backend For Frontend) 개념과 관리 주체
- API 설계 시 모바일과 웹 대응 방안
- Code Push 및 앱 API Deprecated 관리
- 정책 관련 인터페이스 네이밍 고민
- 국내 개인정보 이슈 간략 언급
1. Rust 언어 현황과 전망 🚀
- 러스트(Rust)는 메모리 안전성과 성능을 겸비한 언어로 각광받아 왔음.
- 최근 대형 프로젝트에서 거부되는 사례도 있어 "Rust가 답인가?"에 대한 회의적 시각 존재.
- 장점: 안전한 메모리 관리, 고성능, 현대적 문법.
- 단점: 진입장벽, 컴파일 속도, 학습 곡선.
- 참고글: Rust’s downfall - Medium
2. NestJS 공부 및 추천 서적 📚
- Rust 관련 고민 중 네스트JS(NestJS) 서적 추천 요청이 있었음.
- 최신 버전 업데이트가 많으므로, 공식 문서 정독이 가장 효율적이라는 의견 다수.
- "NestJS"는 Node.js 기반 프레임워크로 타입스크립트와 함께 사용하기 좋음.
- 참고 블로그: NestJS 실전 가이드
3. Typia + SWC 사용 경험과 제한 사항 ⚙️
- Typia: 타입스크립트 타입 정보를 기반으로 런타임 검증을 자동화하는 라이브러리.
- SWC: 빠른 자바스크립트/타입스크립트 컴파일러.
- Typia는 공식 문서에 SWC 지원하지 않는다고 명시되어 있음.
- 이유: SWC는 정적 타입 정보를 충분히 보존하지 못해 Typia가 정상 작동 불가.
- Vite 지원 및 unplugin-typia 활용 가능.
- 테스트 코드 환경 전환시, Vitest는 Jest보다 빠르지만 호환성 문제로 에러가 많음.
- ESM 환경에서 정적 모듈 분석 관련 이슈 존재.
4. NestJS 기반 모바일 & 웹 API 분리 설계 📱💻
- 웹과 모바일 API 단일 서버 활용 시:
- 컨트롤러만 분리하는 경우가 많음.
- 서비스 및 레포지토리 구성은 거의 동일하게 유지.
- 이유: 요구사항 유사한 경우가 많아 코드 중복 최소화가 효율적.
- 단, 엔드포인트 분리하여 요청을 구분하고 일부 API는 별도 처리.
- API 문서 스트리밍 파일 응답 시 StreamableFile 사용가능.
- 관리 복잡도 증가 시 점진적으로 패턴화하며 설계 권장.
- 프론트에서 클라이언트 종류(웹/앱)를 헤더 등으로 구분하여 처리하는 방법도 활용됨.
5. Prisma 스키마 멀티 파일 지원 🗂
- 기존 TypeORM은 엔티티마다 별도 파일 사용.
- Prisma는 기본적으로 schema.prisma 하나에 모든 엔티티 정의.
- 그러나 프리뷰 기능으로 멀티 파일 모듈화를 지원.
- 대형 프로젝트에서 스키마 분리하여 관리 가능.
- 참고자료: Prisma 멀티 파일 지원 공식 안내
6. BFF (Backend For Frontend) 개념과 관리 주체 🖥️📲
- BFF는 프론트엔드별 맞춤형 API를 제공하는 중간 서버 계층.
- MSA 구조에서 여러 리소스 서버 API를 통합하고 최적화함.
- 관리 주체:
- 일반적으로 프론트엔드가 관리하지만, 회사마다 다름.
- 프론트 입장에선 관리 부담이 늘어날 수 있음.
- API Gateway와 BFF가 타협점 역할을 하며 복합 서비스에서 적극 활용.
7. API 설계 시 모바일과 웹 대응 방안 🔄
- 모바일과 웹에서 요구사항 차이가 존재할 때 대응법:
- 동일 API 엔드포인트 유지하고 클라이언트 구분을 통해 분기 처리.
- 조건별 데이터 추가 및 서비스/쿼리 레벨에서 변화 주기.
- 페이지네이션 등 공통 QueryParam은 통일(page, perPage 등).
- 점진적으로 UseCase를 수집해 패턴화 설계하는 방식을 권장.
- 앱은 API 변경에 더 민감하여 Deprecated 관리가 중요함.
8. Code Push 및 앱 API Deprecated 관리 📦
- 앱에서 API를 Deprecated 하기는 어렵고 신중해야 함.
- Code Push 기술로 앱을 강제로 업데이트할 수 있는 방법 존재.
- 대표 오픈소스:
- Microsoft 공식 code-push-server
- 한국 개발자 프로젝트 hot-updater
- 2025년 3월 공식 Code Push 서비스 중단 예정이라 직접 오픈소스 활용 필요.
9. 정책 관련 인터페이스 네이밍 고민 🤔
- 정책에 따른 서비스 분기 시 네이밍 고민 많음.
- 'Policy' 와 'Strategy' 두 단어 비교:
- Policy: 규칙, 정책 의미로 적합, 네이밍으로 더 자주 사용됨.
- Strategy: 디자인 패턴에서 전략 의미, 중복 사용 우려.
- 대체로 'Policy' 네이밍 추천.
- 예) payment/policy, payment/strategy 중 추천은 payment/policy.
10. 국내 개인정보 이슈 간략 언급 🔒
- 한국의 엄청난 개인정보 유출 사건 이슈 공유.
- 온국민 4000만 명의 개인정보 542억 건이 59억 원에 거래됨.
- 카카오, 네이버 모기업이 중국 관련 기업이라 불합리하다는 시각 존재.
- 관련 뉴스: 네이버 기사
면접팁⚡
- Rust에 대한 질문 시, 장단점을 균형 있게 설명하고 최근 현황 언급하기.
- NestJS 기반 API 설계 경험은 모바일/웹 분리 전략, BFF 활용 경험으로 어필.
- Prisma 스키마 관리 방식 질문에는 멀티 파일 지원과 대형 프로젝트 관리 방안 언급하기.
- 정책 네이밍은 'Policy'를 선택하는 이유를 논리적으로 설명하면 좋음.
- Code Push 및 앱 업데이트 전략 경험이 있다면 API Deprecated 문제 해결 사례로 활용.
링크🔗
- Rust 관련 기사: https://medium.com/@Aaron0928/rusts-downfall-from-rising-star-to-rejected-by-major-projects-c3263daf2e9e
- NestJS 실전 가이드(블로그): https://m.blog.naver.com/zpdl92/222961157858
- Typia 공식 문서 및 설정: https://typia.io/docs/setup/#unplugin-typia
- Prisma 멀티 파일 스키마 지원: https://www.prisma.io/blog/organize-your-prisma-schema-with-multi-file-support
- Microsoft Code Push 서버: https://github.com/microsoft/code-push-server
- Hot Updater 오픈소스: https://github.com/gronxb/hot-updater
- 개인정보 유출 뉴스: https://n.news.naver.com/article/005/0001753681
#Rust#NestJS#Prisma#Typia#SWC#BFF#API설계#CodePush#정책패턴#개인정보