실리콘 밸리 해킹하기
대학 졸업 후, 취직된 스타트업에서 웹 개발(Web Application Engineer) 경력을 쌓은 지 2년쯤 지난 시기였다. 매일매일 공부하고 Meetup을 다니며 실리콘 밸리의 기술 트렌드를 배우고 따라가기 바쁜 어느 날, 갑자기 다가오는 두려움 같은 의문이 있었다. 기술 트렌드가 생각보다 너무 빨리 변하고 있어, 과연 내가 5년 후에도 현재의 커리어에서 살아남을 수 있을까? 당시 나는 프론트 엔드(Front-end)와 백엔드(Back-end)를 개발하는 엔지니어로, 그때 당시 유행하던 jQuery와 PHP를 사용하고 있던 시절이었다. 이제 막 커가는 스타트업이라 그런지 클라이언트에게 보이는 대시보드에서부터 API까지 거의 모든 일을 해야 했다. jQuery는 현재에는 거의 아무도 사용하지 않지만(적어도 실리콘 밸리에서는), 그때까지만 해도 Javascript의 방대한 코드를 혁신적으로 줄일 수 있었던 기술로, 당시 프론트 엔드 엔지니어들이 웹 개발을 할 때 많이 이용하는 기술이었다. PHP는 LAMP(Linux, Apache, MySQL and PHP) 스택의 일부로 많은 웹 소프트웨어 개발에 많이 사용하던 기술이었다. 하지만 트렌드는 점차 더 체계적으로 바뀌고 있었고, Web framework를 이용해서 보다, 스케일 있고 테스트 가능한 프로그램을 개발하는 방향으로 이동하고 있었다. 물론, 나도 당시 트렌드에 맞춰 기존의 코드를 업데이트하고 있었지만, 기하급수적으로 나오는 Framework들의 장점과 단점을 매번 파악하고 적용하기란 거의 불가능에 가까웠다. 또한, 스타트업에서 일하는 이상, 똑똑한 선임이 길잡이를 해주지 않는다면, 인터넷 StackOverflow에서 찾아보고 그때그때 고치는 식의 개발로는 나 자신이 발전하고 있다는 생각이 들지 않았다.
이러한 시기에, 대량의 자료를 처리할 수 있는 분산 컴퓨팅이 매일매일 테크 소식에 나왔고, 클러스터에서 동작하는 분산 응용 프로그램을 지원하는 라이브러리이자 Yahoo에서 개발되고 오픈한 하둡(Apache Hadoop, High-Availability Distributed Object-Oriented Platform)에 대한 관심이 특히 높았다. 원래 너치(Nutch)의 분산 처리를 지원하기 위해 개발된 것으로, 아파치 루씬의 하부 프로젝트이었다. 하둡은 구글의 분산처리 기술인 구글 파일 시스템을 대체하기 위해 개발된 오픈소스로, 급속하게 많아지고 있는 데이터를 처리하기 위한 기술이었다. 이러한 기술이 몇 년 후 한국에서 꽤 인기 있었던 빅데이터 시대의 초석이 되었다.
하둡은 버클리 재학할 당시에도 잠깐이나마 수업에 언급이 되었었고, 이 기술을 습득하고 정진해 나간다면 다가오는 몇 년간은 직장을 잃는다고 하더라도 그 수요가 많은 만큼 재취업이 어렵지 않을 것 같았다. 실리콘 밸리에서는 워낙 기술이 빨리 변하기 때문에 새로운 기술이 어디에 사용될 것인지 예상을 하고 그 기술을 습득한다면 향후 5~10년간은 그 수요와 공급에 따라 직장 걱정 없이 다닐 수 있다.
아무튼, 한번 새로운 기술을 배워보자라는 결심이 선 이후, 주말마다 시간을 내어, 빅데이터에 관한 책을 독서하기 시작했고, 회사에서 일과가 끝난 후 다른 엔지니어들이 업데이트하는 하둡 코드를 보며, 그 기술을 습득해나가고 있었다. 그렇게 3~4개월이 지났을까? 다니던 회사에서 한 빅데이터 엔지니어가 떠난다는 공지를 회사에 알렸고, 회사는 그 빅데이터 엔지니어의 빈 공간을 대체할 수 있는 엔지니어를 찾아야 하는 상황이 오게 되었다. 기회는 이때다라는 생각이 들었고, 매니저에게 기회를 달라고 메시지를 보내고, 당분간 기존의 일과 빅데이터 관련 코드를 동시에 진행하게 되었다. 뭐든지 하다 보면 향상되어서 일까? 빅데이터 관련 일은 점점 손에 익기 시작하였고, 나는 기존의 일을 타 엔지니어에게 넘긴 후 빅데이터 엔지니어의 커리어에서 경력을 쌓기 시작했다.
2019년, 세상에 나온 지 10년도 지난 하둡(Hadoop)은 아직까지도 많은 회사에서 사용하고 있으며, 빅데이터를 처리하기 위한 하둡의 가장 중요한 콘셉트인 맵리듀스(MapReduce)는 점점 변화가 되어, 다음 세대의 기술인 Storm, Spark 그리고 Flink 등으로 변형되어 실리콘 밸리를 움직이고 있다. 더욱 자세한 내용은 그 주제만을 잡아 설명하고 지루한 기술적인 내용은 여기서는 생략하겠다.
실리콘 밸리에서 소프트웨어 엔지니어라는 직업은 끊임없이 공부해야 되는 직업이다. 기술은 시간이 흐름에 따라 다듬어지고 발전되며, 때로 운 새로운 아이디어로 그 방향성이 혁신적으로 변화되기도 하고, 또다시 그러다 보면 그 기술을 주춧돌 삼아 또 다른 새로운 기술이 나오는 것이 보편적이다. 또한, Github(얼마 전 마이크로 소프트에게 인수됨)의 시작으로, 사람들이 코드를 공개하고 그 기술을 서로 발전시키는 오픈소스의 시대가 온 이상, 그곳에서 다른 사람의 코드를 보고 더 깔끔하고 스케일 있게 코드를 개발하는 방법은 소프트웨어 엔지니어들의 끝없는 과제가 될 것이다.