개발/Architecture & Design Pattern

아키텍처 전술 (Architectural Tactics)

피로물든딸기 2024. 7. 18. 20:47
반응형

Architecture & Design Pattern 전체 링크

 

참고

- 품질 속성 시나리오 (Quality Attribute Scenarios)

 

품질 속성 Trade-off 관계

 

가용성 vs 성능

높은 가용성을 위한 Redundancy와 장애 조치는 오버헤드로 인해 성능에 영향을 준다.

 

상호운용성 vs 보안

다양한 시스템 간의 데이터 교환과 통합을 허용하면, 보안 취약점이 높아진다.

 

변경용이성 vs 성능

모듈화와 추상화로 인해 성능이 저하될 수 있다.

 

성능 vs 보안

보안을 강화하기 위한 암호화와 인증 과정으로 성능이 저하된다.


Availability (가용성)

- 시스템이 정상적으로 작동하고 사용 가능한 상태를 유지하는 정도

 

Detect Faults (장애 탐지)

- Ping / Echo : 네트워크 연결 상태를 확인
- Monitor : 시스템 성능 및 상태를 지속적으로 관찰
- Heartbeat : 정기적인 신호를 보내 시스템이 정상 동작 중임을 확인
- Timestamp : 이벤트 발생 시간을 기록하여 이상 여부를 파악
- Sanity Checking : 시스템의 기본적인 기능 검사를 수행
- Condition Monitoring : 특정 조건이나 임계값을 지속적으로 모니터링
- Voting : 여러 시스템 구성 요소들이 결과에 대해 합의를 도출
- Exception Detection : 비정상적인 동작이나 예외 상황을 감지
- Self-Test : 시스템이 스스로 테스트를 수행하여 정상 동작 여부를 확인

 

Recover from Faults (장애 복구) = Preparation and Repair (준비 및 복구) + Reintroduction (재시작)

- Active Redundancy : 동시에 동작하는 여러 복제본을 유지하여 장애 시에도 연속성을 보장
- Passive Redundancy : 장애 발생 시 예비 시스템을 활성화
- Spare : 예비 부품이나 시스템을 대기 상태로 유지
- Exception Handling : 예외 상황을 처리하여 시스템을 복구
- Rollback : 장애 발생 이전의 상태로 되돌리기
- Software Upgrade : 소프트웨어의 최신 상태 유지 및 패치
- Retry : 실패한 작업을 재시도
- Ignore Faulty Behavior : 비정상 동작을 무시하고 시스템을 지속적으로 운영
- Degradation : 성능을 일시적으로 낮추어 시스템을 유지
- Reconfiguration : 시스템 구성을 변경하여 장애를 극복

- Shadow : 백업 시스템을 동기화하여 장애 발생 시 빠르게 전환
- State Resynchronization : 시스템 상태를 동기화하여 정상 복구
- Escalating Restart : 단계적으로 시스템을 재시작
- Non-Stop Forwarding : 중단 없이 트래픽을 다른 경로로 포워딩

 

Prevent Faults (장애 방지)

- Removal from Service:   문제가 있는 시스템을 서비스에서 제거하여 다른 시스템에 영향을 주지 않게 함
- Transactions : 일련의 작업을 하나의 작업 단위로 처리하여 중간 오류 방지
- Predictive Model : 데이터를 기반으로 미래의 장애를 예측
- Exception Prevention : 예외 상황이 발생하지 않도록 시스템을 설계
- Increase Competence Set : 시스템의 다양한 상황에 대한 대응 능력 향상


Interoperability (상호운용성)

- 시스템이 다른 시스템과 원활하게 상호작용하고 데이터나 서비스를 교환할 수 있는 능력

 

Locate

- Discover Service : 네트워크나 시스템 내에서 필요한 서비스를 자동으로 찾는 기능

 

Manage Interfaces 

- Orchestrate : 여러 서비스나 시스템 간의 복잡한 상호작용을 관리하고 조정하는 기능

- Tailor Interface : 특정 요구사항에 맞게 인터페이스를 조정하거나 변경하는 기능


Modifiability (변경 용이성)

- 시스템을 수정하고 개선할 수 있는 용이성

 

ReduceSize of a Module (모듈 크기 축소)
- Split Module : 큰 모듈을 더 작고 관리 가능한 여러 모듈로 분할

Increase Cohesion (응집도 증가)
- Increase Semantic Coherence : 모듈 내의 모든 요소를 단일 목적이나 기능을 중심으로 구성

Reduce Coupling (결합도 감소)
- Encapsulate : 모듈의 내부 구현을 숨기고 공용 인터페이스만을 노출
- Use an Intermediary : 직접적인 의존성을 줄이기 위해 중개자를 사용
- Restrict Dependencies : 가능한 한 적은 수의 다른 모듈에만 의존
- Refactor : 모듈의 구조를 재조정
- Abstract Common Services : 여러 모듈에서 공통적으로 사용하는 기능을 추상화

Defer Binding 
- Defer Binding : 시스템 구성 요소 간의 결합을 실행 시점이나 배포 시점으로 연기 (레지스트리 사용)


Performance (성능)

- 시스템의 응답 시간, 처리량, 자원 사용 효율성


Control Resource Demand
- Manage Sampling Rate : 데이터를 수집하는 빈도를 조절하여 시스템 자원 사용을 최적화
- Limit Event Response : 시스템이 처리해야 하는 이벤트의 양을 제한하여 성능을 향상
- Prioritize Events : 중요한 이벤트를 우선적으로 처리하여 성능을 향상
- Reduce Overhead : 불필요한 작업이나 복잡성을 줄여 시스템 자원 사용을 줄임
- Bound Execution Times : 특정 작업의 최대 실행 시간 제한, 시스템이 특정 작업에 많은 시간을 소비하지 않도록 함
- Increase Resource Efficiency : 자원을 최대한 효율적으로 사용하여 성능을 최적화


Manage Resources
- Increase Resources : 필요에 따라 더 많은 자원을 추가하여 성능을 향상
- Introduce Concurrency : 여러 작업을 동시에 처리하여 성능을 향상
- Maintain Multiple Copies of Computations : 계산된 작업을 여러 개 유지하여 신속하게 응답 (Cache)
- Maintain Multiple Copies of Data : 데이터를 여러 복사본으로 유지하여 접근 속도를 향상
- Bound Queue Sizes : 큐의 크기를 제한하여 시스템이 과도한 작업을 처리하지 않도록 함
- Schedule Resources : 자원의 사용 일정을 계획하여 자원의 효율적인 사용을 도모


Security (보안)

- 시스템이 불법적인 접근이나 공격으로부터 보호되는 정도

Detect Attacks (탐지)
- Detect Intrusion : 비인가 접근 시도를 탐지
- Detect Service Denial : 서비스 거부 공격(DDoS) 시도를 탐지
- Verify Message Integrity : 메시지 무결성 확인, 데이터가 전송 중 변조되지 않았음을 확인
- Detect Message Delay : 메시지 전송 지연 감지 (특정 기준 이상의 전송 지연 발생 시 경고 알림)


Resist Attacks (저항)
- Identify Actors : 시스템에 접근하는 사용자를 식별 (로그인 ID)
- Authenticate Actors : 사용자가 주장하는 신원을 검증 (비밀번호, 인증 토큰)
- Authorize Actors : 인증된 사용자의 접근 권한을 제한
- Limit Access : 필요한 최소한의 접근 권한만 부여
- Limit Exposure : 민감한 정보와 시스템을 보호
- Encrypt Data : 데이터를 암호화하여 비인가 접근 시 정보 유출을 방지
- Separate Entities : 시스템 구성 요소를 분리하여 침해 시 피해 확산 방지
- Change Default Settings : 기본 설정을 변경하여 보안 강화 (비밀번호 변경)


React to Attacks (대응)
- Revoke Access : 비인가 접근이 확인되면 즉시 접근 권한을 철회 (의심 계정 비활성화)
- Lock Computer : 공격 시도를 차단하기 위해 시스템을 잠금 
- Inform Actors : 사용자와 관리자에게 공격 발생 사실을 알림


Recover from Attacks (복구)
- Maintain Audit Trail : 시스템 활동 기록을 유지하여 공격의 원인을 분석 (로그 파일 생성)
- Restore : 공격으로 인한 피해를 복구 (백업 데이터)


Testability (테스트 용이성)

- 시스템이 테스트를 통해 결함을 쉽게 발견하고 수정할 수 있는 능력

 

Control and Observe System State (시스템 상태 제어 및 관찰)
- Specialized Interfaces : 테스트 목적으로 시스템과 상호작용할 수 있는 특별한 인터페이스를 제공
- Record/Playback : 시스템의 상태나 입력을 기록하고 나중에 재생하여 테스트를 수행
- Localize State Storage : 테스트의 반복성과 예측 가능성을 높이기 위해 상태 저장소를 로컬화
- Abstract Data Sources : 실제 데이터 소스 대신 추상화된 데이터 소스를 사용하여 테스트
- Sandbox : 격리된 환경에서 시스템을 실행하여 테스트
- Executable Assertions : 코드 내에 테스트 가능한 어설션을 포함하여 상태를 검증 (특정 조건 검증 코드 삽입)


Limit Complexity (복잡도 제한)
- Limit Structural Complexity : 시스템의 구조를 단순화하여 테스트 가능성을 높임 (모듈을 독립적으로 테스트)
- Limit Nondeterminism : 예측 불가능한 요소를 줄여 테스트 결과의 일관성을 높임


Usability (사용성)

- 시스템이 사용자가 쉽게 배우고, 이해하고, 사용할 수 있는 정도

 

Support User Initiative (사용자 행동 지원)
- Cancel : 사용자가 작업을 중단할 수 있도록 하는 기능
- Undo : 이전에 수행한 작업을 되돌릴 수 있도록 하는 기능
- Pause/Resume : 진행 중인 작업을 일시 중지하고 나중에 다시 이어서 할 수 있도록 하는 기능
- Aggregate : 여러 작업이나 데이터를 한데 모아 처리할 수 있도록 하는 기능


Support System Initiative (시스템 주도 지원)
- Maintain Task Model : 사용자가 수행 중인 작업을 이해하고 관리하는 모델을 유지 (도움말 등)
- Maintain User Model : 사용자의 선호도, 습관, 요구사항 등을 반영한 모델을 유지 (즐겨찾기 등)
- Maintain System Model : 시스템의 상태와 작동 원리를 이해하고 이를 기반으로 사용자를 지원하는 모델을 유지 


그림 출처

반응형