← 포트폴리오로 돌아가기

개방형 에너지 실증 연구 클라우드 플랫폼

2025.03 ~ 현재·백엔드 개발·한국전자기술연구원 (KETI)

과제명: 분산형 재생에너지 시스템 개방형 통합 플랫폼 개발(2023.04 ~ 2026.12)


HPC 가상머신 관리·전력계통 시뮬레이션·HILS 시험을 통합 지원하는 클라우드 서비스의 백엔드 API 서버를 처음부터 설계하고 전담 개발한 프로젝트.

API 엔드포인트

100개

DB 커넥션

5개 (PG + MySQL 4)

DB 테이블

25개

백엔드 커밋 기여

394회 (65.6%)


FastAPIPostgreSQLSQLAlchemy 2.0AlembicKeycloakNginxDockerDocker ComposeSSEModbusOpenStackPython 3.10

멀티 데이터베이스 통합 아키텍처

  • PostgreSQL(앱 DB) + OpenStack MySQL 4개(Nova, Glance, Nova API, Cinder) 총 5개 DB 커넥션을 단일 서비스에서 관리하는 구조 설계
  • 커넥션 풀링(pool_pre_ping, pool_recycle=3600) 적용으로 장시간 운영 시 DB 커넥션 안정성 확보
  • Image ID → Image Name 매핑을 위해 Nova + Cinder + Glance DB를 크로스 조인하는 ImageResolverService 구현 — image-backed/volume-backed VM 모두 커버

SSE 기반 실시간 VM 생성 스트리밍

  • VM 생성 요청 시 tracking_id 기반 SSE 스트림으로 생성 진행 상태(building → created/error)를 클라이언트에 실시간 전달
  • Nginx SSE 전용 라우팅 룰(proxy_buffering off, chunked_transfer_encoding off, 타임아웃 360초) 설정으로 프록시 환경 안정적 스트리밍 보장
  • DB 세션 격리 문제로 타 세션 커밋이 반영되지 않던 버그를 진단·수정하여 SSE 무한 루프 해결

Keycloak 인증 인프라 구축

  • Keycloak Realm 설정 — 4개 그룹 기반 역할 계층(pending → user → manager → admin), 커스텀 사용자 프로필 속성(전화번호, 소속기관, 사용기간) 정의
  • 한국어/영어 이중 언어 커스텀 로그인·회원가입 테마를 FreeMarker 템플릿 + CSS로 개발
  • PostgreSQL LISTEN/NOTIFY 기반 실시간 Keycloak 사용자 동기화 서비스 구축 — Keycloak 사용자 변경 시 앱 DB에 즉시 반영
  • 관리자 API 22개 개발 (사용자 승인/비활성화, 그룹 이동, 비밀번호 초기화, 관리자 활동 로깅)

HPC 가상머신 관리 API (35개 엔드포인트)

  • CPU/GPU VM 생성·조회·수정·삭제·재부팅 전체 생명주기 관리 API 구현
  • BackgroundTasks를 활용한 비동기 VM 생성 처리 — OpenStack Nova API 호출 후 상태 폴링을 백그라운드에서 수행하여 클라이언트 응답 지연 제거
  • OpenStack Flavor, Image, Network 정보를 DB에서 직접 조회하는 운영 API 구현으로 OpenStack API 의존도 감소

RTDS/RSCAD 하드웨어 연동 — P-HILS (24개 엔드포인트)

  • Modbus 프로토콜을 통한 RTDS 시뮬레이터 실시간 데이터 스트리밍 시작/중지/상태 관리 API 구현
  • P/Q(유효·무효전력) 분리 전송, 스케일링, 외삽(extrapolation) 기능 추가 (V2 개선)
  • IEEE 754 float 기준 2레지스터 점유를 고려한 프로젝트 단위 Modbus 주소 겹침 방지 로직 구현
  • DUT 프로파일 데이터를 PostgreSQL ARRAY 타입으로 저장 — 연간 8,760개 행 → 단일 행으로 저장 효율 개선

리버스 프록시 및 배포 인프라

  • Nginx로 11개 서비스(FE, BE, Keycloak, DevCloud, GitLab, Jenkins, 모니터링 등) 단일 진입점 통합
  • Let's Encrypt 와일드카드 인증서(*.smg-cloud.com)로 전체 서비스 HTTPS 적용
  • 서비스별 최적화 설정 — Keycloak 프록시 버퍼(128k~256k)로 502 에러 해결, 파일 업로드 1GB 제한, WebSocket 업그레이드 헤더 설정
  • Docker Compose 기반 전체 인프라 컨테이너화 — PostgreSQL, FastAPI(Gunicorn + UvicornWorker), Keycloak, Nginx를 단일 네트워크로 연결

운영 안정성

  • 모듈별 분리된 로깅 시스템(auth, hpc, phils, sync) — RotatingFileHandler로 10MB 단위 자동 로테이션, 5개 백업 유지
  • Alembic 마이그레이션 13개 버전으로 스키마 변경 이력 관리
  • Gunicorn 워커 타임아웃 180초 설정으로 장시간 VM 생성 작업 지원

← 포트폴리오로 돌아가기