관리 메뉴

코딩하는 락커

[Chapter 4] 아키텍처 특성 정의 본문

📓 책을 통한 스터디/🦜 소프트웨어 아키텍처 101

[Chapter 4] 아키텍처 특성 정의

락꿈사 2025. 10. 12. 17:44

아키텍처 특성의 세 가지 기준

  1. 비도메인nondomain 설계 고려 사항을 명시한다.
  2. 설계의 구조적 측면에 영향을 미친다.
  3. 애플리케이션 성공에 (절대적으로) 중요하다.

 

비도메인 설계 고려 사항을 명시한다

  • 애플리케이션 요구사항을 구현하는 방법, 어떤 선택을 하게 된 이유와 관련된 운영/설계 기준을 명시한다

 

설계의 구조적 측면에 대한 영향을 미친다

  • 아키텍처 특성은 단순한 품질 속성이 아니라 시스템 구조를 결정짓는 핵심 설계 요인이다.
  • 결제 시스템 사례
    • 서드파티 결제 프로세서: 결제 처리를 한곳에서 처리한다면 아케틱트가 특별히 구조에 신경 쓸 필요는 없다.
    • 애플리케이션 내부 결제 처리: 애플리케이션이 직접 결제 처리를 한다면 아키텍트는 중요한 보안 문제를 구조적으로 분리하기 위해 특정한 모듈이나 컴포넌트, 서비스를 결제해야 한다. 

 

애플리케이션 성공에 (절대적으로) 중요하다

  • 요구사항 정의서에는 기술되지 않는 암묵적 특성은 프로젝트 성공을 위해 꼭 필요한 특성들이다.
  • e.g) 가용성, 신뢰성, 보안 등
  • 아키텍트는 분석 단게에서 자신이 문제 영역에 대해 습득한 지식을 최대한 활용하여 아키텍처 특성을 밝혀내야 한다.

 

아키텍처 특성 목록

운영 아키텍처 특성

용어 정의
가용성 시스템이 얼마나 오랫동안 사용 가능해야 하나?
연속성 재해 복구 능력
성능 스트레스 테스트, 피크 분석, 기능의 사용 빈도 분석, 필요 용량, 응답 시간. 
복구성 비즈니스 연속성 요구사항. 장애 발생 시 얼마나 신속하게 시스템을 재가동시켜야 하나?
백업 전략과 하드웨어 다중화 요건에 영향을 미친다.
신뢰성/안전 시스템에 페일 세이프가 필요한가? 즉 시스템 실패 시 회사에 거액의 손실이 발생하는가?
견고성 프로그램 실행 중 인터넷 접속 끊김, 정전, 하드웨어 실패 등 에러 및 경계 조건을 감당하는 능력
확장성 유저 수, 요청 수가 늘어나도 시스템이 그에 맞는 성능을 발휘하는 능력

 

구조 아키텍처 특성

용어 정의
설정성 최종 유저가 쓰기 편한 인터페이스를 통해 소프트웨어 설정을 쉽게 바꿀 수 있는가?
신장성 새로운 기능을 삽입하는 일의 중요성
설치성 필요한 모든 플랫폼에 시스템을 얼마나 손쉽게 설치할 수 있나?
활용성/재사용 공통 컴포턴트를 여러 제품에서 활용할 수 있나?
지역성 데이터를 입력/조회하는 화면에서 다국어가 지원되는가?
리포트 장표에서 멀티바이트 문자 및 측성, 화폐 단위 등의 요구사항
유지보수성 시스템을 얼마나 쉽게 변경/개선할 수 있나?
이식성 하나 이상의 플랫폼에서 시스템을 실행할 수 있나?
지원성 애플리케이션은 어느 정도의 기술 지원을 필요로 하나? 시스템에서 발생한 에러를 디버깅하려면 로깅 및 기타 기능이 어느 수준으로 뒷받침되어야 하나?
업그레이드성 이 애플리케이션/솔루션의 구 버전을 새 버전으로 쉽고 빠르게 업그레이드 할 수 있는가?

 

아키텍처 공통 특성

용어 정의
접근성 색맹, 청각 장애인 등 모든 유저가 접근하는 데 불편함이 없나?
보관성 데이터를 따로 아카이빙 해야 하나? 아니면 일정 시간 경과 후 삭제해야 하나?
인증 유저가 본인이 맞다는 것을 증명하기 위해 필요한 요구사항
인가 유저가 애플리케이션에서 정해진 기능만 사용할 수 있도록 강제하는 보안 요구사항
합법성 시스템 운영상 법적 제약 조건이 있는가? 
프라이버시 회사 내부 임직원도 트랜잭션을 외부에 드러내지 않는 기능
보안 데이터를 암호환 후 데이터베이스에 보관해야 하나? 내부 시스템 간 네트워크 통신도 암호화 해야 하나?
사용성/성취성 유저가 애플리케이션/솔류션을 이용하여 원하는 목적을 달성하기 위해 필요한 교육/훈련 수준

 

 

국제 표준 기구(ISO)가 발표한 기능별 목록

용어 정의
성능 효율 알려진 조건에서 리소스 양에 비례하는 성능 측정값, 시간 특징(응답 시간, 처리 시간, 처리율), 리소스 사용, 능력 등
호환성 제품, 시스템, 컴포넌트가 다른 제품, 시스템, 컴포넌트와 정보를 교환하고 동일한 하드웨어/소프트웨어 환경을 공유하면서 필요한 기능을 수행할 수 있는 정도
사용성 유저가 시스템을 원하는 목적에 맞게 효과적으로, 효율적으로, 만족스럽게 사용할 수 있는 정도
신뢰성 주어진 기간 동안 특정 조건에서 시스템이 기능하는 정도.
- 성숙도: 정상 작동 시 소프트웨어가 원하는 신뢰성을 보장하는가
- 가용성: 소프투에어가 가동 중이고 액세스 가능한가
- 내고장성: 하드웨어/소프트웨어가 고장나도 소프트웨어가 의도한 대로 작동되는가
- 복구성: 소프트웨어가 고장나도 영향 받은 데이터를 되살리고 원하는 시스템 상태로 돌아갈 수 있는가
보안 사람들, 다른 제품, 시스템이 자신의 인증 레벨에 맞게 데이터를 액세스할 수 있게끔 소프트웨어가 정보를 보호하는 정도
유지보수성 개발자가 얼마나 효율적으로 소프트웨어을 고쳐 개선/발전시키고 계속 변화하는 환경이나 요구사항에 맞게 적용할 수 있는가
이식성 개발자가 하드웨어, 소프트웨어, 또는 다른 운용 환경에 있는 시스템, 제품, 컴포넌트를 다른 곳에 옮길 수 있는 정도
- 적응성: 개발자가 소프트웨어를 다른 하드웨어, 소프트웨어, 기타 운용 환경에 맞게 적용시킬 수 있나
- 설치성: 소프트웨어를 주어진 환경에 설치/삭제할 수 있나
- 교체성: 개발자가 얼마나 쉽게 다른 소프트웨어로 기능을 교체할 수 있나
기능 적합성 주어진 조건에서 제품이나 시스템을 기동할 때 명시/암묵적인 요구사항을 충족하는 정도
- 기능 완정성: 제공되는 기능들이 전체 작업과 유저 목표를 얼마나 커버하는가?
- 기능 정확성: 제품이나 시스템이 올바른 결과를 어느 정도로 정확하게 제공하는가?
- 기능 타당성: 주어진 작업이나 목표를 얼마나 쉽게 달성할 수 있는가?

 

트레이드 오프 및 나쁜 것 중에서 제일 나은 아키텍처

  • 아키텍처가 설계하기로 결정한 아키텍처 특성 하나하나가 전체 설계를 복잡하게 만들 가능성을 품고 있으므로 최고의 아키텍처를 고집하지말고 나쁜 것 중에서 제일 나은 아키텍처를 선택한다.

'📓 책을 통한 스터디 > 🦜 소프트웨어 아키텍처 101' 카테고리의 다른 글

[Chapter 3] 모듈성  (0) 2025.09.29
[Chapter 2] 아키텍처 사고  (0) 2025.09.22
[Chapter 1] 서론  (0) 2025.09.20
Comments