'변화'에 해당하는 글 3건

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
작년에 진행했던 프로젝트에는 여러 기술적 토론이 있었습니다. 그 중 인상 깊었던 토론 하나는 특정 문제의 해결을 위해 웹워크(Webwork)에 있는 기능을 쓸 것인지 아니면 그냥 POJO를 이용하여 해결할지에 대한 토론이였습니다. 이 토론은 깊히 생각해볼만한 흥미로운 요소를 많이 가지고 있었기에 토론 자체에 대해 자세히 적어보는 것도 의미가 있다고 생각합니다. 하지만 저는 이번 글에서 이 문제를 좀 더 일반화시켜 이야기해보고자 합니다.

사용자 삽입 이미지

#그림1. 레이어의 성질

여러 층으로 구성되어 있는 레이어를 생각해볼 때 하위 레이어로 향할수록 '일반성'을 가지며 상위 레이어로 향할수록 '구체성'을 가지는 것을 볼 수 있습니다. 일반성을 가진다는 것은 해당 레이어가 보다 넓은 영역에서 사용될 수 있다는 것을 뜻합니다. 예를 들어 웹워크보다는 그 하위 레이어라 할 수 있는 자바 API가 보다 넓은 영역에서 사용될 수 있다는 점을 생각해볼 수 있습니다. 반대로 구체성을 가진다는 것은 해당 레이어가 자신이 다루는 영역에 대한 전문성을 가질 수 있다는 것을 뜻합니다. 위에 예를 다시 이용해보자면, 웹워크는 몇 가지 영역에서만큼은 자바 API 보다 전문성을 가집니다. 이것은 해당 영역에 관련한 부분을 개발하는데에 있어선 자바 API를 직접 이용하여 개발하는 것보다 웹워크에서 제공하는 API를 사용하는 것이 생산성이나 품질면에서 더 좋을 수 있다는 것을 뜻합니다.

그렇다면 우리는 문제 해결을 위해 항상 적당한 상위 레이어를 찾아서 써야 하는 걸까요? 이 질문을 좀더 구체적으로 표현하자면 이런 질문이 될수 있을 것입니다. "자바 개발을 할 때 최대한 프레임워크를 많이 사용해야 하나요?" "윈도우 개발을 할 때 최대한 컴포넌트를 이용하는 게 옳을까요?" 저는 이러한 질문에 대한 답변을 위해 아래 세 가지 측면을 생각해보고자 합니다.

첫번째는 무게입니다. 레이어가 갖는 무게는 아래와 같이 표현해볼 수 있을 것 같습니다.
n = 레이어의 레벨. 높을수록 상위 혹은 응용 레벨, 예를 들어 어떤 자바 프레임워크의 레벨이 5라면 그 프레임워크가 의존하는 자바 API는 4라 할 수 있다.

레이어(n)의 의존자 ⊂ 레이어(n - 1)의 의존자
따라서
레이어(n)의 의존자 수 ≤ 레이어(n - 1)의 의존자 수

∞ 레어어의 무게 = 의존자 수
위 정의에 따라 의존자를 많이 가지는, 즉 보다 하위에 존재하는 레이어가 상위 레이어와 비교하여 무게가 더 많이 나간다고 볼 수 있습니다. 또한 무게가 많이 나간다는 것은 그만큼 변화의 가능성이 적다는 것으로 볼 수 있습니다. 예를 들어 자바 기반에서 개발을 할 때 자바 기반 자체를 바꾸는 일은 왠만하면 없습니다. 반면에 자바 위에 올라가는 프레임워크는 자주 바뀝니다. 이러한 개발 현장의 모습은 우리가 보다 하위 레이어에 의존할 때 변화에 대한 안정성을 보다 확보할 수 있다는 것을 보여줍니다.

두번째는 유용성입니다. 상위 레이어는 해당 레이어가 지원할 수 있다고 하는 모든 상황에서 유용할까요? 저는 아니라고 생각합니다. 보통 상위 레이어는 특정 영역에 대한 구체성을 가지면서도 그 안에서 최대한의 범용성을 추구합니다. 이 범용성은 해당 상위 레이어가 널리 사용되려면 반드시 가져야 하는 필수적인 성질입니다. 그렇지만 이러한 범용성 때문에 우리가 만나는 구체적이고 다양한 상황에 대해서는 미흡함을 줄 때도 있습니다. 즉 문제에 대한 해결책은 제공하지만 그것이 지금 상황에 딱 들어 맞지는 않는 것입니다. 이것은 마치 몸에 맞지 않는 옷을 입은 것과 흡사하다 볼 수 있습니다. 비록 원래 목적인 몸을 가리는 것에는 성공했지만 보기 좋지 않고 불편한 것입니다.

세번째는 학습 비용입니다. 보통 특정 문제를 해결하기 위한 적합한 상위 레이어가 존재하더라도 그 레이어를 이용하기 위해서는 학습이 필요합니다. 학습에는 시간이라는 비용이 필요합니다.

혹시 현재 환경에서 변화를 최소화 하는 것이 가장 중요한가요? 그렇다면 보다 하위 레이어에 의존하여 개발을 하는 것이 현명할 것입니다. 빠른 개발이 필요한가요? 그렇다면 상위 레이어의 유용성과 학습 비용을 고려하여 적절한 상위 레이어를 선정하고 사용하는 것이 도움이 될 것입니다. 또 다른 경우로 유용성은 있어보이나 학습 비용이 너무 많이 드는 경우도 생각해볼 수 있습니다. 이럴 때는 각각이 주는 가치의 무게를 신중히 비교해보는 것이 도움이 될 것입니다. 만약 유용성에 비해 학습 비용이 지나치게 많이 든다면 하위 레이어를, 학습 비용이 많이 듬에도 불구하고 더 많은 유용성을 준다면 상위 레이어를 선택할 수 있을 것입니다.

결론적으로 앞서 던졌던 질문인 "우리는 문제 해결을 위해 항상 적당한 상위 레이어를 찾아서 써야 하는 걸까요?"에 대한 저의 대답은 "아니다" 입니다. 그것보다는 위에서 얘기했던 것처럼 세 가지 요소를 상황에 맞게 잘 고려한 후 의존할 곳을 신중히 선택하는 것이 현명한 결정이라 생각합니다.

2007/11/29 ~ 2008/07/16

WRITTEN BY
차민창
르세상스 엔지니어가 사회를 이끌어나가는 상상을 하며!

,
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
자바지기님 블로그의 "변화를 막을 수 없다면 변화에 빠르게 대응할 수 있는 방법을 찾아라.."라는 글에 대한 제 의견입니다.
세상에는 실용적이지도 않고 사람을 괴롭게 하는 지침이나 해결책들이 많습니다. 이러한 지침이나 해결책을 가만히 살펴보면 공통점을 가지고 있는 경우가 많습니다. 그 공통점이란 '인간의 불완전성'을 충분히 고려치 않았다는 점입니다.

인간의 불완전성에 대한 정의는 매우 어려워 보입니다. 대신 아래 내용이 인간의 불완전성을 잘 보여주는 예가 될 수 있다고 생각합니다.
- 인간의 생각은 많은 오류를 가지고 있다.
- 인간이 미래를 예측하는 것은 매우 어렵다.
- 인간은 복잡한 것을 다루는 것에 취약하다.

이런 점에서 "변화를 막을 수 없다면 변화에 빠르게 대응할 수 있는 방법을 찾아라"는 매우 지혜로운 전략이라 생각합니다. "변화를 막을 수 없다"라고 말하는 것은 인간의 불완전성에 대한 인정을 내포하고 있습니다. 이렇게 인정을 하게 되면 우리는 탄탄한 기반을 얻을 수 있습니다. 그것은 '인간의 불완전성 인정'이라는 기반입니다. 이 기반 위에서 우리는 양질의 지침이나 해결책을 만들 수 있을 것이며, 이것들은 실용적이며 사람을 괴롭히지도 않을 것입니다.

2007/11/27 ~ 2008/05/09

WRITTEN BY
차민창
르세상스 엔지니어가 사회를 이끌어나가는 상상을 하며!

,
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
어제 새로운 웹 서비스를 오픈했습니다. 같이 개발한 동료분들 모두 너무 좋아하십니다. 각각 자신의 블로그에다가 오픈 이야기를 써놓습니다. 하지만 제 경우에는 글을 쓸만한 에너지로 이어질 정도로 기쁘진 않았습니다. 아마도 여러 번에 오픈을 통해 "신규 웹 서비스 오픈의 기쁨"이란 감각도 희미해져가나 봅니다. 제가 살면서 많은 것을 잃어버리는 것처럼요.

저는 어렸을 때부터 비오는 것을 무척 좋아했습니다. 비오는 날이면 마음이 설레이곤 했습니다. 마치 좋아하는 누군가를 생각할 때처럼요. 고등학교 때는 비오는 날이면 친구와 함께 창밖이 보이는 커피숍에서 따뜻한 차 한잔을 즐기곤 했었습니다. 이런 시간은 제게 있어 매우 소중한 시간 중에 하나였습니다.
하지만 언제부터인가 비가 와도 별다른 느낌이 없습니다. 예전 생각을 해보며 비 오는 것에 대한 기쁨을 느껴보려고 노력합니다. 하지만 마음이 안 따라줍니다. 예전과 같은 설레임이 없습니다.

어린 시절에 가지고 있었던 정서들를 하나씩 잃어가고 있습니다. 어린 시절부터 지켜야 한다고 생각했었던 올바른 기준들도 하나씩 잃어가고 있습니다. 지금의 저를 보면 이것 저것 계산하기에 바쁘고 탐욕으로 가득찬 직장인입니다. 어렸을 때는 정말로 이렇게 되고 싶지 않았었는데 말이죠.

서비스 오픈을 하면서 다시 한번 제가 많은 것들을 "잃어가고 있는 중"이라는 것을 느꼈습니다. 그리고 언제나 그렇듯 이러한 의식은 저를 슬프게 합니다. 사람은 이렇게 변해가나 봅니다.

WRITTEN BY
차민창
르세상스 엔지니어가 사회를 이끌어나가는 상상을 하며!

,