태터데스크 관리자

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

태터데스크 메시지

저장하였습니다.

티스토리 툴바


"올바른 성장과 따뜻한 나눔"이 있는 넥스트리
우리는 꿈에서 한국말을 사용합니다. 그리고 생각을 하더라도 한국말을 이용하여 생각합니다. 물론 영어권에 사는 사람들은 영어로 꿈을 꾸고 영어로 사고를 하겠지요. 문화의 특성 때문에 각 나라에서 사용하는 언어가 표현할 수 있는 정도는 매우 다양합니다. 예를 들면 에스키모가 표현하는 "눈(雪)"은 수십가지가 됩니다. 우리가 눈에 대해 상상할 수 있는 것과 에스키모인이 눈에 대해 상상할 수 있는 것은 그 차이가 크겠지요.

마찬가지로 우리가 사용하는 기술이 가능성을 제한합니다. 물론 자기가 잘 알고 있는 기술로 안되는 것 없습니다. 다만 시간이 좀 걸리고 비용이 올라가는 것일 뿐이죠.


간단한 아키텍처 vs 복잡한 아키텍처?

이 글은 제가 제품을 개발하면서 느낀 부분이고 새로운 서비스를 만드는 것을 가정하고 쓴 글입니다. 모든 곳에 적용될 수는 없습니다.

여기서 이야기하는 간단한 아키텍처는 최소한의 기술만 사용하는 간단한 구조의 설계방식을 이야기합니다. 이러한 아키텍처를 사용하면 초기 생산성이 높고 유지보수가 편해 보입니다. 그러나 결국 어려운 서비스 구현에서 한계를 갖고 편법이 동원되는 경향이 있습니다.

반면 복잡한 아키텍처는 좀 더 복잡하고 자동화되며 제약과 규칙이 많은 아키텍처를 이야기합니다. 많은 레이터나 티어 그리고 프레임워크들로 포진된 아키텍처들이죠.
이렇게 학습곡선이 높은 기술을 사용하면 초기 생산성이 낮아지고 유지보수 비용 높아지지만 구현의 난이도가 높은 기능도 쉽게 해결된다.
(초기 생산성 및 유지보수 비용은 논란거리입니다. 많은 프레임워크가 이 비용을 낮춘다고 이야기하지만 학습곡선, 인력수급, 프레임워크 유지비용 등 이야기할 거리가 많아 단정짓기는 어렵습니다. 확실한 건 복잡하고 거대한 아키텍처가 단순한 아키텍처보다 유지하는데 비용이 많이 드는 사실입니다.)


어느 것을 선택해야하나?

서비스 초기에는 간단한 아키텍처가 당연히 유리
합니다. 우선 초기에는 비즈니스 성공을 위한 time to market이 중요하고 비즈니스 향방에 따라 민첩하게 움직일 수 있는 간단한 아키텍처가 유리합니다.

비즈니스 규모가 성장하면 더 이상 시스템이 따라가기 어려운 때가 올 것입니다. 이 때가 아키텍처 개선이 필요한 때입니다. 어느 정도 성장하면 미래의 비즈니스 방향과 규모가 예측될 것이며 그 비즈니스 목표를 이루기에 무리없는 좀 더 복잡한 아키텍처로 이동합니다.


초기부터 복잡한 아키텍처를 적용할 경우

그러면 애초부터 견고한 아키텍처를 가지고 가는 것이 맞지 않냐는 반문을 할 수 있습니다. 비용이 많이 들어 초기부터 투자하기 어렵다니 이런 것은 빼더라도 초기부터 복잡하고 견고한 아키텍처를 적용하기 어려운 이유는

첫째 미래는 예측하기 어렵습니다. 초기에 구축한 아키텍처가 미래에 필요한 기능에 적합한 아키텍처라고 장담할 수 없습니다. 비즈니스가 예측한 방향으로 가지 않을 경우 아키텍처를 고쳐야 할 수도 있습니다.
 
둘째 비즈니스 향방에 따라 빨리 쫓아가기 어려울 수가 있습니다. 많은 경우 프레임워크나 아키텍처가 견고해 질수록 여러가지 제약과 규칙이 있어 다양한 방법의 기술적인 시도가 어렵습니다. 이는 대기업 조직이 그 규모를 지탱할 수 있는 모양으로 견고하지만 비즈니스 민첩성에 불리한 이유와 같습니다.
 


이런 전략을 피해야 할 경우

- 차세대 프로젝트
이런 프로젝트는 이미 비즈니스는 거의 확정되어 있고 그간의 문제를 해결하고 업그레이드 하는 경우입니다.
즉 위에서 말한 성장을 위한 거대한 구조개선인 경우입니다. 이런 경우 쉬운 기술로 접근할 것이 아니라 비즈니스의 목표를 이룰 수 있는 견고한 기술과 아키텍처가 필요합니다.
 
- 이미 전사 아키텍처가 결정된 경우
당연히 그냥 따르십시오. 다양한 기술구조를 가진 아키텍처는 비용이 많이 듭니다. 아키텍처의 변화가 필요하다면 POC(또는 스파이크)와 파일럿을 통해 해결하고 점차 비즈니스 요구가 있는 곳부터 바꿉니다.


비즈니스 규모에 맞는 아키텍처

무조건 어려운 기술과 멋진 아키텍처가 좋지도 않습니다. 그렇다고 쉽고 가벼운 아키텍처가 무조건 좋다는 이야기도 아닙니다.

회사가 처음에는 낮은 비용의 민첩성을 요구하는 구조가 필요하고 회사가 성장하면 규모를 지탱할 수 있는 견고한 구조가 필요합니다. 작은 회사가 대기업의 구조를 가지는 것도 불리하고 대기업이 적은 비용의 관리 구조를 가지는 것도 역시 불가능합니다.
 
목표 시스템의 비즈니스 규모에 따라 아키텍처도 변해야 합니다.


우연히... JavaService Net 에서 VO를 써야한다 말아야한다 논쟁하는 쓰레드를 보았습니다. 양쪽 다 일리가 있지만 어떤 상황과 가정없이는 끝나지 않는 논쟁같습니다.
아키텍처 논의나 결정에서는 Mission, Environment, Stakeholder과 같은 상황과 가정을 바탕으로 타당성(Rational)을 따져야 합니다. 기술로만 이야기하면 끝없는 논쟁에만 빠집니다.



저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 행복한아빠
"올바른 성장과 따뜻한 나눔"이 있는 넥스트리
아키텍트는 비즈니스 목표에 맞는 시스템 얼개를 만들기 위해 기술과 관련된 수많은 의사결정을 하는 사람입니다. 이해관계자 사이에서 정당성(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 행복한아빠
"올바른 성장과 따뜻한 나눔"이 있는 넥스트리
아키텍트는 흔히 고객()의 비즈니스 목표를 이루어주기 위한 최적의 아키텍처를 만든다고 착각하는 경우가 있습니다. 나도 역시 내 역할에 충실하게 일한다고 생각하고 이런 착각에 빠진 경우가 많습니다.

몇 일전 실력있는 고객과 이런 저런 이야기를 나누고 느낀 점이 있어 글을 올려봅니다. 고객(甲)과 수행업체(乙)의 대화입니다.
괄호는 혼자말입니다. ^^

乙: 우리 프레임워크를 사용하면 생산력 끝내줍니다.

: 다른 업체가 그 프레임워크를 사용하게 되어도 동일한가요?
: 음 얼마간의 교육이 필요하겠죠.
: 우리가 인수인계받아서 사용해도 생산력 좋겠죠?
: 마찬가지입니다. 정기적인 교육이 필요합니다. 게다가 무료입니다. 얼마나 좋아요.
: 우리는 다른 것도 써야 하고 업무도 해야 하니 학습곡선도 고려해 주세요. 그런데 프레임워크 소스는 주는 건가요?
: 아뇨 우리회사가 땅파먹고 사는 회사는 아니지 않습니까? 사용권만 줍니다.
: 허~ 왜 우리 시스템에 시한폭탄을 심어놓는다는 기분이 들죠?

乙: 우리는 여러분에게 필요한 프레임워크 구성을 풀세트로 제공합니다.

: 뭐 이리 복잡하나요? 이중 이번에 쓸게 몇 개나 되죠?
: 이번에는 20개중 3개정도 사용합니다. 그러나 내년에는 꼭 필요할 겁니다. 제 예측은 빗나가지 않아요.
: 음. 그럼 이 프레임워크를 올리려면 서버 스펙은 어떻게 되야 하나요?
: 네 이 정도면 현재의 4배정도 용량은 필요합니다.

乙: Hibernate나 JPA를 사용하면 Database 계층과 분리됩니다.

: 이런 방식으로 하면 DBMS 바뀌어도 끄떡없습니다. 더 이상 DB 벤더에 휘둘릴 염려없습니다. 환상적이죠?
: 우리는 애플리케이션 뒤집는 비용보다 DBMS 바꾸는 비용이 몇 배 더 듭니다.
     데이터베이스 전환 비용은 위험하기도 하지만 끔찍한 일입니다. 우리가 DBMS 바꿀 가능성이 얼마나 될까요?
     아마 DB 벤더 바꿀정도의 상황이 오면 아마 애플리케이션도 다시 만들걸요?
: ...
    그래도 벤더에 휘둘릴텐데요.
: (그 벤더가 너인것 같다.)

乙: 이 도구를 사용하면 몇 분만에 프로그램 하나가 나옵니다.

: 우리는 유지보수하는데 시간과 돈을 더 많이 씁니다.
     빨리 만드는 것도 중요하지만 우리가 고치고 새기능을 붙이기 쉬운 방법으로 만들어주세요.
: 시간내에 프로젝트를 마칠 수 있다니까요? (우리는 빨리 만들고 떠나고 싶어요...)

乙: 이제는 SOA를 하지 않으면 도태됩니다.

: 우리는 단지 내부에서 사용할 간단한 회계업무 프로그램을 만들건데 그런게 필요한가요?
     그런데 서비스 그 기술 쓰면 서비스가 좋아지기는 하나요? (시스템이 친절해지기라도 하나요?)
: SOA 하면 기술적으로 이래 좋고 저래 좋다니까요? (아 이렇게 후진 아키텍처를 어디에 내밀어. 내 경력의 오점이야)


문제는

아키텍처와 주로 의견을 나누는 갑도 IT 분야의 담당자라는 점입니다. 갑의 IT 담당자와 필연적으로 이야기를 해야 하지만 갑의 IT 담당자도 자기 분야에서 좀 더 많이 알고 싶어하고 새로운 기술이 좋다는 맹목적인 시각을 가질 경우도 있습니다. 이런 경우 아키텍트는 갑의 IT 담당자를 설득하기 쉬워집니다.



근본적인 문제는 아키텍트가 비즈니스 목표를 제대로 이해하지 않고 있다는 겁니다. 아키텍트는 시스템이 죽지 않고 씽씽 돌아가는 것보다는 이걸 만들어 고객이 원하는 게 이루어질까를 더 고민해야 합니다.

나를 위한 아키텍처가 아니라 고객(甲)을 위한 아키텍처를 만듭시다.


저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 행복한아빠
"올바른 성장과 따뜻한 나눔"이 있는 넥스트리
아키텍트는 비즈니스 목표(요구사항)를 정의하는 고객(또는 경영진)과 이를 실현하기 위해 실제로 일하는 개발자 사이의 가교역할을 해야합니다. 따라서 아키텍트는 두 가지 언어로 대화해야 합니다. 고객과 비즈니스 용어로 이야기해야하고 그리고 개발자와는 그들의 용어로 이야기해야 합니다.

흔히 아키텍트 경력을 가지면 고객과의 의사소통이 중요하다는 것을 누구나 알고 있습니다. (실천을 안 할 뿐이지..) 그러나 경력이 있는 아키텍트가 놓치는 부분이 개발자와의 의사소통 방법입니다.

내공

흔히 개발자 사이에는 내공이라는게 존재합니다. 개발자 사이에서 사용하는 도구를 능숙하게 다루거나 코딩을 뷰티풀하게 작성하거나 어려운 문제나 버그를 해결하면 보이지 않는 존경심을 갖게 됩니다. 인정하는 거죠.
그 반대로 제대로 하지 못하면서 말로만 떠드는 개발자는 오래 지나지 않아 모든 개발자가 금방 알아버립니다.


인정받기

장악하는 방법이라고 말했지만 사실은 아키텍트가 개발자 그룹에게 인정받는 방법입니다. 그 방법은 자신의 내공을 시연하는 겁니다. 자신이 만든 아키텍처 초안의 프로토타입 일부를 직접 구현하거나 개발자가 프로그램 문제에 부딪혔을 경우 해결해 주는 겁니다.

이미지출처

사실 많은 내공이 필요없습니다. 오랜 기간 코딩에서 손놓거나 프로그램하는 시간이 점점 줄어드는 환경이라면 깊은 내공을 보여주기는 더욱 힘들겠죠. 사실 한창 물오른 후배들이 훨씬 잘 하는 경우가 많습니다.
조금만 보여주세요. 후배들도 우리 상황을 이해할겁니다. 그러나 조금이라도 보여주게 되면 말로만 떠드는 아키텍처라고 생각하지 않고 뭔가 할 줄 아는 아키텍트라고 인정하고 그들의 세계에 끼워줄 겁니다.

한 줄의 프로그램도 못 만드는 아키텍트를 개발자가 존경하거나 인정하는 일은 그리 흔하지 않습니다.


자신의 역할 인정받기

파블로 피카소의 그림을 어린 아이의 그림 같이 유치하다고 폄하하지 않습니다. 물론 깊은 이유도 있겠지만 피카소의 어린 시절 그림을 보면 그림의 천재였다는 것을 알 수 있기 때문입니다.


자신이 개발자의 감각이 살아있다는 것을 보여주고 지금은 역할에 의해서 좀 더 고차원적인(추상적인) 그림을 그린다는 사실을 알려줘야 합니다. 그리고 개발자의 언어로 이야기할 수 있다는 사실도 알려주십시오.


아키텍트가..

자신이 그린 그림이 구체적으로 어떻게 돌아가는지 이해하지 못한다면 그 역할을 올바로 수행할 수 있을까요?
아키텍트는 페이퍼 워크 하는 사람이 아닙니다.

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 행복한아빠
"올바른 성장과 따뜻한 나눔"이 있는 넥스트리
오랜만에 아키텍처 이야기를 하게됩니다. 요즘 제품 릴리즈 일정이 얼마 남지 않고 새로운 모듈을 위한 아키텍처 잡는데 정신이 없다가 내가 지금 잘하고 있는지 뒤돌아 볼 기회가 생겼습니다.
아키텍처에 대한 조금은 낭만적인(?) 이야기가 될 것 같네요. 뭐 이렇게 되면 좋겠다만...
이미지출처


사람을 위한 아키텍처

소프트웨어 아키텍처는 소프트웨어를 이용하여 목적하는 바를 이루도록 소프트웨어 얼개를 잘 구성하는 일입니다. 특히 품질을 많이 강조하는데 좀 더 넓게 볼 필요가 있을 것 같습니다.
먼저 소프트웨어를 사용하는 사람들, 즉 사용자를 위한 소프트웨어 아키텍처가 되어야 합니다. 멋지게 보이는 다단계 계층이나 기업 서비스 버스 같은 것으로 인해 사용자가 불편을 느끼면 뭔가 이상하게 흘러가는 것이 되겠죠. 아키텍트는 자신이 아는 지식과 기술을 마음껏 써보고 싶은 유혹현학적인 아키텍처 문서 작성의 유혹에 빠지지 않는 것은 매우 중요합니다.


소프트웨어를 만드는 사람을 위한 아키텍처

소프트웨어를 만들거나 운영하거나 유지보수하는 사람이 행복하게 느낄 때 그 소프트웨어는 늘 건강할 겁니다. 사람이나 동물이나 심지어 사물들도 골치거리로 여기게 되면 그 대상은 뭔가 잘못될 가능성이 높습니다.
소프트웨어를 다루는 사람들이 행복해지는 아키텍처를 만드십시오. 괜히 필요없는 규칙을 넣고 그냥 멋져 보이는 기술을 써서 소프트웨어를 다루는 사람들이 그것을 미워하게 만들지 마십시오.

이미지 출처

사람들간의 관계를 위한 아키텍처

이제는 대부분의 시스템들이 한 사람에 의해 만들어지거나 운영되지  않습니다. 굉장히 많은 사람들의 협업을 통해 이루어집니다. 협업을 촉진시키고 불화가 생기지 않는 아키텍처를 만들도록 노력하십시오.
아무리 이상적인 구조라 생각되도 책임이 모호한 모듈을 만들지 마십시오. 그 모듈(혹은 컴포넌트)은 결국 사생아 취급을 받고 죽게될 것입니다. (소프트웨어 세계는 그것을 쓰지 않더라도 돌아갈 수 있는 방법이 얼마든지 있습니다. 결국 이상하게 되겠지만요.)

콘웨이의 법칙을 무시하지 마세요. 이런 경우에 부딪혔을 경우 조직의 역할을 조정하도록 노력해야 합니다. 이것이 전제가 되지 않고는 결국 소프트웨어 모습은 조직의 모습을 반영한 의도하지 않은 형태로 변할 겁니다.
콘웨이 법칙 (Conway's law)
4개의 팀을 가진 조직이 있으면 4단계로 처리하는 컴파일러가 만들어진다.


저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 행복한아빠
"올바른 성장과 따뜻한 나눔"이 있는 넥스트리
소프트웨어 아키텍처를 이야기하다보면 건축에서 이야기하는 아키텍처를 메타포로 삼았다는 것을 알 수 있습니다. 특히 아키텍처를 이야기할 때 패턴을 빼 놓을 수 없는데 패턴 언어를 만든 크리스토퍼 알렉산더는 패턴을 공부한 사람이나 아키텍트는 모두 알고 있을 겁니다.


패턴언어

알렉산더는 캠브릿지 대학에서 화학, 물리학, 수학을 공부하고 하버드에서 건축으로 박사학위를 받고 MIT에서 전산학, 교통이론을 하버드에서 인지학 연구를 한 천재로 불리는 사람입니다.
이 사람은 건축에서 자주 발생하는 문제상황과 그에 대한 해결책을 패턴으로 정리하고 각 패턴에 이름을 붙여 패턴언어라는 것을 만들었습니다. 소프트웨어에서의 대표적인 디자인 패턴인 GoF도 이 패턴 언어의 영향을 받았습니다. 물론 소프트웨어에서는켄트 벡이 선두주자 역할을 했지만요...


알렉산더는 패턴을 정의하면서 건축이 인간의 생활에 어떻게 영향을 주는지 256가지의 사례로 설명하는 방식으로 패턴을 정리했습니다. 여기서 중요한 점은 패턴을 결정하는 중요한 동인은 인간의 생활 패턴이라는 겁니다.


아키텍처는 품질만 해결하면 된다?

소프트웨어 요구사항을 기능 요구사항과 품질 요구사항으로 나눈다면 아키텍트가 해결해야할 문제는 품질 요구사항입니다. 다시 말해 기능 요구사항은 주로 비즈니스 분석가에 의해 이루어지고 해결된다는 말이 됩니다.
그러면 아키텍트는 시스템의 기능과 비즈니스를 잘 몰라도 상관이 없을까요?
아키텍처를 구성하는 목적은 비즈니스 목표를 달성하기 위한 높은 품질의 소프트웨어 얼개를 만드는 것입니다. 이 때 아키텍처는 비즈니스의 목표나 주변 상황에 따라 영향을 받는 부분이 상당히 많습니다.
알렉산더가 건축 아키텍처를 위한 패턴언어를 정리할 때 중요한 동인은 그 집에서 살아야 할 인간의 생활 패턴이었습니다. 뿐만 아니라 주변의 환경같은 것도 신경을 써야겠죠. 즉 집 자체가 견고하고 이쁘게 지어져야 하는 것 뿐만 아니라 그 집을 거주지로 할 인간이 편하게 살 수 있는 구조를 만드는 것이 중요합니다.


소프트웨어를 만드는 것은 비즈니스를 시스템을 이용하여 실현하는 것이 목적입니다. 그 기본 얼개를 만드는 아키텍트가 비즈니스를 몰라도 된다는 말은 그 집에 사람이 살던 개나 소가 살던 상관없이 자기 취향대로 짓겠다는 이야기와 동일합니다.


아키텍트가 기본으로 갖추어야 할 지식

소프트웨어 아키텍트는 누구보다 전반적인 업무내용과 그외 주변 상황까지 꽤뚫어 볼 수 있는 통찰력을 가져야 합니다.

며칠 전 동료에게 어떤 아키텍트가 "자기는 비즈니스에는 관심이 없다"라고 말했다는 이야기를 들었습니다. 이 업계에서 밥먹고 있는 저로서는 이해할 수 없는 이야기일 뿐만 아니라 "화"가 나기도 합니다. 그 사람은 아마 아키텍처가 왜 필요한 지 모르는 사람이거나 아키텍트가 아닐 것입니다.

저의 경우 모르는 도메인의 아키텍처를 설계할 때면 제일 먼저 하는 일이 그 도메인 관련서적을 먼저 읽습니다. 우선 업무 내용을 파악하는 것이 매우 중요합니다. 그래야 여러 이해관계자와 이야기할 때 불편없이 이야기할 뿐만 아니라 우리가 주어야 할 제안을 제대로 만들 수 있습니다.

소프트웨어 아키텍트라는 타이틀을 걸고 고객과 계약했다면 알렉산더와 같이 다양한 부분의 학문을 공부하지는 못하더라도 기본적인 업무 정도는 파악하고 일을 했으면 좋겠습니다.


크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 행복한아빠