1. 개요
•
프로젝트 명: Temperature API (SCC 파생 프로젝트 예시)
•
목적: FastAPI를 사용해 온도 조회 기능을 최소한의 코드로 구현하고, 이를 SCC의 개발·운영 환경을 통해 신속하게 개발,배포,운영하는 방법을 제안
•
활용 시나리오:
◦
예) IoT 센서 데이터 시뮬레이션, 테스트 API로 활용
◦
예) 시스템 상태 점검용 샘플 엔드포인트로 사용
2. 의의
1.
간단한 마이크로서비스
•
운영 중 오류 발생 시에도 다른 서비스에 영향을 주지 않는 독립 모듈로 동작
•
온도 값을 랜덤으로 생성·제공하는 API
2.
빠른 개발 및 배포
•
개발 → 테스트 → 운영까지 일관된 방식으로 신속하게 진행
3.
확장 용이성
•
동일 패턴으로 습도, 공기질 등 추가 기능을 빠르게 구현해 별도 모듈로 배포 가능
•
마이크로서비스 아키텍처의 장점을 살려 서비스 간 결합도 최소화
3. 프로젝트 구조 예시
temperature-api/
│-- main.py # FastAPI 엔트리 포인트 (온도 조회 API)
Shell
복사
4. 코드 구현
4.1 FastAPI 엔트리 포인트 (main.py)
python
복사편집
from fastapi import FastAPI
from random import uniform
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Welcome to the Temperature API"}
@app.get("/temperature")
def get_temperature():
"""
현재 온도를 랜덤한 값으로 반환합니다.
온도 범위: -10도 ~ 40도
"""
temperature = round(uniform(-10, 40), 2)
return {"temperature": f"{temperature}°C"}
Python
복사
•
루트 엔드포인트(/): 간단한 상태 확인용 메시지
•
온도 조회 엔드포인트(/temperature): 무작위 온도 값을 계산하여 JSON 형태로 반환
4.2 의존성
fastapi
uvicorn
Plain Text
복사
5. 실행 및 배포
5. Prefect와의 연동 (선택)
1.
온도 API 호출 로직을 Prefect Task로 구성
from prefect import flow, task
import requests
@task
def fetch_temperature():
response = requests.get("http://temperature-api-service:8000/temperature")
return response.json()
@flow
def temperature_flow():
temp_data = fetch_temperature()
print(temp_data)
Python
복사
2.
Prefect UI 등록
prefect deployment build main.py:temperature_flow --name temperature-deployment
prefect deployment apply temperature-deployment.yaml
Shell
복사
6. 결론
•
온도 조회 API는 SCC의 핵심 목표(코드 중심의 빠른 서비스 개발·배포)를 그대로 반영한 경량 마이크로서비스 사례
•
개발자는 Theia IDE에서 간단한 Python 코드 작성 후, Prefect나 Docker를 통해 마이크로서비스로 독립 배포가 가능
•
이를 토대로 다양한 파생 모듈(습도/공기질 조회, 알림 모듈 등)을 추가해 마이크로서비스 아키텍처를 확장할 수 있음