<aside> 📌

목차

시작하기 ⚙️

빌드 시스템 및 기술 스택

서버는 Java 21과 Spring Boot를 사용하며, 빌드 자동화 도구로 Gradle을 사용합니다.

카테고리 라이브러리 / 프레임워크
Core Spring Web MVC, Security, Data JPA, Validation
Database MySQL(Runtime), H2(Test), Redis, Flyway
Search Spring Data Elasticsearch
Auth JJWT(0.12.6), OAuth2 Client
Infrastructure AWS S3 SDK, Firebase Admin, CoolSMS
Observability Actuator, Micrometer Prometheus

환경 설정 및 프로파일

주요 환경 변수

변수명 설명
SERVER_NAME 도메인 이름입니다(예:
www.domain.com).
ES_PASSWORD Elasticsearch elastic 사용자 비밀번호입니다.
MEDIAMTX_MIXER_TOKEN 내부 GStreamer mixer 인증을 위한 공유 시크릿입니다.
FRONT_REDIRECT_ORIGIN HLS/WebRTC를 위한 CORS 허용 origin입니다.
LOKI_URL Grafana Loki 로그 수집 엔드포인트입니다.

서비스 토폴로지

운영 환경은 bscene 브리지 네트워크로 연결된 서비스들로 구성된 Docker Compose를 사용합니다.

CI/CD 파이프라인

지속적 통합 및 배포를 위해 GitHub Actions를 사용합니다. 파이프라인은 main 브랜치에서 CI 워크플로가 성공적으로 완료되었을 때 트리거됩니다.

  1. File Transfer: 설정 파일을 SCP를 통해 서버로 전송합니다.
  2. Environment Setup: GitHub Secrets로부터 .env 파일이 동적으로 생성됩니다.
  3. Service Update: Spring 이미지를 Docker Hub에서 pull하고, Python 코드 변경 시 Mixer 컨테이너를 로컬에서 재빌드하며, 다른 컨테이너에 영향을 주지 않고 Spring 서비스를 재시작합니다.

로컬 설정 절차

  1. Prerequisites: Java 21과 Docker Desktop이 필요합니다.
  2. Build: ./gradlew build 명령을 실행합니다.
  3. Local Infrastructure: docker compose up -d redis를 실행하고, 검색 기능이 필요하면 docker compose up -d elasticsearch를 추가로 실행합니다.
  4. Run Application: 활성 프로파일을 -Dspring.profiles.active=dev로 설정하면 서버가 8080 포트에서 시작됩니다.