근황, 개발의 길을 묻다.

미국에 온지도 반년이 넘었다.

그간 여러모로 이곳에 적응하려고 열심히 노력했다. 생각보다 많은 친구들을 만나고, 마찬가지로 많은 문화를 접했다. 미국에서 내가 가장 크게 느낀것은, 누구에게나 길은 열려있지만 비자나 취업, 영어, 개발공부, 건강 같은 자신의 밥그릇은 자신이 챙겨야 한다는 것. 사실 좀 안타깝기도 하지만, 어쩔 수 없는 상황인 것은 마찬가지인 것 같다. 하기사 한국이라고 별반 다를 것이 있겠는가.. 그나마 미국은 그 기회가 "평등" 하다는 것이 한국과는 조금 더 다를 뿐이지만.

미국에서는, 정말 철저하게 살아가지 않으면 도태될 수 밖에 없는 것 같다. 그래서 공부를 계속 해 나가야 한다. 나야 지금은 석사학위 때문에 학과 공부를 병행하며 진행하므로 공부를 어쩔 수 없이 하지만 만약 석사학위가 아니더라도 공부에는 끝이 없는 것 같다. 

일단 나도 미국에 와서, SDN 정확히는 SDS(Software-Degined Storage)라는 전공을 잡았다. 가상화 기술, 서버 개발자로 계속해서 살아가다 보니 드는 당연스런 생각이다. 기존의 bear-metal서버에서 벗어나, IDC에 임대한 그 거대 서버들에서 보안이라는 명목 하에 자원을 낭비(!) 하며 돌아가는 그 수 많은 웹 어플리케이션에서 벗어나, '최적화' 를 기본으로 하는 Cloud서비스의 IaaS가 좋았다. 그래서 수 년을 Google Compute나 AWS를 사용해 왔지만, 단순 스케일 인/아웃 방식으로는 서버의 확장이 한계가 있음을 느꼈고 한편으로는 Private Cloud에 대해 운 좋게 학부시절 Openstack을 연구할 기회가 있어서 이를 보다가 나 스스로도 하드웨어 가상화를 할 수 있다는 사실에 사뭇 재밌었다. 한편으론, 생각보다 '고급' 기술이라는 판단 아래 공부의 필요성을 느꼈고, 최근 Docker등의 발전으로 이런 마이크로 아키텍처는 점점 더 커져가는 트래픽 시대에 분명 나같은 일인 기업이 가져야 할 기본적인 역량이라고 판단했다.

일인 개발자의 기본적인 역량이라, 무슨말인 즉 풀스택/Devops로 살아가며 당연히 내가 필요로 하던 기술이 서버 최적화였다. CI/CD/Issue Tracking정도는 좋은 툴과 Build/Deploy Script만 잘 만들어두면 별로 큰 일도 아니지만 실제 서비스 운영시에 자원을 최소화 하려면 유저의 트래픽에 따라 유연하게 반응해야 하고, 그 유연성이 정말로 민첩하게 돌아가야 한다는 것이다. 예전처럼 유저가 만명 늘었다고 해서 IDC에 서버 한대 더 넣어서 L4 list에 한대 더 추가해서 되는 것이 아니라, 그런 만명 단위의 대처보다는 조금 더 세밀하게, 하지만 비용은 최소화 하게 들어갈 수 있는 생태계를 구축해야 한다는 것이다.

이말은 즉, 운영비용의 최소화에 있다. 비단 운영시에 들어가는 비용의 최소화 뿐만 아니라 이를 위해 내놓는 운영 인력의 최소화도 관건이다. 사실 스타트업이야 당연히 풀스택이 중점으로 운영되는 것은 마찬가지긴 한데, 더 소규모로 들어가서 일인 기업이 운영한다 하면 정말 Business Plan부터 UI/UX DB, 개발환경 세팅, 디자인, 모바일 개발, 프론트/백엔드, 형상관리, C.I/C.D, IaaS관리 등.. 수 많은 개발 프로세스를 혼자 하겠다고? 사실 나도 풀스택으로 살아오면서 다 좋은데 분명 어느 한 군데가 꼭 어긋나는 곳이 있고, 이는 비단 나만의 문제는 아닐 것이 분명하기 때문이다.

어쨌든, 솔직히 말해 지난학기를 제외하고 아직 SDN을 본격적으로 공부하지는 않았다. 최근에는 Play! Framework와 Scala/Functional Programming 에 대해 다시 보고 있는데, 정말 플레이는 훌륭한 풀스택 프레임워크이다. 기본적으로 RESTful로 이뤄져 있을 뿐 아니라, 멀티코어/비동기 방식을 전제로 한 서버개발이라니 결국 서버에 종속적이지 않은, 온전한 백엔드 자체의 '작업 머신'을 만들 수 있다는 데에 큰 점수를 주고 싶다. 뭐 이외에도 많은 기능이 있지만 정작 서버개발, 특히 자바 기반의 서버개발에 중요한 Filter니 웹소켓이니.. 난 그런 기본적인 지원이 오로지 '웹 어플리케이션'을 잘 꾸미기 위한 것이라는 게 좋다. 

하지만 공부도 공부 나름이다. 요즘엔 출근해서 계속 공부만 하고 있는데 속으로는 조금 찔리기도 한다. 개발도 병행해서 해 나가야 하는데.. 스칼라나 플레이의 그 재밌는 기술은 둘째치더라도, 기존에 만들어둔 UI Template에 아직 프론트 구성이 잘 되지 않았다. 물론 기존에 쓰던 RESTful API가 있어서 서버 송수신에는 문제가 없지만, 그리고 사실 내가 만들어야 할 페이지가 겨우 3페이지 정도인데 아직도 머리가 잘 돌아가지 않는다. 무엇을 우선으로 해서 개발해 나가야 하는지, 그것이 사실 걱정이다.

이게 풀스택의 문제점이다. 아무리 길고 난다 하는 개발자가 있던간에 주기적으로 흐름을 유지하지 않으면 끊겨버린다. 그래서 어떻게 보면 협업이라는 것이 좋다. 누군가는 나를 백업해 줄 수 있고 나 스스로의 개발 기준에 도태되지 않으니깐. 하지만 아직까지는 이곳에서 서버 개발자를 만나보지 못했다. 그게 지금의 내 미션일까.. 사실 지금처럼 스타트업 비슷하게 하고싶은 생각과는 별개로 이곳 실리콘벨리에서 많은 매력적인 기업들에서 더 많은 친구들과 사귀며 개발을 배워가는 것도 재밌을 텐데 말이다.

어쨌든, 개발 자체는 각설하고 집중해야 한다. 당장 JIRA 테스크부터 데드라인을 제대로 잡고, 정말 모듈 단위로 개발 명세부터 정확히 들어가야겠다. 그렇게 TODO가 나와있는 상황에서는 빼도박도 못하겠지. 하루에 온전히 개발만 하는 그 시간을 Fix해두고 정말 그 시간에는 아무것도 하지 않고 개발만 할 수 있도록, 그런 환경을 만들어 둬야 한다. 여섯시간이면 여섯시간, 열시간이면 열시간. 공부도 마찬가지, 세시간이면 세시간 이런식으로 지속해서 나아가야지 안그러면 정말 숨만 쉬어도 큰 돈이 나가는 이곳에서 몇일 버티지 못하고 한국으로 돌아갈 것이 분명하기 때문이다.

점차 나는 인생을 알아가나보다. 그렇게 혼자서 많이 있었는데, 이제서야 가족과 나 스스로에 대한 애정이 넘쳐난다. 개발자의 길도 그럴 것이다. 스스로를 사랑하며, 가족만 생각하면 살아가는 삶, 이기적일지는 모르겠지만 그게 인생을 행복하게 사는 방법 아닐까. 지금의 복잡한 개발 상황, 잘 정리하고 한편으론 즐거운 끌로이와의 여행을 기획할 수 있기를 바란다..