본문 바로가기

IT 세상

Architecture 설계 - 요구사항, Cloud Native, MSA

# 요구사항의 정의 및 종류

요구사항은 구분 기준에 따라 다르게 정의될 수 있다.

이 중에서도 소프트웨어 아키텍처는 비기능적 요구사항에 주요 관련된다고 할 수 있다.

 

요구사항의 종류는 아래와 같이 분류할 수 있다.

구분 기준 종류 정의
참여자 관점 사용자 요구사항 사용자의 관점에서 소프트웨어에
대해 원하는 사항들
시스템 요구사항 관리자나 설계자의 관점에서
하드웨어와 소프트웨어가 갖춰야 하는 것들
소프트웨어 요구사항 소프트웨어 개발자의 관점에서
소프트웨어가 갖춰야 하는 사항들
요구사항 종류



기능적 요구사항 소프트웨어를 구성하는 기능들이
무엇인지를 정의한 것
비기능적 요구사항 * 소프트웨어의 기능들에 대한
조건과 제약 사항들이 무엇인지 정의한 것
요구사항 생성 주체 비즈니스 요구사항 개발을 의뢰하는 단체가 작성한
요구사항

 

* 비기능적 요구사항의 종류

   비기능 요구사항은 시스템 전반에 걸친 기본 구조에 영향을 미친다. 

   비기능적 요구사항은 다음과 같이 분류할 수 있으며,

   주어진 상황에서 최적의 선택을 하는 것이 아키텍처 설계의 핵심 Task 로 볼 수 있다.

 

     - 제품 : 사용성(Usability), 가용성(Availability), 효율성(Efficiency) - 성능/자원, 유연성(Flexibility),

         통합성(Integrity), 호환성(Interoperability), 유지보수성(Maintainability), 신뢰성(Reliability),

         이식성(Portability), 재사용성(Reusablility), 견고성(Robustness), 테스트 가능성(Testability)

     - 조직 : 배포, 구현, 표준

     - 외부 : 상호운용성, 윤리, 법무 - 사생활/안전성

 

# Cloud Natvie Architecture 설계

요구사항이 결정되면 이에 따라 각 영역별 구성요소를 식별 및 설계 방향을 수립하여야 한다.

Kubernetes 기반으로 마이크로서비스 형태로 설계한다고 가정하였을 때 필요 영역은 다음과 같으며, 

각 영역별 아키텍처의 정의 및 개발 표준화가 필요하다.

(CNCF -  Cloud Native Computing Foundation 권고사항)

구분 구성 요소 정의
Inner
아키텍처




Microservice 설계 MSA 기반 Application 분석/설계
MSA 기반  Data 설계 마이크로서비스로 분할되면서 서비스별로 데이터베이스를 분할 또는 적정 DB 솔루션 설계
Cloud Native Application 개발 15 Fator 를 준수한 Application 개발
Outer
아키텍처




API Gateway(인증 라우팅) 대내외 API 연동 (BEAST, KONG  EAI)
Service Mesh ISTIO/ENVOI 
Backing Serive
(DB, 
비동기 메시지)
관계형 DB/MOM (KAFKA )
컨테이너 관리 쿠버네티스 관리, EKS, AKS 기반 관리
Telemetry
(
로깅, 모니터링, 추적)
ELK (elasticsearch)
CI/CD(빌드. 배포) Cloud 기반 DevOps (Jenkins )
Agile 프로세스 거버넌스 Agile 기반 프로젝트 방법론 Leading (Scrum)

 

# MSA 아키텍처 도입

  • 마이크로서비스 아키텍처(Microservice architecture)는 사실상 현대의 응용 프로그램 개발 기술이다.
  • MSA 아키텍처는 장점이 많지만 절대 쉽지 않은 단점과 부딪쳐야 할 많은 문제들이 있다.
  • MSA 아키텍처 도입으로 인해 발생할 수 있는 문제들의 패턴들을 학습하고, 재사용 가능한 솔루션으로 만들 필요성, , 마이크로서비스를 위한 디자인 패턴의 이해가 필요하다.

# MSA 아키텍처 도입시 적용할 원칙들

  • Scalability (확장성)
  • Availability (가용성)
  • Resiliency (탄력성)
  • Independent (독립성), autonomous (자율성)
  • Decentralized governance (분산된 관리)
  • Failure isolation (장애 격리)
  • Auto-Provisioning (자동 프로비저닝)
  • Continuous delivery through DevOps (DevOps를 통한 지속적 배포)