태터데스크 관리자

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

태터데스크 메시지

저장하였습니다.

개발자의 파워는 어디에서 오는가?

2010/08/03 17:37 by Ray.전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed



뛰어난 개발자를 관리자로 써먹는 것 같이 개발조직에 비효율적인 일은 별로 없습니다.

하지만 현실에서는 이런 일이 흔히 벌어지고 있습니다. 실제로 저도 여러 회사에서 자주 접하고 있습니다.
여러가지 이유가 있을 수 있겠지만 주요 이유는 회사에서 개발자로서 꾸준히 성장할 수 있는 Career Path를 보장하기 않기 때문입니다.

회사에서 파워를 가지려면 팀장이 되어야 하고, 그래야 개발자들을 거느리며 힘을 행사할 수 있게 됩니다.
하지만 일단 팀장이 되고나면 개발에 전념할 시간은 점점 줄어들게 됩니다. 그렇다고 개발을 포기하고 관리만 하기에는 관리할 일의 양도 얼마 되지 않고, 파워가 줄어들게 될 까봐 걱정을 하게 됩니다.

흔히들 개발자는 행정적인 파워가 없어도 기술력에 따른 카르스마에서 파워가 생긴다고 하지만 이는 실제 현장에서는 공허한 얘기가 됩니다.

제대로 세팅된 소프트웨어 회사라면 개발팀은 관리할 것이 그렇게 많지 않습니다. 하지만 그렇지 못한 회사는 이래저래 관리할 일이 점점 늘어나게 되서 불필요하게 팀장의 관리에 많이 의존하게 됩니다.

이렇게 뛰어난 선임개발자들이 개발과 관리를 넘나드는 사이에 기술은 점점 멀어지게 되고 돌아올 수 없는 강을 건너는 경우가 예사입니다.

결국 100원짜리 개발자를 10원짜리 관리자로 만들고 맙니다.

물론 개발자 중에는 관리능력도 뛰어나서 관리자 역할을 훌륭하게 수행해 내는 사람도 있습니다. 
이 경우 개발자가 개발보다 관리에 관심이 많고 관리 능력이 더 뛰어나다면 관리자로 전환하는 것도 좋을 겁니다. 하지만 개발과 관리 둘다 능력이 좋다면 개발을 선택하는 것이 좋을 겁니다. 개발이 훨씬 부가가치가 높으며 다른 사람으로 쉽게 대체할 수가 없습니다. 둘다 훌륭하게 수행해내기를 바란다면 욕심입니다. 

뛰어난 개발자를 개발자로 있게하려면 회사에서 경력을 보장해줘야 합니다. 
개발자로 꾸준히 성장할 수 있는 Position을 만들어야 하고 연봉에서 대우을 해줘하고 관리자 이상의 파워를 가질 수 있는 제도를 마련해줘야 합니다. 그렇지 않는다면 뛰어난 개발자들이 개발과 관리사이에서 끊임없이 고민하다가 많은 개발자들이 관리자로 전환되면서 회사에 손해를 끼치게 될 겁니다.

수평적인 조직구조를 가진 외국의 회사들과 다르게 수직적인 조직구조를 가지고 있는 우리나라 회사에서 개발자에게 힘을 실어주기란 쉽지 않습니다. 그래서 제도적으로 뒷받침이 되지 않으면 어렵다는 것입니다.

현실적으로 쉽지 않은 일임을 공감합니다. 개발에 대한 전문성을 인정해주는 분위기가 같이 성장을 해야 개발자 경력 보장도 점점 이루어질 것입니다.

* 이 포스트는 blogkorea [블코채널 : 꿈꾸는 소프트웨어 개발자 세상] 에 링크 되어있습니다.
image by xJasonRogersx
저작자 표시 비영리 변경 금지

Ray.전규현 개발조직

Trackback Address: http://allofsoftware.net/trackback/195 관련글 쓰기
  1. 글 잘 읽고 갑니다. :D

  2. 안녕하세요. 우울한 딱따구리님...
    요즘 워낙 바빠서 블로그 포스팅이 뜸해지네요.
    그래도 언제나 글을 읽어주셔서 감사합니다.

  3. 개발과 관리를 둘 다 잘 하는 사람이 있으면 관리를 시키는 것이 낫지 않을까 싶습니다.

    관리 잘 하는 사람이 많은 것 같아도 사실 개발자와 프로젝트를 관리 할 수 있는 관리자는 정말 뛰어난 개발자보다 더 소수가 아닐까 싶거든요.

    이런 관리자가 있어주어야 그 밑에서 정말 개발만 잘 하는 사람들이 편하고 효율적으로 일 할 수 있지 않을까 싶기도 하구요.

  4. 안녕하세요. bookworm님
    우리는 흔히 팀장과 PM을 혼동하곤 하는데, 위에서 언급한 내용은 팀장, 즉 일반관리자 역할입니다.
    팀장은 관리자트랙인데 비해서 PM은 특수한 영역으로서 개발자와 관리자의 중간쯤에 있는 트랙입니다. 즉 개발도 잘 이해하고 관리도 잘할 수 있는 사람들의 영역입니다.

    일반적인 작은 회사나 작은 개발팀은 전문적인 PM이 필요하지도 않고 관리도 그렇게 많이 필요하지 않습니다. 그냥 선임 개발자가 대춤 겸업을 해도 큰 문제가 발생하지 않습니다.
    그래도 우리는 보통 마구 혼동해서 사용합니다. 하지만 규모가 커지기 시작하면 모든 영역이 매우 전문화가 되어야 합니다.

    말씀하신 내용은 PM에 가까운것 같습니다. 프로젝트가 커지면 PM의 역할이 정말로 중요하고 뛰어난 PM이 프로젝트 성공에 가장 큰 역할을 하며 책임도 큽니다. 개발자중에서 PM 트랙을 선택하는 것도 좋은 선택중 하나라고 생각합니다. 단, 우리나라에서는 PM의 역할에 대해서 제대로 정의가 안된 회사가 많기 때문에 자칫 이직시 애매해지는 경우가 많은 것 같습니다.

    아무튼, 아직 개발자, PM, 관리자에 대한 전문성에 대한 이해가 전반적으로 부족한 분위기는 차츰 바꿔나가야 하겠습니다.

  5. 말씀하신 부분에 공감합니다.

    우리나라는 아직 일반 관리자, PM, 개발자 등의 역할이 전문화가 안 된 것 같습니다.

    개인적으로 개발자로 하고 싶은 것이 많은데 일반 관리부터 PM까지 겸업하려니 고민과 갈등이 많습니다.

  6. 관리자라고 한다면 피플매니징이 주요 업무여야 한다고 봅니다. PM은 말 그대로 프로젝트만을 관리해야 하는 거구요.

    예전까지는 팀장 = 관리자 = PM이었는데(종종 프로젝트에 따라서 PM이 아닌 경우는 있었지만), 외국계는 이 매니저와 PM이 확실하게 다른 캐리어 트랙을 타더군요.

  7. 안타까운 현실에 우울하죠.
    몇 년 뒤면 이제 40이 되는데, 등 떠밀려 선택을 하게 되겠죠? ㅡ,.ㅡ;;

  8. whiterock님 안녕하세요.

    계속 개발을 하고 싶은 개발자들이 등떠밀려 관리자가 되는 것은 개인이나 회사에 모두 손해입니다.
    본인의 의지를 회사에 피력을 해보시죠. 회사 사정은 정확하게 모르지만 시도를 해보시는 것이 어떨가요?

  9. 앞으로의 진로를 고민하는 사람으로 말씀하신 것처럼 문화가 바뀌기를 바라고 있지만, 현실적으로 한국 기업문화에서는 쉬운 부분은 아니라고 생각합니다. 저 또한 그렇게 만들고 싶고 그러기 위해서는 힘(?)이 있어야 하고, 힘을 가지려면 관리자가 되어야하니까요..아쉬운 현실입니다.
    님께서 가지고 계신 가치관이 많이 전파되었으면 하는 바램입니다. 글 감사합니다.

  10. 꼬부가빠님 안녕하세요.
    기업이 생존을 위해서는 어쩔 수 없이 이렇게 하지 않으면 안됩니다. 한국의 기업문화 그대로 따라서는 살아남을 확률이 너무 많이 떨어집니다.
    변화는 선택의 문제가 아니고 생존하느냐 죽느냐의 문제입니다.

  11. Blog Icon
    godway

    Postion 이라고 쓰신 부분이 Position 맞죠?

  12. 안녕하세요. godway님

    당연히 오타죠. - -; 바로 수정했습니다.

  13. 외국에서는 10년 정도 개발하면 이제 조금 하는 구나
    하는데 우리나라는 5년정도 개발하고 관리자로
    빠지니 관리도 못하고 기술도 잘 모릅니다.
    그러면서 기술은 중요하지 않다라고 하죠.

  14. beyondj2ee님 안녕하세요.
    10년차와 20년차가 또 다르죠.
    그런데 우리나라 대부분의 SW 개발자들은 그 차이가 별로 없는 경우가 많습니다. 고참 개발자들이 신참과는 다르게 무슨 일을 어떻게 해야 하는지 모르는 경우가 대부분입니다.

  15. 우리나라의 대부분의 SW업체가 중소기업이지만....
    워낙 작은 회사는 모든 구분이 참 애매모호합니다.
    또한 회사 업무 내용이나 개발 규모등에 따라서도 많이 틀려지겠죠

    우리회사 같은 경우에는 한두사람이 하나의 프로젝트를 개발하고
    다수의 기존 프로젝트 유지보수까지 끌고 가는 상황이라
    별도의 관리자나 PM등이 있지도 않고요
    개발자가 계속 경력을 쌓고 개발을 할 수 있도록 지원할 생각은 하고 있습니다.

    개발자에게 힘을 실어주는 제도라는게 구체적으로 어떤 예가 있을까요?

  16. 크레브님 안녕하세요.
    작은 회사에서는 한사람이 여러 프로젝트를 진행하기도 하고 여러 역할을 겸임하기도 합니다. 아주 일반적인 현상입니다.
    단, 여러일을 겸임할 때도 역할의 구분을 하는 것이 좋습니다. 즉 최소화를 해야 좋지만 문서도 만들고 프로세스도 따른 것입니다. 그래야 조직이 조금씩 커지면서 자연스럽게 업무들이 분배됩니다.
    혼자 여러일을 한다고 혼자만 알 수 있게 또, 구분없이 일들을 마구 섞어서 하게 되면 인원이 늘어가도 효율적으로 돌아가지 않습니다.

    개발자에게 힘을 실어주는 제도 중 하나는 행정적으로 의사결정을 할 수 있는 권한, 예산을 집행 할 수 있는 권한을 부여한는 것입니다. 사실 회사의 의사결정 중에서 기술적인 것들은 개발자들이 해야 하는 것입니다. 특히 회사의 최고 개발자들이 결정을 해야 합니다. 하지만 개발과 관리가 애매한 회사에서는 기술적인 결정임에도 불구하고 관리자들에 의해서 많이 좌지우지 됩니다. 따라서 기술적인 결정이 개발자에 의해서 결정될려면 회사의 최고 기술자가 최고의 임원자리를 차지하고 있어야 합니다. 그래서 CTO가 필요한 법이지요. CTO에는 개발자에게 Role model이 될 수도 있습니다.

    그럼에도 많은 회사에서 CTO가 관리자의 역할을 하는 것을 보면 사실 CTO가 아닌것이지요. 그냥 연구소장인 것입니다.

    경영자가 기술의 중요성과 전문성을 이해해야만 이 모든 것이 가능합니다.

  17. 드물겠지만 개발을 하고 싶은 사람도 있는데 관리직으로 떠밀린다면 우울할꺼 같아요

  18. 구차니님 안녕하세요.
    개발자도 고참이 되어도 개발자로서 계속 가치를 부여하기 위해서는 달라져야 합니다.
    경력이 많아지는 것만 가지고는 부족합니다.
    뷰도 넓어져야 하고, 비즈니스도 잘 알아야 하고, 많은 프로젝트와 후배들에게 영향을 많이 줘야 합니다.
    그러기 위해서는 회사의 프로세스와 시스템이 잘 갖춰져 있어야 하며 문서화와 리뷰가 잘 이루어져야 합니다.

  19. 공감합니다.
    아직 개발을 더 하고 싶은데 관리자로 되면 힘들것같아요;;

    아직 저는 신입 개발자이지만

    관리자로서 준비를 해두어야 할지
    개발자로서 살길을 찾아야할지 고민입니다.

  20. acude님
    대한민국에서는 어려운 결정입니다.
    아직 신입이시니까 더 좋은 여건입니다. 이미 머리가 굳은 경력이 많은 개발자들은 쉽게 마인드를 바꾸기가 어렵습니다.
    지금부터 꾸준히 소프트웨어 공학에도 관심을 가지고 경력을 쌓아보세요.

  21. 안녕하세요. 오랜만에 들려봅니다. ( 그동안 병원생활하느라;;;)
    여전히 깨어있는 글. 무척이나 공감합니다.
    얼마전 해외에서 일하는 후배와 이야기를 하다가,
    암담한 한국의 소프트웨어 업계와, 그래도 캐리어를 꾸준히 보장해 주는 해외 소프트웨어 업계를 비교해 보고 참.. 한국의 기업들이 개선해야할 부분이 너무 많은것 같아서 답답하기까지 하더라구요.

    물론 해외기업과 한국기업이 문화태생부터 다른 것은 사실이지만 같은 소프트웨어를 다룬다는 입장에서는 똑같을 듯 싶은데.. 왜 한국 기업은 공학인들에게 당연히 보장해 줘야 될 부분들을 그렇게 늘~~ 그늘에 놔두려고 하는지..참 안타깝기 까지 했습니다.

    그리고 기술밥먹는 사람들은 기술밥먹는 사람끼리 뭉쳐서 타 도메인에 대한 상생을 좀 무시하는 경향이 있는것도 같구요.

    또, 말씀하신것처럼 개발자도 소프트웨어공학에 대한 지식을 꾸준히 연마해야 한다고 봅니다. 기업에 프로젝트를 하러 다니면 소프트웨어공학에 대해 관심도 없고, 배우려고 하지 않는 곳이 꽤 많았습니다. 단지 API의 어떤 기술만 외쳐댈뿐이었지요. (숲을보는 인재가 별로 없는 듯) 어디서부터 잘못된 문화인지... 그 원인을 분석하고 개선할 수 있다면 정말 좋겠지만.. 아직까지 먼 세상이라고 느껴집니다.
    부디 깨어있는 분들이 계속 개선점을 고치고 알리어 꾸준히 바뀌어 나가길 희망합니다.

  22. 안녕하세요. moova님
    오랫만입니다. 그동안 쾌차하셨는지요?

    그래도 저와 저의 회사에서는 그동안 여러 회사를 컨설팅하면서 마이드를 많이 바꾸고 있습니다. 그래서 점점 이러한 것들이 파급되고 있다고 생각합니다. 그 일환으로 책도 쓰고 블로그도 하는 것입니다.

    이땅에서 소프트웨어 개발자가 최고의 직업이 되는 날까지 저는 뜁니다. ^^

  23. Blog Icon
    Kevin

    안녕하세요, 이전에 'SVN' 이란 것을 검색하다가 게시된 글들에 흥미를 느껴 간간이 들리고 있는 IT분야 취업 준비생입니다. 간단히, 저의 소개를 하자면 국내 컴퓨터공학과를 졸업했으며 오는 하반기에 국내취업을 목표로 하고있는 젊은 청년입니다. 또한, 현재 Wipro라고 하는 인도 SI업체에서 프로젝트를 맡아 수행중이기도 합니다.
    앞으로 저보다 앞서서, 미래를 그려나가는 선배님들께 좋은 말씀도 들었으면 합니다.
    잘 부탁 드리겠습니다 : )

  24. Keyvin님 안녕하세요.

    새술은 새부대에 보관해야죠...
    경력이 오래된 개발자들은 마인드가 쉽게 바뀌지 않습니다. 그동안 이룩해 놓은 것들과 몸에 밴 습관을 버릴 수가 없기 때문에 그렇습니다.

    그래서 kevin님과 같은 신진들이 더욱 중요합니다.
    처음부터 올바르게 시작해야 합니다. 하지만 현장에서 실제로 일을 하다보면 반대된는 도전에 수없이 직면할 것입니다. 그것이 지금 우리나라의 현실입니다. 여기에 좌절말고 꾸준히 정도를 걸어나가면 뛰어난 개발자가 될 수 있을 겁니다.

    요소 기술만 신경 쓰지 마시고 소프트웨어 공학고 꾸준히 공부를 하고 경험을 하는 것이 중요합니다. 소프트웨어 공학은 공부만 해서는 절대로 익힐 수 없는 것이고 제대로된 경험을 하는 것이 익히는 유일한 방법이며 시간도 많이 걸립니다.

    현장에서 여러 도전에 부딪힐 때 저를 비롯한 선배들이 도움을 줄 수 있기를 바랍니다.

소프트웨어 개발자를 위한 소통의 장

2010/07/08 14:16 by Ray.전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed


그동안 블로그에 글을 쓰면서 여러 개발자분들의 의견을 듣는데 많은 불편함을 느껴왔습니다.
블로그의 글에 댓글을 남기면 약간 소통이 되기는 해도 주로 일방적인 전달을 벗어나지 못했습니다.
그렇게 해서는 많은 의견을 주고 받을 수도 없고, 소프트웨어를 개발하면서 생기는 수많은 문제들을 해결하는데 실질적인 도움을 주기 어려웠었습니다.

그래서, 소통을 좀더 강화하고자 allofsoftware 메일링리스트를 만들었습니다.

메일링리스트가 어떤것인지 다들 잘 알고 계시겠지만 간단히 설명하자면 allofsoftware 메일링리스트에 가입을 하시면 allofsoftware@googlegroups.com으로 보내는 모든 메일을 수신하실 수 있습니다. 거꾸로 내가 allofsoftware@googlegroups.com으로 메일을 보내면 모든 가입자가 메일을 받아 봅니다.

소프트웨어 공학에 대해서 궁금한 것이나 실제로 소프트웨어를 개발하면서 닥치는 문제들을 allofsoftware@googlegroups.com으로 메일을 보내면 모든 가입자들이 내용을 보고 서로 답장을 보내면서 토론을 이어갈 수 있습니다. 이를 통해서 댓글을 통해서만 간단한 질문을 할 수 있는 것을 넘어서 현실적인 문제를 많은 개발자와 즉시 의논할 수 있을 것으로 기대합니다. 저 또한 열심히 답변을 보내도록 하겠습니다.

가입방법은 블로그 오른쪽 사이드바에 아래와 같은 위젯이 있습니다. 여기에 Email주소를 입력하면 됩니다. 간단하죠?





많은 성원 부탁합니다. 

* 이 포스트는 blogkorea [블코채널 : 꿈꾸는 소프트웨어 개발자 세상] 에 링크 되어있습니다.
Image by Steve 2.0

저작자 표시 비영리 변경 금지

Ray.전규현 소프트웨어이야기 allofsoftware, google groups, mailing list, 소프트웨어공학

Trackback Address: http://allofsoftware.net/trackback/194 관련글 쓰기
  1. 아이폰 개인 개발자입니다.
    구글 그룹 메일에 가입해 봅니다. ^^

  2. 반갑습니다. 민원기님
    언제든지 토론 주제를 던져주세요.

  3. 그룹스 가입했습니다. 많은 소통 이루어지길 희망합니다.

애플이 아이폰4에서 한글을 바꾼 이유는...

2010/07/07 11:47 by Ray.전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed


얼마전 아래와 같은 아이폰의 Localization에 대한 글을 올린적이 있습니다.

심각한 내용은 아니었고, 아이폰의 다국어 설정 화면에서 우리말을 선택하는 항목이 "한국어"라고 적혀 있어야 하는데 "한글"이라고 적인 것에 대한 포스트였습니다. 그뒤로 'Localization(L10n)과 Internationalization(i18n)에 대한 글을 한번 작성해야 지'하고 마음만 먹고 있었는데 너무 바빠서 블로그에 글 자체를 자주 못올리고 있습니다.

그런차에 아이폰을 iOS4.0으로 업그레이하니 제 블로그의 글 때문은 절대로 아니겠지만(^^), 아이폰의 다국어 설정 화면에서 "우리말"을 지칭한 항목이 "한국어"로 바뀌었더군요.


iOS3


iOS4

사소한 변화이기는 하지만 애플이 우리말을 조금 더 잘 이해하게 된 것 같습니다. 아니면 한국어 담당 개발자를 더 뽑았을 수도 있고요. 아무튼 좋은 변화입니다.

* 이 포스트는 blogkorea [블코채널 : 꿈꾸는 소프트웨어 개발자 세상] 에 링크 되어있습니다.
저작자 표시 비영리 변경 금지

Ray.전규현 소프트웨어이야기 i18n, L10n, 다국어, 아이폰, 한국어, 한글

Trackback Address: http://allofsoftware.net/trackback/193 관련글 쓰기
  1. 구글 서비스에선 한국어를 뜻하는 Korean이 '한국의'로 오역되어 있기도 하더라구요.
    구글 코리아에서 이런 부분은 본사에 적극 어필해주면 좋을텐데요. ^^

  2. 안녕하세요. 편집장님
    "한국인"이라고 표기될 수도 있겠네요. ^^

  3. Blog Icon
    애매한

    북한이 있기 때문에 한국어라고 쓰기도 사실 좀 애매합니다.
    북한에서는 조선말 이라고 쓰니까요.

    서방국가 시각에서 보면 한국어 라고 쓰는게 자연스럽기도 하지만 일본이나 중국에서 일하면서
    뉴스 같은 걸 보면 남북 양쪽의 눈치를 같이 보는 경우가 많더군요.

    현지인이 그렇게 이야기 하더군요... 한국어 라고 표현하기도 좀 애매하다고...
    애플이 거기까지 생각하고 일부러 한글이라고 했을리는 없을 것 같습니다만...

  4. 안녕하세요.
    Localization에서 정확한 표기를 하려면 Locale을 사용해야 합니다.
    Locale에는 문자체계와 사용하는 지역으로 표기가 됩니다.
    즉, 영어_영국, 영어_미국, 한글_대한민국, 한글_북한, 한글_중국(조선족) 이와 같은 식이죠.
    따라서 en_UK, en_US, ko_KR, ko_PK, ko_CN 이렇게 표기합니다.
    하지만 이렇게 표기하면 일반인들이 알아보기 힘듭니다.
    따라서 영국영어, 미국영어, 한국어, 조선어, 중국조선어 등으로 표기할 수 있습니다. 여기에는 딱히 표준이 없는것 같습니다.

    하지만 한국어의 주요 소비국은 대한민국이라서 대부분의 외국제품은 대한민국만을 기준으로 Localization을 하고 있습니다.

  5. 음.. 그냥 훈민정음이라고 표기하면 북한 남한 눈치 안봐도 되려나요 ^^;

  6. 구차니님 안녕하세요.
    ㅎㅎ 그래서 애플이 한글이라고 표기를 했었나보군요.

  7. 아이폰 4이지 아이폰4G 가아닙니다^^...

  8. 맞습니다. ^^

마이크로소프트, 구글의 소스코드 트리의 비밀?

2010/06/08 11:02 by Ray.전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed



오늘 출근을 해서 메일을 확인하니 독자로부터 메일이 한통 와있더군요.

책에 대한 리뷰의 글이어서 감사히 읽었습니다. 질문도 하나 있어서 답변 겸 블로그에 글을 남깁니다.

질문은 다음과 같습니다.
나는 마이크로소프트 같은 커다랗고 프로세스가 잘 정립된 회사의 형상 관리툴의 소스트리를 보고 싶다. 그들이 모듈을 어떤 식으로 분리하고 어떤 구조로 트리를 구성하는지, 중복되는 코드들을 어떤 식으로 제거하고 또 공유하는지, 체크인 되는 코드의 코멘팅은 어떤 규칙으로 하는지 등이 너무 너무 궁금하다. 1시간 만이라도 들어가서 차근차근 살펴볼 수 있다면 내 실력은 훨씬 나아질 것이다.

사실 책에서는 이러한 내용은 구체적으로 설명되어 있지는 않지만 전체 맥락을 이해하고 경험이 있다면 질문에 해당하는 내용이 책에 포함 되어 있다는 것을 알 수 있을 겁니다. 

결론부터 먼저 말씀드리자면 최종 결과물인 "소스코드 트리"만 보면 배우기 어렵다는 겁니다. 잘 작성된 SRS를 몇개 보고 SRS를 제대로 작성하는 법을 배우기 어려운 것과 비슷합니다. 따라서 소스코드 트리를 보는 것이 큰 도움이 안된다는 것을 말씀드립니다. 하나의 사례를 보는 것에 족할 겁니다. 자칫 그 방법이 가장 좋은 방법인 줄로 착각을 하게 되면 시각이 굳어져서 손해를 볼 수도 있습니다.

좀더 쉽게 설명하면 타이거우즈(요즘 조금 부진하지만)가 골프치는 모습을 보고 골프를 배우기는 어렵고, 김연아가 스케이트 타는 것을 보고 따라하기 어렵다는 겁니다. 어떻게 해서 이러한 결과물이 나오는지 그 과정과 훈련 방법을 알아야 하겠지요. 

그런 과정에 관련된 내용이 책에서 상당히 많이 언급하려고 노력했습니다.

그 과정이라는 것도 각자의 수준에 따라서 보이는 것이 다릅니다. 수준을 1~10정도로 정의할 때 수준이 '1'인 사람은 아무리 설명해도 '2'나 '3'의 내용만 이해가 가능합니다. 수준이 '5'인 사람은 '6'이나 '7'정도가 이해할 수 있습니다. 그래서 올바른 방법으로 꾸준히 차근차근 훈련(경험)을 해 나가야 성장합니다. 

그외의 끝내주는 방법은 없습니다.

위 질문의 요지를 보면 다음과 같습니다.
  1. 모듈을 어떤식으로 분리하는지?
  2. 소스트리를 어떻게 구성하는지?
  3. 중복되는 소스코드를 어떻게 제거하는지?
  4. 공통모듈은 어떻게 공유하는지?
  5. 코멘트는 어떤 규칙으로 작성하는지?
결론부터 말씀드리면 다음과 같습니다.

 구체적인 방법은 회사마다 다르지만 원리는 똑같다.

이것을 모두 이해하려면 1~10 정도의 수준에서 '7'~'8' 이상은 되어서 합니다. 그렇지 않고 아직 소스코드관리시스템의 일부기능만 간신히 쓰고 있고 SRS도 아직 제대로 작성하지 않고 있고 리뷰도 하지 않고 있다면 수천명의 개발자들이 어떻게 뒤죽박죽 되지 않고 소프트웨어를 개발할 수 있는지 이해가 가지 않을 겁니다.

그게 소프트웨어 공학입니다. 어떠한 상황에서도 가장 짧은 시간에 적은 비용으로 소프트웨어를 개발하기 위한 실전적인 방법으로 진화를 해온 것입니다.

조금더 구체적으로 들어가보도록 하겠습니다. 모든 사람들이 이해를 하고 동의할 것으로 생각하지 않습니다. 왜냐하면 각자의 경험과 수준이 있기 때문에 보이는 것이 다르기 때문입니다. 

1. 모듈은 어떤 식으로 분리를 하는지?
천차만별이지만 원리는 있습니다. 책에서도 원리에 대해서 설명하기 위해서 노력을 했습니다. 
책이 있으니 한번 더 보시면 되겠지만 한번더 설명을 하면 "컴포넌트"와 "인터페이스"를 어떻게 나누느냐가 핵심인데, 어떤 툴이나 방법을 쓰냐는 중요하지 않습니다. 생각하는 방법도 서로 다르지만 대체로 설계단계에서 개발자들끼리 서로 모여서 종이나 칠판에 "컴포넌트"와 "인터페이스"를 그려가며 가장 깨끗하게 나오는 구조를 그려갑니다. 문제가 있으면 다시 지우고 그리고를 여러번 반복합니다.
이때 SRS가 없다면 모든 기능을 다 고려할 수 없기 때문에 제대로 아키텍쳐를 작성할 수 없습니다. SRS가 그냥 있기만 한다고 되는 것도 아니고 제대로 작성이 되어야죠. 아키텍쳐에는 회사의 미래전략도 모두 포함되기 때문에 단순히 기능만 다 있다고 되는 것도 아닙니다. SRS이슈로 넘어가면 또 하루 종일 설명을 해야 합니다.
아키텍쳐에 많은 영향을 미치는 사람들은 주로 선임 개발자들이고 개발팀 규모가 엄청나게 크면 한사람이 전체 모든 컴포넌트와 인터페이스를 분리할 수 없기 때문에 수직적으로 나뉘게 됩니다. 개발자들은 서로 여러 설계 리뷰에 참석을 하게 되고 리뷰자들은 서로 중첩이 됩니다. 선임개발자들은 최상위 아키텍쳐 리뷰에 참석도 하고 자신이 맡은 컴포넌트의 아키텍쳐 회의를 주도하고 여기에는 하위 개발자들도 참석을 합니다.
아키텍쳐 리뷰도 실제로 여러번 해보지 않으면 책을 아무리 봐도 어떻게 진행하는지 알기 어렵습니다.

2. 소스트리를 어떻게 구성하는지?
이 부분이야 말로 회사마다 천차만별입니다. 회사마다 제품의 특성이 다르고 프로세스가 다르기 때문에 같을 수가 없습니다. 소스트리를 구성할 때 고려해야 할 것들은 정말로 많고, 그 회사의 경험이 많은 고참 개발자가 아니면 좋은 결정을 할 수가 없습니다. 
소스트리는 한번 제대로 구성을 해놓으면 10년이상 지속될 수 있는 것이기 때문에 상당히 신중해야 합니다.
제품의 성격, 각 제품간의 관계, 사용하는 개발언어, 공통모듈 현황, 미래의 개발계획, 빌드 프로세스, 테스트 프로세스 등이 모두 고려되어야 합니다.
일반적으로 한번에 제대로된 소스트리를 만드는 것은 거의 불가능에 가깝습니다. 대부분은 몇년 해보다가 뒤엎는 경우를 수차례 반복합니다. 
그렇다고 Google이나 Microsoft의 소스트리를 흉내낸다고 제대로 되지는 않습니다. 아마 100% 실패할 것입니다.

3. 중복되는 소스코드를 어떻게 제거하는지?
완벽한 제거란 있을 수 없습니다. 최소화 하는 것이지요. 이것을 이해하려면 SRS, Architecture Design, Peer Review를 모두 잘 이해하고 있어야 하는데 쉽지 않습니다.
우리나라와 같이 각 개발자들이 모두 슈퍼맨에 되어서 알아서 개발하는 구조에서는 해결이 불가능한 이슈입니다.
책에서도 꽤 설명을 하고 있지만 다시 설명을 해보겠습니다. Peer Review를 한다고 가정을 하고 SRS, Architecture, Source Code 모두를 Review한다고 가정을 해보죠. 일단 Review를 충분히 한다는 것이 중요합니다. 개발자들은 이미 상당히 많은 내용을 서로 공유하고 있습니다. 보통 개발하는 시간의 20%는 Review를 위해 사용한다고 합니다. 그리고 고참이 될 수록 더 많은 시간을 Review에 할애 합니다. 
대부분은 개발할 시간도 없는데 언제 Review를 할 시간이 있냐고 합니다. 또한 "SRS는 언제 쓰고 있느냐, 빨리 개발해야지"라고 주장합니다. 그러면 "SRS쓰고 Review할 시간은 없어도, 개발하고 고치고, 개발하고 또 고치고 할 시간은 있느냐?"라고 반문을 하죠.
Review를 적절하게 하는 것이 개발을 가장 빨리 하는 방법이기 때문에 소프트웨어공학에서 주장하는 것이지요.
이런 리뷰를 거친 설계과정에서 중복되는 모듈은 컴포넌트로 빠지고 코딩과정에서도 서로 중첩된 리뷰를 하기 때문에 중복된 코드가 발생할 가능성도 적어지고 있다고 하더라도 쉽게 발견되고 공통 모듈화 할 수 있습니다.

4.공통모듈은 어떻게 공유하는지?
이또한 회사마다 다릅니다. 하지만 공통모듈이 없는 회사를 본적이 있습니다. 아니 많습니다. 각 개발자들이 다 알아서 개발을 하고 있어서 어디에 중복된 모듈이 있는지 알지도 못합니다.
공통모듈은 분석, 설계 과정을 통해서 잘 분리가 되어야 하고 당연히 이를 담당한 개발자나 개발팀이 별도로 존재합니다. 공통모듈이 이를 사용하는 개발자나 개발팀에서 잘 사용할 수 있도록 적절한 프로세스를 갖추고 있어야 합니다. 공통모듈은 소스코드 수준에서 공유하는 회사도 있고, Static library 또는 Dynamic library형태로 공유하기도 합니다. 그에 따른 적절한 공통모듈 Release프로세스를 가지고 있어야 하며 절적한 스케쥴도 유지를 해야 합니다.
회사의 공통모듈은 한개가 아닙니다. 수십개, 수백개가 될 수도 있습니다.
컴포넌트간의 공통모듈이 있고, 제품간의 공통모듈이 있고, 회사 전체 공통모듈이 있을 수 있습니다. 공통모듈은 소스코드가 될 수도 있고, Text파일일 수도 있고, 이미지파일일 수도 있습니다.
이런 공톰모듈을 적절하게 잘 사용할 수 있는 소스트리 구성이 중요합니다. 따라서 최고의 고참이 아니면 소스트리 구성이 어렵습니다.

5.코멘트는 어떤 규칙으로 작성하는지?
이부분도 회사마다 다르지만 규칙은 있다는 겁니다. 
아무것도 제대로 갖춰지지 않은 회사에서 코멘트는 정말 중요합니다. 달랑 소스코드 하나 있는 것이기 때문에 코멘트가 없으면 소스코드를 파악하기 정말 어렵습니다. 특히 해당 개발자가 퇴사를 하고나면 정말로 난감합니다.
하지만 제대로 된 소프트웨어 회사에서는 모든 것이 서로 얽혀 있고 정보들이 서로 중첩되어 있어서 코멘트만이 유일한 정보는 아닙니다. 모든 소스코드의 History는 소스코드관리시스템에 등록이 되어 있어서 Blame을 해보면 누가 언제 등록을 한 소스코드이고 해당하는 Message와 관련된 Issue의 번호를 가져올 수 잇습니다. 그리고 왠만한 소스코드는 서로 중복되어서 리뷰가 되었고, 소스코드관리시스템에 누가 리뷰를 했는지 기록이 되어 있습니다. 
즉, SRS - Architecture - SCCM - Issue Track - Source Code - Brain(뇌, 리뷰) 들이 서로 관련이 있고 얽혀 있어서 코멘트에 목숨거는 상황은 아니게 됩니다.
그래도 코멘트는 작성을 하고 규칙은 각 회사마다 별도로 가지고 있어야 합니다. 
우리나라 같은 경우 영어로 작성을 해야 하는지 한글로 작성을 해야 하는지 정해야 하고, 파일주석, 함수주석, 라인 주석에 대한 규칙을 정해야 하고, 내용, 형식에 대해서도 정의를 해야 합니다.
하지만 너무 복잡한 규칙과 지키기 어려운 엄격한 규칙은 없느니만 못하기 때문에 적절히 규칙을 정해야 합니다.

 결론 
 
위의 모든 것을 한꺼번에 할 수는 없습니다. 회사의 규모에 따라서 3~5년 이상 걸릴 것들도 있습니다. 결코 계단 10개를 한걸음에 뛰어오를 수는 없습니다. 용어만 알고 있거나 한번씩 경험해 봤다고 아는 척해서도 안됩니다. 회사 전체가 같이 움직일 수 있어야 합니다. 현실은 많은 의욕이 넘치는 개발자들이 머리속의 지식과 이상은 level 10인데 실제 실력과 경험은 level 2에서 헤매고 있는 겁니다. 그래도 다른 개발자들보다 용어도 많이 알고 말싸움에서 이기고 잘 안되는 것은 다른 사람들 탓을 하곤 합니다. 이것이 제가 여러 현장에서 겪는 현실입니다.
차근 차근 노력해 가는 것이 올바른 방법이고 전문가의 도움을 통해서 제대로 된 길로 가장 빠르게 가는 것이 유일한 방법입니다.

* 이 포스트는 blogkorea [블코채널 : 꿈꾸는 소프트웨어 개발자 세상] 에 링크 되어있습니다.
Image by Justin Pfister


저작자 표시 비영리 변경 금지

Ray.전규현 기반시스템/소스코드관리 SRS, 소스코드관리시스템, 소스코드트리, 소스트리, 피어리뷰

Trackback Address: http://allofsoftware.net/trackback/190 관련글 쓰기
  1. 주석처리에 대해서 말이 많이 오가는데
    음.. 확실히 소스에 넣으면 코딩시에 지저분 해지는거 같고
    그렇다고 해서 별도의 문서로 하기에는 관리가 쉽지가 않은거 같더라구요.


    오늘도 좋은 글 감사합니다 ^^

  2. 구차니님 안녕하세요.
    누구는 "소스코드를 주석처럼 자세히 작성해라", "주석은 필요없다.", "있다" 말들이 많지만, 어느것도 정답이 아닙니다. 회사에 알맞게 규칙을 스스로 정하면 됩니다. 그리고 따라야지요.

  3. Blog Icon
    galsys

    규칙을 정한데로 따른다라. 그렇군요.

  4. 은총알은 없다이군요.
    그럼에도 불구하고 계속 은총알을 찾아 해메게 되네요.

    마지막 코멘팅에 대한 질문은 소스코드 코멘트는 아니고 형상관리툴에 체크인할 때 코멘팅 규칙을 여쭤본 것이었습니다. 저는 귀찮아서 코멘트를 종종 빼먹고 체크인하는데, 책에서 이 때의 코멘팅 규칙을 가지고 있어야 한다고 했던 것 같아서요. 혹시 그게 소스코드 코멘트 규칙이었던가요? 집에 가서 책을 다시 뒤져봐야겠어요^^;
    다시 읽어보니 제가 질문을 아주 애매하게 드렸네요.

    좋은 글 잘 읽어보았습니다.
    감사합니다.

  5. 제가 달 곳은 아닌듯 하지만 주제넘게 리플을 달아봅니다.

    개인적으로 doxygen 등의 comment documenting application의 문법대로 생성해주는 것이 가장 무난하지 않을까 생각을 해봅니다. 프로그램 작동원리와 같은 세부 주석은 headrer 파일쪽으로 몰아주는 식으로 말이죠.

    라고는 하지만.. 저도 생각만 해봤지 직접 실행을 안해봐서 잘 모르겠어요 ㅠ.ㅠ

  6. Commit할 때 코멘트는 "Commit message"라고 통일해서 부르면 됩니다. 정확한 용어를 사용하는 것도 자신의 내보이는 중요한 요소가 됩니다. ^^

    Commit Message에서 빠지지 않고 꼭 입력하기를 권장하는 2가지가 있습니다.
    바로 BugID(Issue ID)와 Reviewer입니다.

    BugID가 꼭 포함되는 이유는 버그관리시스템에 등록되지 않은 변경은 없다는 전제하에 작업을 해야 하기 때문에 물론 알파 이전에는 예외이지만, 이후에는 소스코드 한줄을 수정해도 버그관리시스템에 등록을 해야 합니다. 그래서 엑셀에 버그를 관리하는 회사에서는 불가능한 것이지요.

    그리고 누가 리뷰를 했는지 꼭 적게 합니다. 이는 Peer Desk Check을 한다는 전제하에 시행할 수 있습니다. Peer Desk Check은 Commit전에 간단히 동료와 리뷰를 하는 것으로 가장 효과적인 방법중 하나입니다. 이를 도와주는 툴도 있기는 하지만 툴 없이도 할 수 있습니다. Review를 하지 않았으면, None이라고 적고 소스코드를 책임지면 됩니다. 추후 여기서 버그가 나오면 진짜 민망해집니다.

    그리고는 간단한 Message를 포함하면 됩니다. 이미 버그관리시스템에 많은 정보가 있으므로 간단히 적으면 됩니다.

    Commit Message는 절대로 빼먹으면 안됩니다. 버그 등록하지 않고 마음대로 고치면 안됩니다. 이러한 작은 것들이 큰 차이로 나타나게 됩니다.

    나중에는 여기에 관련된 Post로 해야 겠네요.

    감사합니다.

  7. 와, 바로 제가 알고싶던 것들이에요.

    엄청 많이 배웠습니다.

히딩크와 소프트웨어

2010/06/01 11:11 by Ray.전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed



월드컵도 다가오는데 소프트웨어와 축구를 한번 비교해보는 것도 좋을 것 같습니다.

제 블로그의 글들은 이런 방법 저런 방법으로 끊임없이 우리나라의 소프트웨어 현실이 무엇이 문제인지를 설명하고 있습니다. 그 중의 하나의 글이라도 여러분들의 변화의 계기가 되기를 희망하면서 글을 쓰고 있습니다. 일단 깨닫고 나면 방법을 찾는 것은 두번째 이슈입니다.

2002년 이전만 해도 우리나라 축구 수준은 세계 수준과 워낙 차이가 나서 2002년의 기적이 일어나리라고는 생각도 못했습니다.
히딩크가 우리나라 축구 대표팀을 처음 맡아서 대표팀의 문제점으로 가장 크게 지정한 것이 "기초체력부족"입니다. 하지만 대부분의 축구관계자와 국민들은 이를 믿지 않았습니다. 우리나라 선수들은 체력은 좋은데 기술과 경험이 부족할 뿐이라고 주장했습니다. 그리고 히딩크의 기초체력 향상 위주의 훈련을 맹비난했습니다. 하지만 4강까지 밟아본 뒤에는 체력이 조금더 좋았고 더 두터운 선수층만 있었어도 그런 천운이 뒷받쳐 줄 때 결승까지 갈 수도 있었다는 것을 알게 되었습니다.

소프트웨어 현장에서도 비슷한 일이 계속되고 있습니다. 강연이나 세미나를 통해서 기회가 있을 때마다 우리나라 소프트웨어 개발자들과 회사들의 "기초체력부족"을 강조하지만 이를 믿지 않는 사람들도 매우 많습니다. 물론 모든 사람들 다 설득하고 싶은 생각도 없고 그럴 필요도 없습니다. 

우리나라 개발자들 실력은 대단히 뛰어납니다. 우리나라 축구선수들이 드리블도 잘하고 발재간도 좋고 세트플레이도 잘하듯이 코딩도 잘하고 다양한 지식으로 무장되어 있습니다. 하지만 이러한 개발자들을 여럿 모아 놓으면 영 실력 발휘를 못합니다. 축구의 현실과 비슷합니다. 하시만 이러한 개발자들도 자신들의 "기초체력부족"은 인정하려고 하지 않습니다. 

바로 이 "기초체력"이 세계적인 경쟁력을 갖춘 소프트웨어 회사와 평범한 소프트웨어 회사를 판가름하는 결정적인 요소라는 것을 알아야 합니다. 세계적인 소프트웨어 회사는 물론 뛰어난 개발자들로 넘쳐나지만 그들의 가장 큰 경쟁력은 "개발문화"를 비롯한 지극히 기초적인 것들입니다. 

그럼 그 "기초체력"의 차이는 무엇을까요?

소프트웨어를 개발하는데 필요한 가장 기초적인 3가지는 다음과 같습니다.
  • 인프라스트럭처시스템
  • 개발 프로세스
  • 개발 조직
이 세가지 부분에서 엄청난 차이를 보여줍니다. 그리고 이들이 융합되고 조직에 스며들어서 발현되는 "개발문화"에서도 큰 차이가 나타납니다. 이 차이 때문에 글로벌 기업과의 Gap을 좁히지 못합니다.

이를 간단하게 측정할 수 있는 지표를 만들어 놓은 것이 있습니다.
한번씩들 스스로를 평가해보시죠.

제가 쓴 책(소프트웨어 개발의 모든 것)에 소개가 되어 있는 내용이기도 합니다. 책에는 자세한 설명이 포함되어 있습니다.
제가 컨설팅을 하면서 조사를 해보는 대분의 회사는 20점 만점에 1~5점 정도 밖에 되지 않습니다.
하지만 본인 스스로 측정을 하면 훨씬 너그러운 높은 점수가 나올 겁니다.
우리나라 유수의 S사 L사도 팀마다 다르기는 하지만 5점을 넘기 어려운 것이 현실입니다.
우리나라 소프트웨어 회사들의 평균점수가 5점이 넘지 않는다고 생각하면 맞을 겁니다.
이 점수는 지금까지 소프트웨어를 개발하고 있었던 것이 기적에 가까울 정도의 점수입니다.

** 물론 아주 가끔 15점이 넘는 회사들도 작은 회사들 중에는 있습니다. 장래가 아주 총망되는 회사들입니다.

기초 체력을 다지는 방법은 책에서도 소개를 하고 있지만 방법보다도 "기초체력"에 문제가 있다는 것을 먼저 깨닫는 것이 중요합니다. 하지만 대부분의 개발자들과 경영자들은 이를 인정하지 않고 여전히 "히딩크 죽이기"를 하고 있는 경우가 대부분입니다. 일단 깨닫는 순간 상황이 바뀝니다. 

방법론으로 들어가면 책이나 인터넷에 넘쳐나는 정보가 많지만 대부분 시행착오를 겪지 않고는 올바른 방향으로 갈 수가 없습니다. 그래서 경험이 많은 전문가의 도움을 받는 것이 훨씬 효과적입니다. 

여기서 가장 중요한 것은 경영자의 개선에 대한 의지라고 할 수 있습니다. 기초체력을 닦는 일을 시작했어도 중간에 수많은 난관이 발생하고 의구심이 들기 마련입니다. 이때 히딩크를 잘라버리는 것처럼 중간에 포기를 해보면 시도를 하지 않은 것보다 더 나쁠 수 있습니다. 이런 경험이 쌓이면 "옛날에 해봤는데 안되더라"라는 부정적인 시각만 쌓여서 평생 "주먹구구개발"에서 벗어나지 못하게 됩니다.

소프트웨어 개발자들도 맨날 동네 축구하지 말고 세계 4강 한번 들어야 하지 않겠습니까?

* 이 포스트는 blogkorea [블코채널 : 꿈꾸는 소프트웨어 개발자 세상] 에 링크 되어있습니다.
Image by younghawk125
저작자 표시 비영리 변경 금지

Ray.전규현 소프트웨어이야기 기초체력, 시행착오, 축구, 히딩크

Trackback Address: http://allofsoftware.net/trackback/189 관련글 쓰기
  1. 2010/06/01 17:17
    gsong의 생각 Tracked from realgsong's me2DAY
  1. 기초체력이라고해서 컴퓨터구조나 원리를 생각하고있었는데, 더 중요한걸 깜빡하고있었네요 ㅎㅎ
    조언해주신 이후로 버전관리시스템도 사용하고, 기술공유, 짝프로그래밍같이
    제 위치에서 할수있는것들을 하고있습니다.
    팀에 큰 변화는 일어나지 않았지만, 언젠가는 변화될것을 생각하며 일을 하고있습니다.
    좋은글 감사합니다. 항상 건강하세요~

  2. 안녕하세요. 오산돌구님
    컴퓨터 구조나 원리도 개인에게 있어서느 기초체력 중하나에 해당할 수 있겠습니다. 애초에 이런 것을 모르고는 기본에 되어 있지 않은 개발자이기 때문에 다른 것은 말할 필요도 없겠네요.
    Pair Programming을 하시고 계시나요?
    사실 이부분에 있어서는 논쟁의 여지가 많습니다. 모든 회사가 Pair Programming이 필요하고 효율적인 것은 아닙니다.
    어떤 식으로 진행하고 계신지는 모르겠지만 자칫 시행착오가 될 가능성도 있습니다.

    변화는 대단히 어려운 것입니다. 조금만 관심을 가지지 않으면 어느새 옛날로 돌아가 있습니다. 그래서 질질 끌지말고 짧은 기간에 강력한 힘으로 밀어붙이는 것이 효과적일때가 많습니다.

    밑으로부터 서서히 천천히 일어나는 변화는 대부분 실패할 가능성이 높습니다.

    그렇다고 섯부른 Push는 조직원들의 반발을 사기 쉽습니다. 그래서 변화가 어려운 것이지요.

    하지만 변화하지 않으면 죽는 것이기 때문에 선택의 여지가 있는 것은 아닙니다. 필수죠.

  3. 그럼 제가 할수있는건 우선 저부터 변화하는 방법밖에 없는건가요?

    일정에 쫒기는 개발이 아니라, 서로서로 정보공유하고
    참여하는 모든 이들에게 이득이 되는 그런 개발을 하고싶습니다.
    오늘 책을 다시 봐야겠습니다

  4. 사장님, 연구소장님, 팀장님의 생각을 먼저 바꾸는 것이 중요합니다.
    본인만 열심히 하면서 이렇게 해야 한다고 주장하고 다니면 자칫 괴짜로 보여질 수도 있습니다.
    윗분들의 생각을 바꾸는 것은 저희같은 전문가가 하는 일 중에 하나죠. ^^

  5. Blog Icon
    윤민식

    그런 작지만 좋은 회사들을 좀 알려주시면 어떨까요?
    그런 회사들이 널리 알려져야 좋은 개발자들도 더 많이 모여서 커질 수 있을것 같습니다.
    그리고 문제점이 있는 회사들이 점점 고쳐나가는 것도 좋지만
    좋은 회사들이 점점 커나가는 것도 의미 있을것 같습니다.

  6. 안녕하세요. 윤민식님
    회사이름을 밝히기는 어렵습니다.
    기초가 잘 되어 있다는 것은 이제 출발점입니다.
    필요조건을 갖췄다는 의미이고 필요충분조건은 아닙니다.

  7. 확실히 ... 점수가 5점도 안나오네요 ㅋ
    아무튼 개발자가 나서서 더욱 편안한 개발환경을 위해 쌈박질을 해야 하지 않을까 생각이 간혹 듭니다.

    그런데, 그렇게 한번 나서서 편하게 해놓으면
    자기의 일로 추가가 되기 때문에 개발자들이 나서지 않게 되기 때문이 아닐까 싶어요

  8. 안녕하세요. 구차니님

    시스템을 도입하고 프로세스를 정비하면 당연히 담당자가 필요하게 됩니다.
    큰회사는 하나의 팀에서 여러명이 이일을 담당하고 작은 회사는 혼자 또는 1/2명이 이일을 담당합니다. 1/2명은 다른 개발일도 하면서 짬짬히 이일을 하는 거죠.

    이렇게 정식으로 dedicate시켜주지 않으면 제대로 돌아가지를 않습니다. 이것도 잘 알려줘야죠.

    시스템, 프로세스 관련된 일이 자기일이 되는 것은 나쁜 현상이 아닙니다. 회사에서 충분히 이해하고 시간을 할애해준다면요. 일반 개발자들이 알지 못하는 중요한 경험을 익히게 됩니다.

  9. 13~14점 정도 나오는군요. 특히 QA전담팀이 있다는 부분과 테스트 케이스 관련 부분들은 왠만큼 큰 국내개발회사나 외국계 회사가 아니면 점수를 획득하기가 어려운 부분이 아닌가 싶습니다.
    외국계 회사에서는 별도의 QA팀이 있고 그 팀에 의해서 QA가 진행되는 것이 너무나도 *당연* 한데 말입니다.

  10. 안녕하세요. 우울한 딱따구리님

    Wow! 대단하신데요. 스스로에게 너그럽게 점수를 매기지 않았기를 바랍니다. ^^

    QA전담팀은 개발자가 10명 내외의 작은 개발팀에서도 필요합니다. 테스트케이스도 마찬가지입니다. 작은 개발팀도 이렇게 개발하는 것이 더 적은 비용으로 빨리 개발할 수 있는 방법이지만, QA전담 인원을 채용하는 것은 왠지 아까운 생각이 들곤합니다. 개발자를 뽑으면 코딩도 하고 테스트도 다 할 수 있는데 말입니다. 이것이 바로 착각이죠. 개발자는 개발자만이 할 수 있는 본연의 작업에 충실하게 해 주는 것이 돈버는 길이죠. ^^

    이외에도 소수의 개발팀이라도 갖춰야 할 것이 수두룩하죠. 그렇게 해 놔야 훨씬 빨리 개발할 수 있죠.

    우울한딱따구리님은 이미 거의 잘 하고 계시는 것 같군요. 다음단계로 스펙과 아키텍쳐에 대해서 고민을 하셔야 할 것 같네요.

  11. 예 저도 이번에 전직을 하면서 QA팀이 있는 회사는 처음 다녀보는데, 수년간 숙달된 전문 QA들의 버그 잡아내는 솜씨란 개발자에 비할 바가 아니더군요. 게다가 웹의 경우 IE6/7/8, FF까지 cross platform 체크에 regression test까지, 개발과 QA는 비슷해 보이지만 엄연히 다른 분야라는 걸 실감했습니다. 그리고 개발자 못지 않게 유능한 QA 전문가를 채용하는 것 또한 중요하다는 것을요.

  12. Blog Icon
    유수의 S사 직원

    안녕하세요~
    전 유수의S사 직원인데 저희 팀에서는 소프트웨어 역량평가가 대략 17점 가량 나오는군요..
    근데 이런 거 있잖아요
    공식적으로는 해라고 하는데 일부 개발자들이 일정이나 귀찮음, 몰라서를 핑계로 안 하고 있는거요.
    이런 건 하고 있다고 해야하나요? 아니라고 해야하나요? ^^;;
    워낙 많은 사람이 일하고 있다보니 공식적인 룰을 지키지 않는 사람들도 많네요.
    요새 욕 많이 듣고 있지만 언젠간 좋은 평가 들을 때가 있으리라고 희망을 가져봅니다.

  13. 안녕하세요.
    S그룹 회사마다 팀마다 천차만별이더군요. 상당히 잘되어 있는 팀에서 일하시는 군요.
    사실 큰회사에 다니는 개발자들은 다양한 교육의 기회도 많고 회사에서 이것 저것 많이 시도들을 하기 때문에 왠만한 용어는 다 알고 경험들도 있습니다.
    하지만 제가 컨설팅했던 큰 회사들을 보면 회사에서 추진하는 개선작업들이 잘못된 방향으로 여러차례 Push 하면서 잘된 것들도 있지만 잘못된 시도들 때문에 부정적인 이미지가 많이 퍼진 것들도 봐왔습니다.
    그래서 이론적으로는 어떻게 하는 것이 옳다는 것을 알아도 그렇게 하지 않는 것들을 많이 봤습니다.
    운전하면서 양보하는 것이 좋다는 것이 시험에 나오면 정확하게 맞혀도 실제 운전하면서는 양보하지 않는 것과 비슷하죠.
    그중에는 정말 열심히 하는 사람들도 있는데 그렇지 않는 사람들도 많더군요.
    그래서 이런 큰회사들은 바뀌는 것이 정말로 어렵습니다. 시간도 오래걸리고 경영층의 의지기 특히 중요하죠.

    요새 욕 많이 듣는 다고 생각하는 것에 대한 제 생각은 여태 S사가 세계적으로 1등이고 뭐든지 잘하는 줄 알았는데 SW분야에서 그렇지 않고 많이 뒤쳐졌다는 뉴스들이 나오고 몇몇 제품과 비교가 되니까 나오는 실망감이고 넉두리라고 생각합니다. 대부분은 사용자로서 내 밷는 토로이고 저는 좀 생각이 다릅니다. 어떻게 해야 하는지에 대해서 주로 생각하고 말하려고 합니다.

    유능한 개발자들이 가장 많이 몰려있는 곳이기도 하기 때문에 경영층이 조금만 더 똑바로 생각한다면 언제든지 SW에서도 1등이 될 수 있다고 생각합니다.

  14. Blog Icon
    anonymous

    자려고 침대에 누워서 스마트폰으로 글을 읽다가 문득 이게 아닌데 싶어서 답글 달려고 거실로 나왔습니다. 국내 S모 대기업에 있다가 전직했는데 지금 생각해보면 S모사의 소프트웨어 역량이 형편없다고 여겨지는 회사에 다니고 있습니다. 점수를 매겨보니 10점 전후겠네요. 하지만 역량평가표는 마치 교과서에 나올법한 기준으로 생각됩니다. 생각보다 분야에 따라서 역량평가의 기준이 많이 달라져야 합니다. Reusability를 전혀 고려하지 않고 있고, End product에 앞서 infra software에 얼마나 많은 가치를 부여하고 있는지 등등 추가되어야 할 기준이 훨씬 많고 그만큼 중요합니다.

  15. 안녕하세요.

    몇가지의 질문으로 역량을 다 평가할 수는 없겠지만 간단한 지표는 될 수 있습니다. 그렇다고 수십, 수백개의 질문을 만들면 너무 복잡하죠. 그래서 복잡한 질문은 제 Blog상단에 별도의 서비스로 만들어 놨고, 별도로 의견을 적을 수도 있게 되어 있습니다. 그러면 제가 읽어보고 제 의견을 Email로 별로도 보내드립니다.

    역량평가표의 항목들은 소프트웨어 회사라면 갖춰야할 최소의 것들로 이루어져 있기 때문에 이부분들을 무시하고는 소프트웨어를 잘 개발한다고 말하기 어려운 것들입니다. 물론 개인적으로 뛰어난 개발자일 수는 있으나 회사차원에 그렇다는 의미입니다.

    국내 대부분의 SW회사가 정말 척박한 환경이고 서로 대동소이하기 때문에 본 설문으로 대부분의 회사의 기본적인 상태는 간단히 평가할 수 있을 것으로 생각합니다.

위기는 내부로부터 온다.

2010/05/10 15:39 by Ray.전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed

우리나라에서 소프트웨어 회사를 운영하기에 외적인 어려움들은 이미 많은 분들이 얘기를 해주셨습니다.
  • 정권이 바뀔 때마다 급변하는 환경, 특히 대통령 따라 왔다갔다하는 여건들...
  • 대기업과 중소기업간의 공정하지 못한 거래
  • 대형 SI업체들의 횡포
  • 공공기간을 포함한 고객들의 무리한 요구 및 낮은 가격
이런 것들은 천천히 얘기를 하고 오늘은 소프트웨어 내부적인 문제로 인해서 발생하는 위기에 대해서 얘기를 해보고자 합니다. 지금 소프트웨어 회사를 다니시는 많은 분들은 회사에서 항상 "위기다"라고 하는 말들을 들을 겁니다. 하지만 그 대부분의 원인을 "외부"에서 찾고 있는 경우가 많습니다. 물론 외부 환경도 기업을 잘 운영하는데 매우 중요하지만, 대부분 내부 원인은 간과하기 쉽습니다. 또한 말뿐인 위기가 아닌 진짜 회사가 어려워졌을 때 문제의 원인을 외부로 돌리는 경우가 많습니다.

단적인 예로 "티맥스"라는 국내 굴지의 소프트웨어 회사가 외부 요인때문에 어려워졌을까요? 나는 아니라고 봅니다. 내부 요인이 훨씬 더 컸다고 생각합니다.

우리나라 소프트웨어 회사들은 넘을 수 없는 벽이 앞에 존재하는 것처럼 보입니다. 강연이나 세미나에서 이런 문제를 얘기하면 작년만해도 "티맥스"라는 회사가 이 벽을 넘었다라고 주장하는 사람들이 있었지만, 이제는 그렇게 주장하는 사람이 없습니다. 우리가 기억하는 유명했던 수많은 소프트웨어 회사들 중에서 지금도 건전하게 꾸준히 성장하면서 글로벌 경쟁에서 뒤지지 않는 회사는 찾아보기 어렵습니다. 어떤 시기에 꼬꾸라졌거나 근근히 버티고 있거나 썩 나쁘지는 않지만 비전은 별로 없거나 합니다.

나는 이런 대한민국 소프트웨어 회사들이 맞닥드리는 "넘을 수 없는 벽"의 원인을 주로 소프트웨어 회사 내부에서 찾습니다. 소프트웨어 회사들이 주로 겪는 문제는 회사 조직이 커지면서 발생합니다. 조직이 커지면 이런 문제들이 발생합니다.
  • 새로 채용한 개발자들에게 지식과 경험의 전달이 안됩니다.
  • 개발자 인원은 많이 늘었는데, 생산성은 점점 떨어지고 야근만 늘어 납니다.
  • 프로젝트 규모는 점점 커지는데 관리가 안됩니다.
  • 국내에서는 꽤 경쟁력이 있는 소프트웨어였는데, 해외에서는 맥을 못춥니다.
  • 초창기에는 좋은 아이디어들이 많았는데, 더이상 창의적인 아이디어가 나오지 않습니다. 
  • 시장은 점점 레드오션으로 바뀌어서 수익성이 악화됩니다.
  이 모든 부작용이 거의 내부에서부터 나옵니다. 애초에 구멍가게 밖에 할 수없는 회사가 대부분이지만, 스스로는 그러한 사실을 알지 못합니다. 

개발자들도 스스로는 뛰어난 개발자라고 생각하지만, 코딩이나 좀 할 줄 알지 진짜 개발자들이 갖춰야할 능력이 무엇인지 모르는 경우가 태반입니다. 또한 관리자나 경영자는 소프트웨어에 대한 이해가 부족하여 마구 만들어서 많이 팔면 되는 것으로 착각을 합니다.

이러한 상황에서 우리나라에서 글로벌 경쟁력을 갖춘 소프트웨어 회사가 나오는 것은 거의 불가능합니다. 

하지만, 조금만 생각을 바꾸면 그리 어려운 일은 아닙니다. 소프트웨어 회사들이 조금씩만 바뀌고 좋은 저변이 확대가 되면 그중에서 분명히 성공하는 회사가 나올 겁니다.

소프트웨어를 잘 이해하고 있는 경영자가 점점 많아지고, 아무리 작은 회사라도 소프트웨어를 개발하는데 꼭 필요한 프로세스, 시스템, 문화등을 적절히 도입하고 이러한 환경에서 성장한 개발자들이 서로 혼합되면서 전체 소프트웨어 산업을 끌어올릴 수 있을 것으로 생각합니다.

그 첫걸음이 경영자와 개발자들의 소프트웨어 공학에 대한 이해입니다. 소프트웨어가 왜 그냥 마구 개발하면 안되는지, 어떻게 해야 적은 비용으로 짧은 시간에 품질 좋은 소프트웨어를 만드는지 이해를 하는 것이 시작입니다. 모든 경영자와 개발자가 이런 것에 관심을 가져줄 것으로 생각하지는 않습니다. 단지 그 비율이 조금씩 증가하기를 기대합니다.

* 이 포스트는 blogkorea [블코채널 : 꿈꾸는 소프트웨어 개발자 세상] 에 링크 되어있습니다.
Image by 
저작자 표시 비영리 변경 금지

Ray.전규현 소프트웨어이야기 위기

Trackback Address: http://allofsoftware.net/trackback/169 관련글 쓰기
  1. 요즘 공익광고에도 나오지만
    서로간에 이해를 하려는 노력보다는 상대방의 입을 틀어막기 때문에 이런 문제가 발생하는게 아닐까 생각합니다.

    윗선에서는 키보드나 두드리는 공돌이 주제에, 개발자 주제에 라고 할테고
    개발자는 윗대가리들은 쯧쯧쯧 펜대만 굴릴줄알지 지들이 개발을 알아? 라고 할테니 말이죠

    서로 모르는 모른다 이야기 하고,
    처음부터 뼈대를 맞추어 가면 이렇게 복잡하지는 않을텐데 하는 아쉬움이 매번 남습니다.

  2. 안녕하세요. 구차니님
    소프트웨어 회사는 수백년간 존재했던 수많은 종류의 회사들과는 완전히 다른 종류의 형태입니다.
    이를 이해하지 못하고 성공하기는 어렵습니다.

  3. Blog Icon

    저의 요즘 화두는 어떻게 경영자들을 소프트웨어 공학을 이해 시킬수 있을까 하는 것입니다. 그렇다고 제가 하나 하나 이해 시키기에는 너무 힘들더군요. 결국 제가 못 견디고 나오고 말았습니다.
    외국에서 습득한 개발 프로세스를 정착 시키려고 하니 여러모로 걸리는 것들이 많더군요. 동료들 부터 이해 하지 못하고 위쪽에선 현재 보이는 것에만 집착해서 멀리 보지 못하고 결국 힘들여 구축한 개발 프로세스를 포기 하고 말았지요. 앞으로 다닐 직장에서도 재가 다시 시작 해야 하는데 경영자들이 얼마나 저에게 맡기고 일을 시킬지 걱정입니다. 이해 시키기엔 현재 보여줄수 있는것이 없으니 경영자들도 믿지 못하는것이겠지요. 참으로 힘든직업입니다. ㅠㅠ

  4. 안녕하세요. 곤님
    경영층과 관리자들에게 소프트웨어 공학을 이해시키는 것이 제가 하는 일 중의 일부입니다. ^^
    회사 내부의 개발자들의 말은 잘 안들어도 외부 전문가의 말은 설득력이 있습니다.
    사실 개발자들도 고집이 세고 바뀌지 않으려는 사람도 많습니다. 이들을 바꾸는 것도 저의 일이지요.

  5. 항상 공감 가는글 감사 합니다.
    음... 일단 다른 것을 떠나서 큰 문제는 경영층이라고
    봅니다.
    개발환경을 마치 제조업 처럼 찍어내서 많이 팔거나
    인력을 소싱해서 돈을 벌면 된다는 사고 방식이
    문제라고 봅니다.
    즉 개발자들을 협력자라기 보다는 단순 돈을 벌기위한
    도구정도로 생각하는 것.

    티맥스의 실패사례는 개인적으로 이미 예견된 일이라서
    크게놀라지 않습니다.
    하지만 이런한 것을 타산지석으로 생각하지
    않고 여전히 무시하는 회사들이 많다는
    것을 또 예견해야 한다는 현실이
    답답합니다.

  6. 안녕하세요. beyond j2ee님
    티맥스 사례로 끝나지 않을 것입니다. 앞으로도 제2, 제3의 티맥스가 계속 나오겠죠.
    이런 일이 나올 때마다 소프트웨어 산업이 신뢰를 잃고 후퇴하는 것이 문제죠.

  7. Blog Icon
    PLC

    안녕하세요, 좋은 글 잘 읽고 있습니다.
    개인적인 생각이지만, 한국 사람들의 창의성은 무척 뛰어나다고 생각합니다.
    인터넷 커뮤니티와 같은 수평적인 공간에서는 그 능력을 유감없이 드러내고 있는 반면에,
    조직 안에선 그 능력을 십분의 일 발휘하지 못하더군요.
    아무래도 상명하복 문화와 주입식 교육의 피혜가 아닐까 싶습니다만..
    비단 소프트웨어 분야에서만 아니라, 다른 분야에서도 깊이 생각해볼 문제가 아닐까 싶습니다.
    감사합니다.

  8. 한국인의 유전자에 뛰어난 창의성이 있는지는 몰라도 소프트웨어 필드에서는 그렇게 느끼기가 힘든 것 같습니다. 말씀하신 것들이 그 이유중 하나라고 생각합니다.

  9. 소프트웨어관련 일이란것이 사무적이고 반복적인 일이 아닌 창조적이고 지적인 활동이란 것을 점점 자각 시켜줘ㅑ 할 때가 아닌가 싶습니다.

    경영권을 가진 이들은 돈만 되면 한다(당장에)라는 단기적 성장을 노리는 특유의 병폐때문에 소프트웨어가 종종 언발에 오줌누기 식으로 되는 것을 목격하였습니다.

    소프트웨어 공학의 이해도가 없이 개발하셨던 분들도 공학의 중요성을 지나치고서 살고 계시는 분들도 많이 보았습니다. 다는 아니지만, 대부분 귀찮다라는 인식이었던 것 같습니다.

    당장에 돈이 들어간다고 해서 소프트웨어 공학을 간관시 하기 보다 장기간에 걸친 꾸준한 노력과 안목이 필요하다고 생각합니다.

    그런거 해서 뭐해~? 그냥 기간내에 납품만 잘 하면 되는거지.. 라는 인식.. 한번 떼어먹고 보자는 심리..
    특이하게도 그런 병폐가 많은 회사는 아주 말 잘 듣는 개발자나 채용하고 있더군요.. 정말 말 잘 듣고~~ 자기 밑에서 안전하게 쓸 수 있는 용도로 말입니다.
    또는 절대로 자기 위치를 위협할 수 없는 개발자를 선호하기도 하구요:)

    휴.. 그나마 다행인건 이런 기사들을 통해서 소프트웨어 공학 인식을 개발자나 경영진들에게 조금이나마 중요한 인식으로 심어줄 수 있다는 것이 다행입니다.

    또 뵈요~ 규현님~ ^^

  10. 요즘 만나는 소프트웨어 회사의 경영자들은 소프트웨어 공학에 대해서 어느 정도 이해를 하고 있는 비율이 점점 높아지고 있는 것같이 느껴집니다.
    약간 다행스러운 현상이라고 생각됩니다.

  11. Blog Icon
    정재한

    항상 좋은글 잘보고갑니다. ^--^

  12. 감사합니다.

  13. 소프트웨어 공학에 관심이 가는 요즘 블로그에서 정말 좋은글 잘 보고 있습니다.
    감사합니다. ^^

  14. 안녕하세요. 고감자님
    아직도 많은 사람들이 소프트웨어공학에 대해서 착각을 하는 경우가 많습니다. 소프트웨어공학은 이론이 아닌 실전이죠. 자칫 이론적인 방향으로 빠져드는 것은 경계를 해야 합니다.

Hotfix에서의 소스코드관리

2010/05/04 11:26 by Ray.전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed


아래 글에 차우차우님께서 Hotfix에 대한 질문을 해 오셔서 Hotfix에 대해서 좀더 자세히 설명하고자 합니다.

좋은글 잘 봤습니다. Hotfix가 많아질때의 대쳐방법이 궁금한데요 각 fix마다 해당하는 문제에 대한 fix만 만들면 될지 아니면 나중에 있는 Hotfix에 이전에 나온 hotfix를 모두 포함시켜야할지 판단하기가 어려울때가 있습니다. 그리고 각 Hotfix를 만들때도 버전관리시스템에 Hotfix에 대한 태깅을 해야하는지도 궁금합니다.









우선 Hotfix의 정의부터 알아봅시다. 회사마다 용어는 조금씩 다르게 쓰고 있으니 절대적인 정의는 아닙니다.

Hotfix란 "미리 계획되지 않은 긴급한 패치"를 말합니다.
계획된 일정이라는 것이 1년전부터 계획된 것인지 1주일된 계획인지는 회사마다 상황마다 다르고 Hotfix의 긴급도도 10분안에 해결을 해야 하는지 1주일 안에 해결해야 하는지 또 다릅니다. 하지만 이렇게 계획되지 않았지만 긴급하게 수정을 해야 하는 것을 hotfix라고 합니다.

일반적으로 Crash, Block, Security 이슈등으로 긴급하게 Hotfix를 내보냅니다.
Crash란 프로세스가 멈추거나 Database를 망가뜨려 시스템에 더이상 동작되지 않거나 데이터가 파손되는 상태를 말합니다.
Block은 설치가 안되거나 로그인이 안되는 등의 장애로 아무런 일도 못하는 상황을 말합니다. 
Security이슈는 보안에 문제가 생겨서 외부의 침입이 발생하고 있거나 위험한 상황을 말합니다.

여기서 Hotfix의 긴급성에 대해서 얘기를 하는 이유는 수많은 회사들이 긴급하지도 않은 버그(이슈, 기능)을 해결하고 Hotfix 형태로 릴리즈하는 것이 관행화되어 있기 때문입니다. 즉, Patch 일정을 계획하여 진행하지고 않고 그날 그날 개발자가 버그 수정해서 빌드한 후 그냥 고객에게 전달하거나 업데이트 서버에 올리는 것이지요.

그럼 Hotfix와 정식 패치의 차이점은 무엇인지 알아보죠.

 Hotfix  정식 Patch
계획되지 않은 긴급한 패치
보통 충분히 테스트 되지 않고 릴리즈
또다른 문제를 일으킬 가능성이 매우 높음
다른 개발일정에 영향을 줌
고객은 수정된 버전을 바로 받아볼 수 있음
미리 계획됨
계획된 테스트를 수행하고 릴리즈
일상적인 수준의 리스크를 가지고 있음
계획된 일정대로 개발이 가능
고객은 개발사의 일정을 기다려야 함

즉 Hotfix 상황이 아닌데 Hotfix처럼 릴리즈를 하는 것은 정식 Patch의 장점은 모두 버리고 단점만 취하게 되는 겁니다. 유일한 장점은 고객이 개발사에 오전에 전화를 하면 오후에 새로운 버전을 보내준다는 것인데, 이것이 고객에게 장점일지는 생각해 봐야 합니다.

매일 정식 Patch를 내거나 하루에 몇차례 정식패치를 내는 회사도 있습니다. 대표적인 예가 Anti-virus 회사입니다. 이렇게 매일 릴리즈를 해도 정식 계획을 가지고 테스트를 수행하면서 릴리즈를 합니다. 따라서 매일 패치를 내보낸다고 Hotfix는 아닙니다.

개발사는 소프트웨어의 릴리즈 일정을 계획하여 진행을 해야 개발 일정을 안정적으로 가져갈 수 있으며 소프트웨어의 품질 수준을 일정하게 유지할 수 있습니다. 그렇지 않고 호떡집에 불난 모양으로 문제가 생기면 언제나 Fire fighting mode로 개발자가 알아서 불끄고 배포하고 하면 일정도 계획하기 어렵고 개발자들은 항상 야근에 시달리면서도 항상 품질 리스크를 안고 있으며 툭하면 더 큰 폭탄이 터지곤 합니다.

정식 패치 일정은 회사마다 다르므로 성격에 맞게 정의를 해야 합니다. 정식 패치 일정을 계획하여 실천하는데 최대의 "적"은 영업부서입니다. 영업부서에서는 이러한 Hotfix의 위험성을 잘 모르기 때문에 고객의 요구는 바로 들어주기를 원합니다. 따라서 정식 패치 일정은 회사의 규정으로써 정의를 해 놔서 무조건 따르게 하는 것이 좋습니다.

또한, Hotfix를 결정하는 위원회를 두는 것이 좋습니다. 위원회라고 하니까 거창하지만 개발의 대표들과 영업의 대표가 참석을 하면 됩니다. 거기서 영업은 Hotfix의 필요성을 주장하고 개발은 Hotifx의 문제점을 주장합니다. 그래도 Hotfix가 무리하게 나가게 될 경우 나중에 생기는 문제점의 상당부분 영업에게 도의적인 책임이 돌아가게 됩니다. 하지만 이러한 논의도 없이 그냥 Hotifx가 나가고 문제가 생기면 항상 모든 것은 개발자들이 독박을 쓰게 되어 있습니다.

 Hotfix 소스코드관리

일단 Hotfix에 대해서 설명을 하느라고 사설이 길었습니다. 이제부터 Hotfix를 내보낼 때 소스코드 관리를 어떻게 하는 것이 좋을지 설명하도록 하겠습니다.

질문은 크게 두가지입니다.
1. 새 Hotfix에 기존 Hotfix를 포함해야 하는지?
2. Hotfix도 태깅을 해야 하는지?

정답을 먼저 말씀드리면 
1. 그때 그때 다르다.
2. Absolutely - 절대적으로

일단 2번이 답이 간단하므로 먼저 설명을 드리겠습니다. Tagging은 Baseline설정의 한 방법인데, 개발팀 바깥으로 나가는 모든 릴리즈는 Baseline이 설정되어야 합니다. 즉, 태깅이 되어야 합니다.
Baseline은 모든 변경의 기준선으로서 모든 릴리즈는 Baseline(태깅)으로 통제가 되어야 합니다.
그럼 개발팀 바깥이란 무엇일까요? 
테스트팀에게 테스트를 부탁하기 위해서 만들어 내는 빌드도 태깅을 해야 한다는 의미입니다.
이렇게 만들어진 버전은 버그 관리시스템에 등록이 되며 모든 버그, 이슈의 발생지의 이름이 되며 버그 수정의 기준이 됩니다. 

과거 CVS나 VSS등 1세대 소스코드 관리시스템은 Tagging(Label등)이 상당히 부담스러운 작업이었습니다. Tagging을 하면 소스코드를 그대로 복사를 하기 때문에 소스코드가 수백MB짜리 프로젝트를 할 때는 Tagging하는데 시간도 오래 걸렸고, 오래 쓰다보면 디스크 용량도 엄청나게 차지하곤 했습니다. 지금이야 Tera바이트 디스크를 쓰지만 과거에는 수백MB짜리 소스코드를 자주 태깅하는 것이 쉬운 일은 아니었습니다.

하지만 Subversion은 Tagging을 하는데 HDD 용량을 거의 쓰지 않습니다. 시간도 아무리 커다란 소스코드도 몇초면 끝납니다. 그래서 Tagging하는데 아무런 부담을 느낄 필요가 없습니다. 모든 정식빌드에 대해서 태그를 남길 수 있습니다. 여기서 말하는 정식 빌드란 개발자가 개발하면서 테스트를 하기 위해서 IDE(통합개발환경)에서 빌드하는 것을 제외한 공식적인 빌드를 말합니다. 엄밀히 말하면 공식빌드는 개발자의 일이 아니며 빌드팀의 업무입니다. 또한 별도의 빌드장비에서 이루어 집니다. 하지만 작은 회사라면 개발자가 겸업을 할 수는 있습니다. 그렇다고 하더라도 빌드장비는 필요합니다. 개발자 시스템은 더러운 환경(Dirty environment)이기 때문에 항상 일정한 빌드를 만들어 낼 수 있다는 보장이 없기 때문입니다. 개발자에게 이러한 일에 신경을 쓰게 하는 것보다 시스템을 하나 사주는 것이 훨씬 비용이 싸게 먹힙니다.

그럼 두번째 Hotfix간의 포함관계입니다.
Hotfix를 해야할만한 심각한 버그가 발생하면 Hotfix를 평가해야 합니다. 평가 항목은 다음과 같습니다.
  1. 상세한 버그 내용
  2. 버그에 영향을 받는 고객의 범위. 한 고객에게서만 발생한 것인지? 모든 고객에서 발생하는지?
  3. 버그로 인해서 발생하는 고객의 예상 피해
  4. 버그를 얼마나 빨리 해결해야 하는지
  5. 고객의 피해로 인해서 발생하는 회사의 비즈니스적인 손해
  6. 버그 수정에 투입해야 하는 인력 및 자원
  7. 기존 개발일정에 미치는 영향
여기서 기술적으로 가장 신속하고 심각하게 고민해야 하는 것이 빨리 버그를 분석하여 광범위한 버그인지 특정 상황에서만 발생하는 버그인지 판단을 해야 합니다. 

Hotfix라는 것은 태생적으로 또다른 문제를 발생시킬 가능성이 대단히 높기 때문에 한 사이트에서만 발생하는 버그를 고치기 위해서 모든 고객에게 Risk가 있는 Hotfix를 배포하는 것은 좋지 않습니다. Hotfix가 미치는 범위는 가능하면 좁게 가져가는 것이 좋습니다.

이렇게 되면 결론은 나왔습니다. 
Hotfix들이 모든 고객이나 특정 고객 집단에서 광범위하게 발생한 것이라면 합쳐지는 것이 좋겠습니다.
그렇지 않고 소수의 고객에게만 서로 다르게 발생하는 문제라면 별도의 Hotfix를 만들어서 각각 배포를 하는 것이 좋겠습니다. 

또한 Hotfix를 배포한 후에 정식버전에 앞서 배포한 Hotfix를 모두 포함해야 하는지도 판단해봐야 합니다. 이또한 회사마다 상황이 다르기 때문에 입니다. 따라서 Hotfix를 일으킨 버그의 성격과 제품의 상황을 보고 판단해야 합니다.

소스코드관리시스템을 제대로 쓰지 않으면 이러한 여러 Hotfix의 관리도 불가능합니다. 하지만 소스코드관리시스템을 제대로만 사용한다면 매우 쉬운 일입니다.



Hotfix를 작성할 때 Branch및 Tag를 어떻게 만드는지 간단한 예입니다. Hotfix를 만들기 전에 Hotfix용 브랜치를 만든 후에 작업 완료후 Release할 때는 꼭 Tag를 만듭니다. 그리고 Hotfix간의 Merge는 Hotfix와 Trunk간의 Merge는 3Way Merge를 이용해서 거의 자동으로 할 수가 있습니다.

여기서는 소스코드관리시스템 관점으로만 설명을 했는 위의 모든 활동들이 버그관리시스템(이슈관리시스템)과 긴밀하게 연동이 되어서 진행이 되게 됩니다.

 마무리

오늘 얘기 중에서 가장 중요한 메시지는 Hotfix는 함부로 남발하지 말자는 겁니다.
지금 모든 릴리즈를 Hotfix처럼 하고 있다면 Release 정책을 세워야 합니다. 

Hotfix남발은 비용이 더 많이 들뿐만 아니라 제품의 품질을 떨어뜨리고 개발자를 혹사하고 회사의 이미지도 깍아먹습니다. 영업이나 고객이 Hotfix에 너무 길들여져 있어서 바꾸기 어렵다면 정식 릴리즈 일정을 현재의 Hotfix일정과 비슷하게 가져가고 그 간격을 차차 정당한 수준으로 늘려가는 것이 좋습니다. 그래야 일주일에 몇번이라도 집에가서 식구들과 식사를 할 수 있지 않겠습니까?

* 이 포스트는 blogkorea [블코채널 : 꿈꾸는 소프트웨어 개발자 세상] 에 링크 되어있습니다.
Image by Paul L McCord Jr

저작자 표시 비영리 변경 금지

Ray.전규현 기반시스템/소스코드관리 3WayMerge, Branch, build, Firefighter, FireFighting, hotfix, IDE, merge, Patch, release, TAG

Trackback Address: http://allofsoftware.net/trackback/187 관련글 쓰기
  1. 좋은 글 잘 봤습니다. 가급적 정식패치를 가져가고 싶지만 고객은 당장해결해달라고 하는경우가 많네요 ㅠㅠ 버그의 수준이 심각한게 아니더라도 말이죠. 일단 Hotfix가 많이 나오지 않도록 코드품질에 신경써야겠고 영업측에도 Hotfix의 위험성에 대해서 설득해야 겠습니다. ^^

  2. 안녕하세요. 차우차우님
    말씀하신 현상은 우리나라 소프트웨어 회사에서 너무나 흔히 볼 수 있는 현상입니다.
    또한 우리나라 소프트웨어 회사들이 성장하지 못하는 가장 중요한 요소중 하나입니다.
    개발자들이 적당히 설득해서 영업이 바뀌었으면 벌써 잘 되었겠죠. 영업을 설득하는 것은 그렇게 쉽지 않습니다.
    특히, 경영자가 Sales oriented되어 있으면 더욱 힘듭니다. 개발자들도 심정적으로는 그렇게 하면 안되는 것을 알지만 좀더 전문적으로 강력하게 설득할 힘이 부족한 것이 현실입니다.
    그래서 저같은 전문가가 회사에 가서 경영자와 영업도 교육을 시키고, 시스템, 프로세스, 문화를 바꿔주는 것이지요. ^^
    해보다가 난관에 부닥히면 도움을 요청하세요. 감사합니다.

  3. 잘 읽었습니다. 볼 때마다 소스코드 관리 안하고 그냥 개발해서 뜨끔뜨끔합니다 ㅎㅎㅎ;;

  4. 안녕하세요. 루돌님 반갑습니다.
    엄청 오래된 블로그를 가지고 계시네요. 대단하십니다. ^^
    종종 들려서 좋은 정보를 나눠요.

  5. 그래도 cvs에 비해서 svn은 viewvc 등에서 tag를 보기가 힘든 단점이 있는거 같더라구요.
    아무튼 태그와 브랜치간에 오고가는거에 대한 문서는 보기 힘들던데
    그 부분에 대해서(실제 cvs, svn 명령어를 통해) 자세한 설명을 부탁드립니다.

  6. 안녕하세요. 구차니님
    viewvc같은 이슈는 전체 소스코드관리 이슈에서 너무나 미미한 이슈입니다. 지엽적인 이슈에 크게 좌지우지 되지 않는 것이 좋겠습니다.
    사실 시중의 모든 소스코드관리를 다루는 책에서 브랜치, 태그, 머지 등에 대해서 설명이 되어 있지만, 책을 보고 한번에 익히는 것은 대단히 어렵습니다.
    그래서 실무를 통해서 배우는 것이 가장 좋은데 제대로 하고 있는 선배들이 별로 없으니 이또한 어렵기는 마찬가지 입니다.
    그렇다고 블로그의 글을 통해서 모든 것을 전달하기도 어렵습니다. 어쨋든 나름대로 앞으로도 글을 계속 써보기는 할텐데, 글들을 보고 깨우치는 사람도 있을 것이고 그렇지 못한 사람도 있을 겁니다.
    제 Office에 한번 오시면 제가 직접 설명을 해드리면 더 빠를텐데요. ^^

    아무튼 앞으로도 계속 관심을 기울이고 실무에 적용을 해보면서 궁금한 것이 있으면 또 물어보고 이렇게 반복을 하다보면 어느새 다 깨우치게 될 겁니다.

    질문 중에서 "태그와 브랜치간의 오가는 것"이란 무엇을 말하는 것인가요? 질문이 매우 모호해서 구체적인 답변을 드리기가 어렵네요.

    댓글이나 Email을 통해서 자세히 설명을 해주시면 제가 답변을 드리도록 하겠습니다

    감사합니다.

변경된 CC 평가 인증 제도

2010/05/03 23:18 by davideung
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed
안녕하세요, 다시 CC인증에 대해서 이야기를 시작하려고 합니다. 제가 마지막 포스트를 한 것이 2008년 11월 이니까 거의 1년 반을 쉬게된 셈이네요.

다시 한번 심기일전하여 포스트를 해보록 하겠습니다.

마지막 포스트 이후 그간 많은 것들이 변했지만 4/30(금)에 열린 품질인증 컨퍼런스를 통해 국내 CC인증 평가 제도가 많이 변경이 된 것을 알 수 있었습니다. 오셔서 직접 듣고 보신 분들도 계시겠지만 그 변경된 제도를 다시 한번 정리해보고 실제적으로 어떤 의미가 있는지, 앞으로는 어떻게 예상이 되는지를 한번 알아보려고 합니다. (이 포스트는 평가기관 어떠한 관계도 없음을 알려드립니다.)



변경 승인 절차 간소화


이전에는 CC인증을 받은 평가 제품이 변경이 일어나 인증 효력을 유지하기 위해 변경 승인을 신청할 때 인증기관(국정원 IT보안인증사무국)으로 연락(전화)하여 필요한 서류와 제출물들을 준비하여 제출하면 인증기관이 해당 제품을 평가한 평가기관으로 평가 의뢰를 하는 식으로 진행이 되었었습니다.

그러므로 인해서 업체에서는 하루라도 빨리 변경 승인을 받은 후 제품을 배포해야 하는데 인증기관이나 평가기관의 다른 많은 업무들로 인해서 지연되는 경우가 있을 수 있었습니다.

그러나 이번에 변경되어 현재 시행하고 있는 "변경 승인 절차의 간소화"는 변경 승인 신청을 평가를 받은 평가기관으로 하게되어 중간 인증기관으로 했던 절차를 없애버린 것입니다. 평가기관은 변경 승인 신청을 받아 가능하면 해당 평가 제품을 평가한 평가자에게 직접 변경 승인 평가를 담당하도록 합니다. 해당 평가자가 다른 제품 평가를 진행 중에 있어도 변경 승인을 동시에 평가 진행하여 신청 업체는 바로 변경 승인 절차(평가)에 들어 갈 수가 있는 것입니다.

★ 요즘에는 민간 평가 기관들이 많이 있기 때문에 한 회사에서도 여러 평가 기관과 평가 계약을 맺고 평가를 진행하는데,  평가 신청 업체에서는 향후 이러한 변경 승인까지 고려한 제품의 유지보수를 계획해야만 시장에 발빠르게 인증 제품을 유지 할 수 있을 것입니다.



EAL2 평가자 간소화: 2명 -> 1명


이전에는 평가 제품에 따라 다르기는 하지만 보통 2명의 평가자가 배정되어 4-8개월 평가를 진행했었습니다. 그러다가 평가기관의 평가자가 평가 수요에 미치지 못하자 "3인 2평가반" 이라고 해서 1명의 "선임평가자"는 2개의 평가반에 걸쳐 각 평가반에 있는 1명의 평가자와 함께 평가를 진행하도록 개선안이 나왔었습니다. 그러는 가운데 1-2개의 민간 평가기관이 더 생기면서 이 제도가 아예 없어진 것은 아니지만 크게 영향을 미치지는 못했습니다.

그리고 근래에는 평가 등급이 EAL2 이상으로 다양한 등급으로 평가를 받는 제품들이 늘고 있습니다. 이것은 공공기관에 도입되는 제품은 EAL2 이상이면 된다는 정책으로 인한 것인데요, 현재 방화벽은 보호프로파일의 의도와 같이 공공 기관의 중요한 장비인 만큼 EAL4로 받고 있고, 그와 같은 중요 장비라고 판단되는 것은 수요 기관에서도 EAL4 정도의 등급을 원하고 있습니다만, 그 외 제품들은 시장 상황에 맞추어 EAL3 부터 EAL2 도 점차 많아지고 있는 추세 입니다.

보통, 국내 평가 제도인 경우 (제품에 따라, 평가 기관에 따라 다르지만) EAL4인 경우 5개월, EAL3는 4개월, EAL2인 경우는 약 3개월 정도 잡았었습니다. 물론 대강 그렇다는 것이고, EAL2 였어도 평가자 2명이 3개월은 족히 걸렸습니다. 물론 제품의 복잡도에 따라 다른 것은 당연하고요.

그러는 가운데 EAL2 등급의 평가 담당자를 2명에서 1명으로 줄인 다는 것은 기간을 줄인다기 보다는 평가 비용(수수료)를 줄인다는 의미로 받아들여집니다. 그렇다고 수수료 비용이 1/2로 줄어드는 것은 아닐 것입니다. 그렇다면 평가자 인건비 정도해서 수수료가 줄어들 것 같습니다. 이날 KISA 이강석팀장의 발표에 있어서도 27%의 비용이 감소할 것이라고 하는데 그것은 최소 순수 평가 수수료에 해당하는 것 같습니다. 물론, 앞으로 설명할 평가 제도가 변경되었기에 1인 평가가 가능할 것이고요.

★ 그렇다면, 평가 신청 업체의 비용은 수수료 외에 비용이 절감 되는 것은 없을까요? 실제로 업체가 느끼는 비용의 감소가 있을까요? (평가 수수료가 기간에 비례하기 때문에) 오히려 평가자가 1명이면 기간이 늘어나서 평가 수수료도 같이 늘어나지 않을까요? 2명이 하던 일을 1명이 해야 하니까요.  그러나 앞서 말씀드렸듯이 이것은 평가 제도가 변경이 되었기 때문에 가능한 것이라 생각됩니다. 실제로 평가 기간과 EAL2 등급의 평가 신청을 했는데 3개월이 넘지 않는 것으로 이야기가 되어 가고 있는 것을 보면 어느정도 비용 감소 부분은 반영이 되고 있는 것 같습니다. 그러나 이는 철저히 평가 제품의 복잡도 측면에서도 고려가 되어야 합니다.



제출물 간소화


가장 즁요한 변경 사항입니다. 이 부분이 아직까지는 변경된 평가 제도로 평가를 진행해 보지 않아서 정확히 실제적으로 얼마나 간소화가 되어 준비하는 업체가 피부에 느낄 수 있는 제도 개선인지 알수는 없습니다만 어떤 부분이 변경이 되었는지 간략히 살펴보겠습니다.

우선 개념은, 기존에 제출했던 보증 문서들을 평가하는 것이 주였다면 변경된 제도에서는 기능/취약성 중심의 평가로 제출물을 간소화 하겠다는 것입니다. 다음은 EAL4 기준으로 제도 개선 후의 제출물의 변경 사항입니다.

출처: 2010 품질인증 컨퍼런스 발표 자료 (KISA)

보안목표명세서(ASE_*):
  • 제출/평가 동일
  • TOE의 범위가 모든 제품으로 확대 서술
  • 비보안기능과 보안기능 연관 인터페이스도 포함

 설명서(AGD_*):

  • 제출/평가 동일
  • 인수/설치/준비/운영

기능명세서(ADV_FSP.4)

  • 제출 안함
  • 보안목표명세서(TSS: TOE 요약 명세)와 설명서도 대체

TOE 설계서(ADV_TDS.3)

  • 제출 하지만 평가 안함
  • 제출은 CC인증 문서가 아니가 신청 업체 자체 문서 가능
  • 평가시 (취약성 분석 등) 제품 파악을 위한 참고
  • 참고를 위해 추가 제출 요청이 있을 수 있음

구현검증명세서(ADV_IMP.1)

  • 제출/평가 동일
  • 기존 처럼 EAL4 경우 일부 제출

보안구조서(ADV_ARC.1)

  • 제출 안함
  • 취약성분석서로 대체 (추가 제출분)
 
시험서(ATE_*)

  • ATE_COV.2(범위) 나 ATE_DPT.2(깊이) 같은 분석서는 제출하지 않고 평가자 직접 수행
  • ATE_FUN.1에서 요구하는 시험서(기능/모듈) 제출/평가
  • 대신 내용 중에 "예상 결과"와 "실제 결과" 중 "실제 결과"는 생략 가능 (화면 캡처 필요 없음)

형상관리문서(ALC_CM*)

  • 평가 안함
  • 개발 환경 보안 점검시 평가

배포문서(ALC_DEL.1)

  • 평가 안함
  • 개발 환경 보안 점검시 평가

개발보안문서(ALC_DVS.1)

  • 평가 안함
  • 개발 환경 보안 점검시 평가

생명주기정의문서(ALC_LCD.1)

  • 제출/평가 동일

개발도구문서(ALC_TAT.1)

  • 제출/평가 동일
* 개발환경 보안 점검의 유효 기관은 이전과 동일 2년 (그간 환경의 변화가 없을 시)


개발자 취약성분석 서(AVA_VAN.3)

  • 제출/평가
  • 이전 제도에는 제출하지 않고 평가만 했으나 제출하는 것으로 변경
  • 위 "보안구조서"에 취약성 항목 추가하여 제출
  • 분석의 범위는 EAL4 경우 소스코드 까지

제출물들만 보자면 분명히 간소화가 된 부분이 있습니다. 실제 평가 계획도 문서 평가 보다는 시험위주로 하는 것으로 보아 신청 업체로서는 문서에 대한 부담이 줄었습니다.

신청 업체가 준비하는 문서 중 가장 많은 비중을 차지 할 수 밖에 없는 (그래서 시간이 많이 걸렸던) "설계서"는 평가를 하지 않지만 제출(내부 설계서를 그대로라도)을 하므로, 이것은 신청 업체의 개발 문화에 따라 많이 차이가 날 것으로 판단이 됩니다. 기존에 개발 문서가 잘 되어 있는 회사에서는 이를 인증 문서로 "재작성" 하지 않아서 확실히 제출 문서 작업의 양이 줄겠지만 그마저 없는 회사의 경우는 회사 전체로 보았을 때 준비해야 하는 문서는 그리 차이가 나지 않을 것입니다. 물론 평가 시, 보완 요청(OR: Observation Report)을 받지 않는 것은 개발 문서가 있던지 없던지 상관 없이 문서에 대한 부담이 준 것은 사실이고요.

그러나 설계서 또한 평가자가 평가의 이해를 위해 얼마든지 추가 요청을 할 수 있어 이 또한 평가 시 업체의 개발 문서를 작성하는 개발 문화에 따라 업무량이 많이 판가름이 날 것 같습니다.

★ 그렇다고 한다면 예상 하셨듯이, 개발 프로세스(문화)가 역시 국내에서 CC인증을 받을 때 더 지대한 영향을 주 수 밖에 없습니다. 국내 CC 인증 평가가 기능/취약성 시험 위주로 간다는 것은 그만큼 제품의 보안성/안정성이 큰 문제가 될 수 있게 되고 이것의 결과는 개발 문화의 차이가 벌여 놓을 것이기 때문입니다.

그리고 한가지 평가의 경향이 기능/취약성 시험 위주로 간다고 하지만 거꾸로 평가를 통해 공개되는 문서인 "보안목표명세서"와 "설명서"는 더욱 더 세밀하게 평가하고 보완요청을 하고 있으니 더 잘 준비해야 할 것입니다.



보안성 강화


이것은 기존에 CC의 개념에서 제공하고 있는 것 중 TOE(평가 대상)의 범위를 개발 업체가 지정할 수 있었던 것을 아예 없애고 "TOE = 제품" 이라는 논리로 개발 업체가 임의로 선택할 수 없음을 의미합니다. 즉, 사용자에게 제공되는 제품 (더 정확히는 패키지, 설치본, 장비) 그대로 모두 다 평가를 받아야만 한다는 것입니다.

게다가, 보안 기능 뿐만 아니라 비보안 기능 까지도 기능/취약성 위주의 평가를 해야 하기 때문에 제품이 제공하는 모든 기능을 시험해야 하며, 추가적으로 (여기에 대해서는 상황도 다양하고 논의가 되어야 할 부분이 많은데) 비/보안 기능의 외부 3'rd party 프로그램 (혹은 같은 회사의 제품) 간의 인터페이스 또한 어떤 식으로든 시험이 되어야 한다는 것입니다.

요즘 보안 제품의 특성은 융합/연동이기 때문에 이 부분은 잘못하다가는 배보다 배꼽이 더 커지는 불상사가 발생할 수도 있을 것입니다. 그리고 실제 취약성의 경우 이러한 인터페이스에서 주로 일어나고 있기 때문에 더욱 관심이 가는 부분이 아닐 수 없습니다. 그래서 이날 발표한 KISA의 선임평가자는 이러한 인터페이스의 SQL Injection과 같은 취약성 분석을 위해서 소스 코드 제출도 요청할 수 있다고 합니다.

이런 저런 측면을 다 고려한다면, 평가를 위해 제출해야 하는 제출물의 개수는 줄어 들 수 있겠지만 각각의 제출물의 양은 늘어서 비슷해지지 않을까 모르겠습니다.



CC 버전 호환성 강화


KiSA 홈페이지에 공지된 바와 같이 CC v2.3은 올해 6월 30일이면, CCv2.3으로는 평가 신청을 할 수 없었습니다. (기존 인증서는 계속 유지 가능) 변경승인은 그렇지 않은 것으로 알고 있었는데, 재평가도 신청을 하려면 모두 다 CC v3.1로 다시 신청을 해야 해서 자동으로 신규 평가가 됩니다.

그러나 변경된 제도에서는 이 둘 모두(변경 승인, 재평가 신청) CC v3.1로 재평가/변경승인을 그대로 할 수 있도록 그 호환성이 강화 되었다는 것입니다.

★ 그래도 문서의 CCv3.1로의 변경은 불가피한데, 이는 평가기관에서 발표하기로는 최소한으로 할 수 있도록 한다는 코멘트를 했습니다. 적어도 "보안목표명세서"는 수정이 완벽하게 되어야 하겠고 그 변경의 정도에 따라 (보안영향분석) 평가시 요청을 하겠지요.

그렇다면 이러한 제도가 재평가/변경승인 시에 어떻게 되는지도 궁금합니다.



적용 실행


전면 시행(반듯이)은 올해 7월 1일 부터 입니다. 그 전까지는 업체의 선택
으로 할 수 있다고 합니다. 그리고 이날 발표에 의하면 "인증효력유지신청" 시 기 적용된 기준을 적용한다고 했는데 - 그렇게 된다면 기존에 개발 업체가 임의로 정한 TOE의 범위를 그대로 적용한다는 것인데 - 매우 관대하다 생각이 되어 한번더 문의를 했습니다.

기존 제도로 인증 받은 제품의 경우 재평가나 변경 승인 신청 시에는 TOE를 임의로 선택할 수 없다고 합니다. 그러니까 변경 된 후의 제도를 반듯이 (7월 1일 이후) 따라야 하는 것이지요. 제출 문서의 경우 기존의 것을 그대로 수용 한다는 취지로 그런 것이라고 하는데, TOE의 범위가 변경되면 "보안목표명세서"는 분명히 바뀔 것이고, 바꾸어야만 하는 것은 명백하고, 그리고 나머지 문서들은 변경된 제도에 의해서 제출하지 않는 것이 많은데 오히려 더 혼돈되는 것이 많을 것 같습니다. (제출하는 문서가 있고, 그렇지 않은 문서가 있고... 등) 아무튼 보안성 강화 측면에서의 재평가/변경승인은 어쩔 수 없는 것 같습니다. 이번 개선의 주요 변경 사항이니 말입니다.

그래서 이번 제도 개선이 문서의 측면 보다는 TOE 범위의 확대(전체)에 따른 보안성 개선이 개발 업체에게 더욱 큰 부담으로 돌아오지 않을까 합니다. 문서 위주 였던 이전 보다 더욱 실제적인 부담이기를 바라고 또 시장의 요구사항과의 충돌이 아니라, 전체 사용자 측면의 개선도 같이 이루어 지면서 개선되는  보안성 측면이라면 발전 가능성이 있어 보이기도 합니다. 굵게

★ 사용자의 보안 측면과의 충돌에 대해서는 다음에 더욱 자세히 알아보도록 준비하겠습니다. 이것이 중요한 이유는 보안이라는 것은 개발 업체만 "완벽한" 보안 기능 제품을 만든다고 이루어 지지 않기 때문이라는 점을 누구나 다 알기 때문입니다. 수요측(사용자)와 그리고 또 정책 기관 또한 못지 않게 중요하기 때문입니다. 특히 이러한 인증 시장에서는 오히려 사용자에게 교육이나 정책으로 가이드하고 개발 업체에게는 자육성과 창의성을 주어서 혁신적인 제품을 만들도록 하는것이 장기적인 국가 보안과 경쟁력에 도움이 되지 않을까 합니다.



평가 수수료 할인 계속


KISA는 평가 신청 업체가 중소기업법 제2조에 따른 중소기업이면 년 1회 50% 할인하는 정책은 유지할 것이라고 합니다. 현재는 3차년도로 올해 8월부터 201년 7월까지 인증 받는 것은 50% 할인이 됩니다. 한 회사에서 2차년도로 7월에 할인 받고 또 8월에 할인 받을 수 있는 것입니다.

★ 그러나 KISA는 정책적으로 국내 평가반을 줄이고 정책 연구나 고등급/국제 인증에 비중을 더욱 두므로 얼마나 많은 중소 기업이 이러한 혜택을 받을지는 모르겠습니다. 현재 국내 평가의 경우 대기기간(평가 신청 후, 평가 착수까지의 시간)은 민간 평가 업체들이나 KISA나 비슷한 것으로 알고 있습니다.



마치며


이번 제도 개선은 그간의 중복작업이니, 효용 없는 문서 작업이니 하면서 소위 "쓸 데 없는 짓"으로 치부 되었던 국내 CC인증 제도의 한 부분이었던 문서 평가 보다는 실제적으로 기능/취약성 시험 평가로 개선이 된 점은 보안성 측면에서는 더욱 좋아진 것은 사실입니다.

그러므로 평가자의 자질과 능력이 더욱 중요시 될 것입니다. 그래서 평가 기술 위원회가 이를 조정 할 것이라고 합니다만 이미 평가를 몇년간 진행해 왔고 인증 시장이 성숙해 있는 시점에서 어떻게 바꾸어 갈 수 있을지 귀추가 주목이 되는 부분입니다. 그리도 또한 평가를 하는 평가기관과 평가 받는 개발 업체에 대해서만 개선할 것이 아니라 사용자 측면에 있어서도 제도/정책적으로 개발 업체가 좀 더 혁신적인 방법으로 경쟁력을 갖도록 가이드 하는 것이 필요 할 것 같습니다.

그리고 국내에서는 CC 인증이 더 이상 공통평가기준(ISO/IEC 15408)과 멀어져 사용자-평가자-개발자가 공통의 기준으로 사용하고 평가하고 개발하는데 그 중요한 목적이 달성되지 않아 보안성 평가 측면에 있어서 퇴보를 하지 않을까 하는 우려점도 남습니다. 우리나라가 이 국제 공통평가기준을 도입하고 또한 그렇게 빠르게 CCRA(Common Criteria Recognition Arrangement)에 가입하는 노력이 허사로 돌아가지 않고 국내 제품들이 계속적으로 글로벌하게 해외 시장에 진출하는데 있어 일관된 기준이 적용되어야 경쟁력이 쌓이지 않을까 합니다.

막상 정리하다보니, 매우 긴~ 글이 되고 말았습니다. 여기까지 읽어주셔서 너무도 감사드립니다. 의문 사항이 있거나 잘못된 내용이 있다면 언제든지 관심어린 지적을 부탁드립니다.


저작자 표시 비영리 변경 금지

'인증' 카테고리의 다른 글

변경된 CC 평가 인증 제도  (1) 2010/05/03
인증을 꼭 받아야 하나요?  (4) 2008/11/06

davideung 인증 CC, 인증, 제도, 컨퍼런스, 평가, 품질

Trackback Address: http://allofsoftware.net/trackback/186 관련글 쓰기
  1. 2010/05/04 12:11
    다윗의 생각 Tracked from davideung's me2DAY
  1. Blog Icon
    paeng

    글 감사합니다. ^^ 즐거운 하루 되세용~

혼자서 개발을 하면 소스코드의 브랜치/머지가 필요없을까?

2010/05/03 14:00 by Ray.전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed


소스코드관리에 대해서 얘기를 하다보면 혼자서 개발을 하기 때문에 별 고민 없이 대충 소스코드를 관리하는 경우를 많이 봤습니다.

Subversion 등의 소스코드관리시스템을 쓰더라도 그냥 소스코드를 백업 받는 수준으로 사용하고 많이 사용하면 Baseline설정(Tagging)정도 하곤하더군요. 그러면서 혼자서 개발을 하기 때문에 소스코드의 브랜치/머지가 필요 없다고 생각합니다. 하지만 혼자서 개발을 하더라도 소스코드 브랜치/머지가 필요한 상황은 꼭 발생하기 마련입니다. 만약에 이러한 상황에서 브랜치/머지를 능수능란하게 하지 못하면 기존의 수작업에 의존하는 방식으로 처리를 하면서 소스코드관리시스템이 주는 큰 혜택을 누리지 못하게 됩니다.

또, 개발자는 한명이 아니더라도 마치 혼자서 개발을 하는 것처럼 개발자들끼리 담당 소스코드를 철저히 나눠서 서로 충돌이 나는 일이 없도록 개발을 하는 경우가 허다합니다. 이런 것을 Component Owner라고 하고 이런 체제에서는 개발자들 간의 기술의 공유가 어려워지고 회사의 규모가 커질수록 개발 효율성은 점점 떨어지게 됩니다.

그럼, 어떤 상황에서 혼자서 개발을 하더라도 소스코드 브랜치/머지가 필요한 상황이 발생하는지 알아보도록 하겠습니다.

첫째, Hotfix인 경우입니다.
소프트웨어의 종류는 워낙 다양하기 때문에 획일적으로 말할 수 없습니다. 그래서 간단한 예를 하나 들어보죠. 매일 한번씩 패치를 만들어서 정해진 시간에 인터넷으로 업데이트를 하는 소프트웨어를 개발하고 있다고 칩십니다. 오늘 오후 5시에 내보낼 패치에 들어갈 Bug fix와 Feature를 열심히 넣고 있는데 긴급 Hotfix 상황이 발생한 겁니다. 따라서 정식 패치때까지 기다릴 수는 없고 일단 시급한 버그 하나만 고쳐서 서둘러서 업데이트를 해줘야 합니다. 이러한 상황에서 소스코드관리시스템을 사용하는 능숙도에 따라서 대처하는 방법들이 매우 다릅니다.

 하수

소스코드관리시스템을 거의 제대로 쓰지 못하는 경우, 오늘 고치고 있는 소스코드를 수동으로 하나씩 지워서 원래 버전을 만들어냅니다. 이러한 경우는 믿기 힘들겠지만 제가 컨설팅을 하면서 많은 회사들이 이렇게 하고 있다는 것을 접했습니다. 이렇게 원래 버전을 만들어서 Hotfix를 만들어서 내보낸 후에 다시 재작업을 합니다.

 중수

이보다 조금더 나은 경우, 원래 고치고 있던 소스코드의 디렉토리를 임시로 백업 받아 놓고 소스코드관리시스템에 있는 어제 버전의 소스코드를 다시 Check out합니다. 이렇게 Check out한 소스코드를 가지고 Hotfix를 만들어서 내보내고 오늘 작업하던 백업을 받아 놓은 소스코드와 Merge tool을 이용해서 Merge를 한 후에 정기 업데이트 버전을 만들어서 내보내는 방법입니다. 아까보다는 조금 나아 졌지만, 여전히 수작업에 많이 의존을 하고 귀찮은 작업들을 해줘야 합니다.

 고수

Subversion등의 소스코드 관리시스템을 제대로 사용한다면 이보다 좀더 손쉽습니다. 
우선 어제 릴리즈를 한 소스코드의 Baseline(Tag)에서 Hotfix용 브랜치를 만듭니다. 기존에 개발하고 있던 디렉터리는 그대로 놔두고 새로운 디렉터리에 Hotfix를 Check out 받습니다. 보고된 버그를 수정하여 자동화된 빌드스크립트를 이용해서 Hotfix를 만들어내고 업데이트에 올립니다. 정상적으로 Hotfix가 배포된 것을 확인하고 Hotfix 브랜치는 Trunk로 Merge를 합니다. 이때 3Way Merge 툴을 이용하면 됩니다. 
3Way Merge를 적용하려면 3개의 기준점이 필요합니다. 3개의 기준점은 다음과 같습니다.

Base - 어제 릴리즈한 Baseline(Tag)
Their - 오늘 Hotfix 릴리즈한 Baseline(Tag)
Mine - Trunk의 Head revision(최신소스)

3Way Merge를 통하면 거의 99% 자동으로 Merge가 되고 Conflict가 나는 소스코드들도 KDiff3나 P4Merge등의 GUI가 뛰어난 3Way Merge툴을 이용하여 쉽게 Merge를 할 수 있습니다.

그리고 현재 로컬에서 고치고 있던 소스코드와 통합을 해야 합니다. 이를 Rebase라고 하는데 SVN에서는 Update명령을 내리면 서버에서 바뀐 내용이 자동으로 Working copy와 통합이 됩니다. 이때도 3Way Merge를 이용하게 됩니다.

즉, 개발자는 소스코드 내용 고치는데만 신경을 쓰면 되고 나머지는 소스코드관리시스템이 다 알아서 해 줍니다. 소스코드 통합하는데 불과 얼마 걸리지 않고 혼동도 없습니다. 시간은 하수,중수의 수십분의 1이면 가능하게 됩니다.

혼자 개발하더라도 제대로 하지 않으면 이렇게 혼동이 있고 소스코드관리시스템의 기능을 잘 사용만하며 이렇게 손 쉬운데 개발자가 수십명, 수백명이서 하수, 중수의 방법으로 어떻게 소프트웨어를 제대로 개발할 수 있을까요?

물론 이것이 다는 아니죠. 기능을 충분히 사용하는 것은 이제 시작입니다. 더 큰 조직에서 조직적으로 제대로 사용하려면 프로세스, 규칙, 문화 등과 접목되어서 돌아가야 하는데, 이는 더 어렵습니다. 그러데 하물며 기능도 제대로 사용을 못하는 회사가 대부분인데 그 다음은 말할 필요하고 없죠.

Hotfix 경우 외에도 기존 소스코드에 큰 변경을 가해서 성공 여부를 확신할 수 없는 기능을 추가할때.
시간이 오래 걸리는 기능을 추가하면서 중간 중간에 다른 변경에 대한 릴리즈를 해야 할 때.
등 혼자서 개발을 하더라도 Branch/Merge를 해야 할 경우는 수도 없이 나오게 됩니다.

소스코드관리를 너무 쉽게 생각하면 안됩니다. 잘해 놓으면 무척 쉽고 개발에 매우 큰 도움을 주지만, 대충대충 하다보면 큰 발목을 잡히게 됩니다. 혼자 개발하더라도 제대로 하겠다는 마음가짐을 가지고 완벽하게 전체 기능을 다 알아야 합니다. 그리고 나면 이좋은 것을 왜 지금까지는 제대로 하지 않았을까 아쉬움이 들겁니다.

책을 보고 해보는 방법도 있지만 시간이 좀 많이 걸리겠지요. 주변에서 잘아는 사람에게 물어보는 것은 시간을 절약할 수 있는 좋은 방법입니다. 주변에 그런 사람이 없다면 블로그에 궁금한 것을 올려주세요. 제가 힘이 닿는한 잘 설명드리겠습니다. 제가 쓴 책(소프트웨어개발의 모든 것)에서는 이러한 부분이 이론적이 아닌 실제 방법을 자세히 설명하고 있으니 보시는 것도 도움이 많이 될 것입니다.

* 이 포스트는 blogkorea [블코채널 : 꿈꾸는 소프트웨어 개발자 세상] 에 링크 되어있습니다.
Image by Carly & Art


저작자 표시 비영리 변경 금지

Ray.전규현 기반시스템/소스코드관리 Branch, merge, SCM, 소스코드관리시스템

Trackback Address: http://allofsoftware.net/trackback/185 관련글 쓰기
  1. 2010/05/04 11:40
    Hotfix에서의 소스코드관리 Tracked from All of Software
  2. 2010/06/07 21:20
    소프트웨어 개발의 모든 것 -전규현 Tracked from 김재호의 디지털보단 아날로그
  1. 확실히 태그는 몰라도 브랜치는 사용법을 잘 모르겠더라구요. ㅠ.ㅠ
    나중에 브랜치 사용법 cvs/svn 에서 강좌가능하실까요? ^^;

  2. 안녕하세요. 구차니님
    브랜치/머지를 교과서적으로 뭔지 아는 것은 10분이면 됩니다. 하지만 제대로 쓰려고 이해를 하려면 시간이 많이 걸립니다. 그리고 수많은 케이스에서 적절하게 쓰는 방법을 모두 익히려면 1,2년 써보면서 알게 됩니다. 대부분은 시행착오로 배우는데, 시행착오 없이 배우면 더욱 좋지요. 제가 쓴 책에 자세히 적혀 있으니 참고하시고요. 필요한 부분은 구체적으로 물어봐주시면 설명 드리겠습니다. ^^
    강좌에 대해서는 한번 생각해 봐야겠네요. 작년에 Bit와 연계를 해서 교육을 실시한 적도 있기는 합니다. 그리고 몇몇 고객은 소스코드관리에 대해서만 세미나 식으로 교육을 실시한 적도 있죠.
    필요한신 것이 있으면 요청해주세요. 감사합니다.

  3. 좋은글 잘 봤습니다. Hotfix가 많아질때의 대쳐방법이 궁금한데요 각 fix마다 해당하는 문제에 대한 fix만 만들면 될지 아니면 나중에 있는 Hotfix에 이전에 나온 hotfix를 모두 포함시켜야할지 판단하기가 어려울때가 있습니다. 그리고 각 Hotfix를 만들때도 버전관리시스템에 Hotfix에 대한 태깅을 해야하는지도 궁금합니다.

  4. 안녕하세요. 차우차우님
    Hotfix에 대한 용어 정의는 회사마다 조금씩 다르겠지만, 일반적으로 Hotfix는 계획되지 않은 긴급패치를 말하므로 Hotfix가 많아진다는 것 자체가 문제가 될 수 있습니다. 이는 항상 호떡집에 불난 모양으로 FireFighting mode가 될 수 있습니다. 이왕 Hotfix의 버전 관리에 대해서 문의를 하셨는데 설명해야 할 내용이 댓글로 달기는 너무 많으므로 블로그에 포스트를 하도록 하겠습니다.

  5. 답변감사합니다. ^^
    역시 Hotfix가 많아진다는것 자체가 문제가 있는 상황인거네요. 릴리즈할때 좀더 완벽하게 준비한다면 hotfix를 남발하지 않아도 될테구요.
    나중에 Hotfix의 버전관리에 대해서도 포스팅해주시면 많은 도움이 되겠습니다.

  6. Hotfix에서의 버전관리포스트 올렸습니다.
    http://allofsoftware.net/entry/HotfixVersionControl

  7. 으아~ 너무 좋은 글인데요.
    재밌게 잘 읽었습니다^^

  8. 안녕하세요. Benjamin님
    재미있는 글은 아닌데 재미있게 보셨나니 SW개발을 정말 좋아하시는 것 같군요. ^^

  9. 저도 개인 프로젝트 진행 때 브랜치나 머지가 과연 필요할까 했는데 바로 이거군요!!

    감사합니다^ㅡ^/

  10. 안녕하세요. Yarmini님
    들려주셔서 감사합니다.

  11. Blog Icon
    알콜알프

    금융에서만 일을 했는데... merge에 대한 불안감은 있네요.. 제가 있던 곳에서만 그런건지 궁금하네요. 금융 계정계 같이 크리티컬한 부분에서도 merge 기능을 사용하나요??

  12. 안녕하세요. 알콜알프님
    금융쪽이라면 생각할 것이 좀더 많습니다. 물론 금융이라고 해서 소프트웨어자체가 더 복잡하다고 볼 수는 없지만, DB, Middle ware와 인터페이스가 있고, 대외계, 원장 등 연동해야 할 것이 많습니다.
    그래서 Merge를 못하는 것이 아니고 개발할 때 Merge를 감안해서 미리 생각하고 구현을 하면 됩니다.
    그렇게 하면 일반 Application보다 더 용이하게 Merge가 가능합니다.
    흔히 Merge를 하면 모든 것이 끝나는 것으로 생각을 하지만, 소스코드가 잘 Merge가 되었는지 직접 Diff를 이용해서 확인하는 것이 좋고, Merge 후 테스트를 또 해보는 것은 당연합니다.
    특히 계정계같은 숫자 하나 까딱 잘못되면 큰일나는 심각한 곳에서는 더 철저히 검증을 해야죠.
    그래도 이렇게 Merge를 이용하는 것이 완전 수동으로 하는 것보다 시간도 훨씬 적게 걸리고, 오류 가능성도 더 적습니다.

맥에서 Subversion 사용하기

2010/04/20 15:09 by Ray.전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed

 
최근에 맥북을 구매해서 아이폰 개발 작업을 하고 있는데 맥에서 Subversion을 사용하는 환경이 그리 좋지 않다는 것을 알게 되었습니다. 그래서 맥에서 Subversion을 제대로 활용하기 위한 글을 적어보려고 합니다.

Subversion 자체에 대해서는 블로그의 다른 글들을 보시기 바랍니다.

일단 Xcode에는 기본적인 Subversion연동 기능이 포함되어 있습니다. 그런데 막상 써보면 기존에 TortoiseSVN의 뛰어난 기능과 성능에 익숙한 사람들은 불만스럽기 짝이 없습니다. 그래서 맥에서 Subversion을 쓰기 위한 방법을 비교해보도록 하겠습니다. 

  • Xcode 기본 기능 
  • 유/무료 맥용 SVN Client 사용 - Syncro, Diffly
  • 터미널
  • 가상머신 + TortoiseSVN 
Subversion 서버는 이미 구축되어 있다고 가정합니다. Subversion서버가 아직 구축되지 않았다면 제 을 참조하여 Subversion을 구축하시기 바랍니다. 또는 Google Code를 이용하는 방법도 있습니다. Google Code를 이용하면 소스코드가 공개가 되니 소스코드를 공개해도 되는 경우라면 Google Code를 이용하면 편리할 것입니다.

 Xcode의 기본 기능 사용

사실 Xcode의 기본 Subversion연동 기능은 그렇게 편리하지 않습니다. 그래도 사용법에 대해서 잠시 알아보죠.


우선 Xcode의 Preferences의 SCM항목에서 이미 구축된 Repository를 등록해야 합니다. 그래야 Xcode에서 해당 Repository와 Xcode 프로젝트를 연결 할 수 있습니다.

그리고 Xcode>SCM>Repositories에서 해당 Repository의 디렉터리를 만들어야 합니다. 

위 그림과 같이 branches, tags, trunk로 나누면 됩니다. 디렉터리를 어떻게 나누냐 하는 이슈는 전략이 필요한 항목이므로 신중하게 판단해야 합니다.

소스코드를 서버에 등록하기 전에 먼저 설정할 것이 있습니다. Subversion에 등록되면 안되는 파일을 설정해야 합니다. ~/.subversion/config파일을 열면 global-ignores 항목이 있습니다. 여기에 등록되면 안되는 파일의 패턴을 적어주면 됩니다. 저는 일단 build 디렉터리만 등록되지 않도록 했습니다. 그외에도 빌드시 생기는 임시 파일들이 있거나 하면 그 패턴을 등록해서 Subversion에 등록되지 않도록 해야 합니다.

 

그리고 Import 메뉴를 이용해서 Mac에 저장되어 있는 소스코드를 모두 Subversion 서버에 등록합니다. 
이제 서버의 소스코드를 내려 받아야 하는데, 기존에 소스코드가 있던 디렉터리에는 내려 받을 수 없으니 소스코드의 디렉터리를 임시로 바꿔놓고 Check out을 통해서 소스코드를 내려받습니다. 소스코드를 내려 받았다고 해서 Xcode와 바로 연결되지는 않습니다. Xcode연동 기능을 사용하지 않을 거라면 여기까지만 하면 되지만 Xcode와 연동해서 사용하려고 하면 Xcode Project와 Subversion repository를 연결해 줘야 합니다.

Xcode에서 Check out하여 내려 받은 프로젝트를 Open하고 Project info를 보면 우상단에 "Configure Roots & SCM..."이 있습니다.


그 버틑을 클릭하면 이미 등록한 리파지토리중에서 본 프로젝트와 연결한 리파지토리를 선택하도록 되어 있습니다. 간단하게 고르면 됩니다.


그리고 Groups & Files에서 마우스 오른쪽 버튼을 눌러서 SCM을 선택하면 SCM과 연동 상태를 확인할 수 있습니다.

이제 Xcode의 SCM 메뉴를 통해서 소스코드를 관리할 수 있게 됩니다.
기본적으로 소스코드를 Check out하고 Commit하고 Tag, brach까지 이 기능을 이용해서 할 수 있도록 되어 있습니다. 하지만 제가 간략하게 본 바로는 Conflict를 해결하고 Merge를 하는 등의 협업이 필요한 작업은 지원이안되는 것 같더군요. 혹시 제가 모르는 방법이 있다면 알려주세요. 
그래서 이럴 때는 다른 솔루션들을 추가로 사용해야 하겠더군요.

 맥용 SVN Client 사용

Syncro, Diffly등 몇몇 유/무료 SVN Client가 있습니다. 하지만 이 부분은 제가 Evaluation을 해보지 않았습니다. 추후 써보게 되면 내용을 보강하도록 하지요.

 터미널 사용

Command line에서 SVN을 사용할 수 있다면 Windows, Linux, Mac 어느 OS에서든지 동일하게 SVN을 사용할 수 있습니다. SVN의 모든 기능은 Command line에서 사용할 수 있도록 되어 있습니다. 단지 Merge등의 몇몇기능이 GUI환경에서 더 편한 것 뿐입니다. Mac에서도 Command line 명령어를 이용하여 SVN을 사용할 수 있습니다.


 가상머신 + TortoiseSVN 사용

마지막으로 제가 최종적으로 선택한 방법은 TortoiseSVN을 이용하는 방법입니다.
Windows에서 TortoiseSVN을 오랫동안 사용한 개발자라면 그 편리함을 잊지 못할 겁니다.
저는 Parallels Desktop에 Windows7을 설치한 다음에 TortoiseSVN을 사용하고 있습니다.
Mac의 모든 디렉터리가 Windows에서 접근 가능하니 Windows에서 사용하는 것과 거의 동일하게 TortoiseSVN을 사용할 수 있습니다. 이렇게 하여 Windows에서 사용하던 Merge tool도 그대로 쓸 수 있게 되었습니다.
Windows에서 TortoiseSVN을 사용할 경우는 Mac에서 SVN을 설정하는 것과 별도로 Windows에서 SVN을 설정해줘야 합니다. C:\Users\{사용자ID}\AppData\Roaming\Subversion\config 파일을 열어서 아까와 같이 global-ignores를 설정하면 됩니다.



저는 기본적인 SVN Commit기능만 쓸때는 Xcode기본 기능을 사용하고 브랜치, 태그, 머지 기능을 사용할 때는 Tortoise SVN을 사용하고 있습니다. 또한 개발자가 여러명이라면 그냥 TortoiseSVN을 사용하는 것도 좋을 것 같습니다.

이상으로 Mac에서 Subversion을 사용하는 방법을 알아봤습니다. Subversion을 제대로 사용하는 방법은 완전히 별개 이슈이니 제 책과 블로그의 다른 글들을 참고하세요.

수정하거나 덧붙일 내용이 있으면 댓글 남겨 주세요.

* 이 포스트는 blogkorea [블코채널 : 꿈꾸는 소프트웨어 개발자 세상] 에 링크 되어있습니다.
Image by silent (e)



저작자 표시 비영리 변경 금지

Ray.전규현 기반시스템/소스코드관리 Diffly, MAC, SCM, subversion, svn, Syncro, TortoiseSVN, xcode, 맥북

Trackback Address: http://allofsoftware.net/trackback/183 관련글 쓰기
  1. Blog Icon
    별의파편

    맥에서도 tortoise 클론이 있습니다. finder에 연동되는 플러그인인데요.
    http://scplugin.tigris.org 에서 찾으시면 됩니다.

    저는 주로 zigversion 사용하는데 non-commercial은 무료신청할 수 있습니다. 가끔 회사에 놋북 갖고 가서 쓰기도 합니다만....ㅡ.ㅡ;;;

  2. 좋은 정보 감사합니다. 한번 Evaluation 해보도록 하죠.

  3. Blog Icon
    안관수

    scplugin으로 시도해보려고 했는데, 가상머신을 이용할수도 있겠네용
    좋은정보 감사합니다.

개발자의 파워는 어디에서 오는가?

뛰어난 개발자를 관리자로 써먹는 것 같이 개발조직에 비효율적인 일은 별로 없습니다. 하지만 현실에서는 이런 일이 흔히 벌어지고 있습니다. 실제로 저도 여러 회사에서 자주 접하고 있습니다. 여러가지 이유가 있을 수 있겠지만 주..

소프트웨어 개발자를 위한 소통의 장

그동안 블로그에 글을 쓰면서 여러 개발자분들의 의견을 듣는데 많은 불편함을 느껴왔습니다. 블로그의 글에 댓글을 남기면 약간 소통이 되기는 해도 주로 일방적인 전달을 벗어나지 못했습니다. 그렇게 해서는 많은 의견을 주고 받을..

애플이 아이폰4에서 한글을 바꾼 이유는...

얼마전 아래와 같은 아이폰의 Localization에 대한 글을 올린적이 있습니다. 2010/02/11 - [소프트웨어이야기] - 애플은 한국어와 한글을 구분하지 못한다? 심각한 내용은 아니었고, 아이폰의 다국어 설정 화면에..

마이크로소프트, 구글의 소스코드 트리의 비밀?

오늘 출근을 해서 메일을 확인하니 독자로부터 메일이 한통 와있더군요. 책에 대한 리뷰의 글이어서 감사히 읽었습니다. 질문도 하나 있어서 답변 겸 블로그에 글을 남깁니다. 독자 블로그 글 : 소프트웨어 개발의 모든 것 -전규현..

히딩크와 소프트웨어

월드컵도 다가오는데 소프트웨어와 축구를 한번 비교해보는 것도 좋을 것 같습니다. 제 블로그의 글들은 이런 방법 저런 방법으로 끊임없이 우리나라의 소프트웨어 현실이 무엇이 문제인지를 설명하고 있습니다. 그 중의 하나의 글이라도..

위기는 내부로부터 온다.

우리나라에서 소프트웨어 회사를 운영하기에 외적인 어려움들은 이미 많은 분들이 얘기를 해주셨습니다. 정권이 바뀔 때마다 급변하는 환경, 특히 대통령 따라 왔다갔다하는 여건들... 대기업과 중소기업간의 공정하지 못한 거래 대형..

Hotfix에서의 소스코드관리

아래 글에 차우차우님께서 Hotfix에 대한 질문을 해 오셔서 Hotfix에 대해서 좀더 자세히 설명하고자 합니다. 2010/05/03 - [기반시스템/소스코드관리] - 혼자서 개발을 하면 소스코드의 브랜치/머지가 필요없을까..

변경된 CC 평가 인증 제도

안녕하세요, 다시 CC인증에 대해서 이야기를 시작하려고 합니다. 제가 마지막 포스트를 한 것이 2008년 11월 이니까 거의 1년 반을 쉬게된 셈이네요. 다시 한번 심기일전하여 포스트를 해보록 하겠습니다. 마지막 포스트 이후..

혼자서 개발을 하면 소스코드의 브랜치/머지가 필요없을까?

소스코드관리에 대해서 얘기를 하다보면 혼자서 개발을 하기 때문에 별 고민 없이 대충 소스코드를 관리하는 경우를 많이 봤습니다. Subversion 등의 소스코드관리시스템을 쓰더라도 그냥 소스코드를 백업 받는 수준으로 사용하고..

맥에서 Subversion 사용하기

최근에 맥북을 구매해서 아이폰 개발 작업을 하고 있는데 맥에서 Subversion을 사용하는 환경이 그리 좋지 않다는 것을 알게 되었습니다. 그래서 맥에서 Subversion을 제대로 활용하기 위한 글을 적어보려고 합니다...