2013년 1월 31일 목요일

자바의 위기, 한국 IT의 시금석


지금 자바때문에 난리다. 인도네시아의 자바를 말하는 것이 아니다. 프로그래밍 언어이자, 그 언어가 실행되는 환경인 Java를 말하는 거다.

자바는 지난 90년대 중반에 소개된 뒤, 인터넷 열풍을 타고 미친듯이 확산됐다. 90년대의 황량한 인터넷 환경에서 이른바 ‘인터렉티브’ 한 웹페이지를 만드는 몇 안되는 방법이 ‘자바 애플릿’ 이었던 것이 큰 이유일 것이다. 덕분에 자바와는 상관도 없는 언어가 ‘자바스크립트’ 라는 짝퉁 이름을 달기도 했었다. 플랫폼에서 자유로운 코딩, 정적 타이핑이라는 트렌드도 여기에 한 몫을 했다.

자바 애플릿 열풍은 잦아들었지만 자바의 입지는 더욱 확고해졌다. 자바를 못 하면 개발자 축에 못 낀다. 오브젝티브C나 루비 같은 언어를 배우고 싶어도 자바를 먼저 배워야 한다. 책에 설명이 자바를 중심으로 돼있기 때문이다. 이제는 자바가 쓰이지 않는 분야를 찾기가 더 힘들어졌다. 마인크래프트 같은 게임에도 쓰이고, Openoffice.org같은 오피스 슈트를 만드는데도 쓰인다. 자바로 프로그래밍된 로봇은 화성을 달리고 있고, 이제 스마트폰의 주류가 된 안드로이드 역시 자바로 움직인다.

그런데 이 자바가 문제다. 지난 12월, 자바의 제로데이 취약점이 보고됐다. ‘제로데이’ 란, 보안취약점이 발견됐는데, 아직 개발자가 이 취약점을 수정하지 않은 상태를 말한다. 한마디로, 제로데이 취약점이 발견되면 이 결함을 이용해서 우리 컴퓨터에 침입 할 수 있다. 개인정보를 빼낼 수도 있고 좀비피씨로 쓸 수도 있다. 아니면 단순한 테러를 감행 할 수도 있다.

자바를 가지고 있는 회사인 ‘오라클’은 발빠르게 보안패치를 내놨지만, 미국의 보안당국(CERT)은 자바를 아예 싹 다 지워버리고 쓰지 말라고 권고하기에 이르렀다. 패치되지 않은 취약점이 아직 많은 것으로 보인다는 이유에서다. 아니나 다를까, 이후에 자바의 새로운 제로데이 취약점이 발견됐다는 뉴스가 줄을 이었다. 저번 취약점 기사를 다른 언론사가 받아쓰느라 뒤늦게 뜨는 것이 아니고, 새로운 취약점이 계속해서 발견된 것이다. 1월 28일 기준으로 ‘53번 취약점’ 이 새로이 발견된 상황이다.

자바가 무엇이기에

자바의 보안 취약점이 문제가 되는 것은 가상머신 위에서 돌아가는 자바의 특성 때문이다. 프로그래밍 언어는 대체로 컴파일 언어와, 인터프리터 언어로 나뉜다. 컴파일 언어는 사람이 만든 코드를 기계어로 번역해서 사용한다. 속도가 빠르지만 운영체제나 하드웨어가 달라지면 다시 컴파일을 해야 하고, 다시 컴파일 해도 잘 작동한다는 보장이 없다. 인터프리터 언어는 어디에서도 똑같은 결과를 보여주지만 속도가 느리다. 자바는 이 두 가지의 장점을 섞어놓았다.

자바로 짠 코드는 ‘바이트코드’ 라는 중간단계의 코드로 바뀌고, 바이트코드는 ‘자바 버추얼 머신(JVM)’ 위에서 실행된다. 자바 버추얼 머신은 윈도우즈, 맥, 유닉스, 리눅스 등에 상관 없이 올릴 수 있고, 어떤 환경에서도 똑같은 결과를 보여준다. 속도 역시 다른 컴파일 언어에 버금갈 만큼 빠르다. ‘한 번 코딩하면 어디서나 실행된다’ 는 자바의 모토는 자바 버추얼 머신으로 실현됐다. 스마트폰 운영체제인 안드로이드는 ‘달빅(Dalvik)‘이라는 JVM의 한 종류를 내장했다. 자바에 자극받은 마이크로 소프트는 2000년대 초반에 .Net(닷넷)이라는, 누가 봐도 자바의 아류인 프레임워크를 내놓기에 이르렀다. 그런데 이 JVM이 문제다.

어떤 플랫폼에서도 같은 프로그램을 실행할 수 있다는 것은, 어떤 플랫폼에서도 작동하는 바이러스나 악성 프로그램의 존재 가능성을 뜻하기도 한다. 게다가 웹 플러그인으로 유명했던 자바이니만큼, 악성 코드가 심어진 애플릿이 존재하는 홈페이지에 접속하는 것 만으로도 사용자의 PC가 감염 될 수 있다. 실제로 올해 우리나라에서는 유수의 언론사 광고 배너 등을 매개로 자바 제로데이 취약점을 이용한 공격이 이루어지기도 했다.

외국에 살지 않아 잘 모르겠지만, 나의 유일한 미국친구 ‘구글’에게 물어본 결과 지금 미국은 자바때문에 난리가 난 듯 하다. 당장 자바를 내다 버리자는 강경파, 천천히 단계적으로 이별을 준비하자는 온건파, 오라클이 다 알아서 해주실 테니 패치가 나올 때 까지만 몸조심하며 기다리자는 낙관론자까지 반응은 다양하다. 모든 이들의 의견을 취합하면 결론은 두 가지다.

첫째, 지금과 같은 자바 의존은 해소해야 한다. 자바라는 단일한 프레임워크에 생긴 문제만으로 수많은 기업, 정부기관, 개인이 위험에 노출된다. 인터넷 환경이 보다 다양해져야 하며, 단일한 솔루션이 지배하는 네트워크는 단일한 생물이 지배하는 생태계 만큼이나 취약하다.

둘째, 지금 이 상태라면 자바를 더이상 쓸 수가 없다. 자바 실행환경을 설치한 것 만으로도 위험에 노출되며, 어떤 취약점이 해커들에게 이용당하고 있는지도 다 밝혀내지 못했다. 아직 알려지지 않은 자바 취약점은 해커들의 암시장에서 고가에 거래되기도 한다. 즉각적이고 근본적인 보완이 이루어지지 않는 한, 자바를 더 쓰는 것은 너무 위험한 일이다.


왜 자바만 가지고 그러나

사실 이런 보안 취약점이 자바만의 문제는 아니다. 인터넷 익스플로러 역시 공격의 주된 목표가 되기도 하고, 윈도우즈나 다른 운영체제 역시 제로데이 취약점을 드러내기도 한다. 그런데 왜 유독 자바의 보안문제에는 이렇게 다들 호들갑일까.

문제는 ‘자바 버추얼 머신’이 자바라는 언어를 컴파일하고 실행하는 사실상의 운영체제 역할을 하고 있다는 것이다. 자바는 운영체제 위에서 실행되며, 관리자권한을 얻거나, 파일을 읽고 쓰고, 네트워크에 접근 할 수 있다. 윈도우즈와 같은 운영체제는 자바의 실행에 개입하지 않는다. 이 말은 곧 운영체제의 훌륭한 보안 기능들이 자바 응용프로그램에는 적용되지 않을 수 있다는 말이다.

MS윈도우, 맥OS X, 유닉스, 리눅스 같은 주요 운영체제는 수십년간 보안 강화를 위해 싸워왔고, 난공불락의 방어체계를 갖췄다. 자바가, 자바가 아닌 프로그램만큼 안전하려면 ‘자바 버추얼 머신이’ 위의 운영체제들 만큼 안전해야 한다. 그러나 그렇지 않다는 사실이 밝혀졌으며, 오히려 JVM이 설치된 모든 플랫폼(오라클 말로는 30억 개의 기기) 위에서 돌아가기 때문에 보안 취약점이 미치는 영향력의 범위 역시 넓어졌을 뿐이다.

더 큰 문제는 자바의 라이센스를 가지고 자바를 개발하고 있는 회사인 오라클이 썩 믿음직스럽지 못하다는 점이다. 자바를 처음 개발한 회사는 ‘썬 마이크로시스템스’ 라는 회사다. 이 회사는 지금도 ‘스팍(SPARC)‘이라는 고유의 프로세서와 ‘솔라리스(Solaris)’라는 고유의 유닉스 운영체제를 올린 기업용 서버와 워크스테이션을 만들어 판다. 이 회사는 아마도 제록스의 ‘스몰토크’ 가상머신 환경에 영감을 받아서 자바 버추얼 머신을 만들었을 것이다. 자바는 곧 윈도우즈 등 다른 플랫폼에도 이식됐다.

아마도 썬은 윈도우즈 서버나, IBM서버를 쓰는 기업의 개발자와 의사결정권자들이 자바를 접한 뒤, 솔라리스 서버를 구입해 줄 거라 믿었을 것이다. 아니면 단지 자바를 통해 IT업계의 영향력을 증대하려 했을 지도 모른다. 그러나 썬의 계산은 빗나갔다. 어쨌거나 저쨌거나 개발자들은 다른 플랫폼의 자바에 안주했고, 결국 썬은 오라클에 인수됐다.

오라클은 법정싸움을 즐기는 회사다. 기업을 위한 토탈 솔루션을 팔아먹으며 막대한 이익을 챙김과 동시에 수많은 특허를 가지고 소송을 걸어 다른 기업들 삥을 뜯는다. 오라클은 ‘30억의 사용자를 가진’ 자바의 저변으로 어떻게 돈을 만들지 고민했을 것이다. 자바는 애초에 라이센스 비용이 없었고, 또 썬이 자바의 상당부분을 오픈소스로 돌려놓았기 때문에 자바로 돈을 벌 수 있는 방법은 역시나 소송밖에 없었다.

한때 안드로이드 플랫폼의 존재 자체를 위협했던 오라클대 구글의 소송은 이런 배경에서 이루어졌다. 구글은 스마트폰 운영체제인 안드로이드에 자바를 이식했다. 안드로이드의 달빅은 가장 완성도 높은 JVM으로 꼽힌다. 소송에서 오라클은 사실상 패배했다. 구글은 안드로이드 진영을 지켜낸 것이고, 오라클로서는 자바로 돈이 될 가능성이 사실상 사라진 셈이다.

아까 말했던 바와 같이 마이크로소프트 역시 '.Net(닷넷)'이라는, 자바와 비슷한 프레임워크를 운영하고 있다. 마이크로소프트는 지난 2000년대 중반에 닷넷의 심각한 위기를 겪었다. 마치 지금 자바처럼 심각한 보안 위험이 연달아 터졌다. 그러나 마이크로소프트는 악전고투를 마다하지 않았다. MS는 운영체제를 만드는 회사였고, 닷넷은 MS의 미래를 책임질 핵심 전략이었기 때문이다. 당시 세계에서 가장 돈이 많은 회사였던 마이크로소프트가 수개월의 시간과 수천 명의 직원을 투입했다.

이제 자바가 더이상 돈이 되지도 않을 마당에 오라클은 MS만큼 전력을 다할 것 같지 않다. 기업용 서버와 솔루션을 판매하는 회사에게 자바와 같은 프레임워크가 별다른 도움이 될 게 없다는 것은 이미 그들이 인수한 썬 마이크로시스템즈가 증명한 바 있다. 반면 유지보수 부담은 매우 크기 때문이다.

오라클이 자바를 계속 개발해 준다면 고마운 일이지만, 앞으로도 이런 보안 이슈가 계속 되지 말라는 법이 없다. 이럴 때마다 오라클의 이미지는 나빠진다. 돈도 안되고, 회사의 이미지만 깎아먹는 자바를 오라클이 계속 가져가긴 어려워 보인다. 외국의 많은 전문가들은 자바가 머지않아 돈도, 인력도 없는 비영리재단으로 넘어갈 일을 걱정하고 있다.

자바일색 한국 IT

대충 분위기가 이런데 한국은 조용하다. 벅역된 칼럼 한 두 개, IT 전문 언론 몇 군데의 기사 말고는 자바의 보안문제를 다루지 않는다. 외국 기사를 보지 않으면 자바의 보안 취약점이 추가로 발견되는 것도 모를 지경이다.

한국의 자바 의존도가 미국에 비해 현격하게 낮기 때문일까? 아니다. 오히려 그 반대다. 한국에서 개발자는 곧 자바 개발자다. 개발을 업으로 하는 사람중에, 자바만 할 줄 아는 개발자도 있고, 자바도 할 줄 아는 개발자도 있지만, 자바는 할 줄 모르는 개발자는 찾아보기 어렵다.

자바는 특히 기업용 솔루션에서 절대적인 위치를 점하고 있다. 사내 ERP시스템이나 홈페이지의 서버측 솔루션으로 절대적인 비중을 차지하고 있다. 스트럿츠나 스프링 등 자바를 활용한 프레임워크까지 포함하면 자바가 안 쓰인 웹페이지를 찾기가 힘들 것이다.

우리나라의 자바사랑은 두 가지 측면에서 피드백 구조를 가지고 있다. 일단, 기업들이 자바 개발자를 찾는다. 그러니까 프로그래밍을 배우려는 사람들은 일단 닥치고 자바를 배우게 된다. 또, 기업 입장에서 보면 자바 개발자를 찾기가 쉽다. 자바 개발자가 많은 것은 기업이 자바 개발자를 찾기 때문이기도 하니까 알이 먼저냐 닭이 먼저냐 문제이기도 하지만, 어쨌든, 자바개발자를 많이 뽑고, 자바의 코드 레퍼런스가 쌓이고, 또 이걸 관리하려고 자바 개발자를 더 뽑고, 그러니까 취업하려는 애들이 자바를 많이 배우면서 우리나라의 IT시장은 자바 일색이 됐다.

문제는 이런 순환과정이 좀 지나치다는 점이다. 예를들어 프로그래밍을 독학하다가 안되겠어서 학원에라도 다녀보려고 하는 A씨가 있다고 하다. 이 사람은 요즘 컴퓨터학원의 얼척없는 수강료에 기절한다. 기절했다 깨어난 A씨는 국비지원 프로그래밍 교육이 있다는 것을 알고 커리큘럼을 찾아보기 시작한다. 이 사람이 배우고 싶은 것은 Objective-C라는 반쯤 비주류 언어다. 처음에는 수많은 커리큘럼이 있음을 발견하고 당연히 자신이 배우고 싶은 것도 있을 거라 생각하기에 이른다. 그러나 그것은 환상이었다.

저렇게 많은 교육과정이 있지만 사실상 다 ‘자바’ 교육과정이다. 자바를 배운 뒤, 웹을 배울 것인가, 데이터베이스를 배울 것인가, 안드로이드를 배울 것인가 하는 정도 차이만 있다. 비싼 맥 컴퓨터를 갖춰야 강의가 가능한 아이폰 및 맥 개발에 관한 국비지원 과정은 실러캔스만큼이나 희귀종이다. 심지어 자바의 보안위기가 심각하게 대두되고, 자바를 폐기해야하네 마네 하는 지금도 마찬가지다. 기업들은 여전히 자바 개발자만 찾고, 학생들은 여전히 자바만 공부한다.

여차저차 제기된 자바 보안위기가 이런 학원들의 커리큘럼에 영향을 주려면 시간이 필요하기 때문일까? 머지많아 자바를 쓰는 기업들이 ‘루비 온 레일즈’나 ‘얼랭’으로 솔루션을 구축하고, 관련 개발자들을 뽑기 시작할까? 자바에 대한 의구심이 증대되는 만큼 기업용 솔루션 역시 다변화되기 시작할까?

한국의 대응은

지금까지 한국 IT의 경향으로는 그런 일이 일어날 것 같지 않다. 달리 생각 할 것도 없다. 아직도 우리나라 인터넷은 액티브X 세상이다. 마이크로소프트까지도 액티브X를 어떻게 버려야 할지 고민하고 있다. 이런 추세에 맞춰 몇몇 은행에서 오픈웹 서비스를 열었다며, 액티브X없이도 은행업무가 가능하다고 광고했다. 그러나 오픈웹 서비스란 것은 뻥이고, 사실상 액티브X역할을 하는 특정 브라우저 플러그인이 필요하며, 그나마도 인증서를 요구하는데, 액티브X를 쓰지 않고 인증서를 받는 방법은 현재 존재하지 않는다.

내가 나온 대학교의 학사정보 서비스는 이제 곧, “그 때 그 맛 그대로” 라는 간판을 붙여도 될법하다. 10년 전과 달라진 것이 없다. 액티브X와 각종 이상한 플러그인이 필수사항이다. 10년간 IT기술이 발달하면서 윈도우즈의 보안수준이 올라간 덕분에 윈도7 등 최신 운영체제에서는 학사정보 서비스가 돌아가지 않는다. 굳이 서비스를 사용하기 위해서는 지난 10년간 진보한 보안체계를 무력화 시키기 위한 설정을 거의 한 시간동안이나 하고 자빠져 있어야 한다. 학교가 시스템을 보완하는 대신 학생들 따라하라는 매뉴얼의 분량을 무진장 늘렸다. 매뉴얼대로 하다가 발생하는 보안문제는 학교가 책임 지는 건가?

한국이 IT강국이라는 신화는 ‘고조선 수메르 지배설’ 따위와 같은 허무맹랑한 망상이다. 10년 전에는 사실일 수 있다는 환상이 있었지만 이제는 확실해졌다. 한국의 인터넷 환경은 갈라파고스만큼이나 고립되고 뒤떨어져있다. 게다가 특정 포탈과 재벌에 편중된 인터넷 시장은 그 어느 나라보다 뒤틀려있다. 액티브X처럼 자바 역시 앞으로도 변함 없는 지배적 지위를 누릴 것이다. 여기에는 물론 아까 말한 수요와 공급, 그리고 그 사이에서 먹고 사는 사교육의 카르텔이 영향을 주고 있다.

그러나 더욱 근본적인 문제는 IT혁신을 막는 구조다. IT후진국 답게 경영자나 관리자들은 IT를 이해하지도, 즐기지도 못한다. 다시말해 ‘스프링’을 ‘장고’로 바꿀 수 있는 의사결정권을 가진 사람중에 ‘스프링’과 ‘장고’가 뭔지 이해하는 사람이 많지 않다는 말이다. 경영진이 IT를 이해하지 못하는 만큼 IT인력에 대한 처우도 나쁘다. 미국에서는 개발자들이 억대연봉을 받는다는데, 우리나라 개발자들은 인턴에 비정규직도 감지덕지다. 생존이 경각에 달린 사람들은 안정을 택한다. 혁신을 추진하지 않는다. 뭐 해보겠다고 나서다 잘못되면 짤린다. 왜냐면 자바 개발자는 길거리에 발로 채일 만큼 많기 때문이다.

물론 내가 지나치게 비관적인 관점을 고수하는 것인지도 모른다. 어쩌면 우리나라의 IT업계는 깜짝 놀랄 만큼의 혁신 동력을 가지고 있는지도 모른다. 어떤 관점이 맞는지는 자바에 대한 우리나라 기업과 기관의 대응이 어떤지를 통해 드러날 것이다.

단, 경영자가 IT를 잘 모르고, 개발자가 천시받는 현 세태에서 ‘탈 자바’는 보다 극렬한 형태로 이루어질지 모른다. “자반지 뭔지 쓰지 말자” 라고 해버리면 되니까. 그리고 IT관련 계열사를 거느린 대기업들의 반응은 의외로 빠를 가능성이 있다. 문제는 정부, 학교 등 각종 기관이다. 그리고 더 문제가 되는 것은 교육 인프라다. 자바 일색의 교육 시스템이 다변화된 환경에 맞는 개발인력을 공급해 줄 수 있을까?

자바는 최선의 솔루션이 아니었다. 물론 훌륭한 프로그래밍 언어이며 프레임워크다. 그러나 온 나라의 기업, 정부, 기관이 다 같이 의존할 만큼 완벽한 존재는 아니다. 최소한의 분산과 다양성이 필요하다는 것이 드러났다. 국가단위로 봤을 때, 이런 긴박한 요구에 얼마나 기민하게 만응하는지는 응당 그 나라의 IT경쟁력의 척도일 것이다.

우리나라의 정보통신 담당 기관이(창조과학어쩌고였나?) 미국의 CERT처럼 특정 플랫폼에 대한 경고를 할 만큼 과감할 수 있을까? 혹은 그 창조과학어쩌고의 수장이 자바가 뭔지 알 만큼의 IT지식을 가지고 있을까? 다 같이 지켜보자.

원본 URL

기술이 한쪽으로 쏠리면 그것에 따른 양면성은 무시할 수 없는 법








댓글 없음:

댓글 쓰기