2025/02 13

내일배움캠프 18주차 수요일 TIL

아침 회의 (10:30 ~ 11:00)게임 서버완료: 밤이 된 이후 능력 사용 등 게임 진행 로직 작성 완료.미완료:밤 로직을 웹페이지와 연동해 동작 확인 필요 (이벤트 이름 불일치 문제로 적용 불가).발신자의 직업과 생존 여부 판별 변수 변경 필요→ 현재 게임 로직에서 userId를 사용하지 않는 경우가 많아 최적화가 요구됨.API 서버완료:메일 주소 입력을 통한 로그인 기능 구현.동일 기기에서의 다중 접속 방지 기능 구현.방 목록 조회 기능 구현.사용자가 생성된 방 중 선택한 방에 참가하는 기능 구현.저녁 회의 (19:10 ~ 19:40)게임 서버완료:발신자의 직업과 생존 여부 판별 변수 변경 완료:→ 발신자가 죽은 상태일 경우 죽은 사람끼리, 마피아라면 밤에 마피아끼리 채팅 가능하도록 조정.룸 게이..

카테고리 없음 2025.02.26

내일배움캠프 17주차 수요일 TIL

2/19 회의 api 기능 일부 수정 및 s3 적용 완료(서버 실행은 문제없음)api 부분 트랜젝션 및 검증 부분 추가 수정할 예정 생존자들 만의 채팅방 구현생존자 채팅 검증예정, 사망자 채팅 채팅방에 전달하는 기능 구현 예정 밤 채팅 부분 코드 작성채팅방방 삭제 기능 완료방 조회 기능 구현 예정 방 생성 기능 구현완료방생성 검증 및 수정 예정 룸 채팅방 접속 웹소켓 구현 완료, 인원 초과시 진입 불가능 기능 구현 완료룸 진입 불가시 메시지 전송오류 수정 및 웹소켓 리팩토링 예정공통내용초기 설계 단계에서 웹소켓을 2개로 기능구현 > 웹소켓을 1개로 기능구현대원님이 작성하신 웹소켓 기능을 기반으로 나머지 소켓 기능들을 구현할 예정

카테고리 없음 2025.02.19

내일배움캠프 17주차 화요일 TIL

웹소켓(WebSocket)웹소켓은 클라이언트(보통 웹 브라우저)와 서버 간에 지속적인 양방향 통신 채널을 제공하는 프로토콜HTTP와 달리, 초기 핸드셰이크 후에는 연결이 유지되며, 실시간 데이터 전송에 최적화Socket.IOSocket.IO는 웹소켓을 통해 클라이언트와 서버 간의 실시간 통신을 쉽게 구현할 수 있도록 도와주는 JS 라이브러리구형 브라우저 같이 클라이언트가 WebSocket을 지원하지 않거나, 네트워크 환경이 WebSocket 연결에 제한이 있을 때 자동으로 폴백(fallback) 방식(예: Long Polling)으로 전환폴백 메커니즘: 최상의 방식( Socket.IO 에서는 WebSocket)을 사용할 수 없을 때, 다른 대체 수단으로 "fallback"하여 연결을 유지하게 하는 기능최..

카테고리 없음 2025.02.18

내일배움캠프 17주차 월요일 TIL

로컬 레디스 서버를 활용하여 게임 서버에 존재하는 채팅 테스트- 게임 진행 자체가 룸에 있는 채팅창을 통해 진행되기 때문에, 게임 서버 로직 적용, 테스트를 위한 채팅방 임시 구현 필수- 룸 id 별로 접속한 유저들만 채팅 가능게임서버가 아닌 API 서버의 룸 생성 API 호출 시 레디스에 룸 데이터 저장될 것으로 가정해당 API 개발 전이므로, 로컬 레디스에 강제로 룸 데이터를 생성하여 테스트 진행- http://localhost:3000/room/1와 같은 형태로 룸 id를 파라미터로 사용한다.// src/rooms/room.controller.tsimport { Controller, Get, Param, Res, NotFoundException } from '@nestjs/common';import..

카테고리 없음 2025.02.17

내일배움캠프 16주차 WIL

이번주 계획, 실행한 것1. 프로젝트 방향 설정웹소켓을 활용한 실시간 마피아 게임 진행 결정다양한 기능(도커, 레디스, 소켓 등) 활용 계획2. 기술 학습 및 사전 준비 도커, 레디스, 소켓 등 프로젝트에 활용될 기술을 개별적으로 자습하기로 결정마피아 프로젝트에 대한 ERD 작성 및 튜터님과의 검증 예정3. API 및 소켓 명세서 작성 마피아 게임 관련 API를 세분화하여 담당자 배정웹소켓 명세서 작성 계획 및 기존 명세서 보완 (불필요 항목 삭제, 채팅 토글 기능 추가)4. 인프라 및 서버 구성 계획 인프라 옵션 비교: EC2와 ECS당장은 EC2 내에서 API 서버와 게임 서버(도커 컨테이너) 분리 운영추후 방 개수 증가에 따라 개선 검토도커 오토스케일링:스크립트를 통해 자원 사용량 모니터링 후, 자..

카테고리 없음 2025.02.14

내일배움캠프 16주차 금요일 TIL

불큐는 Node.js에서 여러 작업을 효율적으로 처리해 주는 도구다. Redis를 사용해 작업들을 잘 정리하고, 동시에 여러 요청이 들어와도 한 번에 하나씩 안전하게 처리하도록 도와준다. 그래서 좌석 예매처럼 한 자원에 여러 요청이 동시에 들어올 때 문제가 생기지 않게 하고, 오류가 생기면 자동으로 다시 시도해준다.작업 큐 관리 및 동시성 처리여러 작업(예: 좌석 예매 요청)을 큐에 등록해 순차적 또는 동시에 안전하게 처리함. 경합 상황에서 안정적인 처리를 보장함.Redis 백엔드 활용Redis를 사용하여 작업 데이터와 상태를 빠르고 효율적으로 관리함. 분산 시스템에서도 일관성을 유지함.NestJS에서의 원할한 통합@nestjs/bull 모듈을 통해 Bull Queue를 모듈, 서비스, 컨트롤러, 프로세..

카테고리 없음 2025.02.14

내일배움캠프 16주차 수요일 TIL

웹소켓 처리를 위한 기본 개념 다시 정리NestJS 서버 애플리케이션 프레임워크클라이언트의 http 요청이나 웹소켓 이벤트를 처리하고, 비즈니스 로직을 실행하며, 여러 모듈과 서비스를 체계적으로 구성한 상태에서 db와 연결해 백엔드를 구성Socket.io클라이언트와 서버  간 실시간, 양방향 통신을 가능하게 한다.Redis 레디스는 인메모리 데이터 저장소로, 매우 빠른 속도로 데이터를 읽고 쓸 수 있다.(예: 방 정보, 플레이어 상태, 투표 기록, 역할 할당 등) 게임 진행 상황을 빠르게 업데이트하고, 여러 클라이언트에 최신 상태로 제공하는데 유용Docker 도커는 애플리케이션을 컨테이너라는 독립된 환경에서 실행할 수 있게 해주는 도구로, 이 프로젝트에서는 redis 서버를 손 쉽게 실행하기 위해 사용...

카테고리 없음 2025.02.12

내일배움캠프 16주차 화요일 TIL

2025년 2월 11일 오후회의기획 단계에서 웹 소켓을 활용한 마피아 프로젝트를 그대로 할 것인지 아니면 턴 제 게임을 할 것인지 고민했고 어렵지만 다양한 기능들을 활용할 수 있는 마피아 게임을 하기로 결정했다.그리고 이번 주에는 프로젝트에서 활용될 도커, 레디스, 소켓 등등을 혼자 자습해 알아오기로 약속했다.마피아 프로젝트에 대한 ERD 를 작성하며 마무리했고 연결 관계가 잘 됐는지는 내일 다시 튜터님에게 확인해야겠다.저녁회의마피아 프로젝트에 관한 API를 세분화 시키고 배정하여 작성했다.

TIL 2025.02.11

내일배움캠프 15주차 WIL

트렐로 프로젝트 KPT 회고KeepNestJS에 대한 이해도와 NestJS 환경에서의 웹소켓 구성 경험프로젝트를 진행하며 NestJS  에 대한 이해도가 높아졌고, 이를 활용해 기존에 했던 CRUD나 웹소켓 기능을 설계ㆍ구현하면서 자신감이 생김.구동 순서와 흐름에 대한 이해도 향상프로젝트를 진행하며 3계층 아키텍처 구조가 NestJS 에서 어떻게 녹아 있는지 느낄 수 있었고, 자동으로 해주는 기능이 많다고 느꼈다.타인의 코드 파악 및 습관 비교 학습다른 팀원이 작성한 코드와 나의 코드가 미세하게 다른 부분을 분석하면서, 타인의 코드를 빠르게 파악하는 역량과 다양한 코딩 습관을 학습하는 기회가 되었음.추가적인 기능 구현에 대한 도전정신최대한 작업에 몰두 했고 마치는대로 바로 다음 작업으로 넘어가며 기여도를..

WIL 2025.02.07

내일배움캠프 15주차 금요일 TIL

Today I Learned오늘은 프로젝트 진행 중 여러 상황을 겪으면서 중요한 교훈을 얻었다.잦은 푸쉬와 테스트의 중요성전날 개인 브랜치에서 충분히 테스트한 코드가 dev 브랜치에 머지되자 전체 테스트가 실패하는 문제가 발생했다. 이 경험을 통해, 작은 변경이라도 자주 푸쉬하고 테스트를 진행해야 전체 시스템에 미치는 영향을 조기에 파악할 수 있다는 것을 배웠다.발표 및 프로젝트 준비의 체계적 관리 필요성간략한 발표 준비 후 발표를 진행했지만, 기술 선택의 이유와 시행착오에 대해 충분히 설명하지 못한 점이 아쉬웠다. 발표 준비에 충분한 시간을 할애하고, 왜 특정 기술이나 방법을 선택했는지 명확하게 전달하는 것이 중요하다는 것을 깨달았다.이 두 가지 경험을 바탕으로 앞으로는 더 자주, 더 꼼꼼하게 테스트하..

TIL 2025.02.07