- (실패 비용 감소) SW 실패 위협 조기 발견에 따른 실패 비용 감소(1:10:100 법칙)
2. SW Architecture 평가 방법론
평가 유형
방법
내 용
예측 평가
Scenario Based
-기 정의된 Profile에 의존하여 평가(ATAM, CBAM, SAAM) -시나리오 정밀도에 좌우
실무 평가
Simulation Based
-BMT(BenchMarking Test) 시뮬레이션 기반 평가
사례 평가
Experience Based
-정량적인 분석이 어려운 경우 적용하는경험 기반의 평가 -
정량적 평가
Mathematical Model Based
- 기준 모델을 수치화하고 이를 기초로 평가하는 수학적 기반 모델 - 정적 평가
- 각 평가 방법은 복합적으로 사용 가능
3. SW 아키텍처의 평가모델 구성도 및 평가 기법
가. SW 아키텍처의 평가 모델 구성도
- 일반적으로 정방향 분석인 ATAM, CBAM 많이 사용
나. SW 아키텍처 평가 기법
평가유형
상 세설 명
SAAM
- Software Architecture Analysis Method - 최초로 정리된 평가방법. 다양한 수정 가능성들의 관점에서 아키텍처 분석 - 수정 가능성과 기능분석중심의 최초의 아키텍처 평가방법
ATAM
- Architecture Trade-off Analysis Method - 아키텍처가품질속성을 만족시키는지 판단, 품질 속성간 상호작용 확인 단계 - 아키텍처가 목표로 하는 품질만족도, 각 품질간의 연관성, 즉, 품질 목표간의 Trade-off가 있는지 파악 가능한 아키텍처 평가방법
CBAM
- Cost Benefit Analysis Method - SAAM, ATAM의 기술적 아키텍처 및 경제성 평가까지 하여 수익이 최대가 될 수 있도록 의사결정을 도와주는 SW아키텍처 평가모델
ARID
- Active Reviews for Intermediate Designs - 부분 아키텍처를 아키텍처 초기에 평가하는 방법으로 시나리오 중심의 ATAM, SAAM과 설계검토 방법인 ADR(Active Design Review)를 혼합한 아키텍처 평가방법 - 특정부분 품질요소 집중 - 아키텍처 설계 초기에 검토하여 발생 가능한 위험 감소
시스템에 의해 제공하는 비즈니스의 연속성과 안정성을 보장하기 위해 운영 환경에 소스 배포 시 서비스가 중단되지 않도록 코드를 배포 할 수 있는 기술
소프트웨어 배포 : 소프트웨어 개발 이후 결과물을 고객에게 제공하는 방법, 시스템을 중단하는 중단배포와 시스템의 중단없이 배포하는 무중단 배포로 부류
중단배포의 문제점
문제점
설명
다운타임 발생
- 24시간 항상 가동되어야하는 서비스의 경우 문제 발생 가능
무결성 저하
- 다중 서버 이용시 서버간 시차로 인한 데이터 중복 발생 가능
롤백시 중단
- 배포시 문제 발생할 경우, 롤백시에도 다운타임 발생
무중단 배포 기법의 종류
(1) Rolling Update(롤링 배포)
구분
설명
개념
- 일반적인 배포를 의미하며, 단순하게 인스턴스(또는 서버)에 대해 동일한 인스턴스를 띄우고, 준비가 되어 있는 상황에서 1개씩 Rolling을 통해 점진적으로 인스턴스를 변경하는 기법 - Ramped, Incremental 이라고도 불리며, 기존에 사용하고 있었던 기본적인 배포 전략 방식
장점
- 관리 및 롤백이 용이
단점
- 서버 처리 용량에 대한 서전 고려 필요
(2) Blue/Green Deployment(블루-그린 배포)
구분
설명
개념
- Old 버전을 블루, New 버전을 그린으로 호명하고, New 버전을 모두 배포 후 서비스 준비가 되었을 때 모든 트래픽을 New 버전으로 한번에 Switching 을 하는 기법 - Red-Black 이라고도 불리며, 서버가 2개가 다 active이기 때문에 Rollbak이 다소 쉽게 처리 가능
장점
운영 환경에 영향을 주지 않고, 실제 서비스 환경으로 신버전 테스트가 가능
단점
시스템 자원이 두배로 필요하여 비용이 증가
(3) Canary Release(카나리 배포)
구분
설명
개념
- 트래픽 제어를 통해 일부 사용자만 신규 서버로 접속하게 하여 모니터링과 디버깅을 수행 한 후 문제가 없는 경우 모든 서버로 교체하는 기법 - 수정한 코드가 워낙 많이 바뀌어서 불안할 경우 점진적으로 배포하는 형태를 통해 위험 감소 가능