Uvicorn 워커 수 조절과 Python GIL의 관계 이해하기 FastAPI와 같은 비동기 프레임워크에서 Uvicorn 웹 서버를 사용할 때 워커(worker) 수의 조절은 성능 최적화의 핵심 요소입니다. 워커 수를 조절하면 애플리케이션의 처리량과 응답 시간에 큰 영향을 미칩니다. 워커 수 조절의 효과 워커 수를 증가시키면 동시에 처리할 수 있는 요청의 수가 증가하여, 애플리케이션의 전체 처리량이 향상됩니다. 각 워커는 독립적인 프로세스로 실행되기 때문에, 병렬 처리가 가능해집니다. Python의 GIL 이해 Python은 GIL(Global Interpreter Lock)을 사용하여 멀티 스레딩 환경에서도 한 번에 하나의 스레드만이 Python 객체에 접근할 수 있도록 합니다. 이는 멀티 스레딩의 ..
FastAPI
FastAPI로 전환하며 겪은 응답 시간 지연 문제와 해결 과정 Flask에서 FastAPI로 전환하면서 겪었던 주요 문제는 Flask의 동기 처리 방식 때문이었습니다. Flask는 요청을 처리하는 동안 다른 요청을 처리할 수 없어서 응답 시간이 길어지곤 했습니다. 하지만 FastAPI는 비동기 처리를 지원하여 이 문제를 해결할 수 있었습니다. 문제 발생 비동기 지원을 하는 FastAPI로 전환한 초기에는 기존의 동기 방식 코드와 데이터베이스 처리 로직 때문에 응답 시간이 늘어났습니다. 특히 데이터베이스 쿼리와 외부 API 호출 시 병목 현상이 발생했습니다. 해결 과정 첫 번째로, I/O 바인딩된 코드를 비동기 방식으로 리팩토링했습니다. Python의 asyncio와 aiohttp 라이브러리를 사용하여 ..