System Compleat.

'Open Source'에 해당되는 글 1건

  1. 오픈소스에 대한 생각

오픈소스에 대한 생각

Techs
( younjin.jeong@gmail.com, 정윤진 )


먼저 이 글은, 대규모 화 하지 않아도 되거나 분산이 필요한 만큼 서비스 요구가 크지 않을거라고 생각하는 회사의 관리자 분들, 또 오픈소스라면 나는 학을 띈다 라는 분들께 열람을 권고하지 않는다.  그런 분들은 또, 굳이 시간을 들여 열람하지 않으셔도 된다. 





저비용의 인프라스트럭쳐를 구성하다보면, 종종 신뢰의 한계나 구성상의 한계에 부딪치곤 한다.  하지만 이런 한계라는 것은 잘 살펴보면 동일한 기능을하는 메이저 벤더의 것들에 "비해" 한계로 인식되는 것이고, 그 대부분의 인식은 "유지보수" 라는 벤더로부터의 서비스를 받지 못한다 라는 사실 또는 공포감에 기인하는것이 대부분이다.  핸드폰 하나를 사도 A/S 를 걱정하는 의식이, 일일 접속자 만명 이하의 규모 서비스에도 벤더 서버와, 벤더 스토리지를 구성하게 만든다. 그리고 장비 유지보수료, 기술 유지보수료, 벤더 소프트웨어 라이센스를 꼬박꼬박 지불 하면서 안심한다.

사실, 좋은거 하나사서 잘 쓰고 싶은데 이게 고장나면 큰 문제이긴 하다. 그래서 혹시 고장날까봐 두개 세개 정도 사다보면 어지간한 웹 서비스 하나 하는데도 억소리는 쉽게 나기 마련이고, 문제는 이런 구매비용의 거의 10%의 비용을 매년 지불하게 됨에 따라, 기업 재무관련 담당자가 바뀌거나 구조조정 이야기가 나오면 이런 비용을 주네마네 말들이 많아지는게 바닥의 순리처럼 보인다.

전통적인 큰 기업의 입장에서는, 특히 요 몇년전까지는 이러한 인식이 별 문제가 되지는 않았다. 데이터베이스 관리자나 시스템 관리자는 쉽게 해고하기 힘들정도로 기업 인프라의 중요한 부분이 되어있으며, 이러한 인프라를 꾸준히 유지하는데 드는 비용이 적절하다면 딴지를 걸어야 할 이유도 없다.  네트워크는 네트워크 잘 하는 업체에 맡기면 되고, 스토리지는 스토리지 잘 하는 업체에, 서버는 서버 벤더에, 기반 소프트웨어는 각 벤더에, 심지어 5년전에 소스를 만들고 망해버린 업체가 준 어플리케이션의 유지보수도 능력있는 업체를 찾아 맡긴다.  이런 형태의 업무에서 자연히 한국인의 정서에 맞게 "갑"과 "을"이 생겨나고 그에따른 페단이라면 폐단이고 공생이라면 공생인 관계들이 나타나게된다.  이러한 게층적 구조역시 "서비스가 잘 동작하고 문제가 없다면" 이슈가 될 이유가 없다.  이 이야기는 결국 관리를 하는 "갑"의 사람이 다수의 "을"이 하는 일에 대해서 충분히 검증을 할 의무에 충실했다고 할 수 있으며, 기술적인 깊이는 아주 깊지는 않더라도  없지는 않아서 그들이 서버실에서 무엇을 하고 있는지, 어디를 검증해야 하는지에 대한 정도는 잘 알고 있다는 의미이기 때문이다.

하지만 이런 일반적인 갑과 을의 관계에서 크게 문제가 되는 경우가 있는데, 그게 바로 갑이 갑으로서 검증해야 할 일에 대해 "너무" 모르거나, 이로 인해 제대로 된 "을"을 선정할 능력이 없었다면 이건 서비스에 문제가 된다. 실제로 많이 발생하기도 하는 이런 문제는, 굳이 여기서까지 이야기 하지 않더라도 업장에서 근무하는 모든 분들이 아주 잘 알고 계신 것이기도 하다.  아무튼 이러한 검증 능력의 부재는 실질적으로 서비스에 해악을 끼치게 되고, 실제 사건이 터지면 모든 업체를 긁어모아 해결을 위한 압박을 가한다.  기본적으로 문제라는건 좀전까지 되던게 지금 안되는 것을 말하고, 이는 어디엔가 누군가 무언가를 바꿔서 잘못된게 생겨났고, 그로인해 해악이 생긴것이다.  이러한 해악으로 인해 실질적인 금전적 손해가 발생했다면, 이제 모여있는 을들은 자신들이 분명히 잘못한것이 아니면 함구한다.  대답해서 독박을 쓸 이유가 없으며, 다음번 계약에서 손해를 보고 싶지도 않기 때문이다.  따라서 운영과 서비스는 투명해 지지 못하고, 문제가 해결되지 않을 가능성도 있는채 시간은 흐른다.  이는 최악의 상황이고, 실제로 우리는 크건 작건 이러한 상황을 목도해 왔다.

실제 큰 기업의 데이터베이스나 코드를 보면 참 실소가 나오는 경우가 많다.  많은 분들이 보셨겠지만 어디가서나 흔하게 볼수 있는 Encoding 문제.  그렇다.  웃고 계신거 안다.  그래도 이 서비스들이 완전 붕괴하지 않고 그래도 동작하는 이유는, 어떻게든  갑과 을이 동작을 시킬 수 있었기 때문이다.  분산처리 같은거 크게 고민안해도 서버 2~3억 해서 사서 오라클 올리고 AIX 에 WAS 올리고 EMC붙이고 NAS 는 NetApp 사고 하면 되었다.  또 자회사를 두어서 자사의 인프라를 관리하게도 했다.  물론, 이런 경우  갑 - 을 의 2 Tier 가  갑 - 을 - 병 의 3 Tier 로 바뀌는 것 말고는 큰 변화가 없긴 하지만, 그래도 약간이나마 기술적인 필터링을 거치기 때문에 큰 사고들은 잘 안터진다.  아이폰 같은거 없었던 세상이면, 브라우저의 자바스크립트가 웹 소켓으로 통신을 하지 않고, HTML5 , CSS3 이런거 없었던 세상이면 이런 구조는 평생 큰 문제가 없는 구조긴 했다.  기업은 조직과 인력관리만 하면 되고, 기술 관리는 하지 않아도 되었기 때문에.

아이폰따위_없었더라면_우린_이미_천국.jpg


image from : http://farm4.static.flickr.com/3414/3347103456_44feb9d8f3.jpg


클라우드가 참 쓰나미처럼 화두다.  이미 모든 아키텍쳐를 검토한 기업들이 많을것이다.  물론 큰 기업은 아마도 일종의 TF에서 먼저 해외에서 눈으로 확인하고 테스트플랫폼 만들어 보고 하는 것들을 몇년 전에 끝냈을 가능성도 있기는 하다.

네임서버 돌리는데 이제는 아무도 벤더의 Bind 소프트웨어를 구매하지는 않는다.  웹 서버 하면 아파치는 엊그제 입학한 대학 새내기도 안다.  웹 프로그래밍 하면 PHP 정도는 기본이라고 생각하고, 이 외의 다른 언어에 숙련자라면 PHP는 구리다며 사용하기를 꺼려하는 경우도 많다.  눈치 빠른 분들은 아시겠지만,  그렇다 오픈소스 이야기 할려고 이런다. 
Trade off 의 의미는 많이들 아실꺼다.  기업에서 오픈소스를 선택한다면 반드시 버려야 하는 것이 하나가 있는데, 바로 A/S 다.  고쳐달라고 아우성 쳐봐야 아무도 고쳐주지 않는다. 몰랐던 부분에 문제가 발생하면 고칠수 없다는 공포가 의사결정권자의 온몸을 휘감는다.

전술 했듯이, 이제 뭔가 다양한 기능을 제공하는 웹서버를 설치해야지 하면 아파치를 설치한다.  개발에 입문했거나, 백엔드에 특화된 개발자가 아니라면 통상 아파치 - PHP - MySQL 정도를 표준으로 설치한다.  설치하면서 많은 문제에 직면하고, 웹을 통해 검색하여 해결을 찾는 시간들이 누적되면 이제 httpd.conf 는 쉽게 쓴다.  대강 어디서 어느 문제가 발생하는지는 굳이 관리자가 아니라 개발자도 안다.  관리자들은 이 좋고 무료인데다가 다중 플랫폼도 지원하는 이 웹 서버를 기존의 비싼 인프라, 즉 HP-UX, IBM p Series, SUN 등에 설치하고 돌린다.  근데 신기한건, 아무도 IBM 같은 회사에서 만든 회사의 웹 서버를 사용하지 않고 아파치를 사용해도 되는 서비스가 있으면, 아파치를 설치해도 이의를 제기하지 않는다. 

왜일까?  간단한 Search Engine 용 DB 를 MySQL 로 하고,  간단하게 사용 할 수 있는 웹서버를 Apache 로 하는데, 이것들은 A/S 가 없어서 그토록 우려하던 거의 ( 라이센스의 형태 때문에 '거의'라고 표현한다 ) 오픈소스들인데 말이다.

답은 쉽다. "잘 알기" 때문이다.  이 서비스에 대해 잘 알고 있다고 생각하고, 실제로 알고있으며, 어디에 어떻게 적용하면 되는지에 대해 알고 있기 때문에 "그래도 되는" 서비스에는 그렇게 하고 있는 것이다.  MySQL 이야 모르지만 아파치의 경우에는 실제 서비스의 크리티컬한 파트에서도 많이 사용된다.  물론 벤더 L4-7 같은 장치들이 있어서이기도 하지만.

잘 알고 있는 것들에 대한 두려움은 별로 없다.  또, 문제가 발생하면 대충 어떻게 웹에서라도 정보를 찾아서 고치는 방법을 찾아 내고야 만다.  비교적 흔하게 알려진 POSIX 나 System V 계열에서 발생 할 수 있는 Mutex 관련 이슈와 같이, 조금 어려운 문제도 해외에서 이미 경험한 사람들에 의해 조금의 영어를 읽기만 하더라도 찾아내서 고친사람들이 있어서 이제는 많은 사람이 알게 되었고, 쉽게 쓴다.

문제는, APM 만 안다. 그리고, 뒤늦게 선발주자들을 부러워 한다.  Facebook 이 카산드라를 써서 구현되었데. 우와 정말? 그거 빡세던데 고장나면 어쩌지?

10년전과 다르게, 오픈소스는 이제 당신이 원하는 또는 미래에 생각할 수 있는 거의 모든 것들에 대한 답안을 줄 수 있을 정도로 적어도 인프라 분야에서는 무엇을 선택해야 하는가에 대한 고민을 시간을 많이 들여 고민해야 할 정도로 발전해 있고, 준비되었다. 해외에서는 아무도 서비스를 처음 시작할때 고가의 유닉스를 사지 않는다.  차고에 친구들끼리 모여서 서비스를 만드는데, 그런 서버를 어디서 펀딩을 받지 않는 이상 구매 할 리가 없다.  펀딩을 받더라도 그돈으로 고가의 장비를 구입하면, 투자 회수 당할지도 모른다.   근데 우리나라는 돈이 참 많은지 그런 서버들을 아주 잘 산다.


나 어릴때만 하더라도 이런소리 항상 들었다. "배워서 남주냐"  "아는것이 힘".  환경이 너무 좋아져서 그런가, 네이버에 Git 가 뭐에요 하고 물어보는 사람은 많아도 Git 를 구글링해서 Wiki 를 보는 사람은 많지 않다.  ( 없다는 말이 아니다. 엑스퍼트들 흥분 마시라 )  심지어 Git 를 우리 부장님이 모르신다면 황송하게도 부하직원에 물어보신다.  이런 환경은 갑과 을의 관계에서도 지속된다.  갑은 Git 을 알 필요가 없다고 생각한다. 그래서 15년도 넘은 CVS 쓴다.


세상이 오픈소스를 원하기 때문에, 아 더럽네 이제 이것도 공부해야 되네 라고 생각한다면,  다른 분야의 개인사업을 차리도록 권고하고 싶다.  세상이 오픈소스를 원하는게 아니라,  앱을 돈내고 사고, 광고를 보아주는 고객들이 핸드폰 들고 당신의 서비스를 찾아온다.  5년전만 해도 컴퓨터는 젊은사람들의 전유물이었는데, 세월이 흐름에 따라 젊은사람들이 늙고, 이 사람들이 경제력을 가져 아이폰과 아이패드를 사고 갤럭시탭을 사고,  그런것들 사서 하는 것들이 모두 소비의 행동이기 때문에 좋은 제품들을 쉽게 내어 놓은 회사들은 떼돈을 번다.  아이폰 앱이 "스트리트파이터" 처럼 몇만원에 달하는 경우는 거의 없고, 대부분 $0.99, 몇백원 수준의 것들인데, 이것들을 4천만원 ~ 몇억 하는 서버들로 구성해서야 단가가 맞겠는가.  설령 단가가 맞는다 하더라도,  시간당 5백원 ~ 몇천원 수준, 심하게는 한달에 몇만원 하는 서비스가 있는데 그런 고비용을 사용한다면,  더 많은 이익을 포기하겠다는 것과 다름이 아니다.

돈들 참 많어~

image from : http://itsnotlevel.com/thepress/wp-content/uploads/2009/01/tons_of_money-21671.jpg


근데 이런게 있어도, 우리나라 대부분의 기업은 못쓴다.  이유는 동일하다.  모른다. 또는, 겁낸다.

현대의 인프라는 대형의 큰 덩어리를 고비용을 주고 구매하는 것이 아니라, 싸고 작은것을 많이 써서 언제든 고장나더라도 대체 할 수 있게 하는 것이 핵심이다.  오픈소스로 된 서비스가 고장은 날 수 있을 지언정 한번에 모든 서버에서 동일한 문제가 뿅 하고 나타날 가능성은 희박하다.  저렴한 서버가 고장날 수는 있지만  모든 서버가 한번에 다 고장날 수는 없는거다.  그렇다, 그래서 오픈소스를 써도 된다.

문제가 생긴다. 우리 인프라는 윈도우인데,  이거 싼걸로 100대 이상 꾸미면 당최 라이센스비가 얼마가 될 지 모르겠다.
아끼자는 비용이 오히려 배꼽이 되어 더 커진다.  이럴때 클라우드를 이용한다.  컴퓨팅 클라우드 사업자는 통상 윈도우 라이센스 문제를 해결한다.  그래서 시간당 사용금액에 몇 센트, 몇 십원 씩을 덧붙인다.  하지만, 윈도우 서버를 써서 이미지를 서비스 하거나 (단순 파일전송) 뭔가 닷넷과 같은 MS특화된 것들을 하지 않는데 윈도우 서버를 쓴다면, 이번기회에 저렴한 리눅스로 이동하는 것도 좋다.

문제가 생긴다. 이제 리눅스가 겁난다.  또는 리눅스 엔지니어링을 하는 사람의 인건비가 겁난다.  이렇게 생각하면 좋다.
간단한 웹용 리눅스 서버가 5대 있는데 이걸 관리하려고 사람을 쓰면 그래, 아까운거 맞다.  근데, 이런 서버가 필요하면 1천대 이상 증가하는 환경에서는 이런 사람 쓰는게 남는거다.  1천대 윈도우 비용 내느니, 리눅스로 또 클라우드로 넘어 갈 수 있는데 도움이 되는 사람이라면, 아예 팀으로 구성하는게 남는거라는 말이다.  그래서 큰 규모의 서비스를 하는 해외에서는 벤더의 L7을  사는 대신 Reverse-Proxy 를 쓴다.  1천대를 로드밸런싱 하는데 L7을 삼십대만 구매한다고 생각해 봐도 구매하지 않는 경우와 비교 했을때의 가격은 후덜덜 하다.  인건비는 계속드는데 어쩔거냐고? 누적비용으로 따지면 더 비쌀거라고?   벤더에 주어야 하는 유지보수비와, ( 안줄 수 없는게 이게 벤더를 구매한 이유거든 )  장비 교체 연한에 따른 교체 비용, 그리고 구매한 장치의 감가상각등을 생각해 본다면, 사람을, 팀을 쓰는게 서비스가 커지면 커질 수록 남는 장사라는걸 깨닫게 될 것이다.  더군다나 그렇게 키워진 사람은, 언젠가는 당신의 다른 사업에 도움이 될 지도 모른다.  (물론 인간 관계가 좋아야 했었다는 과제가 따르긴 하지만.)

기억하라, 꽁자로 돌릴수 있는 오픈소스는 다른 플랫폼에서도 많이 동작하지만, 리눅스에서 돌리는게 제일 잘돌고 쉽다.

 
인프라가 리눅스인데 고민하고 있으면... 더 말 않겠다.


이제 인프라를 싸게 만드는 방법은,  기존에 있던 기술들을 사용한 오픈소스의 각 제품중 꼭 들어맞는 것을 잘 찾아서 조립 ( Assemble ) 하는데에 있다.


Thieves!!!!!

image from : http://www.antipatterns.com/orig/images/lock-in.gif


결론은 글 전체에 계속 나와있다. 모르는거 챙피한거 아니다. 언제? 남들 다 모를때. 하지만, 육군 병장이 조정간 안전 - 단발 - 점사 를 모르면 그건 맞아야 되는거다.   회사에서 때리진 않지만, 적절한 시간과 기회가 부여 되었음에도 불구하고 모르면 감봉당해도 할말 없고, 우리는 그런 돈 주고 받는 세상에서 산다.

물론, 우리나라에 많은 오픈소스 전문가들이 계심은 잘 알고 있다. 그리고 내가 쓰고있는 이 주제가 껄끄러우셨다면 죄송
하다. 하지만 이런 이야기는 한번 꼭 해야겠다.   많은 경우, 이런걸 알고자 하는 노력을 게을리한다.  사실 노력이 없고, 이런 부분에는 시간을 쓸 필요가 없다고 생각할 수도 있겠다.  하지만 위에 말했던 상황을 겪고 있다면, 준비하는게 좋지 않을까?  키우고 계신 자녀의 등록금을 위하여서라도.


자, 오픈소스를 잘 알기위한 팁을 보자.
  1. 네이버의 지식인에 관련 지식을 물어보는걸 그만한다.  뉴스는 뭐.. 취향이니까 관여 않는다.
  2. Google 검색을 한다.
  3. Google 검색을 한다.
  4. Google 검색을 한다.
  5. Google 검색을 한다.
  위의 5가지의 훌륭한 방법을 모두 수행했음에도 불구하고 잘 안나오는 소프트웨어가 있다면, 다음의 방법을 따른다.
  1. 서비스에 도입하지 않는다.
  2. "Human knowledge belongs to the world" 정신을 몸소 실천하여 내가 마루타가 되어 본다.
  3. 상용화된 서비스에 도입하여 어디가 문제인지 알아본다. ㅡ_ㅡ

정보는 널리고 널렸다.  옆사람 아랫사람한테 야 우리 소스 형상관리 뭘로 하냐? 했을때 "SVN" 이요 라는 대답을 들었으면,  야 그래도 우리가 어떤회산데 간지가 있지 Git 한번 갈수 있나 봐라  하는 꽃상사 님이 되는 방법은 어렵지 않은것이다. 

Stuff You Should Know: How donkeys were invented.

image from : http://biomesblog.typepad.com/photos/uncategorized/calvin9_2.gif

한가지더 주의 해야 할 점은, 처음부터 모든 것을 알려고 하지 마라. 필요한 것 부터 하나씩, 우리 서비스에 있는거 하나씩 검색을 시작해 보기만 하면 되는 것일게다.

IT업계에 농담이 있다.  MS가 윈도우와 관련 제품들을 팔고, HP,IBM이 서버를 팔고, 다른 모든 소프트웨어 업체의 솔루션을 구매하더라도, 모든 돈은 Oracle 로 흐른다 는 것이다.   항상 말하지만, Oracle 참 좋은 DB다.  다만, 오라클을 오라클 답게 썼을때일 뿐이라는게 좀 아쉬울 뿐. 

나중에 천대씩 넣어야 하는 상황에서 라이센스때문에 벤더 바짓가랭이 잡고 울지 말고, 미리미리 준비 하자.
괜찮다. 아직 늦지는 않았다.  우리나라의 서비스 할만한 돈을 가지고 있는 회사들의 대부분이 아직 모른다.


싸고 쓸만한데 안쓸 이유가 없잖아? 

( younjin.jeong@gmail.com , 정윤진 )