2025/08 5

[Project - Howru] (5) kafka를 활용한 비동기처리 및 성능개선

1. 가설 설정우리 채팅 시스템은 MongoDB + Redis + Kafka를 활용해 메시지를 저장/전달한다.기본 구조에서는 모든 저장 과정을 동기 처리하기 때문에,트래픽이 몰리면 메시지 저장 속도가 느려지고, 응답 시간이 길어진다.비동기 처리와 캐싱 최적화를 도입하면 성능이 개선될 것이라 가정했다.2. 문제 설정동기 처리 기반 메시지 저장 구조에서 성능 문제 발생:p95 응답시간(95% 요청 응답 속도): 약 5초실패율: 약 47% (timeout/drop)TPS(초당 처리 메시지): 50~60 수준으로 제한실제 채팅 서비스라면, 이런 응답 속도와 실패율은 사용자 경험에 치명적임.3. 시나리오 (부하 테스트)도구: k6 + Grafana시뮬레이션:로그인 후 JWT 토큰 발급채팅방 선택 → 메시지 전송 ..

멋사 부트캠프 2025.08.25

[Project - Howru] (4) 채팅 NLP 기반 사용자 추천 시스템 구현

NLP Tagging Service를 별도의 모듈로 구현했습니다.이 서비스는 MSA 아키텍처에서 “사용자 관심사 분석기” 역할을 담당합니다.fastapi-api/ ├── analysisTag.py # NLP 태깅 서비스 메인 코드 ├── Dockerfile # 컨테이너 실행 환경 ├── requirements.txt # 의존성 패키지 └── fastapi-api.iml # IDE 설정 파일왜 MSA로 분리했는가?확장성: NLP 연산은 자원 소모가 크기 때문에 별도의 서비스로 분리하여 독립적으로 확장 가능독립 배포: Dockerfile 기반으로 채팅 서비스, 알림 서비스와 분리해 배포 가능데이터 분리: MongoDB에 독립 컬렉션을 사용유연성: 새로운 태그/키워..

멋사 부트캠프 2025.08.20

[Project - Howru] (3) 채팅 NLP 기반 사용자 추천 시스템 설계

채팅 기반 단어장을 바탕으로 사용자 태그 생성 – NLP 기반 사용자 추천 시스템 설계채팅 기록에서 자동으로 단어장을 생성하고, 이를 주제별 태그로 변환해 사용자 추천까지 이어지는 과정을 설계해본다. 아직 실행은 최종 확정이 아니고, 다양한 접근을 시도한 뒤 최적안을 선택할 계획이다. 1. 채팅 메시지 수집MongoDB에 채팅 메시지를 저장 - kafka를 이용해 redis 캐싱과 비동기로 처리할 예정메시지 필드 예시:{ "_id": { "$oid": "689587cc8e228a315fec3ed6" }, "chatRoomId": "chat_user1_user2", "senderId": "user1", "receiverId": "user2", "message": "Dessert is a m..

멋사 부트캠프 2025.08.17

[Project - Howru] (2) ChatRoom Domain 구현

ChatRoom 도메인 구현채팅이 일어날 수 있는 공간(=채팅방)이 필요하다.그래서 이번 포스트에서는 채팅방 생성 및 관리 도메인인 "ChatRoom" 을 먼저 설계하고 구현해보자. 1. ChatRoom 도메인 요구사항채팅방 생성유저 A가 유저 B에게 채팅 요청을 보낼 수 있다. 요청을 보낸경우 채팅방이 DB에 생성된다.채팅방은 항상 "1:1" 구조다 (추후 그룹채팅방으로 확장 가능하도록 Enum으로 구분)B가 수락해야 채팅방이 활성화된다WebSocket 연결용으로 "UUID 기반 방 식별자"가 필요하다사용자가 방과 연결 해제하면 해당 사용자의 ChatRoomMember 레코드를 삭제한다채팅메시지 저장영속/캐시 이중화 전략을 사용하여, 채팅 메시지를 Redis에 최대 30개 저장(추후에 TTL 설정으로 ..

멋사 부트캠프 2025.08.11

[Project - Howru] (1) 프로젝트 기획

프로젝트 목표/의도요즘 많은 사람들이 영어를 배우지만, 막상 실전에서 말할 기회는 부족하다. 기존 영어 학습같은 경우에는 정적인 단어, 문장의 학습에만 치중되어 있고 실제 회화를 차용에서 학습하기에는 어려움이 있다. 물론 오프라인 영어회화로 그것들을 보충하면 되지만 그 때 학습했던 표현들을 다시 공부하거나 회고하기에는 어려움이 있다. "실시간 대화를 하면서, AI가 자동으로 내 학습 콘텐츠를 정리해준다면 어떨까?"이 질문에서 출발해, 팀원들과 함께 실시간 언어 교환 기반 영어 학습 플랫폼 "하우아유? (How Are You?)"를 기획하게 되었다. 핵심 기능 요약1구글 소셜 로그인Google OAuth를 통한 간편 로그인 (email, provider 저장)2회원가입 옵션 선택모국어 / 학습 언어 / 관..

멋사 부트캠프 2025.08.03