-
클라우드 네이티브 시스템 구축 성공의 열쇠: 분석 및 설계단계 점검항목CheckFact/가까이서 본 기술 2025. 3. 22. 18:38728x90
클라우드 네이티브 시스템 분석 및 설계단계 점검항목
클라우드 네이티브 시스템 분석 및 설계단계 점검항목 FACT 주장/현상/관념
「클라우드 네이티브 정보시스템 구축을 위한 개발자 안내서」는 2021년에 진행된 클라우드 네이티브 기반의 행정·공공기관 서비스 확산지원 사업의 결과물로, 클라우드 네이티브 인식 확산과 중소기업 개발자의 MSA 개발 기술력 향상을 위한 안내서는 아래의 목차로 이루어져 있습니다[1].
안내서 목차
① 클라우드 네이티브 정보시스템 개발 절차
② 클라우드 네이티브 정보시스템 분석 단계
③ 클라우드 네이티브 정보시스템 설계 단계
④ 클라우드 네이티브 정보시스템 구현·운영 단계이 글에서는 공공부문 클라우드 네이티브 관련 정보화 사업에 참여하는 사업자가 성공적인 사업 추진을 할 수 있도록 MSA (Microservice Architecture) 기반 애플리케이션 개발을 위한 분석 및 설계 과업을 적절하게 수행했는지 점검하기 위한 단계별 점검항목을 도출해보겠습니다.
CHECK 검증/실상/검토
1. 분석 단계 점검 항목
1.1. 요구사항 분석
- 점검 항목: 요구사항의 명확성, 완전성, 일관성
- 상세 검토 사항:
- 사용자 인터뷰, 설문 등을 통해 수집된 요구사항이 시스템 개선 및 업무 개선 요구를 모두 포함하는지 확인
- 요구사항이 기능적 요구사항과 비기능적 요구사항 (성능, 보안, 확장성, 안정성)을 모두 포함하는지 확인
- 요구사항 간의 충돌이나 모호함이 없는지 검토
- 적정성 판단 기준:
- 모든 요구사항이 명확하게 정의되고, 이해 관계자 간의 합의가 이루어졌는지 확인
- 요구사항이 비즈니스 목표와 전략에 부합하는지 확인
1.2. 마이크로서비스 도출
- 점검 항목: 마이크로서비스의 독립성, 응집도, 결합도
- 상세 검토 사항:
- 도메인 주도 설계 (DDD), 이벤트 스토밍, 업무 기능 분해 등의 방법을 통해 마이크로서비스가 적절하게 도출되었는지 확인
- 각 마이크로서비스가 독립적으로 배포 및 확장 가능한지 검토
- 마이크로서비스 간의 결합도를 최소화하고, 응집도를 최대화했는지 확인
- 마이크로서비스의 크기가 적절한지 (너무 크거나 작지 않은지) 검토
- 적정성 판단 기준:
- 각 마이크로서비스가 하나의 비즈니스 기능을 담당하고, 다른 서비스에 대한 의존성이 최소화되었는지 확인
- 마이크로서비스의 크기가 작고, 유지보수가 용이한지 확인
1.3. 클라우드 네이티브 아키텍처 설계
- 점검 항목: 아키텍처 구성 요소의 적절성, 클라우드 플랫폼 활용도
- 상세 검토 사항:
- API 게이트웨이, 서비스 메시, 런타임 플랫폼 (Kubernetes), CI/CD 파이프라인, 백엔드 서비스, 텔레메트리 등 클라우드 네이티브 아키텍처 구성 요소가 적절하게 설계되었는지 확인
- 각 구성 요소의 기능과 역할이 명확하게 정의되었는지 검토
- 클라우드 플랫폼 (IaaS, PaaS)에서 제공하는 기능과 서비스를 최대한 활용했는지 확인
- 적정성 판단 기준:
- 아키텍처가 MSA의 장점을 최대한 활용하고, 단점을 극복할 수 있도록 설계되었는지 확인
- 클라우드 플랫폼의 기능을 활용하여 시스템의 확장성, 안정성, 가용성을 확보했는지 확인
2. 설계 단계 점검 항목
2.1. 마이크로서비스 설계 (도메인 모델링)
- 점검 항목: 도메인 모델의 정확성, 일관성, 완전성
- 상세 검토 사항:
- 도메인 모델링을 통해 마이크로서비스 내부 구조가 상세하게 설계되었는지 확인
- 도메인이 제공하는 기능과 주요 데이터가 도메인 모델에 포함되었는지 확인
- 애그리거트 (Aggregate), 엔티티 (Entity), 값 객체 (Value Object), 리파지토리 (Repository) 등의 개념이 적절하게 사용되었는지 검토
- 적정성 판단 기준:
- 도메인 모델이 비즈니스 로직을 정확하게 반영하고, 개발자가 쉽게 이해할 수 있는지 확인
- 도메인 모델이 변경 사항에 유연하게 대응할 수 있도록 설계되었는지 확인
2.2. 마이크로서비스 아키텍처 설계
- 점검 항목: 아키텍처 패턴의 적절성, 서비스 간 통신 방식, 트랜잭션 관리
- 상세 검토 사항:
- API 조합 패턴, CQRS 패턴 등 쿼리 패턴이 적절하게 적용되었는지 확인
- SAGA 패턴 등 분산 트랜잭션 관리 방안이 적절하게 설계되었는지 확인
- 서비스 간 통신 방식 (REST, gRPC, 메시지 큐)이 서비스의 특성에 맞게 선택되었는지 확인
- 서비스 메시 (Service Mesh)를 사용하여 서비스 간 통신을 효율적으로 관리할 수 있는지 검토
- 적정성 판단 기준:
- 아키텍처 패턴이 MSA의 특성을 고려하여 서비스 간 결합도를 낮추고, 독립성을 높이는 데 기여하는지 확인
- 서비스 간 통신 방식이 성능, 안정성, 보안 요구사항을 만족하는지 확인
2.3. 개발 원칙 수립
- 점검 항목: 12 Factors[2] 준수 여부, 개발 환경 일관성
- 상세 검토 사항:
- 코드베이스, 종속성, 설정, 백엔드 서비스, 빌드/릴리즈/실행, 무상태 프로세스, 포트 바인딩, 동시성, 폐기 가능성, 개발/운영 환경 일치, 로그, 관리 프로세스 등 12 Factors를 준수하는 개발 원칙이 수립되었는지 확인
- 개발, 테스트, 운영 환경이 일관성을 유지하는지 확인
- 적정성 판단 기준:
- 개발 원칙이 클라우드 네이티브 환경에 적합하고, MSA의 장점을 최대한 활용할 수 있도록 수립되었는지 확인
- 개발 환경의 일관성을 유지하여 개발 생산성을 높이고, 오류 발생 가능성을 낮추는지 확인
WRAP-UP 결어/종합/대안
위 점검 항목들을 통해 MSA 기반 애플리케이션 개발의 분석 및 설계 단계가 적절하게 수행되었는지 검토하고, 문제점을 발견하여 개선함으로써 성공적인 MSA 구축을 달성할 수 있습니다.
MSA기반 애플리케이션의 단계별 점검항목 및 검토항목을 요약하여 표로 정리하면 아래와 같습니다.
• 이너(Inner) 아키텍처 영역은 1.2, 2.1 점검,
• 아우터(Outer) 아키텍처 영역은 1.3, 2.2 점검,
• 공통 영역으로 1.1(요구사항 정의 단계), 2.3(담당자 자체 검토) 점검분석단계
구분 점검항목 검토항목 비고 1.1 요구사항 분석 요구사항의 명확성, 완전성, 일관성 * 사용자 인터뷰, 설문 등을 통해 수집된 요구사항이 시스템 개선 및 업무 개선 요구를 모두 포함하는가 * 모든 요구사항이 명확하게 정의되고, 이해 관계자 간의 합의가 이루어졌는지 확인
* 요구사항이 비즈니스 목표와 전략에 부합하는지 확인* 요구사항이 기능적 요구사항과 비기능적 요구사항 (성능, 보안, 확장성, 안정성)을 모두 포함하는가 * 요구사항 간의 충돌이나 모호함이 없는가 1.2 마이크로서비스 도출 마이크로서비스의 독립성, 응집도, 결합도 * 도메인 주도 설계 (DDD), 이벤트 스토밍, 업무 기능 분해 등의 방법을 통해 마이크로서비스가 적절하게 도출되었는가 * 각 마이크로서비스가 하나의 비즈니스 기능을 담당하고, 다른 서비스에 대한 의존성이 최소화되었는지 확인
* 마이크로서비스의 크기가 작고, 유지보수가 용이한지 확인* 각 마이크로서비스가 독립적으로 배포 및 확장 가능한가 * 마이크로서비스 간의 결합도를 최소화하고, 응집도를 최대화했는가 * 마이크로서비스의 크기가 적절한가 (너무 크거나 작지 않은지) 검토 1.3 클라우드 네이티브 아키텍처 설계 아키텍처 구성 요소의 적절성, 클라우드 플랫폼 활용도 * API 게이트웨이, 서비스 메시, 런타임 플랫폼 (Kubernetes), CI/CD 파이프라인, 백엔드 서비스, 텔레메트리 등 클라우드 네이티브 아키텍처 구성 요소가 적절하게 설계되었는가 * 아키텍처가 MSA의 장점을 최대한 활용하고, 단점을 극복할 수 있도록 설계되었는지 확인
* 클라우드 플랫폼의 기능을 활용하여 시스템의 확장성, 안정성, 가용성을 확보했는지 확인* 각 구성 요소의 기능과 역할이 명확하게 정의되었는가 클라우드 플랫폼 (IaaS, PaaS)에서 제공하는 기능과 서비스를 최대한 활용했는가 설계단계
구분 점검항목 검토항목 비고 2.1 마이크로서비스 설계 (도메인 모델링) 도메인 모델의 정확성, 일관성, 완전성 * 도메인 모델링을 통해 마이크로서비스 내부 구조가 상세하게 설계되었는가 * 도메인 모델이 비즈니스 로직을 정확하게 반영하고, 개발자가 쉽게 이해할 수 있는지 확인
* 도메인 모델이 변경 사항에 유연하게 대응할 수 있도록 설계되었는지 확인* 도메인이 제공하는 기능과 주요 데이터가 도메인 모델에 포함되었는가 * 애그리게잇 (Aggregate), 엔티티 (Entity), 값 객체 (Value Object), 리파지토리 (Repository) 등의 개념이 적절하게 사용되었는가 2.2 마이크로서비스 아키텍처 설계 아키텍처 패턴의 적절성, 서비스 간 통신 방식, 트랜잭션 관리 * API 조합 패턴, CQRS 패턴 등 쿼리 패턴이 적절하게 적용되었는가 * 아키텍처 패턴이 MSA의 특성을 고려하여 서비스 간 결합도를 낮추고, 독립성을 높이는 데 기여하는지 확인
* 서비스 간 통신 방식이 성능, 안정성, 보안 요구사항을 만족하는지 확인* SAGA 패턴 등 분산 트랜잭션 관리 방안이 적절하게 설계되었는가 * 서비스 간 통신 방식 (REST, gRPC, 메시지 큐)이 서비스의 특성에 맞게 선택되었는가 * 서비스 메시 (Service Mesh)를 사용하여 서비스 간 통신을 효율적으로 관리할 수 있는가 2.3 개발 원칙 수립 12 Factors 준수 여부, 개발 환경 일관성 * 코드베이스, 종속성, 설정, 백엔드 서비스, 빌드/릴리즈/실행, 무상태 프로세스, 포트 바인딩, 동시성, 폐기 가능성, 개발/운영 환경 일치, 로그, 관리 프로세스 등 12 Factors를 준수하는 개발 원칙이 수립되었는가 * 개발 원칙이 클라우드 네이티브 환경에 적합하고, MSA의 장점을 최대한 활용할 수 있도록 수립되었는지 확인
* 개발 환경의 일관성을 유지하여 개발 생산성을 높이고, 오류 발생 가능성을 낮추는지 확인* 개발, 테스트, 운영 환경이 일관성을 유지하는가 애플리케이션의 12요소 원칙
※ 설계담당자에게 표를 제공하여 해당 요소에 대한 설계 반영 산출물 명과 그 위치를 비고란에 식별 기재하도록 하고 확인
순번 요소 원칙 비고 1 코드베이스
Codebase하나의 코드베이스(소스코드)로 버전 관리및 배포관리 자동화 환경
One codebase tracked in revision control, many deploysSVN, Git 도구 2 의존성
Dependencies패키지, 라이브러리 등의 의존관계는 명시적으로 선언하고 분리
Explicitly declare and isolate dependenciesmanifest 파일 3 설정
Config소스 코드와 설정 정보를 분리하고, 설정 정보는 환경변수에 저장
Store config in the environmentSpringCloud Config 4 백엔드 서비스
Backing services백엔드 서비스(DB, 메시지큐, 캐시등)는 연결/분리가 용이하도록 리소스 매핑으로 처리
Treat backing services as attached resourcesConfig, Property 설정 5 빌드/배포/실행
Build, release, run빌드와 실행 단계는 철저히 분리
Strictly separate build and run stagesCI/CD Pipeline 기반 6 프로세스
Processes애플리케이션은 무상태(Stateless) 프로세스로 실행
Execute the app as one or more stateless processesSession정보 외부 저장 7 포트 바인딩
Port binding애플리케이션은 독립적이며, http 같은 포트 바인딩을 이용한 서비스 공개
Export services via port bindingPlatform 제공 8 동시성
Concurrency애플리케이션의 수평적 확장, 프로세스 모델을 사용한 스케일 아웃
Scale out via the process modelScale-up, Scale-out 지원 9 폐기 가능
Disposability빠른 시작과 정상적 종료(graceful shutdown) 지원으로 안정성 극대화
Maximize robustness with fast startup and graceful shutdownAPP 중지 시 자원관리 10 개발/운영환경 일치
Dev/prod parity가능한 동일한 개발, 스테이징, 운영 환경의 유지
Keep development, staging, and production as similar as possible환경간 Backend 서비스 차이 최소화 11 로그
Logs로그 파일의 취합, 인덱싱, 분석 용이하게 이벤트 스트림으로 로그 처리
Treat logs as event streamsPlatform에서 관리 12 운영관리 프로세스
Admin processes시스템 관리 작업은 일회성 프로세스로 만들어서 실행
Run admin/management tasks as one-off processes애플리케이션 프로세스와 분리 2025.03.22.
AUDITORISCitations:
[1] 한국지능정보사회진흥원, 클라우드네이티브 정보시스템 구축 개발자 안내서, 2021, https://www.egovframe.go.kr/home/sub.do?menuNo=95
[2] The Twelve Factors, https://12factor.net/, 25.03.22'CheckFact > 가까이서 본 기술' 카테고리의 다른 글
MSA 개발의 함정을 피하는 필수 체크리스트: 분석 및 설계단계 점검항목 (0) 2025.03.22 MSA 트랜잭션 관리: 처리 이슈부터 설계 전략까지 (1) 2025.03.16 MSA 전환 설계 및 구현 체크리스트 (0) 2025.03.12