태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

티스토리 툴바


"올바른 성장과 따뜻한 나눔"이 있는 넥스트리
아키텍트는 비즈니스 목표에 맞는 시스템 얼개를 만들기 위해 기술과 관련된 수많은 의사결정을 하는 사람입니다. 이해관계자 사이에서 정당성(rightness), 타당성(rational)을 바탕으로 이해관계를 조율하고 설득해야 하는 올바른 "정치"를 해야 합니다. (제가 학교에서 배운 '정치'는 나쁜 개념이 아니었습니다.)

반면 회사의 제품 영업담당자는 효과적인 마케팅과 판매활동을 통해 이윤을 창출해야 하는 "경제"적인 역할을 담당합니다. 맨발로 지내온 아프리카 원주민에게 구두를 팔고, 에스키모 인에게 냉장고를 파는 영업인에게 '사기 쳤다'고 이야기 하지는 않습니다. 오히려 새로운 시장을 개척했다고 합니다.

그런데 우리 세계에서 이 두 역할의 이해관계가 맞아버리면 문제가 발생합니다.


신참 때 경험이 생각납니다. 운좋게도 3년차쯤 되던 때에 꽤 큰 프로젝트의 기술리더(그 당시는 아키텍트라는 말을 듣기 어려웠습니다)를 담당했습니다. 그런데 제가 속한 회사는 SI도 병행하는 제품 벤더였습니다. 객체지향 DBMS, CORBA 관련 제품이 주력이었고 그 프로젝트가 시작 될때쯤 GemStone이라는 WAS의 판권도 가지게 되었습니다.

회사의 제품들을 이용하여 소프트웨어 구성을 하다가 다음과 같은 문제에 봉착했습니다.
우선 GemStone은 EJB 스팩을 준수하는 WAS 였습니다. 그런데 EJB의 저장모델(EntityBean, Transaction 등)이 관계형데이터베이스(jdbc)를 많이 고려한 스팩이라 객체지향 DBMS와 궁합이 맞지 않았습니다.
게다가 GemStone에는 자체 데이터베이스 저장소를 가지고 있었습니다. 그리고 EJB 자체에 원격호출에 대한 부분이 있기에 CORBA가 차지할 자리가 별로 없었습니다.
이 모든 제품을 적용하면 이상한 그림이 나온다고 판단되어 영업부장님께 말씀드렸습니다. 그러나 신참 개발자가영업부장에게 이 제품을 빼는 게 좋겠습니다라고 강력히 이야기하는 데에는 한계가 있더군요.

결국 객체지향데이터베이스는 일부분만 사용하고 대부분은 관계형데이터베이스를 사용했습니다. GemStone이내장한 저장소는 아무도 모르는 체 지나갔으며 CORBA는 어디에 적용했는지 기억조차 나지 않습니다.
억지로 회사 제품의 기능을 적용하려고 필요없는 노력을 많이 했던 것 같습니다.

IEEE 1471[각주:1] 아키텍처 서술 권고를 살펴보면 아키텍처는 시스템이 갖는 미션에서 출발합니다. 미션이 완전히 동일한 시스템은 없을 것이며 따라서 각 시스템이 가져야 할 아키텍처는 고유합니다. 모든 시스템의 목표를 만족시켜 줄 만능의 아키텍처나 솔루션은 존재하지 않습니다.

IEEE 1471

올바른 정치를 해야하는 아키텍트가 영업담당자와 이해관계가 맞아버리면 아키텍처를 위한 대안은 한가지로 좁혀질 가능성이 큽니다. 여러가지 대안 솔루션을 준비하지 않은 아키텍처는 위험합니다. 우리가 가는 길은 미지의 세계인 경우가 많고 가다보면 앞에 커다란 바위로 막혀있을지도 모릅니다. 대안이 없으면 그 바위를 뚫고 갈 수 밖에 없습니다. 훌륭한 팀웍으로 몇날 몇달 밤을 새가며 장애물을 뚫고 목표에 도달할 수도 있겠지만 많은 전사자가 속출할 수도 있습니다. 더 나쁜 것은 고객의 경쟁사는 이미 저 멀리 앞서가고 있다는 사실입니다.

소프트웨어 아키텍처의 중요성이 점점 커갈수록 아키텍트의 힘도 커질 것입니다. 힘이 커지면 관련된 이해관계도 복잡해집니다. 아키텍트는 올바른 "정치"를 하기 위해 정직할 필요가 있습니다.

정경유착의 고리를 끊고, 특정 제품에서 자유로울 필요가 있습니다.


  1. 소프트웨어 위주(software-intensive) 시스템의 아키텍처 작성을 위한 IEEE 권고안이다. 권고안은 시스템, 미션, 환경을 바탕으로 이해관계자의 관심(concern)을 아키텍처로 어떻게 표현할 지에 대한 내용을 다룬다. 참조: http://en.wikipedia.org/wiki/IEEE_1471 [본문으로]
저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 행복한아빠