einar landre넬슨 제독이 1805년 트라팔가에서 프랑스와 스페인 함대를 격파한 이후, “분할 후 정복(Divide and Conquer)”은 복잡하고 어려운 문제를 다루는 슬로건(상징)이 되었습니다. 동일한 의미를 가지는 좀더 친숙한 용어로 “걱정 거리의 분리 (Separation of Concern)”가 있습니다.

걱정 거리의 분리로부터 우리는 캡슐화를 얻게 되고, 캡슐화로부터 우리는 경계와 인터페이스를 얻게 됩니다.

아키텍트의 관점에서, 가장 어려운 부분은 동작하는 시스템을 구축하기 위해 필요한 적당한 인터페이스를 정의하고, 경계를 정하는 자연스러운 위치를 찾는 것입니다.

이것은 거대한 엔터프라이즈 시스템에서는 특히 어려운 일입니다. 이런 상황에서, “결합도는 낮추고, 응집도는 높여라”와 “정보 교환이 자주 발생하는 영역들은 나누지 말아라”와 같은 오래된 명언이 몇 가지 지침을 제공합니다. 하지만 명언들은 어떻게 쉬운 방법으로 이해당사자들에게 가능성 있는 해결방안과 문제들을 대해 소통할 수 있는지 알려주지 않습니다.

계속 읽기

제가 이글을 쓴 이유는  저의 아이디와 패턴의 남용에 대해서 같이 언급하셔서, 큰 상처를 받았습니다. 제가 패턴쪽으로 많은 활동을 하고 있었는데요.

직접 대화를 나누어 오해를 풀었습니다.

저를 향한 글인줄 알았습니다.  직접 대화를 통해 그것이 아니었음을 알았습니다.  제가 너무 민감하게 대했던것 같습니다.

toby님에게 모욕을 당했다는 말은 정중히 사과하겠습니다.

다행히 toby님과 대화는 매우 산뜻하게 끝나고, 심지어 여러가지 mission을 주셨습니다. 🙂

이번 논쟁은 결국 몇분이 말씀해주신것 처럼, 각자가 느낀 도메인의 경험의 차이 그리고 생각의 차이라고 이해해 주셨으면 합니다.

디키 님의 말처럼 반론을 다는것 보다는 다시 저의 의견을 말씀 드리는 것이 올바른 글쓰기라고 생각하여 다시 글을 씁니다.

Ripple Effect (파문효과)에 대한 생각들..

계속 읽기

SoC 에대한 애기를 그만두길 원했으나, 영회님이 또 글을 포스팅 하셔서 저의 생각을 적습니다. 일단 잠이 오지 않습니다.  🙂   누워도 누워서 잘려고 해도 계속 마음이 아파옵니다.

일단 SoC 애대한 애기는 어느 정도 마무리 해야 될듯 합니다. 더 글을 적는다고 해도. 참 이게 소모적인 논쟁만 될까하고 생각이 듭니다.

영회님이 적은포스트 입니다.  SoC –  Separation is not components.

이 글을 보면 저의 의견과 약간 대치 됩니다. Concern이라는 것은 Component가 될수도 있고 아닐수도 있습니다.

Component라는 단어에 대한 정의를 무얼로 보느냐에 중요하겠죠. 솔직히 말해서 Separation의 단위를 배포의 문제가 중요시 되는 경우 얼마든지 Component 단위로 볼수가 있다는 것이 저의 생각입니다.

.NET Framework Design Guidelines에 언급한 것처럼, Component를 하나의 진화되는 유닛 (a evolving unit)으로 정한 경우죠.

그리고 Separation에 영향을 미치는 Concern들은 결국 그 프로젝트에서 가장 적합한 요소들이 상호 균형을 맞추어 정해진다고 봅니다.

그게 생각의 범위든, 부하의 분리든, 배포의 문제든  기타 등등.

저 같은 경우는 배포가 중요시 되기 때문입니다.   Robert C. Martin의 Principles of Package Architecture가 제가 하고 있는 프로젝트와는 밀접한 관련이 있기 때문입니다.

계속 읽기

Seperation of Concerns (걱정거리들의 분리)   줄여서, SoC 라는 용어를 들어 보셨나요?    걱정 거리또는 관심거리의 분할(분리)라고 부르는 데요 🙂

각 모듈마다 특정 문제에만 집중해서, 해결할 수 있게 나누어서 생각하자는 것입니다.  N – Tier 기반의 Application이 좋은 예라고 할 수 있을 겁니다. (물론 성능적인 이슈도 있지만요)

하지만 이 철학으로 인해 너무나 잘게 클래스들이 쪼개져서,  실제 프로젝트를 할때 기능 하나를 추가하기 위해 여러개의 객체를 수정해야 하는 엄청난 고통을 가져오는 상황이 발생합니다 발생하기도 합니다.

계속 읽기