#3 소프트웨어 아키텍처 101

99·2023년 9월 24일
0
post-thumbnail

아키텍처 특성 식별

아키텍처를 구축하거나 기존 아키텍처의 타당성을 검증할 때 제일 먼저 해야 할 일은 아키텍처 특성을 식별하는 것입니다.
주어진 문제 영역이나 애플리케이션에서 아키텍처 특성을 정확하게 식별하기 위해 아키텍트는 해당 도메인을 잘 이해하고 있어야 하며, 도메인 이해관계자들과 협력하여 도메인 관점에서 정말 중요한 것들을 결정해야 합니다.

아키텍트는 적어도 도메인 관심사, 요구사항, 암묵적 도메인 지식, 이렇게 세 가지 출처에서 아키텍처 특성을 밝혀냅니다.

도메인 관심사에서 아키텍처 특성 도출

아키텍트는 도메인 관심사를 올바르게 해석하여 정확한 아키텍처 특성을 식별해야 합니다.아키텍트는 도메인의 핵심 목표와 현재 상황을 고려하여 도메인 관심사를 '~성으로'해석한 수 , 그에 따라 정확하고 합리적인 아키텍처 결정을 내려야 합니다. 너무 많은 아키텍처 특성을 수용하면 아키텍트, 개발자가 당초 의도했던 문제 영역의 해결을 시도하기도 전에 아키텍처가 너무 복잡해져버립니다. 아키텍처 특성의 개수에 연연하지 말고 가급적 설계를 단순화하는게 좋습니다.
대부분의 아키텍처 특성은 핵심 도메인 이해관계자들의 의견을 듣고 도메인 관점에서 무엇이 중요한지 의견을 교환하면서 정리됩니다. 이런 과정이 언뜻보기에는 대수롭지 않게 느껴지지만, 아키텍트와 도메인 이해관계자들이 서로 다른 언어로 말을 한다는게 문제입니다. 아키텍트는 성능 외에도 가용성, 확장성, 신뢰성, 복원성, 감사성 등의 아키텍처 특성에도 관심을 기울여야 합니다.

요구사항에서 아키텍처 특성 도출

요구사항 정의서에 명시된 문장에서 도출한 아키텍처 특성도 있습니다. 예를 들어, 예상 유저수와 그에 따른 확장 문제는 보통 도메인 관심사에서 빠지지 않는 단골 손님입니다. 아키텍트가 알고 있는 도메인 지식에서 도출되는 특성들도 있는데, 이것이 아키텍트가 도메인 지식을 갖고 있으면 이로운 이유입니다. 아키텍트는 어떤 식으로든 요구사항까지 결정에 반영해야 합니다.

아키텍트는 아키텍처 특성을 어떻게 도출해야 할까요? 우선, 아키텍처 측성이 될 만한 것들을 명시적인 것과 암묵적인 것으로 분류합니다.

명시적 특성

명시적 아키텍처 특성은 필요한 설계의 일부로서 요구사항 정의서에 기술됩니다.
확장성, 즉 유의미한 저하 없이 다수의 동시 유저를 처리하는 능력이 무엇보다 중요한 아키텍처 특성으로 보입니다. 요구사항 정의서에 확장성이 등장하는 것은 아니지만, 예상 유저수만 보더라도 그렇게 명시된 것이나 다름 없습니다. 이처럼 아키텍트는 종종 도메인 언어를 엔지니어링 언어로 해독해야 합니다.
순간적으로 폭증한 유저 요청을 처리하려면 탄력성도 필요합니다.
요구사항 정의서에 도출한 세 번째 아키텍처 특성은 바로 성능입니다.

암묵정 특성

요구사항 정의서에 따로 없는 아키텍처 특성도 있지만 이들은 각각 중요한 설계 요소가 됩니다.
가용성은 시스템에서 마땅히 지원되어야 할 암묵적인 아키텍처 특성으로, 유저는 사이트에 접속할 수 있어야 합니다. 유저가 사이트에 방문해서 시스템을 문제없이 사용하려면 신뢰성 역시 반드시 필요합니다. 보안은 모든 시스템에 공통적인 암묵적 특성입니다. 안전하지 않은 소프트웨어를 원하는 사람은 아무도 없습니다. 아키텍처 특성은 서로 연관되어 움직이므로 중요도에 따라 우선순위는 달라질 수 있습니다.마지막 아키텍처 특성으로는 요구사항 곳곳에 해당하는 맞춤성을 꼽을 수 있습니다. 여러 부분을 유저의 의도에 맞게 다시 정의해야 하므로 커스터마이징이 원활하게 지원되는 아키텍처가 필요합니다.

하지만 아키텍처 특성을 선택하는 문제에 있어서 정답은 없으며 오직 잘못된 선택만 있을 뿐이라는 점을 명심하세요

아키텍처에서는 틀린 답은 없고 값비싼 답만 있습니다.

아키텍처는 구조적 컴포넌트를 나타내지만 설계는 아키텍처 내부에 속합니다.

아키텍처에서 최고의 설계는 없다. 오직 나쁜 것 중에서 제일 나은 트레이드오프들만 있을 뿐

참고자료
소프트웨어 아키텍처 101

profile
이동의 새로운 패러다임 turtle입니다.

0개의 댓글