목록전체 글 (157)
juni
채팅 기능을 메모리 단계에서 흐름 검증 후 배포 환경에서도 채팅방, 내역 저장 및 조회를 위해 Supabase 구축 진행 chat_messages채팅방, 발신자, 내용, 발송 시각으로 유저별 채팅 내역 저장chat_room_participants어떤 사용자가 어떤 방에 속하는지와 마지막 읽은 시점을 기준으로 읽음 여부 표시 (현재는 1:1 기준)chat_rooms채팅방 정보(이름 등) 저장. 이름 설정 기능은 1:다 채팅 구현 후 예정 users chat_room_participants chat_rooms누가 어떤 방에 참여하는지 관리chat_rooms chat_messages어느 방에 어떤 메시지가 있는지 관리
aws 배포 전 먼저 안정적인 기능 구현을 위해 DB 없이 채팅 흐름이 안정적인지 먼저 메모리 단계로 테스트 진행Nest WebSocket Gateway를 메모리 저장소로 먼저 구현 -> join, leave, message 흐름을 로컬 환경에서 e2e 검증 gateway클라이언트의 join, leave, message 이벤트를 받아 Service를 통해 비즈니스 로직을 처리하고 채팅방 입퇴장과 메시지 브로드캐스트 처리 /** * 채팅 메모리 단계 테스트용 WebSocket Gateway * - 이벤트: join(입장+히스토리), leave(퇴장), m..
백엔드 tdd백엔드에 socket.io-client를 devDependency로 추가backend/test 또는 backend/src에 WebSocket e2e 테스트 파일 생성join → history → message 흐름을 검증 socket.io-client는 브라우저/Node에서 Socket.IO 서버에 접속하는 클라이언트 라이브러리입니다.즉, 테스트 코드에서 “가짜 사용자”처럼 서버에 연결하고, join/message 이벤트를 보내고 받기 위해 사용합니다.서버는 socket.io테스트/클라이언트는 socket.io-client 경로 @ 설정backend/package.json의 Jest 설정에 moduleNameMapper 추가→ 유닛 테스트에서 @/ 사용 가능backend/test/jest-e..
백엔드 폴더 구조 (현재)backend/src/ : 실제 애플리케이션 코드test/ : e2e 테스트 설정package.json : 백엔드 실행/빌드/테스트 스크립트nest-cli.json : Nest CLI 설정tsconfig.json : TypeScript 설정Dockerfile : 컨테이너 빌드용README.md : 간단 설명src/ 내부 파일 역할main.ts앱 시작점(Entry point)Nest 앱 생성 → CORS 설정 → 포트 리스닝의미: 서버를 “켜는 곳”.웹소켓을 붙이려면 게이트웨이 모듈을 등록하면 됨.app.module.tsNest의 루트 모듈어떤 컨트롤러/서비스를 쓸지 등록하는 곳의미: “어떤 기능들이 이 앱에 포함되는지” 정의하는 장소.app.controller.tsHTTP 요청을..
Dockerfile의 역할Dockerfile은 NestJS 백엔드를 Docker 이미지로 만드는 레시피입니다. AWS ECS에 배포할 때 사용합니다.Dockerfile 구조 설명1단계: 빌드 환경 (Builder)FROM node:20-alpine AS builderNode.js 20 Alpine 이미지 사용소스 코드를 TypeScript에서 JavaScript로 빌드개발 의존성 포함2단계: 실행 환경 (Production)FROM node:20-alpine빌드된 파일만 복사프로덕션 의존성만 설치이미지 크기 최소화주요 단계별 설명의존성 설치: pnpm install --frozen-lockfilepackage.json 기반 의존성 설치--frozen-lockfile: lock 파일과 정확히 일치하도록 보..
루트 계정 대신 IAM 사용자로 진행 이유루트 계정의 문제점모든 권한계정의 모든 리소스에 접근 가능 삭제, 변경, 비용 발생 등 제한 없음 실수로 중요한 리소스 삭제 가능보안 위험루트 계정 자격 증명이 유출되면 전체 계정 위험 복구가 어려움 감사/추적이 어려움권한 관리 불가세분화된 권한 부여 불가 필요 최소 권한 원칙 적용 불가 팀원별 권한 분리 불가IAM 사용자의 장점최소 권한 원칙필요한 권한만 부여 작업별로 다른 사용자 생성 가능 실수로 중요한 작업 방지보안 강화루트 계정 자격 증명 노출 위험 감소 사용자별로 Access Key 관리 문제 발생 시 해당 사용자만 비활성화감사 및 추적누가 무엇을 했는지 추적 가능 CloudTrail로 모든 작업 기록 문제 발생 시 원인 파악 용이협업팀원별로 다른 권한 ..
기본 설정provider.tf - AWS Provider 설정 AWS Provider 버전과 Terraform 버전 조건을 정의합니다.provider "aws"에서 리전과 기본 태그(Project/Environment/ManagedBy)를 전역으로 지정합니다. variables.tf - 변수 정의 모든 가변 값(리전, 환경, VPC CIDR, ECS 스펙, 예산 등)을 정의합니다.기본값이 있어도 terraform.tfvars로 덮어쓰는 구조입니다. outputs.tf - 출력값 정의 배포 후 필요한 정보(VPC ID, ALB DNS, ECR URL 등)를 출력합니다.terraform output으로 확인합니다. terraform.tfvars.example - 변수 예시 실제 값을 넣어야 하는 템플릿 예시..