본문 바로가기
Quant

자동매매 프레임워크를 Flask서버에서 FastAPI로 변경할 예정입니다.

by 인천고래 2024. 6. 16.
반응형

안녕하세요. 주식 자동매매 프로그램을 개발 & 연구중에 있는 인천고래입니다.

현재의 버전은 Flask서버에서 키움API를 연계하고 클라이언트 측에서는 HTML & Javascript로 UI를 구현하여 자동매매 프로그램이 구동되는 형식입니다.

 

다만, Flask 서버에서의 단점이 될 수 있는 동기식 방식이 키움API와 데이터를 요청 주고 받는 과정에서 시간이 지체되는 경우가 발생을 하고 비동기처리에 있어서 지연되는 부분이 존재하기 때문에 기본적으로 비동적 처리를 기본으로 지원하며 자동화된 문서 생성 기능을 제공하는 FastAPI 프레임웍으로 변경 예정에 있습니다.

 

이에 FastAPI와 Flask와의 장단점에 대해 기록해봅니다. 

 

우선 Flask와 FastAPI는 둘 다 Python으로 작성된 웹 프레임워크이지만, 각각의 목적과 사용 사례가 다르다는 것을 알게 되었고 두 프레임워크의 주요 차이점을 다음과 같이 정리 & 요약 할 수 있을 것 같습니다:

 

Flask

  1. 역사 및 인지도: Flask는 2010년에 처음 출시되었으며, 현재 가장 인기 있는 Python 웹 프레임워크 중 하나입니다. 큰 커뮤니티와 풍부한 문서, 플러그인, 확장 기능을 갖추고 있습니다.
  2. 설계 철학: Flask는 "마이크로" 프레임워크로 설계되어, 기본적으로 매우 가볍고 최소한의 기능만 제공합니다. 사용자가 필요한 기능을 플러그인으로 추가할 수 있는 구조로 설계되어 있습니다. 간단하고 직관적인 API를 제공하여, 빠르게 웹 애플리케이션을 개발할 수 있습니다.
  3. 유연성: Flask는 개발자가 애플리케이션 구조를 자유롭게 정의할 수 있게 해주어, 작은 프로젝트부터 큰 프로젝트까지 다양한 용도로 사용할 수 있습니다. ORM, 폼 처리, 인증 등의 기능은 외부 라이브러리로 확장하여 사용합니다.
  4. 비동기 지원: Flask는 기본적으로 동기 프레임워크로 설계되었습니다. 비동기 처리를 위해서는 별도의 확장이나 라이브러리를 사용해야 합니다.

 

FastAPI

  1. 역사 및 인지도: FastAPI는 2018년에 처음 출시된 최신 웹 프레임워크입니다. 빠른 속도와 현대적인 기능 덕분에 빠르게 인기를 얻고 있습니다.
  2. 설계 철학: FastAPI는 성능과 생산성을 최우선으로 설계되었습니다. 기본적으로 비동기 처리(Asyncio)를 지원하며, 높은 성능을 자랑합니다. 자동화된 문서 생성 기능을 제공합니다(OpenAPI 및 JSON Schema).
  3. 성능: FastAPI는 비동기 프레임워크로 설계되어, 동시성 처리를 쉽게 할 수 있으며, 고성능 애플리케이션을 개발할 수 있습니다. Uvicorn, Starlette와 같은 고성능 ASGI 서버를 기반으로 실행됩니다.
  4. 타이핑 및 유효성 검사: Python의 타입 힌트를 활용하여 코드의 가독성과 유지 보수성을 높입니다. Pydantic을 사용하여 데이터 유효성 검사 및 직렬화를 수행합니다. 타입 힌트로부터 자동으로 API 문서를 생성하며, Swagger UI와 ReDoc을 통해 이를 시각화합니다.
  5. 비동기 지원: FastAPI는 기본적으로 비동기 프레임워크이며, async 및 await 구문을 통해 비동기 처리를 쉽게 할 수 있습니다. 비동기 처리를 자연스럽게 통합하여 높은 성능을 제공할 수 있습니다.

 

주요 차이점 요약

  1. 비동기 지원:
    Flask: 동기 처리, 비동기를 위해 별도 확장 필요.
    FastAPI: 기본적으로 비동기 처리 지원.

  2. 성능:
    Flask: 일반적으로 동기 프레임워크로 인해 FastAPI보다 성능이 낮음.
    FastAPI: 비동기 처리를 통해 높은 성능 제공.

  3. 타입 힌트 및 데이터 유효성 검사:
    Flask: 타입 힌트 및 유효성 검사를 기본적으로 지원하지 않음.
    FastAPI: Python 타입 힌트를 활용하여 자동으로 유효성 검사 및 문서화.

  4. 자동 문서화:
    Flask: 별도의 라이브러리나 설정 필요.
    FastAPI: 자동으로 Swagger UI 및 ReDoc을 통해 API 문서 생성.

  5. 커뮤니티 및 생태계:
    Flask: 오래된 프레임워크로 큰 커뮤니티와 풍부한 확장 기능 보유.
    FastAPI: 비교적 새로운 프레임워크지만 빠르게 성장 중.

 

결론

Flask는 간단하고 가벼운 웹 애플리케이션을 빠르게 개발할 때 유용하며, 유연성이 높습니다.

FastAPI는 높은 성능과 생산성을 요구하는 프로젝트에 적합하며, 비동기 처리가 필요한 경우 매우 유리합니다. 

 

즉, 수 많은 데이터가 비동기적으로 처리가 필요한 상황이라 Flask 프레임웍 구조로 되어 있는 형식을 FaskAPI 구조로 변경 예정에 있습니다.

 

변경 과정에서 새로운 이슈(?) 발생 시 공유 드리도록 하겠습니다.

감사합니다.

반응형
-

댓글