Skip to content

[Feature] 클라우드 최적화 참조 아키텍처 및 MSA 전환 가이드 추가 제안 #604

Description

@SEOUL-raphael

해결하려는 문제 (Problem)

현재 표준프레임워크 실행환경 소개 문서는 화면처리, 업무처리, 데이터처리, 연계통합, 배치처리, 공통기반 중심의 전통적인 레이어드 아키텍처를 잘 설명하고 있습니다.

다만 최근 공공 정보시스템은 클라우드 전환, 컨테이너 배포, Kubernetes 운영, MSA, 이벤트 기반 연계, 관찰가능성 적용 등으로 운영 환경과 아키텍처 선택지가 넓어지고 있습니다. 이 관점에서 보면 현재 문서에는 다음과 같은 공백이 있습니다.

  1. 기존 레이어드 아키텍처, Spring Boot API 구조, MSA 구조, 이벤트 기반 구조 중 어떤 방식을 선택해야 하는지 한눈에 안내하는 상위 문서가 부족합니다.
  2. egovframe-msa-common-components, egovframe-operating-environment-msa, egovframe-ex-cloud-data-stream 등 관련 저장소와 예제가 존재하지만, 표준프레임워크 공식 아키텍처 선택지로 연결되는 설명이 약합니다.
  3. 기존 시스템을 클라우드 환경으로 전환할 때 “현행 구조 유지”, “API 분리”, “모듈러 모놀리스”, “서비스 분리”, “이벤트 기반 연계”, “Kubernetes/Service Mesh 운영” 중 어떤 순서와 기준으로 접근할지에 대한 전환 경로 문서가 부족합니다.

따라서 문제는 클라우드/MSA 관련 기능이 전혀 없다는 점이 아니라, 이미 존재하는 실행환경·템플릿·샘플·운영환경 문서를 연결해 주는 “아키텍처 선택 기준과 전환 경로” 문서가 부족하다는 점입니다.

제안 내용 (Proposed Solution)

egovframe-runtime 또는 개발환경 문서 하위에 “클라우드 최적화 참조 아키텍처” 문서를 추가하는 것을 제안합니다. 이 문서는 기존 레이어드 아키텍처를 대체하는 것이 아니라, 표준프레임워크 기반 시스템이 클라우드 전환 환경에서 선택할 수 있는 아키텍처 옵션을 병행 제시하는 역할을 합니다.

문서에는 다음 네 가지 선택지를 함께 정리하면 좋겠습니다.

  1. 기존 레이어드 아키텍처

    • 단일 업무 시스템, 내부망, 전통적 WAS/DB 중심 시스템에 적합
    • 표준프레임워크 실행환경의 화면처리, 업무처리, 데이터처리, 연계통합, 배치, 공통기반 구조를 그대로 활용
  2. Spring Boot API 아키텍처

    • 프론트엔드 분리, REST API, 모바일/SPA/Flutter 연계, 컨테이너 배포에 적합
    • 기존 MVC/JSP 중심 구조에서 API 중심 구조로 단계적으로 전환하는 선택지
  3. MSA 아키텍처

    • Gateway, Config Server, Service Discovery, 서비스별 독립 배포, 서비스별 권한/DB/스케일링이 필요한 경우에 적합
    • egovframe-msa-common-components와 MSA Template Wizard를 참조할 수 있음
  4. 이벤트 기반/스트림 아키텍처

    • Kafka/RabbitMQ, Spring Cloud Stream, OpenSearch, MongoDB 등을 활용한 비동기 연계와 실시간 처리에 적합
    • egovframe-ex-cloud-data-stream 예제와 연결 가능

또한 기존 시스템의 전환 경로를 다음과 같은 단계 모델로 설명하면 실무자가 판단하기 쉬울 것 같습니다.

레이어드 구조 유지
→ Spring Boot/API 분리
→ 모듈러 모놀리스 정리
→ 서비스 단위 분리
→ 이벤트 기반 연계 도입
→ Kubernetes/Service Mesh 운영

문서에는 클라우드 네이티브 기본 원칙도 표준프레임워크 관점에서 함께 정리하면 좋겠습니다.

  • 외부화 설정: Spring Profile, Config Server, 환경변수 기반 설정
  • Stateless 서비스: 세션/파일/캐시를 외부 저장소로 분리
  • Health/Readiness/Liveness: Actuator 기반 상태 확인
  • Graceful Shutdown: 배포/스케일링 시 안전한 종료
  • Structured Logging: JSON 로그, traceId/spanId, 서비스명 포함
  • Secrets/Config 분리: DB 비밀번호, 토큰 키, 인증서 등 비밀정보 관리
  • Observability: OpenTelemetry, Prometheus, Loki, Jaeger, Grafana, Kiali 연계
  • Autoscaling 고려: 서비스별 부하 특성과 수평 확장 기준 정리

대안 (Alternatives)

  1. 기존 MSA 관련 저장소의 README만 보강하는 방법

    • 장점: 변경 범위가 작습니다.
    • 한계: 실행환경/개발환경 문서를 보는 사용자가 클라우드 아키텍처 선택지를 발견하기 어렵습니다.
  2. 운영환경 MSA 문서에만 내용을 추가하는 방법

    • 장점: Kubernetes, Istio, OpenTelemetry 내용과 가깝습니다.
    • 한계: 개발자가 애플리케이션 구조를 어떻게 설계해야 하는지에 대한 상위 가이드로는 부족할 수 있습니다.
  3. 바로 샘플 코드를 추가하는 방법

    • 장점: 실행 가능한 예제를 빠르게 보여줄 수 있습니다.
    • 한계: 어떤 아키텍처를 언제 선택해야 하는지에 대한 합의 없이 코드부터 추가하면 유지보수 범위가 커질 수 있습니다.

따라서 우선은 문서 이슈로 방향을 논의하고, 합의 후 문서 PR 또는 샘플 개선 PR로 나누어 진행하는 방식을 제안합니다.

관련 영역 (Affected Area)

  • 개발환경 (egovframe-development/)
  • 실행환경 (egovframe-runtime/)
  • 공통컴포넌트 (common-component/)
  • 기타 (README, 설정 파일 등)

참고 자료 (References)

관련 논의:

기대효과

  1. 표준프레임워크 사용자가 기존 레이어드 구조와 클라우드 최적화 구조를 상황에 맞게 선택할 수 있습니다.
  2. 기존 시스템을 MSA로 무리하게 전환하지 않고, 단계적 전환 전략을 세울 수 있습니다.
  3. 이미 존재하는 MSA 공통컴포넌트, Cloud Data Stream, 운영환경 MSA 문서가 공식 아키텍처 흐름 안에서 연결됩니다.
  4. 공공기관 클라우드 전환 사업에서 표준프레임워크의 적용 범위와 현대적 활용 가능성을 더 명확히 설명할 수 있습니다.
  5. 향후 REST API 표준화, Observability 표준화, Boot Starter 논의와도 자연스럽게 연결될 수 있습니다.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions