분류 전체보기 28

[한국연구재단 R&D 프로젝트] 실시간 통신 총정리

아우웅 .. 지금 완전 WebSocket이며 Redis며 Nginx 프록시며 실시간 통신에 관한 구현을 하고는 있는데 머릿속으로 정리가 안돼서 티스토리에라도 끄적여봅니다 .. 일단, 구현한 것은 1. 3명이 한 방에 들어가서 3초 후에 동시 시작2. 시작 후 3명이 음성 토론을 실시간으로 진행 (약간 줌 느낌이라고 난 생각했다)이때, 음성 시작과 끝을 백엔드는 기록한다 → 음성 토론을 다 녹음한 후 STT를 이용하여 스크립트화 해서 후에 GPT API를 통해 분석해야 한다.WebRTC 시그널링을 통해 P2P 연결3. 페이지는 방장이 넘길 때 다른 사람의 접속 페이지에서도 동시에 넘어가야 하며4. 각자 선택 제출을 음성 토론 중에 진행하고,5. 종료되면 음성 세션 종료와 함께 audio 기록 업로드 정도가..

Back-end 2025.07.21

FastAPI + Websocket + Celery + Redis: train 로그 실시간 전송 구현

졸업 프로젝트 중 내가 이번주 넘 고생했던 api 구현이었기에 정리해본다!우리 서비스는 생성된 코드를 통해 서버 환경에서 학습을 시키고, 그 학습 로그를 epoch마다 실시간으로 loss, accuracy 값을 프론트엔드에 전송을 해야했고, 학습이 완료되면 6가지의 학습 지표를 최종 출력해야했다. 프로젝트 개요PyTorch 기반 학습 로그를 실시간으로 프론트엔드로 보내기 위한 전체 시스템 구성FastAPI가 websocket 경로를 따라 사용자의 학습 요청을 받아 Celery로 학습 태스크를 보냄워커가 PyTorch 학습 실행 + print()를 Redis Pub 채널로 발행FastAPI는 해당 채널을 구독해서 클라이언트 WebSocket에 전송Celery는 Redis를 통해 워커에게 작업 전달사용 기술..

Back-end 2025.05.06

ch8. 데이터베이스 설계

01 데이터베이스 설계 단계관계 db의 대표적인 설계 방법E-R 모델과 릴레이션 변환 규칙을 이용한 설계 정규화02 요구 사항 분석목적 - 사용자가 요구사항을 수집하고 분석하여 개발할 데이터베이스의 용도 파악- 업무에 필요한 데이터가 무엇인지, 그 데이터에 어떤 처리가 필요한지 등을 고려결과물 : 요구 사항 명세서데이터베이스를 실제로 사용할 주요 사용자의 범위 결정사용자가 조직에서 수행하는 업무 분석면담, 설문 조사, 업무 관련 문서 분석 등의 방법을 이용해 요구 사항 수집수집된 요구 사항에 대한 분석 결과를 요구 사항 명세서로 작성03 개념적 설계목적 - DBMS에 독립적인 개념적 스키마 설계, 요구사항 분석 결과물을 개념적 데이터 모델을 이용해 개념적 구조로 표현(개념적 모델링), E-R 모델 ↑결과..

관계 데이터 모델

ch5. 관계 데이터 모델관계형 데이터베이스는 2차원적인 표를 이용해서 데이터 상호 관계를 정의한다.개체(entity) & 관계(relationship)를 모두 릴레이션이라는 표(table)로 표현하기에 개체를 개체 릴레이션과 관계 릴레이션이 존재- 개념적 구조를 논리적 구조로 표현하는 논리적 데이터 모델- 하나의 개체에 관한 데이터를 하나의 릴레이션(=테이블)에 저장 [관계형 데이터베이스의 릴레이션 구조]1) 릴레이션하나의 개체에 관한 데이터를 2차원 테이블의 구조로 저장한 것파일 관리 시스템 관점에서 file에 대응한 릴레이션엔 똑같은 튜플이 포함될 수 X한 릴레이션에 포함된 튜플 사이에는 순서가 없다 (= 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 X)튜플들의 삽입, 삭제 등의 작업으로..

ch4. 데이터 모델링

01 데이터 모델링과 데이터 모델의 개념현실 세계에 존재하는 데이터를 컴퓨터 세계의 데이터베이스로 옮기는 변환 과정추상화- 2단계 데이터 모델링개념적 데이터 모델링현실 세계의 중요 데이터를 추출하여 개념 세계로 옮기는 작업논리적 데이터 모델링개념 세계의 데이터를 데이터베이스에 저장하는 구조로 표현하는 작업- 데이터 모델데이터 모델링의 결과물을 표현하는 도구개념적 데이터 모델사람의 머리로 이해할 수 있도록 현실 세계를 개념적 모델링하여 데이터베이스의 개념적 구조로 표현하는 도구ex. 개체-관계 모델논리적 데이터 모델개념적 구조를 논리적 모델링하여 데이터베이스의 논리적 구조로 표현하는 도구ex. 관계 데이터 모델- 데이터 모델의 구성데이터 구조정적 특징개념적 데이터 모델에서 개념적 구조 - 현실 세계를 개념..

카테고리 없음 2025.04.19

OOM 문제 해결

Websocket + FastAPI로 구현했던 기능에서 계속 OOM 에러가 떠서.. 아예 구성을 바꿔야 겠다고 생각했다. [🧱 전체 구성 요약]📱 Client ↓ WebSocket 요청 🌐 FastAPI → Celery task 발송 → WebSocket 열고 로그 수신/전송 🐇 Celery Worker → model.fit() 수행 → 로그를 Redis에 저장 or 직접 WebSocket으로 push 🐘 Redis → Task queue / 로그 전달용✅ 구성 요소 요약역할파일설명Celery task 실행tasks/train.py모델 학습Redis 로그 전송utils/pubsub.py학습 로그 publishWebSocket 수신ws/log_consumer.py..

Back-end 2025.04.19

CH3. 데이터베이스 시스템

01 데이터베이스 시스템의 정의DBS : 데이터베이스에 데이터를 저장하고, 이를 관리하여 조직에 필요한 정보를 생성해주는 시스템02 데이터베이스의 구조스키마데이터 구조, 제약조건을 정의한 것인스턴스스키마에 따라 데이터베이스에 실제로 저장된 값3단계 데이터베이스 구조외부 단계 (External level)사용자 관점외부 스키마A사용자: 이름, 전화번호만 봄B사용자: 이름, 주소, 생일만 봄개념 단계 (Conceptual level)조직 전체 관점 (통합된 구조)개념 스키마이름, 전화번호, 주소, 생일, 학번, 전공 등내부 단계 (Internal level)저장 방식, 성능 최적화 관점내부 스키마B+트리 인덱스, 저장 블록 구조 등하나의 데이터베이스를 관점에 따라 세 단계로 나눈 것외부 단게 : 개별 사용자..

데이터베이스 관리 시스템

01 데이터베이스 관리 시스템이 등장 배경 파일 시스템데이터를 파일로 관리생성, 삭제, 수정, 검색하는 기능을 제공하는 소프트웨어응용 프로그램별로 필요한 데이터를 별도의 파일로 관리데이터 중복성같은 내용의 데이터가 여러 파일에 중복 저장됨.저장 공간의 낭비, 데이터 일관성과 데이터 무결성을 유지하기 어려움 이 문제를 해결하기 위해서는 데이터 통합을 해주면 됨!!그럼 프로그램이 필요한 형태로 바꿔서 조달해줌데이터 종속성응용 프로그램이 데이터 파일에 종속적사용하는 파일의 구조를 변경하면 응용 프로그램도 함께 변경해야 함 02 데이터베이스 관리 시스템의 정의DBMS파일 시스템의 문제를 해결하기 위해 제시된 소프트웨어조직에 필요한 data를 db에 통합하여 저장하고 관리DBMS 주요 기능정의 기능 - 데이터베이..

[node.js] schedular

인턴에 들어가기 앞서 ...스케줄러 구현 총정리 ! 우선 node.js의 일반적인 프로젝트 구조는jaeryeong-app/├── src/│ ├── routes/ # 라우트 정의│ │ ├── users.js # 사용자 관련 라우트│ │ └── products.js # 상품 관련 라우트│ ├── controllers/ # 컨트롤러 (핸들러 로직)│ │ ├── users.js # 사용자 로직│ │ └── products.js # 상품 로직│ ├── middlewares/ # 미들웨어│ │ └── auth.js # 인증 미들웨어│ ├── scheduler/ # 스케줄러 관련 코드│ │ └..

Back-end 2025.01.06