Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
Tags
- 이것이자바다
- 백준괄호
- KT포트포워딩
- 운영체제
- 컴퓨터비전
- 합성곱연산
- java
- 딥러닝
- 백준스택
- 백준온라인저지
- 웹개발기초
- 코드트리
- 스파르타코딩클럽
- 백준9012
- 백준10828
- 카카오코테
- 2019카카오코테
- 이것이자바다확인문제
- 이것이자바다9장
- 코딩테스트실력진단
- 백준평범한배낭
- 백준
- 윤곽선검출
- 가운데를말해요
- 냅색알고리즘
- 확인문제
- BOJ
- 코테
- 백준가운데를말해요
- BOJ1655
Archives
- Today
- Total
코딩하는 락커
[Chapter 4] 아키텍처 특성 정의 본문
아키텍처 특성의 세 가지 기준
- 비도메인nondomain 설계 고려 사항을 명시한다.
- 설계의 구조적 측면에 영향을 미친다.
- 애플리케이션 성공에 (절대적으로) 중요하다.

비도메인 설계 고려 사항을 명시한다
- 애플리케이션 요구사항을 구현하는 방법, 어떤 선택을 하게 된 이유와 관련된 운영/설계 기준을 명시한다
설계의 구조적 측면에 대한 영향을 미친다
- 아키텍처 특성은 단순한 품질 속성이 아니라 시스템 구조를 결정짓는 핵심 설계 요인이다.
- 결제 시스템 사례
- 서드파티 결제 프로세서: 결제 처리를 한곳에서 처리한다면 아케틱트가 특별히 구조에 신경 쓸 필요는 없다.
- 애플리케이션 내부 결제 처리: 애플리케이션이 직접 결제 처리를 한다면 아키텍트는 중요한 보안 문제를 구조적으로 분리하기 위해 특정한 모듈이나 컴포넌트, 서비스를 결제해야 한다.
애플리케이션 성공에 (절대적으로) 중요하다
- 요구사항 정의서에는 기술되지 않는 암묵적 특성은 프로젝트 성공을 위해 꼭 필요한 특성들이다.
- e.g) 가용성, 신뢰성, 보안 등
- 아키텍트는 분석 단게에서 자신이 문제 영역에 대해 습득한 지식을 최대한 활용하여 아키텍처 특성을 밝혀내야 한다.
아키텍처 특성 목록
운영 아키텍처 특성
| 용어 | 정의 |
| 가용성 | 시스템이 얼마나 오랫동안 사용 가능해야 하나? |
| 연속성 | 재해 복구 능력 |
| 성능 | 스트레스 테스트, 피크 분석, 기능의 사용 빈도 분석, 필요 용량, 응답 시간. |
| 복구성 | 비즈니스 연속성 요구사항. 장애 발생 시 얼마나 신속하게 시스템을 재가동시켜야 하나? 백업 전략과 하드웨어 다중화 요건에 영향을 미친다. |
| 신뢰성/안전 | 시스템에 페일 세이프가 필요한가? 즉 시스템 실패 시 회사에 거액의 손실이 발생하는가? |
| 견고성 | 프로그램 실행 중 인터넷 접속 끊김, 정전, 하드웨어 실패 등 에러 및 경계 조건을 감당하는 능력 |
| 확장성 | 유저 수, 요청 수가 늘어나도 시스템이 그에 맞는 성능을 발휘하는 능력 |
구조 아키텍처 특성
| 용어 | 정의 |
| 설정성 | 최종 유저가 쓰기 편한 인터페이스를 통해 소프트웨어 설정을 쉽게 바꿀 수 있는가? |
| 신장성 | 새로운 기능을 삽입하는 일의 중요성 |
| 설치성 | 필요한 모든 플랫폼에 시스템을 얼마나 손쉽게 설치할 수 있나? |
| 활용성/재사용 | 공통 컴포턴트를 여러 제품에서 활용할 수 있나? |
| 지역성 | 데이터를 입력/조회하는 화면에서 다국어가 지원되는가? 리포트 장표에서 멀티바이트 문자 및 측성, 화폐 단위 등의 요구사항 |
| 유지보수성 | 시스템을 얼마나 쉽게 변경/개선할 수 있나? |
| 이식성 | 하나 이상의 플랫폼에서 시스템을 실행할 수 있나? |
| 지원성 | 애플리케이션은 어느 정도의 기술 지원을 필요로 하나? 시스템에서 발생한 에러를 디버깅하려면 로깅 및 기타 기능이 어느 수준으로 뒷받침되어야 하나? |
| 업그레이드성 | 이 애플리케이션/솔루션의 구 버전을 새 버전으로 쉽고 빠르게 업그레이드 할 수 있는가? |
아키텍처 공통 특성
| 용어 | 정의 |
| 접근성 | 색맹, 청각 장애인 등 모든 유저가 접근하는 데 불편함이 없나? |
| 보관성 | 데이터를 따로 아카이빙 해야 하나? 아니면 일정 시간 경과 후 삭제해야 하나? |
| 인증 | 유저가 본인이 맞다는 것을 증명하기 위해 필요한 요구사항 |
| 인가 | 유저가 애플리케이션에서 정해진 기능만 사용할 수 있도록 강제하는 보안 요구사항 |
| 합법성 | 시스템 운영상 법적 제약 조건이 있는가? |
| 프라이버시 | 회사 내부 임직원도 트랜잭션을 외부에 드러내지 않는 기능 |
| 보안 | 데이터를 암호환 후 데이터베이스에 보관해야 하나? 내부 시스템 간 네트워크 통신도 암호화 해야 하나? |
| 사용성/성취성 | 유저가 애플리케이션/솔류션을 이용하여 원하는 목적을 달성하기 위해 필요한 교육/훈련 수준 |
국제 표준 기구(ISO)가 발표한 기능별 목록
| 용어 | 정의 |
| 성능 효율 | 알려진 조건에서 리소스 양에 비례하는 성능 측정값, 시간 특징(응답 시간, 처리 시간, 처리율), 리소스 사용, 능력 등 |
| 호환성 | 제품, 시스템, 컴포넌트가 다른 제품, 시스템, 컴포넌트와 정보를 교환하고 동일한 하드웨어/소프트웨어 환경을 공유하면서 필요한 기능을 수행할 수 있는 정도 |
| 사용성 | 유저가 시스템을 원하는 목적에 맞게 효과적으로, 효율적으로, 만족스럽게 사용할 수 있는 정도 |
| 신뢰성 | 주어진 기간 동안 특정 조건에서 시스템이 기능하는 정도. - 성숙도: 정상 작동 시 소프트웨어가 원하는 신뢰성을 보장하는가 - 가용성: 소프투에어가 가동 중이고 액세스 가능한가 - 내고장성: 하드웨어/소프트웨어가 고장나도 소프트웨어가 의도한 대로 작동되는가 - 복구성: 소프트웨어가 고장나도 영향 받은 데이터를 되살리고 원하는 시스템 상태로 돌아갈 수 있는가 |
| 보안 | 사람들, 다른 제품, 시스템이 자신의 인증 레벨에 맞게 데이터를 액세스할 수 있게끔 소프트웨어가 정보를 보호하는 정도 |
| 유지보수성 | 개발자가 얼마나 효율적으로 소프트웨어을 고쳐 개선/발전시키고 계속 변화하는 환경이나 요구사항에 맞게 적용할 수 있는가 |
| 이식성 | 개발자가 하드웨어, 소프트웨어, 또는 다른 운용 환경에 있는 시스템, 제품, 컴포넌트를 다른 곳에 옮길 수 있는 정도 - 적응성: 개발자가 소프트웨어를 다른 하드웨어, 소프트웨어, 기타 운용 환경에 맞게 적용시킬 수 있나 - 설치성: 소프트웨어를 주어진 환경에 설치/삭제할 수 있나 - 교체성: 개발자가 얼마나 쉽게 다른 소프트웨어로 기능을 교체할 수 있나 |
| 기능 적합성 | 주어진 조건에서 제품이나 시스템을 기동할 때 명시/암묵적인 요구사항을 충족하는 정도 - 기능 완정성: 제공되는 기능들이 전체 작업과 유저 목표를 얼마나 커버하는가? - 기능 정확성: 제품이나 시스템이 올바른 결과를 어느 정도로 정확하게 제공하는가? - 기능 타당성: 주어진 작업이나 목표를 얼마나 쉽게 달성할 수 있는가? |
트레이드 오프 및 나쁜 것 중에서 제일 나은 아키텍처
- 아키텍처가 설계하기로 결정한 아키텍처 특성 하나하나가 전체 설계를 복잡하게 만들 가능성을 품고 있으므로 최고의 아키텍처를 고집하지말고 나쁜 것 중에서 제일 나은 아키텍처를 선택한다.
'📓 책을 통한 스터디 > 🦜 소프트웨어 아키텍처 101' 카테고리의 다른 글
| [Chapter 3] 모듈성 (0) | 2025.09.29 |
|---|---|
| [Chapter 2] 아키텍처 사고 (0) | 2025.09.22 |
| [Chapter 1] 서론 (0) | 2025.09.20 |
Comments