Search

API 마이크로서비스 - SCC 파생 프로젝트

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. 결론

온도 조회 APISCC의 핵심 목표(코드 중심의 빠른 서비스 개발·배포)를 그대로 반영한 경량 마이크로서비스 사례
개발자는 Theia IDE에서 간단한 Python 코드 작성 후, PrefectDocker를 통해 마이크로서비스로 독립 배포가 가능
이를 토대로 다양한 파생 모듈(습도/공기질 조회, 알림 모듈 등)을 추가해 마이크로서비스 아키텍처를 확장할 수 있음