올 한 해도 저물어가네요.
올해도 저에게는 기억에 남을만한 한 해이긴 합니다. 매년마다 그렇게 느끼지만요.
모바일 게임 서버(간단한)를 만든지 벌써 만 2년이 넘었습니다. 그러면서 업계 사정도 알게 되고, 기존의 DB구축, 솔루션, SI 에서 겪어보지 못한 것들도 조금씩 겪어보고 있습니다.
그러면서 총 경력이 만 15년이 넘어서 16년째가 되어 버렸네요. (무려 게임 스타트업, 전 게임 개발 쪽은 아니었지만) 처음 수습으로 입사해서 이틀 째에 DNS 설정하러 IDC 들어갔다가(Windows 2000 Server) 설정한 도메인이 제대로 조회가 안되서 밤새도록 IDC 에서 맨붕왔던 2000년 늦가을이었네요. 이 때는 다행이 친형님의 지인분과 연락이 닿아서...제가 잘못한게 아니라 단지 설정이 적용되는데 하루이틀 걸린다는 것을 알고 허탈해하며 아침 해를 맞으며 회사로 출근했던 기억이 아직도 새록새록 남습니다. 지금이야 우스운 일이지만...(이젠 설정한 뒤 nslookup 으로 A 부터 MX 까지 수동으로 바로 확인하고...그냥 기다려야 한다고 갑에게 큰소리 쳐도 될만큼의 지식을 쌓았지만요)
수습 기간에 원인모를 병에 걸려서 보름 정도 입원을 하는 바람에 그 회사에서 짤리고, DNS 에 대한 도움을 주신 친형님의 지인분 소개로 DB구축 업체에 입사를 하게 되었습니다(저의 진정한 첫회사라 볼 수 있는, 그래서 저는 첫회사를 여기로 칩니다). 면접 보러 간 날에 같이 저녁 먹자고 하시더니, 올라와서 SQL Server 에 데이터를 잘 넣는 방법에 대해서 물어보더니...자리에 앉아 일하다 왔습니다. ^^;;; 그렇게 첫 회사에서 5년 가까이 일을 하고, 나중에 2년 정도 방황하다가 다시 관계 회사에 입사를 하게 됐구요.
성격상 많은 사람들과 두루두루 친한 편은 아니지만, 그래도 첫회사에서 개발을 너무나 좋아하는 분들과 좋은 사람들을 만나서 많이 행복했었네요. 그리고 그 때 당시에는 느리고 지금만큼 많은 자료는 없었지만 PC 통신이나 인터넷을 통해서 얻은 정보다 약간의 책, 그리고 인연이 닿아서 하게된 스터디 등을 통해 실력도 조금 쌓을 수도 있었습니다. 그래도 학교 다닐 때 학점은 완전 엉망이었지만 하고 싶었던 것은 실컷 해봤는지라...지금도 하고 있는 웹 개발 쪽은 어느 정도 익숙해진 상태에서 사회생활을 하게 되어서 좀 편하게 회사생활 초반을 보냈던 것 같습니다. 그리고 학교 다닐 때 조금 맛봤던 리눅스도 본격적으로 하면서(아주 성능이 안좋은 PC 에 레드햇 6 깔아놓고 미친 척 하면서 이것저것 다 해보고, 나중에는 FreeBSD 4 깔아서 오만거 다해봤네요) 회사 서버나 인프라 등을 관리하다 보니 각종 서버 설정이나 하드웨어까지(중간에 2년 방황활 때 서버 판매 회사에 다녀서 기술 영업도 조금 한 것도 도움이 되었네요) 두루 섭렵하게 되면서...지금은 그 모든 것들이 저에게는 지금까지도 유용한 지식이 되고 있습니다.
사실 컴퓨터야 국민학교 1학년 겨울부터 MSX 와 Apple II 로 시작을 해서 누구 못지않게 컴퓨터에 대한 애착이 있었고, 5, 6 학년 때에는 이미 컴퓨터경진대회 수상 등으로 주변에서도 기대치는 높았습니다. 그래서 주변의 기대에 힘입어 이것저것 할 수 있었기에 그 당시 국민학생, 중학생이 하긴 쉽지 않던 각종 언어(코볼, 포트란 뿐만 아니라 이것저것)도 해보고 옥소리 사서 음악도 해보고 마우스도 사보고...88년 국민학교 5학년 때에는 150만원의 거금을 들여 현대 슈퍼16e 라는, 그 때 당시에는 매우 희귀한 IBM PC 호환기종을 집에 들여놓기도 했었죠. 그래도 이렇게 오래전부터 시작해봤자...부산이라는 지리적 불리함과 정보의 유통이 쉽지 않았던 시절이었기에...실력이 느는건 지금과는 비교도 할 수 없을 만큼 느렸고 편협했습니다.
돌이켜보니 저의 컴퓨터 실력이 비약적으로 늘어난 것도 인터넷의 발달과 무관하지 않았던 것 같네요. 대학교 때에는 나름 빠른 인터넷 회선을 보유한 학교와, 학창시절 후반기 들어온 두루넷의 영향으로 이것저것 많이 해보기도 하고, perl 로 타 학과 홈페이지도 만들어주고 동아리 사이트에 게시판까지 만들어서 운영도 해보곤 했지만, 맨땅의 헤딩이었을 분...지금처럼 뭔가 구조를 정립하면서 여러 사람이 함께 협업하면서 만드는 환경을 고려하면서 만들지는 않았습니다.
그러다가, javaservice.net 을 알게되고, okjsp 도 알게 되었죠. 처음에는 javaservice.net 에 많이 갔습니다. 글은 거의 올리지 않고 거의 질문만 올렸지만...세상은 넓다는 걸 많이 느꼈었습니다. 하지만 조금 공격적인 사람들이 있던 곳이라 글을 올리기가 쉽짆 않더군요. okjsp 에도 처음부터 글을 많이 올린 건 아니었습니다. 회사가 어려워져서 일거리가 없던 시기...퇴사를 한두어달 앞둔 상황에서 그냥 시간도 남고 질문에 답을 하면서 나도 포인트나 쌓아보자고 생각하면서 okjsp 에 글을 많이 남기게 되었습니다. 한 때에는 네이버 지식인에도 많이 달아서...10만원 치의 포인트를 받아 CPU 사는데 보태기도 했었죠. ^^;;;
그런데, 우연찮은 기회에 게임 회사에 취업하게 되었습니다. 취업 직전에 여기 공동 대표로 계시는 sbroh 님께 이력서를 보내서 취업을 부탁드려 보기도 했으나...워낙 난잡한 이력에 취업은 실패로 돌아가고...그냥 집 근처 회사 중에 연락온 곳이 있어서 면접을 봤는데...거기가 게임 회사였습니다.
그렇게 게임 회사에서 서버 프로그래밍 생활을 시작했습니다.
게임 회사 이야기는 별로 적을 게 없어요. 왜냐하면, 모바일 게임 서버만 만들고 있는데다가 큰 업체를 다니고 있는 것도 아니어서 서버에서 전투 연산을 하지 않는 형태의 게임만 있어서 그냥 REST API 형태로 정보만 주고 받는 걸 만들기 때문입니다. 다만, 아주 많은 사용자가 통신을 하기 때문에 대용량에 대한 고민을 많이 할 뿐이죠.
그렇다고 이게 쉽다는 건 아닙니다. 제가 이렇게 장황하게 적은 것처럼 살면서 얻은 것들이 있기에 쉽다는 것이지, 내가 이렇게 만들겠다고 했을 때 나 자신에 대한 확신이 없다면 다른 사람들에게 납득을 시키거나 믿음을 줄 수 없기 때문이겠죠. 다행이 오픈한 게임 중 성공한 건 없지만, 서버에서 문제가 있었던 적도 없어서 나름 같이 일했던 분들에겐 좋은 평가를 받아왔었습니다.
그리고...이제 본론입니다.
게임 쪽에서 일하다 보니 okky 가 아닌 게임 개발자 커뮤니티를 들어가게 되었습니다. 실제 웹 개발에서는 접하기 어려운 일들도 존재를 하고, 그런 정보는 언어가 다르고 구현 방식이 다르더라도 게임 개발자 커뮤니티 쪽에서 약간의 지식을 얻을 수 있기 때문입니다. 그런데, 그런 사이트를 가면, 입문용 코드가 잘 없습니다. 정보는 조금씩 있는데, 도통 howto 나 get started 같은 문서는 찾기 힘들고 유저들 간에도 뭔가 숨기고 있다는 느낌을 많이 받게 되더군요. 초보자를 위한 내용도 확실히 웹보다는 적구요.
그런데, 그런 커뮤니티에서도 클라이언트 개발을 하던 디자인을 하던...다른 쪽 일을 하던 분들이 웹 프로그램으로 서버를 만들어서 출시를 하곤 하더군요. 사실 제가 봐도 웹으로 서버 금방 뚝딱 만들 수 있거든요. 너무 좋은 자료가 많으니까요. 예전에 한 스타트업 회사에서 클라이언트 개발자가 힘들어 하길래 2시간 투자해서 php 로 간단히 서버 역할을 하는 코드를 만들어서 줬던 적도 있었습니다. 물론 부하나 기타 다른 문제 요소는 고려하지 않고, 말 그대로 남에게 보여줄 클라이언트를 서버 통신을 하면서 돌아만 가게 하는 목적이었으니까요.
그런데, 같은 서버라도 socket 으로 그렇게 만들면...어려울까요? 지금도 제 앞에는 Netty 책이 있고, 제 Disk 에는 Javascript/Java 버전의 Vert.x 책이 있습니다. 또 Node.js 책도 두 권 있고, Erlang 책도 있네요.
이 책을 보면서...하루 정도 투자하면 위에서 말한 php 같은 역할을 하는 Socket 서버를 뚝딱 만들 수 있습니다. 저도 2년 넘게 일하면서 Socket 기반 서버를 만들어서 출시까지도 했거든요. 그런데, 그런 기술에 대해서는 무척이나 꽁꽁 숨겨놓습니다. 그냥 이런 기술이 있다...소리 듣고 내용을 또 듣고...이거저거 찾아보면서 기술 내용을 상상해서 구현해봅니다...그리고 만들어보면 원래 기술만큼은 당연히 안되겠지만 겉핥기 정도의 기술은 나오게 되더군요. 여기서 물론 Java 의 힘이 큰 도움이 되었구요.
제가 좋아하는 Java 세상에서는 제가 원하는 형태의 뭔가가 있으면...찾아보면 다 있다고 보면 됩니다. 물론 언어 차원에서 지원이 안된다면(대표적으로 C# 의 LINQ) 어쩔 수 없지만, 다른 언어에서 나름 괜찮다고 하는 것들은 Java 에서 가장 깔끔한 형태로 제공되는 무언가가 있더군요. 그 방대한 생태계...심지어 Groovy 나 Scala 같은 친구들까지 생겨서 그 생태계가 더 넓어진 느낌입니다. Java 가 좋네, Groovy 가 좋네, Scala 가 좋네...서로 싸울 필요 없어 보이더군요. 어짜피 JVM 에서 돌아가다 보니, 다른 사람이 만든거 그냥 가져다 쓰기도 좋고, 다른 사람이 만든 코드 보고 쉽게 이해해서 내 것에 적용하기도 쉽더라구요.
그런데 말입니다...최근에 몇몇 좋지 않은 일을 겪었습니다. 일부는 여기 okky 에서 겪었고, 그러면서 잠시 사이트를 떠나 있으면서 지인들을 통해 안좋은 이야기를 전해들은 것도 있고 해서...기분이 안좋아지더군요. 생각해보세요. Java 나 다른 웹 관련 일을 하면서 혼자 힘으로 지금의 자리까지 선 분이 계신지요. 전 없다고 봅니다. 당연히 저도 지금 이 순간까지 혼자 힘으로 프로그래밍을 못합니다. Spring 으로 이것저것 뼈대를 만들다가 막히면...Spring 소스를 까보지 않습니다. 귀찮고, 그럴 능력도 안됩니다. 그냥 이것저것 찾아보고 이리저리 해봅니다. 그러다보면 대부분...아주 대부분은 해결이 됩니다. 그래서 저도 다른 사람들이 제 댓글 하나에라도 도움을 얻어서 포기를 하지 않고 다음 단계로 나갈 수 있길 바라며 글 한 자라도 더 적으려고 노력했습니다. 그런데, 요즘 좀 안하무인 격인 사람들이 늘어난 것 같습니다. 줄기차게 실명제를 주장한 것도 그런 이유이구요. 일부러 okky 정기 모임에도 나가고 있습니다. 제 눈 앞에서 그런 말을 할 수 있는 용기가 있는 사람이 있을까 싶기도 했구요. (아직까진 없었습니다. ^^;;;)
요즘 더 염세적으로 변해서...위에서 언급한 이유 때문에, 저도 웹 개발자가 되기 위한 장벽을 낮추는 것에 일조하는 것 보다는 높이는 쪽으로 마음이 바뀌고 있습니다. 아주 비겁하지만, 전 이미 그 장벽을 넘었거든요. 그리고 5년차 정도 됐을 때 기술적으로 웹 사이트 구축을 하는데 부족함이 없다는 생각도 했었습니다. (지금 생각하면 너무 건방진 생각이었지만) 물론 지금부터 책 한 자 안보고 제가 짜놓은 예전 소스만 활용해도 몇 년은 그냥 먹고 사는 데 지장도 없을 것입니다. 그런데요...그게 과연 행복한 일일까요?
딱 두가지만 정리해서 말하고 싶습니다.
지금 당신이 초급을 넘어섰다고 생각하신다면, 그건 분명 자신보다 앞서 이 길을 쉽게 나갈 수 있게 다듬어주고 있는 선배 개발자들이 있었다는 사실을 잊지 마세요. 회사 상사가 실력도 없으면서 재수없게 군다면, 그건 그 사람 개인의 문제이지, 이 바닥의 선배들이 그런게 아니랍니다.
많은 입문 자료가 무수히 쌓여있는 웹 기술을 하찮다고 여기지 마세요. 단지, 웹을 하는 분들 중에 마음이 넓은 선배들이 많았던 것 뿐이니까요. 다른 분야로 가서 성공하기 쉽지 않은 건 웹 만큼 오픈을 좋아하는 문화를 가진 분야기 없기 때문이랍니다.
그럼 즐거운 연말 되세요.