[개발인] 김민태 “발전하는 웹 기술에 올라타세요”

가 +
가 -

지난달, 한국 웹 탄생 20년을 맞아 ‘한국 웹 20주년 국제 컨퍼런스’가 서울에서 열렸다. 약 30개의 기술 세션이 함께 열렸는데, 그 중 눈길이 가는 흥미로운 세션이 있었다.

‘웹을 지탱하는 차세대 기술.’

혹 HTML5 이야기인가 하고 들었지만, 발표 주제는 예상했던 것보다 훨씬 다채로웠다. 컴포넌트, 폴리머, 웹GL 얘기가 이어졌다. 발표가 끝나고 김민태 발표자에게 인사를 하러 갔는데, 명함을 받고 보니 고개가 갸우뚱거려졌다. 그의 소속은 엔씨소프트, 게임회사였다. “엔씨소프트에서도 웹 개발을 하나요?” 그는 “엔씨소프트라고 해서 다 게임개발자만 있는 건 아니다”라며 웃었다. 11월26일, 다시 김민태 개발자를 만나 차세대 웹 기술과 그의 개발 경력 이야기를 좀더 자세히 들었다.

게임회사에서 하는 웹 실험

김민태 개발자가 소속한 부서는 엔씨소프트 인프라플랫폼실. 그 안에는 여러 개발 프로젝트가 진행되고 있다. 김민태 개발자는 웹 기술을 개발하고 이를 서비스로 구현하는 일을 맡았다. 엔씨소프트는 주력 사업인 게임 외에 IT 업계에서 주목받는 기술과 관련된 인력을 보유하고 연구개발에 투자하고 있다. 선행 기술에 투자해 다가올 미래에 대해 준비하는 행보다. 다른 분야에서 만든 서비스를 잠재적으로 게임서비스와 연결할 수 있는 방법도 모색 중이다.

김민태 개발자는 “결과물에 집중하기도 하지만, 실험적인 기술이나 이를 이용하는 개발 과정에서 나온 노하우를 다른 부서나 개발 방식에 적용할 수 있다”고 설명했다. 김민태 개발자가 만든 기술은 대규모 사용자를 위한 서비스나 기술이 아니다. 내부 직원들만 사용하는 서비스나 소규모 외부 사용자를 위한 시범서비스 형태로 출시하고 있다.

김민태 개발자는 1년 전께 엔씨소프트에 들어와 이미 2가지 서비스를 만들었다고 한다. 사진, 위치정보, 소셜 등을 활용한 서비스라고 그는 귀띔했다. 이러한 서비스는 실험적이거나 새로운 기술을 사용하는 데 주력한다. 대부분 차세대 웹 기술로, HTML5나 웹 애플리케이션 기술을 이용한다. 개발 속도는 매우 빠르다. 흔히 말하는 애자일 방식을 이용한다. 문서나 형식에 얽매이지 않고, 매주, 매일 단위로 아이디어 회의를 열고 수정과 구현 과정을 반복한다.

“제 입장에선 매우 행운이죠. 제가 쓰고 싶은 기술을 전부 적용하고 테스트까지 할 수 있으니까요. 대규모 사용자를 위한 서비스가 아니기 때문에 어느 정도 제약이 있는 상태에서도 제가 원하는 서비스를 만들 수 있어요. 가령 ‘이 서비스는 크롬 웹브라우저에서만 사용해주세요’ 라고 말하고 배포를 할 수 있는 것이죠.”

developer_mintae_kim_thum_re2

▲김민태 엔씨소프트 개발자

애자일 방식이라 해서 무조건 좋은 것은 아닐 테다. 애자일이라는 방식은 대체로 짧은 주기로 아이디어를 수정하고 구현한다. 지금 아이디어를 다 버리고 바로 이전 단계로 돌아가기도 한다. 이러한 과정은 규모가 큰 서비스에선 많은 추가적인 노력이 필요한 방식이다. 또한 협업이 중시되기 때문에, 내가 가진 아이디어가 다른 팀원 아이디어와 어떻게 어울릴 수 있을지도 항상 고민해야 한다. 그 대신 사용자 피드백이 곧바로 반영되는 덕분에 사용자들이 가장 원하는 시스템을 구현하는 데 용이하다.

“내가 만든 기술은 규모가 크든 작든 똑같은 애정이 들어가요. 규모가 큰 서비스는 그만큼 엄청난 피드백과 에너지를 개발자에게 주기도 하거든요. 그런 면에서 저희가 만든 기술을 내부에서만 사용해야 하는 게 아쉽기도 하고요. 또 지금 서비스를 확장해야 할지, 새로운 서비스를 다시 만들어볼지 결정을 하는 과정도 고민거리입니다.”

20년차 베테랑 웹개발자

김민태 개발자의 웹개발 경력은 약 20년. 5~6년 전부터 웹에 심도 있는 관심을 갖고 여러 커뮤니티에 참여하고 외부 행사 발표 등을 맡고 있다. 그는 왜 웹에 집중하는 것일까. 김민태 개발자는 “단순히 HTML 문서로 치부되던 웹이 점점 애플리케이션을 구현할 수 있는 수준으로 발전하고 있다”라며 웹이 가진 잠재력을 강조했다.

“2000년대 후반, 회사에서 만들고 싶은 서비스가 있었어요. 그것을 무엇으로 구현할지 기술검토를 했죠. 당시 사내 인프라를 보면 C#이나 닷넷으로 만들거나 플래시 형태로 돼 있었어요. 시간이 지날수록 그러한 기술이 특정 기업에 매우 종속적이라는 걸 느꼈죠. 예를 들어 3년 동안 열심히 개발했는데 해당 기술 스펙이 확 바뀌어요. 개발자 입장에선 그 스펙을 따라가려 하면 전체 구조를 다 바꿔야 하는데, 그럼 시간이 오래 걸리죠. 반대로 따라가지 않으면 오래된 기술을 계속 써야 하는 문제가 생기는 거죠. 그때 특정 기업에 종속된 기술을 쓸 때 생기는 단점을 실감했죠. 그렇게 해서 종속성이 없는 기술을 찾다보니 웹이 보였고, 당시 웹이 새로운 표준화 기술을 내놓느라 많이 발전돼 있다는 걸 알았어요.”

새로운 웹기술의 보물창고, 커뮤니티

김민태 개발자가 말한대로 웹은 과거에 비해 급속도로 변하고 있다. 단순한 웹문서가 아닌 게임을 만들 수 있는 도구, 채팅을 할 수 있는 도구 등으로 확장하고 있다. 그러면 이러한 최신 웹 개발 정보는 어디서 얻어야 할까. 김민태 개발자는 ‘커뮤니티’라고 말했다. 자바스크립트와 관련해서 공부하고 싶을 땐, 페이스북 그룹에 해당 키워드를 검색해 인원수가 많은 그룹이나 주변 지인들이 가입된 그룹에 등록한다. 해당 그룹에서 나오는 글을 지속적으로 확인하면, 웹 개발 기술 정보를 쉽게 얻을 수 있다 .

“페이스북 그룹만 제대로 봐도 최신 웹 동향이나 기술 정보는 충분히 알 수 있어요. 공부할 수 있는 자료나 통로는 주변에 쉽게 찾을 수 있어요. 거기다 최근엔 한국어로 된 웹 개발 정보 공유 사이트들도 많아요. 누구나 관심과 시간만 있다면, 이러한 기술 정보를 쉽게 찾을 수 있습니다.”

developer_mintae_kim_04

김민태 개발자는 좀 더 많은 웹개발자가 커뮤니티 참여와 소통에 관심을 가지기를 기대했다. 사실 웹기술은 그동안 국제표준화기구가 정한 기술로, 수동적으로 전달됐다. 다른 오픈소스처럼 개발자 중심으로 요구사항이 실시간 반영되기보다는 학자나 국제단체 소속인원이 이러한 기술을 만들고 주도했다.

김민태 개발자는 이제 웹에 대한 활용도가 높아졌으니, 웹을 사용하는 개발자들의 목소리도 더욱 높아져야 한다고 말했다. 이러한 목소리를 내는 건 어렵지 않다. 커뮤니티에 참여하고 관심을 가지고 외부 발표도 하면서 영향력이 점점 커질 수 있다. 이미 구글, 페이스북과 같은 거대 인터넷기업들은 W3C 포럼 같은 곳에 적극적으로 참여해 기술제안을 먼저 하고 웹기술 방향을 이끄는 시도를 하고 있다. 이러한 움직임에 많은 개발자들도 동등하게 참여할 수 있다 .

“최근엔 오히려 표준화기구에서 먼저 물어보기도 해요. 예를 들어 일본은 세로쓰기를 하잖아요. 이러한 글씨가 제대로 보이기 위해 웹기술을 어떻게 지원하면 좋을지 묻는 거죠. 국내에는 이러한 웹기술 방향이나 제안에 답을 해줄 수 있는 사람이 적어요. 특정 정부기관이나 학계 사람에게 물어보는 정도죠. 이러한 활동에 기업이 참여하기는 힘들어요. 기업에 당장 눈에 보이는 이익을 줄 수 있는 작업이 아니기 때문이죠. 그래서 더 개발자가 많이 나서야 한다고 생각해요. 개발자 스스로 원하는 기능을 얘기하고 발전 방향을 모색하는 거죠. 더 나은 웹이 만들어지도록 개발자가 더 능동적으로 나서야 합니다.”

IE 낮은 버전 지원이 과연 최우선 과제일까
developer_mintae_kim_07

김민태 개발자는 현재 웹보다 훨씬 풍부하고 다양한 기술을 적용할 수 있다고 보았다. 물론 단말기 단에서 실시간 데이터나 대용량 데이터를 처리하는 애플리케이션을 만드는 데는 조금 부족할 수 있다. 하지만 그 외 다른 애플리케이션은 웹이라는 개방형 기술을 통해 어느 정도 만들 수 있다.

특히 웹을 기존과 조금 다르게 볼 때, 새로운 기술을 적용할 수 있는 폭이 커진다. 국내 웹 개발자들이 새로운 기술을 적용하려 할 때 가장 많이 듣는 질문이 있다. ‘낮은 버전 인터넷 익스플로러(IE)에서도 해당 기능이 지원되느냐?’라는 질문이다. 김민태 개발자는 새로운 웹기술, 즉 웹을 애플리케이션 수준으로 만들기 위해서는 그러한 낮은 버전의 IE 지원을 최우선 과제로 삼지 않아야 한다고 말했다. 현실적으로 최신 스펙을 모든 웹브라우저에 지원하기엔 비용과 노력이 지나치게 많이 들기 때문이다. 그만큼 최근 웹 스펙이 복잡해지고 있기도 하다. 여기에는 당연히 관리자의 지원과 허락이 동반돼야 한다.

“해외에서도 IE 낮은 버전을 쓰고 있습니다. 하지만 이들은 새로운 기술을 적용하고 개발하기 위해서는 과감히 IE 지원을 포기하기도 해요. 포기까진 아니더라도 최소한위 기능만 제공하기도 하고요. 국내에선 모든 웹브라우저를 지원하기에 비용이 많이 들어, 그냥 최신 웹기술을 보지도 않으려고 하죠. 이렇게 되면, 국내와 해외의 기술격차는 점점 더 벌어질 거예요. 일부 기업들은 국내에 IE 사용자가 많다는 것에 안주해 새로운 기술 개발에 관심을 갖지 않고 있고요. 새로운 기술에 도전하려면, 브라우저 지원에 대한 생각의 전환이 필요합니다.”

아래는 김민태 개발자가 설명한 차세대 웹 기술이다.

1. 웹 컴포넌트

W3C는 HTML5를 준비하면서 웹 컴포넌트라는 명세를 만들었다. 여기에는 4가지 구성요소가 있다. 템플릿(Templates), 데코레이터(Decorators), 커스텀 엘리먼트(Custom Element), 셰도우 DOM(Shadow DOM)가 있다.

컴포넌트는 구성요소, 부품이란 뜻을 가지고 있다. 그 의미대로 기존에 반복되었던 작업을 모듈화해서 쉽게 사용할 수 있도록 만들었다. 이러한 작업이 가능할 수 있었던 건 과거 지원하지 않은 여러 표준이 지원됐기 때문이다. 예를 들어, 사용자가 보기엔 똑같아 보이는 디자인이라 해도 개발자마다 다른 코드와 다른 기술을 쓸 수 있다. 표준화 기술이 없기 때문에 실제 핵심 기술을 만드는 것 외에 반복 작업이나 실제 구현하고자 하는 기능을 지원하는 도구에 집중해야 한다. 그러한 의미에서 김민태 개발자는 “컴포넌트 기술은 웹기술이 진화하는 데 큰 도움을 줄 것”이라고 설명했다.

컴포넌트는 크게 2가지 장점을 줄 수 있다. 우선, 새로운 기술에 대한 진입장벽이 줄어든다. 실제로 컴포넌트를 이용한 웹페이지를 보면 코드수가 더 적고 구조화돼 있다. 여러 코드가 박스에 담겨 있기 때문인데, 이것을 사용하는 개발자는 그 박스 안에 코드를 분석하지 않고 갖다 쓰기만 하면 된다. 따라서 원하는 기능을 쉽게 복사해서 붙여 쓸 수 있고, 표준 기술이기에 호환성도 높아진다. 더불어 새로운 기술도 만들 수 있으니, 웹에 이전보다 풍부한 콘텐츠를 담을 수 있다.

developer_mintae_kim_03

▲구글의 웹컴포넌트 프레임워크 ‘폴리머’를 이용해서 만든 데모 앱. 구글의 머티리얼 디자인을 쉽게 적용할 수 있도록 만들었다. 재사용하기 쉬운 구조다. (원본링크)

developer_mintae_kim_02_RE

▲웹 컴포넌트는 코드도 좀 더 간결하고, 구조화되어 있다(원본링크)

두 번째는, 웹 개발을 도와주는 새로운 도구들이 나올 수 있다. 그동안 웹 앱을 만들 수 있는 여러 도구가 있지만 실제 개발자 입맛에 맞지 않았다. 이 때문에 비표준화된 기술을 사용하고, 웹 구성요소 하나하나 직접 코딩했다. 이러한 웹을 도와주는 기술이 많으려면 그만큼 표준화 기술이 뒷받침돼야 한다. 컴포넌트라는 새로운 표준으로 웹 앱을 만들 수 있는 도구가 많아질 수 있으며, 이를 통해 웹을 만드는 시간이 더 줄어들 수 있다.

developer_mintae_kim_06

▲구글은 폴리머 기술을 기반으로 만든 웹앱 도구. UI 를 만드는 도구로, 컴포넌트를 엮어서 새로운 컴포넌트를 만들 수 있도록 지원한다. (원본링크)

구글과 모질라는 최근 이러한 웹 컴포넌트 라이브러리와 API를 지원하는 데 큰 투자를 하고 있다. 김민태 개발자는”구글이 만든 웹 컴포넌트 기술 ‘폴리머‘나 모질라의 ‘브릭‘ 등을 참고해보면 좋다”라고 조언했다.

※ 김민태 개발자가 추천하는 웹 컴포넌트 자료

2. 웹GL

그래픽은 픽셀(점)로 구성된다. 따라서 그래픽 성능은 이러한 점을 얼마나 더 빨리 찍을 수 있느냐에 따라 달라진다. 웹GL은 플러그인을 쓰지 않고 3차원 컴퓨터 그래픽스 API를 제공하는 캔버스 HTML 요소다. 김민태 개발자는 “웹GL을 3D 그래픽 작업도구라고 생각하는 분들도 있지만, 2차원 그래픽스에서도 충분히 사용할 수 있다”라며 “웹페이지에서 너무 많은 데이터를 처리할 때 웹GL 라이브러리를 활용해서 쉽게 데이터를 처리할 수 있다”라고 설명했다.

developer_mintae_kim_05