[FastAPI] Redis를 이용한 검색 속도 향상/로그인 세션 관리
·
FastAPI
Redis란? Redis는 디스크가 아닌 메인 메모리(RAM)에 데이터를 저장하고 관리하는 In-Memory NoSQL 데이터베이스입니다. 모든 데이터를 메모리에서 처리하기 때문에 디스크 I/O가 발생하는 전통적인 RDBMS에 비해 압도적인 처리 속도를 제공합니다. 구분RDBMS (예: Oracle, PostgreSQL)Redis (In-Memory)저장 매체물리적 디스크 (HDD, SSD)메인 메모리 (RAM)데이터 구조테이블, 행, 열 (정형 데이터)Key-Value (NoSQL)응답 속도밀리초(ms) 단위마이크로초(μs) 단위영속성ACID 원칙에 따른 완전한 보존메모리 휘발성 (Snapshot/AOF 기능 제공)주요 용도데이터 원본 저장소, 복잡한 쿼리 처리캐싱, 세션 관리, 실시간 랭킹 Redis..
[FastAPI] JWT를 이용한 회원가입/로그인 서버 구현
·
FastAPI
JWT(JSON Web Token)란? JWT는 로그인이 성공한 이후에 "이 사람은 인증된 사람이다"라는 것을 증명하기 위해 서버가 발행해주는 '출입증'입니다.서버가 로그인 정보를 암호화해서 티켓(Token)으로 만들어 사용자에게 줍니다. 로그인 정보 자체를 암호화해서 사용자에게 줍니다. 서버는 장부를 확인할 필요 없이 도장만 확인하면 됩니다. 만약 사용자가 로그인을 성공했다 하더라도 우리가 사용하는 웹 프로토콜(HTTP)은 기본적으로 무상태(Stateless)기 때문에 서버는 1초 전에 로그인을 시켰다는 사실을 즉시 까먹습니다. 그래서 서버는 로그인 직후 "이 사람은 인증된 사람이다"라는 증명서(JWT)를 써서 사용자에게 줍니다. JWT 외에도 실무에서 병행하는 보안 기법들이 있습니다.OAuth 2...
[FastAPI] Nginx 사용하기
·
FastAPI
SSL와 Nginx란? 이제까지 작업한 내용을 바탕으로 보안 요소를 보완하겠습니다. 특히 환자 정보와 같은 민감한 데이터를 다루는 시스템에서는 데이터의 기밀성과 서버의 안정성을 확보하는 것이 필수적입니다. 이번 포스팅에서는 HTTP의 한계를 극복하는 SSL/TLS 프로토콜과 서버의 방어막 역할을 하는 Nginx의 필요성에 대해 정리합니다. 웹 통신의 기본인 HTTP(HyperText Transfer Protocol)는 데이터를 전송할 때 암호화 과정을 거치지 않습니다.HTTP (TCP/80): 클라이언트와 서버가 주고받는 데이터 패킷이 평문(Plaintext) 상태로 전송됩니다. 만약 중간 경로(라우터, 스위치 등)에서 패킷 캡처 도구(Wireshark 등)를 사용하면 JSON 데이터 내의 민감 정..
[FastAPI] Azure Service Bus와 Function App을 활용한 데이터 전송 (2)
·
FastAPI
아키텍쳐 흐름 지난 포스팅 [FastAPI] Azure Service Bus와 Function App을 활용한 데이터 전송 (1) 에서는 Service Bus에 JSON 파일을 전송하면 Azure Functoin App에서 트리거로 감지해 JSON 파일을 FastAPI Server 웹소켓으로 전송하고 해당 내용을 브로드캐스트로 모든 병원 프론트엔드로 전송하는 로직을 구현했습니다. 이번 포스팅에서는 구급대원 프론트엔드에서 들어온 음성 녹음 파일을 FastAPI Server에서 처리하고 그 내용을 Azure Service Bus로 전송함으로써 구급대원 프론트엔드부터 병원 프론트엔드까지 한 번에 가도록 완성을 해보겠습니다. 코드 구현 위에서 언급한 내용을 완성하기 위해 services 폴더에 event_p..
[FastAPI] Azure Service Bus와 Function App을 활용한 데이터 전송 (1)
·
FastAPI
아키텍쳐 흐름 응급환자 음성 분석 및 실시간 병원 공유 시스템 아키텍처이 시스템은 구급대원의 음성 기록을 AI를 통해 구조화된 데이터(JSON)로 자동 변환하고, 이를 데이터베이스에 저장함과 동시에 실시간으로 관련 병원 프론트엔드에 전파(Broadcast)하는 전체 흐름을 다룹니다.전체적인 데이터 흐름은 크게 1) 음성 데이터 분석 및 변환 단계와 2) 데이터 적재 및 실시간 전파 단계로 나누어집니다.1. 음성 데이터 분석 및 변환 (Voice-to-Data Flow)구급대원이 현장에서 환자 상태를 음성으로 기록하고 이를 구조화된 데이터로 만드는 과정입니다.음성 녹음 및 전송: 구급대원이 사용하는 React Frontend 앱에서 환자의 상태를 음성으로 녹음합니다. 녹음된 오디오 파일(Blob)은 Fas..
[FastAPI] Naver API를 사용한 거리 및 최단경로 시간 탐색
·
FastAPI
구현하고자 하는 시스템 흐름도 1단계: 사용자 요청 (Client Request)프론트엔드(React)에서 사용자가 권역(예: Honam, Seoul)을 선택합니다.앱은 사용자의 현재 위치(GPS 위도/경도)를 감지하여 권역 정보와 함께 서버(FastAPI)로 전송합니다.2단계: 대상 병원 1차 필터링 (DB Query, Oracle)서버는 전송받은 위치 정보를 이용해 Oracle DB(HOSPITAL_MASTER)를 조회합니다.DB 내부의 공간 함수(Oracle Spatial)를 사용하여 내 위치와 병원 간의 직선거리를 계산하고, 가장 가까운 상위 10개 병원만 필터링하여 추출합니다.3단계: 실시간 경로 탐색 (External API Call)서버는 1차로 선별된 10개의 병원 리스트에 대해서만 네이..
[FastAPI] websocket을 사용한 통신
·
FastAPI
WebSocket란? 웹소켓(WebSocket)은 "프로토콜(Protocol, 통신 규약)"입니다. 웹 브라우저와 서버가 단일 TCP 연결을 통해 실시간으로 양방향 통신을 할 수 있게 해주는 프로토콜입니다. 즉, SSH나 HTTP와 같은 항렬에 있는 컴퓨터끼리 대화하는 규칙입니다. TCP(Transmission Control Protocol)는 인터넷상에서 데이터를 정보를 안정적으로, 순서대로, 에러 없이 교환하기 위해 사용하는 전송 규약(프로토콜)입니다. 하지만 HTTP와 결정적인 차이가 하나 있습니다.HTTP: "나(클라이언트)만 말 걸 수 있어. 너(서버)는 대답만 해." (단방향)WebSocket: "우리 전화선 끊지 말고 계속 들고 있자. 할 말 있으면 언제든 먼저 해." (양방향) 핸드셰이크..
[FastAPI] Azure OpenAI를 활용한 오디오 분석
·
FastAPI
구현하고자 하는 시스템 아키텍쳐Azure OpenAI에서 whisper / GPT-4o 모델 생성 가장 먼저 리소스 그룹을 생성하고 Azure OpenAI를 만들어줍니다. 리소스가 생성되었다면 Microsoft Foundry에 접속하여 모델을 배포합니다. 먼저 whisper 음성인식 모델을 배포하겠습니다.해당 모델은 리소스 지역으로 Korea Central을 선택할 수 없었습니다. 이렇게 생성된 모델의 엔드포인트와 key를 FastAPI에서 사용할 예정입니다. 엔드포인트(Endpoint)는 서비스를 이용하기 위해 찾아가야 하는 정확한 창구(주소)입니다.즉, 프론트엔드/백엔드가 Azure의 AI 모델에게 데이터를 쏠 때 찾아가는 표적(Target)입니다. 다음으로는 추출한 텍스트를 분석하기 위한..