[소프트웨어 아키텍처 101] 5. 아키텍처 특성 식별
반응형
인상깊은 부분
도메인 관심사에서 도출한 아키텍처 특성
비즈니스 이해도를 바탕으로 도메인 이해관계자들과 대화를 통해 시스템의 숨겨진 기술적인 요구사항을 찾아내야한다는 점을 이야기로 풀어주어서 좋았음
유저 대비 성능 기준선
특정 유저 수 기준으로 어느 정도의 성능이 나와야 하는 지 생각해보는 것
예를 들어 UI 페이지에 API를 새로 추가해야할 때, 일평균 UI 페이지를 방문자 수와 어느 시간대에 주로 접근하는지 알면 API가 지원해야하는 성능(즉, 1초에 몇 개의 요청을 처리해야하는 지)를 알 수 있음
아키텍처에서는 틀린 답은 없고 값비싼 답만 있습니다!
띵언이네..
기술 발전과 클라우드의 등장으로 인프라 비용이 많이 저렴해지고 관리하기도 쉬워졌지만, 보통 확장성과 가용성을 지원하려면 서버 비용이 더 든다. 그리고 이를 유지보수하기도 복잡해진다. 작은 회사에서 고가용성이 보장되고 서버가 죽을 정도의 트래픽이 몰릴 것을 기대하는 것 보다는, 고객 반응을 확인하기 위해 빠른 MVP 개발과 쉬운 유지보수가 가능한 아키텍처가 더 선호되는 것도 이런 이유라고 생각한다. 그리고 사람들이 많이 입/퇴사를 할테니 누가 와도 쉽게 적응할 수 있는 구조여야 할 것 같다.
우리의 일도 그런 것 같다. 예를 들어 어떤 기능을 개발할 때, 그 목적이 단순 고객 반응 확인을 위한 POC 라면, 기획자와 개발자를 투입해 기능화하지 않고 그 해답을 얻을 수 있는 빠르고 저렴한 방법을 고민해보는 게 좋겠다.
달성하고자 하는 목표가 명확해야 비용 최적화된 해결방안을 얻을 수 있다.
요약
5.1 도메인 관심사에서 아키텍처 특성 도출
- 도메인 관심사를 올바르게 해석하여 정확한 아키텍처 특성을 식별해야함
- 가장 흔한 안티패턴 중 하나는, 모든 아키텍처 특성을 지원하는 제네릭 아키텍처를 설계하려는 것임. 당초 의도했던 문제 영역의 해결을 시도하기도 전에 아키텍처가 너무 복잡해져버림
- 대부분의 아키텍처 특성은 핵심 도메인 이해관계자들의 의견을 듣고 도메인 관점에서 무엇이 중요한지 의견을 교환하면서 정리된지만, ==아키텍트와 도메인 이해관계자들이 서로 다른 언어로 말을 한다는 게 어려운 점==
- 도메인 이해관계자는 인수 병합, 고객 만족, 출시 시점, 경쟁 우위를 논하는데, 아키텍트는 이를 위한 아키텍처를 어떻게 구축해야할 지 모르고, 도메인 담당자는 가용성, 상호운용성, 내고장성 등을 왜 고민해야하는 지 답답할 것임
- 일반적인 도메인 관심사와 이를 뒷받침하는 아키텍처 특성을 정리한 표5.2 요구사항 아키텍처 특성 도출
- '예상 유저 수와 그에 따른 확장' 문제는 보통 요구사항 정의서에 명시되는 경우가 많음
- 도메인 지식을 알고 있기 때문에 도출할 수 있는 아키텍처 특성
- ex) 수강신청 시스템을 만들 때, 수강 신청 기간동안 학생들이 분산되어 신청할 것이라고 가정해야할까? 오픈 시점에 동시에 모든 학생이 수강신청을 하려고 달려든다고 가정해야할까?5.3 사례 연구 : 실리콘 샌드위치
- 아키텍트의 임무는 설계, 특히 구조와 관련이 있거나 영향을 미치는 것들을 찾아내는 것. 우선, 아키텍처 특성이 될 만한 것들을 명시적인 것과 암묵적인 것으로 분류함
- 명시적 특성 (ex: 유저 수)
- 확장성 : 유의미한 성능 저하 없이 다수의 동시 유저를 처리하는 능력
- 탄력성 : 순간적으로 폭증한 유저 요청을 처리
- 확장성과 탄력성의 차이 : 호텔 예약 시스템은 특별 할인 행사가 없어도 투숙객 수가 일정함. 하지만 콘서트 예약 시스템은 오픈 시점에 트래픽이 왕창 높아짐. 물론 탄력적인 시스템도 트래픽 폭증과 엄청난 동시 유저 접속을 처리할 수 있는 확장성은 필요함
- 확장성 수(scalability number)와 성능 수(performance number)
- 확장성 수와 성능 수도 함께 정의하는 것이 좋음. 성능의 기준선을 정하고 특정 수의 유저가 접속할 때 성능은 어느 정도가 나와야 수용 가능한지 정해야함
- 거의 대부분의 아키텍처 특성은 서로 영향을 미치므로 아키텍트는 서로 다른 아키텍처 특성을 상대적으로 정의해야함
- 암묵적 특성
- [[가용성(availability)]]은 시스템에서 마땅히 지원되어야 할 암묵적인 아키텍처 특성
- 신뢰성 : 시스템 접속하여 문제없이 사용
- 보안 : 모든 시스템에 공통적인 암묵적 특성
반응형
'엔지니어링 > 설계' 카테고리의 다른 글
[소프트웨어 아키텍처 101] 7. 아키텍처 특성 범위 (0) | 2024.07.09 |
---|---|
[소프트웨어 아키텍처 101] 6. 아키텍처 특성의 측정 및 거버넌스 (0) | 2024.06.25 |
[소프트웨어 아키텍처 101] 4. 아키텍처 특성 정의 (0) | 2024.06.03 |
[소프트웨어 아키텍처 101] 3. 모듈성 (0) | 2024.05.12 |
[소프트웨어 아키텍처 101] 2. 아키텍처 사고 (0) | 2024.05.07 |
댓글
이 글 공유하기
다른 글
-
[소프트웨어 아키텍처 101] 7. 아키텍처 특성 범위
[소프트웨어 아키텍처 101] 7. 아키텍처 특성 범위
2024.07.09 -
[소프트웨어 아키텍처 101] 6. 아키텍처 특성의 측정 및 거버넌스
[소프트웨어 아키텍처 101] 6. 아키텍처 특성의 측정 및 거버넌스
2024.06.25 -
[소프트웨어 아키텍처 101] 4. 아키텍처 특성 정의
[소프트웨어 아키텍처 101] 4. 아키텍처 특성 정의
2024.06.03 -
[소프트웨어 아키텍처 101] 3. 모듈성
[소프트웨어 아키텍처 101] 3. 모듈성
2024.05.12