본문 바로가기

FastAPI

(6)
OpenAPI를 이용한 백엔드 기술스택 이전 - FastAPI -> 스프링 부트 FastAPI로 개발하던 API를 다시 스프링 부트로 옮길 일이 생겼다. 어쩌다 그렇게 되었는지는 생략하고 옮겨나 보자. 다행히도 요즘 백엔드는 OpenAPI로 API 명세를 통일하기 때문에 그렇게 어렵지는 않다고 한다.redoc에서 명세 다운로드 하기FastAPI의 redoc에 가면 openapi.json을 다운로드할 수 있다. download 버튼을 누르면 openapi.json이 다운로드 되는데, 이거를 전환하려는 스프링 프로젝트의 루트에 넣도록 한다.build.gradle.kts 수정이 포스트는 Gradle - Kotlin 기준으로 설명하므로 kts 스크립트를 수정할 거다. 플러그인 블럭에 openapi generator를 추가해 준다. plugins { ... id("org.ope..
JWT와 회원가입 예제(FastAPI, React) 이 포스트에서는 회원가입을 구현하는 과정을 통해 JWT를 사용해 보고 이해해 보도록 한다.JWT(Json Web Token)위키피디아에서는 다음과 같이 설명하고 있다. JWT는 JSON 형식의 데이터를 안전하게 주고받기 위한 인터넷 표준이며, 선택적 서명이나 암호화를 포함할 수 있다.  JWT는 클레임(claims)이라는 정보를 담고 있으며, 이는 어떤 사실을 주장하는 형태를 띠고 있다. 예를 들어, 서버가 "관리자 로그인함"이라는 클레임을 담은 토큰을 클라이언트한테 전달하면, 클라이언트는 이 토큰을 서버나 제삼자에 전달하여 인증된 사용자임을 증명한다. JWT는 짧고 URL-safe 하며, 특히 웹 기반의 SSO(Single Sign On) 시나리오에 적합하다. JWT는 JSON Web Signature..
간단한 웹소켓 부하 테스트 비교 FastAPI vs Golang 서론현재 근무 중인 회사에서 수행하는 프로젝트로 LAN을 구축한 후 셀러론 N4505 CPU로 구동되는 서버로부터 클라이언트와 웹소켓 통신을 하는 서비스가 있다. 이 서비스의 가장 중요한 목표는 서버에서 브로드캐스트를 진행할 때 모든 클라이언트가 싱크를 맞춰 "동시에" 반응해야 한다는 것이다. 이를 위해 FastAPI를 사용해 웹소켓 연결을 관리했었는데 문제는 필드 테스트에서 싱크가 깨지는 것으로 체감이 되었기 때문이다. 환경이 제한적이라 현장에서는 모니터링을 제대로 할 수 없었는데, 혹시 파이썬 자체의 한계일까 싶어서 go와 비교를 하기로 했다.스크립트 준비웹서버 부하를 위해선 많은 도구들이 제공되고 있지만 이 포스트에서는 도구 없이 스크립팅으로 측정을 해볼 것이다.FastAPI 코드먼저 이 포스트의 ..
[FastAPI] 웹소켓을 다룰 때 주의점 - 공식 예제 개선하기 이 포스트에서는 FastAPI 공식 문서에서 보여주는 웹소켓 연결 예제를 보고 이를 개선하도록 한다. 이 세상 어딘가에서는 분명 FastAPI로 여러 클라이언트로부터 웹소켓 연결을 하려는 경우가 있을 것이다. FastAPI 공식 문서에서는 웹소켓 연결 방법에 대해 이런 예제가 우릴 반겨준다.  그리고 여러 웹소켓 연결을 관리하기 위해서 아래와 같이 웹소켓 연결을 모아두는 ConnectionManager를 정의하고 있다.  하지만 이 코드에는 여러 문제가 있다. 문제가 있는 코드를 공식 문서에 걸어놓다니 참 야속할 따름이다. 어떤 문제가 있는지 보고 개선해 보도록 하자.Race Condition이 발생함내가 생각하는 ConnectionManager의 가장 큰 문제점이다. 클래스에서는 active_conne..
나만의 STT 서버 만들기 feat. OpenAI Whisper 이 포스트에서는 OpenAI에서 제공하는 STT 모델인 whisper를 사용하여 FastAPI로 작성된 서버로 오디오 파일을 받아 STT 작업을 수행해 본다. Whisper Whisper는 Chat-GPT를 만든 OpenAI에서 오픈소스로 공개하는 STT 라이브러리이다. 오픈소스지만 OpenAI에서 만들어서 그런지 상당히 훌륭한 성능을 보여주고 있다.  https://github.com/rtzr/Awesome-Korean-Speech-Recognition GitHub - rtzr/Awesome-Korean-Speech-Recognition: 한국어 음성인식 STT API 리스트. 각 성능 벤치마크.한국어 음성인식 STT API 리스트. 각 성능 벤치마크. Contribute to rtzr/Awesome-..