기존에 사용하던 rest api 서버에서 fast api 서버를 새로 구축하여 마이그레이션을 진행중이다.
그런데 api 서버는 하나지만 지원하고있는 프론트엔드가 여럿일 경우였다.
큰 규모의 서비스를 제공하는 것이 아니고
작은 규모로 여러개의 서비스를 제공하는 형태였기때문에 이런 구조를 Fast api로 구현이 가능할지 궁금했다.
Fast api는 독립된 환경으로 여러 서비스를 제공하는 것이 가능한가?
답은 가능하다.
다음은 목표로 삼았던 구조 형식의 예제이다.
home/ |
├── app/ |
│ ├── __init__.py |
│ ├── core/ |
│ │ ├── __init__.py |
│ │ ├── config.py |
│ │ ├── logging.py |
│ │ └── middleware.py |
│ ├── projectA/ |
│ │ ├── __init__.py |
│ │ ├── main.py |
│ │ ├── api/ |
│ │ │ ├── __init__.py |
│ │ │ └── v1/ |
│ │ │ ├── __init__.py |
│ │ │ ├── users.py |
│ │ │ └── posts.py |
│ │ ├── models/ |
│ │ │ ├── __init__.py |
│ │ │ └── user.py |
│ │ └── schemas/ |
│ │ ├── __init__.py |
│ │ └── user.py |
│ ├── projectB/ |
│ │ ├── __init__.py |
│ │ ├── main.py |
│ │ ├── api/ |
│ │ │ ├── __init__.py |
│ │ │ └── v1/ |
│ │ ├── models/ |
│ │ └── schemas/ |
│ ├── projectC/ |
│ │ ├── __init__.py |
│ │ ├── main.py |
│ │ ├── api/ |
│ │ │ ├── __init__.py |
│ │ │ └── v1/ |
│ │ ├── models/ |
│ │ └── schemas/ |
│ ├── db/ |
│ │ ├── __init__.py |
│ │ └── database.py |
├── .env |
└── requirements.txt |
이런 구조로 만들고 projectA, projectB, projectC를 systectl에 각각 서비스로 올려두면
FastAPI 서버를 유지하면서 각 프로젝트별로 독립적인 서비스 제공이 가능하다.