우리나라에서 소프트웨어 아키텍처를 만드는 아키텍트에게는 너무나 많은 짐이 부여되어 있고, 또한 아키텍트 본인 스스로도 수많은 사례들을 찾아서 그 방법들을 문제 해결에 적용해 보려 한다.
너무 많은 사례가 타인 합리와에 의해 자기 합리화가 된 것이다. 많은 사례를 적용한다는 것은 그만큼 프로젝트 이해 당사자들에게는 큰 짐이 아닐 수 없다. 어떻게 하면 핵심적인 요소들만 추려서 부담을 최소화하고 아키텍처를 유연하게 할지의 노력이 분명 필요해 보인다.
그리고 “소프트웨어 아키텍트가 알아야 할 97가지(원제: 97 Things Every Software Architect Should Know)“라는 책의 예에서 보듯이 Best Practices는 너무도 많다. 중요한 것은 자기 것으로 꾀어야 하는 것이다. 그런 차에 아키텍트가 알아야 할 것들 중에서 나름 잘 요약된 내용이 있어서 소개한다.
아키텍트가 알아야할 것 중에 가장 중요한 가치로 생각되는 것들을 한장의 시트로 정리한 Software Architecture cheat sheet라는 아티클이다. 옳고 그름, 선택의 결정은 여러분이 하지만, 되새겨 볼 만한 글이어서 여기 블로그에 정리해 본다.
아래 슬라이드는 Jacob Gorban이 스스로 정리한 한장의 시트이고, 이것을 인쇄하여 벽에 붙여 놨다고 한다.
그럼, 위의 요점들에 대한 내용을 설명한다.
Is this a “Good Idea”?(이것은 좋은 아이디어인가?)
이것은 Avoid “Good Ideas”의 부분을 인용한 것이다.
좋은 아이디어에 대해 간과해서는 안되는 것이 그것이 좋다는 것이다. 나쁜 아이디어는 누구나 인식하고 거부 할 수 있다. 좋다는 것은 비즈니스 요구사항에 충족하는데 필요한 것이 아닌 애플리케이션 내에 요구사항을 벗어나거나 범위나, 복잡성 등의 부적절한 노력의 낭비 문제를 야기시킨다.
다른 한편으로, 그것이 정말 필요한 것인지, 제품에 불필요한 기능이 복잡하게 추가되는 현상(feature creep)은 아닌지 생각해봐야 한다. 소프트웨어의 복잡성은 기하급수적으로 증가하게 되고 기능이 두배가 된다면 코드는 기능의 두배이상으로 복잡해 진다.
DRY. Don’t Repeat Yourself.(반복하지 마라.)
DRY(코드든, 문서든 중복없이 간결하게)는 잘 알려진 소프트웨어 디자인 원칙이다. “Pragmatic Programmers”에서 “시스템에서 모든 지식은 단일적이고(중복이 없고), 애매하지 않고, 정말 신뢰할수 있게 표현되어야 한다.” 설명하고 있다.
DRY는 이미 나에게 본능적으로 뿌리깊게 베어 있다. 아직도 내가 열정적인 아이디어를 중간에 잊지 않을려고 목전에서 상기시키고 있다.

