‘플레이코인’ 김호광 대표 칼럼 [연재4] 인력풀 적은 프로젝트 위험 도사려

[우리밀. 유튜브(watch?v=ZMCO8YZwn0E) 캡처]

‘플레이코인’ 김호광 대표 칼럼 [연재4] 인력풀 적은 프로젝트 위험 도사려

산업 혁명 이후 각 지역의 토착 품종들은 효과적인 생산이라는 미명 하에 도태되었다. 우리가 먹는 배추김치도 1970년대 생산량과 냉해 피해가 적은 중국산 호배추 품종으로 대체되었다. 사과를 비롯하여 밀과 벼 역시 지금은 토착 품종을 찾아보기 힘들다.

이는 균일화된 선진 농법과 대량 생산을 위해 각 고유 토착 품종이 가진 장점조차 포기한 결과이다. 최근 먹거리와 신토불이의 붐으로 다양성을 추구하는 경우가 늘어나고 있지만 대중에게 영향을 미치기에는 아직 부족하다.

이런 토착 품종은 특정 지역에서 오랜 시간 동안 육종되었기 때문에 지역의 풍토, 기후에 적합한 것이 특징이다. 일부 토착 품종의 경우 육종이 힘들지만 맛과 유효 성분이 뛰어난 경우가 있어 주목받고 재발견되고 있다.

하지만 농업인의 입장은 다르다. 대규모의 로컬 품종의 경작을 위한 농법 메뉴얼과 병충해에 대한 정보가 부족하고 대량 유통의 불확실성이 크기 때문에 다수의 농부들이 꺼리기 때문이다.

SI(System Integration, 시스템 통합) 프로그램 개발을 하다 보면 소수의 OS(운영체제,  Operating System)와 개발 언어는 상당히 고립되어 있거나 다양한 취약점에 노출되어 있다는 것을 발견할 수 있다. 어떤 언어의 경우 HTTPS/2를 지원하지 않아서 개발자가 HTTPS/2 라이브러리를 개발하거나 C/C++에서 기본 라이브러리로 제공하는 printf()로 로그로 찍을 수 없는 개발 환경을 만나거나 같은 소스임에도 빌드할 때마다 실행 파일 사이즈가 달라지는 환경 등 당혹스러웠던 일들이 있었다.

세상에는 웬만한 웹언어에서 지원되는 데이터베이스 my-sql 드라이버나 NoSQL MongoDB 라이브러리가 없는 언어도 있다. 이 경우 개발자가 이 언어를 사용하기 위해 굳이 다른 언어에서 쉽게 지원하는 라이브러리를 만드는 일까지 생긴다. 굳이 핵심 업무가 아닌데 언어가 지원하지 않아서 울며 겨자 먹기로 개발해야 경우가 생기는 것이다.

이런 문제는 개발 언어를 선택하고 프로젝트의 성격을 고려했을 때 사전에 특정 언어의 부족함을 평가하여 제외할 수도 있다. 하지만 대중적인지 않은 개발 언어의 함정은 다른 곳에 있다.

바로 라이브러리의 버그와 취약점이다. 몇 년 전 ruby라는 언어의 부동소수점이 오류가 있었던 적이 있었다. 이 문제는 개발자들 사이에서 발견되어 빠르게 패치되었다. Ruby 언어 개발자들은 업데이트 한 번으로 이 버그를 쉽게 해결했다. 풍부한 개발자와 언어를 지원하는 커뮤니티가 규모가 있었기 때문에 큰 시간 들이지 않고 부동소수점 문제를 해결할 수 있었던 것이다.

반대로 프로그램 언어 사용자가 소수일 경우 문제는 더 심각해진다. 심각하게는 몇 년 동안 버그가 방치되거나 버퍼 오버플로우, 루트 강제 취득 등의 취약점이 장시간 패치되지 않는 경우가 다반사다. 이 문제는 보안 문제이기 때문에 개발자의 일반 개발 영역을 한참 초월하고 해결이 사실상 쉽지 않다.

그렇다고 사용자가 적은 개발 언어는 언제나 마이너에 머물지 않는다. 프로그램 언어는 유행에 따라 흥망성쇠와 트렌드가 있다. 아이폰 개발이 떴을 때 Objective C와 Swift가 강세를 보였고, 빅데이터와 딥러닝이 급부상했을 때 파이썬이 대세가 된 것이 대표적이다.

[프로그램 언어 파이썬]

 특정 언어는 특정 산업 분야에서 강점을 가지기에 살아남는다. R이나 파이썬 역시 데이터 가공처리에 대해서 탁월한 지원과 활성화된 커뮤니티가 있었기 때문에 데이터가 중시되는 현시대의 흐름에서 대세가 된 것이다.

하지만 간과하지 말아야 할 것은 소수의 사용자가 있는 언어는 개발자 구하기가 쉽지 않다는 것이다. 한국에서는 현재 닷넷 개발자 구하기가 하늘에 별 따기가 되고 있다. 필자가 아끼는 개발 언어인 볼랜드 델파이를 생각하면 10년 전 막내 프로그래머가 지금도 커뮤니티 내에서 막내이다.

블록체인 프로젝트를 보면 하스켈, 엘릭서, go, node.js 등의 언어가 사용되는 경우를 볼 수 있다. 오픈 소스 프로젝트의 경우 개발자 언어 커뮤니티에서 끊임없이 새로운 개발 인력풀을 지원하기 때문에 개발자가 그만두더라도 대체 인력을 구할 가능성은 어느 정도 존재한다.

그러나 상업화된 프로젝트이며 오픈 소스가 아닌 경우 문제는 자칫 위험한 경우에 이를 수 있다. 소수의 언어가 핵심 코드로 사용되는 프로젝트의 경우 실시간 업데이트, 개발자 수급, 언어와 라이브러리 자체의 버그 대처, 보안 취약점, 제로데이 공격 등에 대해서 개별 기업이 대응해야 한다. 개발 언어 채팅 채널인 슬랙에 100명 이하가 존재하고 하루에 올라오는 잡담이 몇 개도 되지 않는다면 그 언어는 비활성화된 언어라고 할 수 있다. 이 경우 개발자가 퇴사하면 프로젝트 자체가 취소되거나 언어를 바꿔 재개발해야 하는 상황에 몰린다.

이 경우 회사로써 쉽지 않은 상황에 직면하게 된다. 과거 ILE C로 개발하고 AS/400을 운영하던 어느 해운회사의 경우, 개발자가 퇴사 후 서비스 유지보수가 되지 않아 다시 퇴사한 개발자에게 몇 배의 비용을 지급하면서 서비스를 몇 년 간 업데이트한 전례가 있다.

결국 이 회사는 자바로 새로 프로젝트를 발주할 수밖에 없었다. 충분한 개발자 인력풀이 없는 언어가 메인인 상업 프로젝트는 지속적인 유지보수와 지속적인 개발에 의심의 눈초리를 가질 수밖에 없다.

블록체인 프로젝트에서 마케팅의 한 방법으로 특정 언어의 강점으로 개발되었다는 것은 도리어 개발자들 사이에서 강점이 아니라 최대 취약점으로 비춰질 수밖에 없다.

생소한 개발 언어를 내세워 블록체인 프로젝트를 홍보하던 시기가 있었다. 이런 방법의 홍보는 시장에서 유효할 수 없다. 마이너한 개발 언어에 대한 불신을 극복하기 위해서는 서비스의 안정성과 지속적으로 개발에 대한 능력을 상당 기간동안 증명해야 할 것으로 보인다.

글쓴이=김호광 블록체인 결제 플랫폼 플레이코인 대표

김호광은?

게임을 위한 블록체인 결제 플랫폼인 플레이코인(PlayCoin)의 대표다.

중국의 블록체인 기업과 보안, 서비스, 마케팅을 협업하고 있다. 한국과 중국 블록체인의 미들맨이 되는 것이 플레이코인의 목표다.

그는 마이크로소프트 Azure MVP이며, 게임, 보안, 중국 비즈니스, MCN(다중채널네트워크) 산업에 대한 경험자다.

저작권자 © 게임톡 무단전재 및 재배포 금지