nestjs 썸네일nestjs

2025-01-29

목차

  1. LLM(대형언어모델)과 Tulu 오픈소스
  2. 서버리스(Serverless) 아키텍처와 비용 이슈
  3. NestJS Cache Manager와 캐시 유지 문제
  4. 창업과 정부지원사업(예비창업패키지 등)
  5. 온라인 서비스의 SEO 최적화와 유저 경험
  6. 프론트엔드 테스트코드 실무 이야기
  7. 목(Mock), 스텁(Stub), 픽스쳐(Fixture)의 차이와 활용
  8. FE 단위테스트 vs E2E 테스트 전략
  9. 개발과 경영/사업의 역할과 대표 CTO 역할
  10. 대화 중 공유된 유용한 자료 및 링크

1. LLM(대형언어모델)과 Tulu 오픈소스 🤖

  • LLM이란?
    대형 언어 모델(Large Language Model)은 수십억 개 이상의 파라미터를 가진 AI로, 자연어 이해 및 생성에 뛰어남.

  • 대화 내용 요약:

    • 1.5B, 7B, 8B 파라미터 모델은 실무 사용에 제한적임.
    • 14B 모델은 영어 프롬프트에서 성능이 좋음.
    • 30B 모델은 큰 메모리 요구로 개인 환경에서 돌리기 어렵다고 함.
    • 웹기반 LLM 사용이 가장 편리하다는 의견 많음.
    • Tulu3(https://huggingface.co/allenai/Llama-3.1-Tulu-3-8B)은 한글 기반 오픈소스 LLM 원탑이며 학습 방식, 데이터셋, 프롬프트 방법까지 공개.
    • 로컬 LLM 활용 시 Tulu3 추천, 한국어 지원 강점.
    • 컴퓨터 스펙(메모리, CPU/GPU 등)에 따라 고사양 LLM 사용 가능 여부가 결정됨.

2. 서버리스 아키텍처와 비용 이슈 ☁️💸

  • 서버리스(Serverless)란?
    서버 관리 없이 클라우드 제공자가 인프라 관리를 대신해주는 서비스 모델.
    서버가 없다는 의미가 아니라, 서버 관리가 개발자나 운영자에게 보이지 않는 것임.

  • 주요 특징:

    • 트래픽에 따라 인스턴스가 생성되고 삭제됨(오토스케일링).
    • 트래픽 적을 때는 인스턴스가 뜨지 않아 비용 절감 가능.
    • "콜드 스타트"(cold start): 인스턴스가 새로 생성될 때 초기화에 시간이 걸리는 현상.
    • 잦은 호출 시 인스턴스가 계속 생성/소멸되어 비용이 오히려 증가할 수 있음.
  • 비용 최적화 팁:

    • 트래픽 패턴에 따라 적합한 방식 선택(서버리스 vs EC2 서버 상시 운영).
    • 과도한 실행 요청(차르봄바 공격 등) 피하기.
    • 하나의 서버로 여러 백엔드 요청 분기 처리하면 비용 절감 가능.

3. NestJS Cache Manager 와 캐시 유지 문제 🔄

  • NestJS Cache Manager는 캐시를 쉽게 구현할 수 있는 모듈임.
  • 문제점:
    • 서버리스 환경에서는 인스턴스가 자주 생성/소멸되므로 메모리 캐시가 제대로 작동하지 않음.
    • 매번 초기화되어서 캐시가 유지되지 않아 효율성 감소.
  • 해결 방법:
    • Redis 등 별도의 외부 캐시 서버에 캐시 데이터를 저장해야 함.
    • Redis는 메모리 기반의 빠른 키-값 저장소로, 여러 인스턴스가 공유 가능함.

4. 창업과 정부지원사업 이야기 💼🚀

  • 창업 전 필수 점검 리스트:
    • 수요와 타겟 고객을 명확히 알기.
    • 사업 계획 수립과 시장 조사 진행.
    • MIT 스타트업 바이블 같은 기본서 읽기 추천.
  • 정부지원사업 특징:
    • 예비창업패키지, 청년창업사업 등 다양한 지원사업 존재.
    • 많은 서류 작업과 제한된 비용 사용 범위 존재함.
    • 지원금이 상금 형태인 경우 자유롭게 사용 가능하나, 일반 지원사업은 후불, 비용 집행 여러 제약이 있음.
  • 팁:
    • 지원사업은 혼자 하기보단 컨설팅 받는 게 좋음.
    • 지원사업 사용 시 사업화에 집중할 수 있도록 전담 담당자 필요.
    • 초기 자금이 있으면 지원사업 없이 진행하는 것이 오히려 유리할 수 있음.

5. 온라인 서비스 SEO 최적화와 유저 경험 🌐📈

  • SEO(검색엔진 최적화)란?
    검색엔진에서 웹사이트의 노출 순위를 높이기 위한 방법과 전략.
  • 중요 포인트:
    • 사이트 내 각 상세페이지가 유입의 주요 창구이며, 각각 페이지 최적화가 필요.
    • 크롤러(검색봇)가 사이트를 잘 긁어가도록 방화벽 설정, 사이트맵 작성 중요함.
    • 내용이 충실하고 전문적인 글이 상위 노출에 유리.
    • 키워드 선택은 사용자의 검색 패턴과 철자 미스 분석까지 고려해야 효과적임.
  • UX(사용자 경험) 고려:
    • 사용자 상태(예: 비밀번호 찾기 페이지 방문 시 인지·감정상태)를 파악해 UI/UX 설계해야 함.
    • 단일 페이지만 보고 판단하기보다, 전체 흐름과 사용자 맥락을 이해하는 것이 중요.

6. 프론트엔드 테스트코드 실무 이야기 🧪💻

  • 프론트엔드 테스트 종류:
    • 유닛 테스트: 함수나 컴포넌트 내부 로직 검증.
    • 랜더링 테스트: 실제 컴포넌트를 가상 돔에서 렌더링 후 이벤트와 상태 변화 검사.
    • E2E(End to End) 테스트: 유저 관점으로 전체 흐름 테스트(playwright 등 이용).
  • 테스트 작성 난관:
    • 랜더러 환경이 복잡해 테스트 코드 작성이 어렵고 번거로움.
    • 브라우저별 미세한 동작 차이는 유닛 테스트에서 잡기 어려움.
    • 테스트 코드에 대한 소양과 설계능력이 요구됨.
  • 최근 실무:
    • 많은 프로젝트가 유지보수 어려움으로 컴포넌트 단위 랜더링 테스트를 제거하는 경우도 있음.
    • 보통 E2E + 핵심 함수 유닛테스트 조합으로 운영.

7. 목(Mock), 스텁(Stub), 픽스쳐(Fixture)의 차이와 활용 🛠️

  • 목(Mock):

    • 테스트 중 특정 함수나 객체의 동작을 가짜로 만들어 호출과 반환 값을 제어.
    • 외부 API 호출이나 DB 접근 같은 부작용을 차단하기 위함.
  • 스텁(Stub):

    • 목과 비슷하지만 좀 더 간단히 고정된 반환값을 제공하는 역할.
    • 주로 함수의 반환값만 고정할 때 사용.
  • 픽스쳐(Fixture):

    • 테스트에 필요한 고정된 데이터셋을 미리 만들어 둔 상태.
    • 복잡한 유닛테스트에서 여러 데이터 조합을 반복할 때 유용.
    • 유닛테스트뿐 아니라 통합 테스트에도 활용.
  • 참고:

    • 픽스쳐는 테스트용 상수 데이터로, 여러 케이스에 걸쳐 실제 데이터 기반으로 만들어짐.

8. FE 단위테스트 vs E2E 테스트 전략 ⚔️

  • 단위 테스트는 로직 검증에 집중, 컴포넌트의 내부 함수 테스트가 주된 대상.
  • E2E 테스트는 실제 브라우저 환경에서 사용자의 행동 흐름을 시뮬레이션.
  • 많은 팀이 컴포넌트 단위 랜더링 테스트를 유지보수 비용으로 제거하고 대신 E2E+핵심 함수 테스트만 유지.
  • 테스트 작성 시 중복, 모킹 최소화가 생산성 유지에 중요.
  • 가성비 고려하여, 효과적이고 빠르게 버그를 잡을 수 있는 영역에 집중하는 것이 권장됨.

9. 개발과 경영/사업의 역할과 대표 CTO 역할 🤝

  • 웹/앱 기반 기술 창업에서 대표가 꼭 개발까지 해야 하나?

    • 정답은 대표가 직접 개발하지 않아도 되나, 도메인 지식은 필수로 갖춰야 함.
    • 도메인 지식 없으면 채용해 맡겨도 사업 지속 어려움.
    • 대표는 직원과 소통할 수 있도록 기술 용어 등 기본 이해 필요.
    • 대표의 개발 참여 시간은 사실상 거의 없으며, 영업, 투자, 기획 등 업무가 우선됨.
  • 1인 개발도 가능하나, 사업 유형과 목표에 따라 다름.

  • 팀 단위 협업과 역할 분담 중요.

10. 공유된 유용한 링크🔗

면접팁⚡

  • 서버리스 아키텍처 이해
    서버리스가 서버가 없는 것이 아니라 서버 관리가 없는 것임을 명확히 설명
    콜드 스타트와 비용 최적화 이슈 이해도 높이는 게 좋음

  • 캐시 관리 전략
    NestJS 같은 프레임워크에서 캐시는 메모리 외부 저장소(Redis)를 사용하는 이유를 알고 있어야 함.

  • 테스트 용어와 개념
    목(Mock), 스텁(Stub), 픽스쳐(Fixture)의 차이와 사용 목적을 명확히 설명할 것.

  • 창업 관련
    기술 창업 시 대표와 CTO 역할 분담, 도메인 지식 중요성 강조.

  • SEO 및 UX 기초
    검색엔진 최적화가 왜 중요하며, 상세페이지별 최적화 필요성 이해.

#서버리스#LLM#NestJS#테스트코드#창업#SEO#캐시관리#프론트엔드테스트#목스텁픽스쳐#스타트업지원