'소프트웨어'에 해당하는 글 2건


소프트웨어 기업을 하려면 어떻게 하나요?  우리나라와 미국이 환경이 상당히 다르기 때문에 동일한 모델을 적용하기는 어렵습니다만 ...   지금까지의 관행(?)을 보면 대체로 다음과 같을 것입니다.  물론, 노동력(?)을 제공하는 SI 형태의 사업도 있겠습니다만, SI는 거대기업들의 독점과 악성 하청구조를 벗어날 가능성이 전혀 없고, 그다지 미래지향적인 것도 아니기에 논외로 하겠습니다.


  1. 아이디어를 얻어서 간단한 프로토타입을 제작한다.  이 단계에서는 아마도 짬을 내서 혼자 만들 수도 있고, 몇 명의 동업자들이 같이할 수도 있다.
  2. 나름 프로그램에 자신이 있다면, 자본을 가진 초기 앤젤의 도움을 받거나 동업자들이 각출을 해서 회사를 설립한다.  이제부터는 풀타임 개발을 하면서 소프트웨어를 판매해야 한다.
  3. 개발에 매진을 하면서 시장조사와 마케팅 플랜을 짜고, 몇 년간의 운영자금을 벌 수 있는 펀딩을 시도한다.  바로 팔 수 있는 소프트웨어가 있다면 판매와 개발을 병행한다. 
  4. 나름 시장을 확보하면서 고객의 반응이 좋은 경우라면 비교적 순탄하게 기업을 이어갈 수 있으나, 경쟁업체가 곧 나타날 것이다.  물론 시장의 반응이 좋지 않다면 폐업 여부를 신속히 고민해 봐야겠지? 
  5. 끝없는 개발과 업그레이드, 그리고 유지보수 등의 요구를 받아들면서 기업을 어떻게 한 단계 도약시킬지 고민한다.  다행히 글로벌 기업화가 될 수 있겠다면 좋겠지만 그리 쉬워보이지는 않는다.  그냥 콱 M&A나 시켜버려?  그나마 사겠다는 곳이 있어야 할텐데 ...
아닌가요?  물론 여기에 나열한 사례는 그나마 행복한 고민을 하고 있는 곳이라고 생각합니다.  개인이 모험을 걸어보기에는 성공확률은 매우 낮고, 엄청난 초기 투자가 필요합니다.  그래도, 최근의 앱스토어 등의 개인 소프트웨어 사업을 위한 토대가 조금씩 열리고 있어 저자본 창업의 기회가 열리는 듯하여 그나마 다행입니다.

최근 미국에서는 오픈소스 창업을 하는 곳들이 많습니다.  순수한 오픈소스 운동을 지지하는 사람들이야 이러한 오픈소스를 이용한 영리목적의 벤처기업이 늘어남에 따라 오픈소스의 정신이라고 할 수 있는 공유와 참여, 그리고 개방성이 훼손될까 우려하고 있습니다만, 저는 개인적으로 긍정적인 변화라고 생각합니다.

오픈소스를 이용해서 어떻게 창업을 할 것이며, 비즈니스를 성공적으로 할 수 있을까요?  아마도 앞으로 오픈소스 경영학 교과서라도 하나 만들어내야 하지 않을까 싶습니다.  이렇게 생각해 봅시다.  오픈소스의 세계에서 만들어지는 각각의 구성요소는 결국 더욱 큰 생태계를 만들어지기 위한 것이라고 ... 

과거의 소프트웨어 사업의 방법은 이렇습니다.  일단 자신의 소프트웨어를 사용할 고객을 모집하고, 자신의 소프트웨어를 사용하는 고객들을 해당 소프트웨어 플랫폼에 중독되도록 만듭니다.  그 다음 단계는 다른 경쟁자들이 진입할 수 없도록 지속적인 장벽을 치고나서, 업그레이판을 발표하면서 고객들이 울며 겨자먹기로 따라오지 않을 수 없도록 한다 ...  마이크로소프트가 이렇게 컸지요?  단순히 M$ 뿐만 아니라 수많은 비즈니스 도메인의 소프트웨어 업체들이 이런 식으로 기업을 경영해왔고, 전략을 세우고 있으며, 현재도 그렇게 하고 있습니다.  이렇게 작은 나라에 있는 특정 비즈니스 영역에서 조차도 말입니다.

오픈소스는 이런 소프트웨어로 쌓아올리는 만리장성을 허물고 개발된 소프트웨어가 다른 사람 또는 커뮤니티에서 만든 소프트웨어와 함께 더 잘 돌아갈 수 있도록 하는 방법을 처음부터 고민합니다.  그리고, 돈 벌기의 방법도 달라지죠 ... 어떻게?  소프트웨어 자체를 판매의 대상으로 보지 않고, 그로 인해 발생하는 부가가치(value)를 어떻게 공정하게 나눌 것인가에 초점을 맞추는 것입니다. 

오픈소스 기업은 고객들에게 더욱 좋은 유지보수 및 지원 서비스를 제공하는 것으로 비즈니스를 창출할 수 있습니다.  고객과 함께 이익을 나누고(고객은 해당 소프트웨어를 이용하여 부가가치를 더욱 창출할 수 있으므로), 다른 소프트웨어와의 상호운용성을 최대한 지원합니다.  그러면서, 계속 새로운 기능 등을 덧붙이게 되고 시간이 흐름에 따라 점점 나아지겠지요 ...  소프트웨어를 계속 오픈소스로 운영하는 한에는 말입니다.

또 하나, 오픈소스 프로젝트를 통한 비즈니스 모델의 특징은 해당 프로젝트로 인해 발생되는 생태계에서 예기치 않은 비즈니스 모델이 나타날 가능성이 많다는 점입니다.  예를 들어, IBM이 아파치 서버 프로젝트를 오픈소스로 진행했을 때 해당 프로젝트 자체에 대한 평가는 어땠을까요?  해당 프로젝트로는 돈을 한 푼도 못 벌었습니다.  왜?  공짜니까 ...  그렇지만 전체적으로는 어떻습니까?  아파치 생태계가 만들어낸 수 많은 저비용 인프라를 통해 IBM은 서버 시장에서 대다한 비교우위를 가지게 되었습니다.  마이크로소프트와 Sun이 유료 서버 소프트웨어를 고집하면서 고객들의 외면을 받을 때 말입니다.  리눅스와 아파치를 기반으로 한 IBM의 서버는 완벽하게 시장을 장악하였습니다.

아마도 앞으로 수많은 성공사례 들이 나타날 것으로 봅니다.  물론 비즈니스로서 성공하려면 단순히 오픈소스 프로젝트 자체가 잘 돌아가는 것이 중요하다기 보다, 얼마나 관련 커뮤니티를 잘 지도해서 끌고 갈 수 있느냐가 핵심이 될 것입니다.  예를 들어, 현재 세계에서 가장 잘 돌아가는 오픈소스 의료건강기록 소프트웨어를 이끌고 있는 기업인 메드스피어(Medsphere, http://www.medsphere.com/company)의 경우 1500개가 넘는 병원에서 이 소프트웨어가 도입되도록 하고 있으며, 완전한 오픈소스 프로젝트로 이를 진행하고 있습니다.  회사는 기본적으로 설치와 교육, 컨설팅으로 돈을 벌고 있습니다.  복잡한 프로그램 개발이 필요한 분야이기에 만약 이를 단독으로 했다면 엄청난 투자와 비용이 소모되었을 것이 뻔하며, 커스텀화도 무척 어려웠겠죠? 

돈 없고, 창업기회를 찾기 어려운 맨주먹 사나이들에게 여러 기회가 찾아올 수 있을 것 같습니다.  자신이 좋아하고, 잘 알고, 그리고 열정을 불태울 수 있는 프로젝트를 주도적으로 이끈다면(그것도 풀타임 할 필요는 없죠?), 이를 활용한 비즈니스 기회가 올 것이고, 이미 완성도가 높아져 있는 오픈소스 프로젝트를 이용해서 다양한 비즈니스 모델을 추진한다면 M$와 같은 초대박 기업이 될 수는 없겠지만, 어느 정도는 성공할 가능성이 있는 기업들이 등장하리라고 생각됩니다. 

시간이 된다면 이런 사례들을 집중적으로 모아서, 그들의 사업방식과 모델에 대해서 공부해보면 어떨까 하는데 ...  오픈소스의 순수함을 더럽힌다는 욕을 먹을까 좀 두렵네요 ^^;


신고

WRITTEN BY
하이컨셉
미래는 하이컨셉, 하이터치의 세계라고 합니다. 너무 메마르고 딱딱한 이야기보다는 글로벌 시대에 어울리는 세계 각국의 이야기, 그리고 의학과 과학을 포함한 미래에 대한 이야기의 세계로 여러분을 초대합니다.

트랙백  2 ,

오늘 제가 일하는 곳의 절친한 이사님과 소프트웨어 개발자들의 미래에 대한 이야기를 잠깐 했었습니다.  저 자신도 개발자 출신이라 최근의 급격한 변화가 가져올 소프트웨어 개발자들의 미래에 대해 언제나 큰 관심을 가지고 있기에, 약간은 전문적인 글이라 많은 분들이 보시지는 않겠지만 미래의 소프트웨어 개발에 대한 글을 하나 올려볼까 합니다.

1975년 소프트웨어 개발과 관련하여 전설적인 책이 한권 출간 되었습니다.  프레데릭 브룩스(Frederick Brooks)가 쓴 "The Mythical Man-Month"가 그것인데, 소프트웨어 공학을 공부하는 사람이라면 누구나 반드시 읽어야할 명저로 꼽힙니다.   이 책에서 주장하는 것 중에 가장 중요한 논지 중의 하나가 개발 프로젝트에 사람을 더 많이 쓴다면 과연 개발이 빨라질까에 대한 문제입니다.  결론은 그렇지 않다는 것인데, 이유는 사람들이 더 많이 관여될수록 커뮤니케이션에 비선형적인 오버헤드가 발생하기 때문이라는 것이죠 ...


소프트웨어 개발방법론의 진화

브룩스가 이 책을 쓰기 5년전에 터폴 모델(Waterfall Model)이라는 유명한 소프트웨어 개발방법론이 소개되었습니다.  이 방법은 기존의 공학적 기술개발에 이용되던 개발방법을 소프트웨어에 적용한 것으로, 일단 요구사항을 수집하고 (gathering requirements), 디자인을 한 뒤에 이를 구현하고 테스트를 하는 모델입니다.  이러한 절차가 순차적으로 진행됩니다.

사실 워터폴 모델은 소프트웨어 개발에 많이 이용되었지만, 지나치게 융통성이 없다는 치명적인 단점때문에 최근에는 실패한 모델로 간주됩니다.  소프트웨어 개발이라는 것이 기타 다른 공학적 개발과는 달리 요구사항이 정확히 정의되기가 쉽지 않고, 시간이 지남에 따라 조금씩 요구사항이 변화하는 요소가 크기에 한 번에 요구사항을 수집해서 디자인으로 들어가는 모델이 잘 맞지 않았던 것입니다.  가장 큰 이유 중의 하나가 요구사항을 내놓은 사람들은 소프트웨어가 쉽게 변경이 가능한 것으로 생각하는 경우가 많습니다.  그렇지만 실상은 일반적인 하드웨어나 마찬가지로 소프트웨어 역시 디자인과 구조가 있고, 이를 변경한다는 것이 그리 쉬운 일이 아니지요 ...

그렇지만 사회가 빠르게 발전하다보니 이러한 변경가능성은 점점 더 증가합니다.  그렇기에 변화를 제대로 담보해내지 못하는 소프트웨어 개발방법론은 퇴출될 수 밖에 없는 운명이 되었습니다.

이러한 문제를 해결하기 위해 1990년대 들어 다양한 새로운 개발방법론들이 소개가 되었는데, 이들을 통칭해서 보통 agile 개발방법론이라고 부릅니다.  세부적인 내용에 약간의 차이는 있지만, 전체적인 철학은 비슷합니다.  무엇보다 요구사항이 변화하는 것을 기본적으로 가정합니다.  그래서, 이를 어떻게 빨리 반영할 것인가를 중시합니다.  이를 위해서는 가능한 간단한 방법으로 쉽게 개발이 가능해야 합니다. 

방법론적인 측면에서 이러한 요구를 충족시키기 위한 테크닉으로 유명한 것들이 리팩토링(refactoring)테스팅(developer testing)입니다.  리팩토링의 경우 마틴 파울러(Martin Fowler)가 집필한 동명의 책으로 더욱 유명한데, 기본적인 아이디어는 기존 코드의 디자인을 동작하는 방식을 변경하지 않고 진보시키는 것입니다.  리팩토링이 가능하다면 변화에 대한 적응이 쉬워집니다.  마치 인테리어 디자이너가 소품을 이리저리 옮길 수 있는 것과 마찬가지로, 개발자가 코드 묶음을 이리저리 적용할 수 있게 하는 것이니까 말입니다.  마찬가지로 변경된 내용이 잘 동작하는지 알기 위한 방법으로 유닛 테스트라는 것이 많이 도입되었습니다.  각각의 테스트는 시스템의 단일 컴포넌트를 검증하는데 집중되어 있습니다. 

이러한 현대적인 소프트웨어 개발방법론은 과거의 개발방벌론에 비해 많은 문제들을 훨씬 쉽게 해결할 수 있도록 도와주었고, 비용절감이나 프로젝트 기간 단축 등의 가시적인 성과를 많이 거두었습니다. 


라이브러리랑 오픈소스 뒤지면 다 나온다 !

소프트웨어 개발을 하는데 있어 개발자들이 가장 공을 들이는 부분이 자신이 직접 디자인을 하고 코딩을 하는 것도 있겠지만, 상당한 시간을 적당한 라이브러리를 찾는데 씁니다.  사실 자바(Java)가 이렇게까지 성공을 한 것에는 언어 자체가 뛰어난 부분을 가지고 있다는 것을 부인할 수는 없지만, 개인적으로는 뛰어난 표준 라이브러리가 지속적으로 제공되었기 때문이라고 생각합니다.  웹 개발에 PHP가 엄청나게 쓰이는 것도 잘 만들어진 웹 관련 라이브러리가 많기 때문이지요 ...

이제 상당수의 프로젝트는 추가적인 개발의 내용이 그리 많지가 않습니다.  왜냐하면 찾으면 거의 나옵니다.  이러한 현상은 오픈소스 프로젝트들이 많아지면서 더욱 일반화 되었습니다.  표준 라이브러리에 없어도, 검색을 통해 오픈소스 프로젝트를 뒤지면 원하는 기능을 구현한 것들이 대부분 나옵니다.  사실 개발자들이 시간 많이 들여서 할 일들이 계속 없어지고 있습니다.


몇 명의 개발자들이 간단히 개발하고 서비스하는 세상

그렇다면 앞으로는 어떻게 될까요? 

이제는 소수 개발자들이 기존에 이용가능한 훌륭한 라이브러리나 서비스, 그리고 오픈소스 프로젝트를 연결해서 과거에 보기에는 무지하게 복잡해 보였던 것들을 쉽게 처리할 수 있는 세상이 오고 있습니다.  복잡하고, 길고, 훌륭해 보이는 긴 코드를 작성하는 개발자들에 대해 존경심이나 경외심을 가지기 보다는 어리석게 보게 될 것입니다. 

앞으로 개발자들의 삶은 어떻게 될까요?  아마도, 비즈니스와 서비스 자체를 잘 이해하고, 커뮤니케이션 능력이 뛰어난 사람이 성공할 가능성이 높을 것입니다.  짧은 시간에 이런 것들을 이해하면 쉽게 서비스를 개발할 수 있으므로, 이런 사람들은 많은 프로젝트를 쉽게 해결할 것이고 엄청나게 돈을 벌겠지요 ...  아마도 소프트웨어 개발자의 빈익빈 부익부 현상이 가중될 것입니다.  더 이상 개발에 많은 사람들이 필요하지 않게 되기 때문에, 중간 수준의 중산층(?) 개발자들이 살아남기가 어려워질것 같습니다.  상당수는 소위 말하는 파워유저들과 경쟁을 하지 않을까요?


신고

WRITTEN BY
하이컨셉
미래는 하이컨셉, 하이터치의 세계라고 합니다. 너무 메마르고 딱딱한 이야기보다는 글로벌 시대에 어울리는 세계 각국의 이야기, 그리고 의학과 과학을 포함한 미래에 대한 이야기의 세계로 여러분을 초대합니다.

트랙백  2 ,