SW/클라우드 서비스 아키텍처

아키텍처 : 설계의 일반 원리 : 개념, 개요, 정의

얇은생각 2020. 4. 25. 19:30
반응형

설계의 일반 원리

아래 그림은 문제해결에 사용되는 일반적인 접근 방법의 종류를 보여줍니다.

 

아키텍처 : 설계의 일반 원리 : 개념, 개요, 정의


먼저 주어진 문제를 이미 해결책이 알려져 있는 문제로 변형하는 방법입니다. 이런 방법은 그 해결책을 원래의 문제에 대한 직접적인 해결책으로 쉽게 변형할 수 있으면 원래의 문제를 해결하기 위한 좋은 방법이 됩니다. 그림의 위 부분은  이 경우를 보여줍니다.

이미 존재하는 해결책을 이용할 수 없는 경우 원래의 문제를 더 쉬운 문제들로 나누어 해결할 수 있다면, 그 하위 문제들에 대한 해결책들을 합성하여 원래의 문제에 대한 해결책을 만들 수 있습니다. 위 그림의 중간 부분은 이 경우를 보여줍니다.

만일 문제 해결에 기존의 해결책을 활용할 수 있으면 기존의 해결책을 사용할 수 없는 부분에 대해서만 새로이 해결책을 만들고, 새로운 해결책들과 기존의 해결책들을 통합하여 원래의 문제를 해결할 수 있습니다. 위 그림의 하단 부분은 이 경우를 보여줍니다.

 

 

분할 정복 방법

일반적인 문제 해결의 방법으로 분할 정복 방법에서는 주어진 문제를 더 작은 하위 문제로 분해하고, 하위 문제는 다시 더 작은 하위 문제로 분해하여 결국 더 이상 분해가 필요 없는 많은 작은 문제들로 나눕니다. 그런 뒤 하단에 그림이 보여주고 있는 것처럼 최종적인 문제들에 대한 해결책들을 결합하여 그 상위 문제의 해결을 만드는 과정을 반복하여 최종적으로 원래 문제에 대한 해결을 얻습니다.

이와 같이 동일한 방법을 여러 단계에 걸쳐 반복적으로 적용하는 방식을 재귀적 방식이라고 부르는데, 재귀적 분할정보 방식은 크고 복잡한 시스템 설계 문제에 적용하기 좋은 분할 정보 접근 방식입니다. 아키텍처 설계를 포함하여 모든 설계 활동은 합성과 분석의 교차 반복으로 이루어집니다. 합성은 어떤 해결책을 혹은 결과물을 떠올리는 활동이고, 분석은 이 해결책 혹은 결과물이 기대되는 특징들을 가졌는지 따져보는 활동입니다.

분석 결과가 기대에 미치지 못하면 기대를 충족시킬 수 있는 개선된 혹은 또 다른 해결책을 합성한 뒤 이 합성 결과를 다시 분석해야 합니다. 합성을 위해서 경험적 지식을 사용할 수 있지만, 마땅히 적용할 경험적 지식이 없는 경우 설계자의 창의성에 의존해야 합니다. 설계에 경험적인 지식이 적용될 수 있음은 문제 해결을 위하여 이미 발견된 해결책을 활용할 수 있음을 의미합니다.

이러한 절차를 나타내기 위하여 하향적인 절차인 분할 정복은 상하향식 절차로 수정되어야 합니다. 즉, 이러한 문제해결 방식에서는 부분적인 문제에 대해서는 알려진 해결책을 그대로 사용하고, 다른 문제들에 대한 해결은 이 해결책을 전제로 하여 그에 맞추어 만들어집니다.

 

 

아키텍트의 자세

훌륭한 아키텍트는 이와 같은 일반적인 설계 원리 외에도 또 어떤 설계 원리가 소프트웨어 아키텍처 설계에 이용될 수 있는지에 대해 열려 있어서 그런 원리가 발견되면 그 타당성을 면밀히 따지고, 적절한 경우 수용할 준비가 항상 되어 있어야 합니다.

반응형