[python] FastAPI에서 서버 상태 모니터링 구현하기

FastAPI는 파이썬으로 빠르게 API를 개발할 수 있는 강력한 웹 프레임워크입니다. 이번 포스트에서는 FastAPI에서 서버의 상태 모니터링을 구현하는 방법에 대해 알아보겠습니다.

FastAPI와 Starlette

FastAPI는 Starlette라는 ASGI(Web Application Gateway Interface) 프레임워크를 기반으로 동작합니다. Starlette는 높은 성능과 확장성을 제공하며, FastAPI는 이를 기반으로 추가적인 기능과 현대적인 API 설계를 제공합니다.

서버 상태 모니터링 구현하기

FastAPI는 /docs 엔드포인트를 통해 Swagger UI를 제공합니다. Swagger UI는 API의 문서를 자동으로 생성해주는 도구입니다. 이를 활용하여 서버 상태 모니터링을 구현할 수 있습니다.

먼저, FastAPI의 의존성을 설치합니다.

pip install fastapi uvicorn

다음은 간단한 FastAPI 애플리케이션 예제입니다.

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def root():
    return {"message": "Hello, World!"}

위의 코드를 main.py에 저장한 후 다음 명령을 터미널에 입력하여 서버를 실행합니다.

uvicorn main:app --reload

서버가 실행되면 http://localhost:8000/docs로 접속하여 Swagger UI를 확인할 수 있습니다.

Swagger UI에서는 /docs 엔드포인트 외에도 /redoc, /openapi.json 등의 엔드포인트를 제공합니다.

서버 상태 모니터링을 구현하기 위해서는 /health 엔드포인트를 추가로 생성해야 합니다. 이를 위해 다음과 같이 코드를 수정합니다.

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def root():
    return {"message": "Hello, World!"}


@app.get("/health")
async def health_check():
    return {"status": "ok"}

위의 코드에서는 /health 엔드포인트를 정의하고, 항상 {"status": "ok"}를 반환하도록 설정했습니다.

이제 서버가 실행된 상태에서 http://localhost:8000/docs로 접속하면 Swagger UI에서 /health 엔드포인트를 확인할 수 있습니다.

결론

이번 포스트에서는 FastAPI를 사용하여 서버 상태 모니터링을 구현하는 방법에 대해 알아보았습니다. FastAPI의 편리한 기능과 Swagger UI를 활용하여 간편하게 서버 상태를 모니터링할 수 있습니다.

더 자세한 내용은 FastAPI 공식 문서를 참고하시기 바랍니다.