실리콘벨리에서의 적응

실리콘벨리에 학생으로 온지 벌써 4개월이다.

꿈과 희망에 부풀어 올라있던 나의 첫 느낌은, 거품이 많이 있는 곳. 미친듯 높은 이곳의 월세를 보며, 도대체 이곳에 살아야 할 이유가 무엇인가에 대해 생각했다. 물론, 큰 범주에서는 학교를 다니고 졸업 후 어딘가에서 엔지니어로써 취업을 하여, 글로벌 기업에서 이리저리 여행다니며 일하고 싶은 꿈을 간직하였기에, 그 꿈을 이루고자 온 것은 사실이다. 하지만 이에 앞서 주거문제라던가 교통문제, 그리고 생각보다 높은 물가 등은 정말 조금은 이곳 생활을 내게 지치게 만들었다고나 할까.

그래도 꿋꿋히 살아가는 것 같다. 와이프와 아끼며, 절약하며. 작은 10평 남짓한 공간에서 이케아에서 모든 것을 내가 어떻게던 실어다가 집에 가져와서, 나 스스로 조립하고 하니 가구에 크게 든 금액은 없다. 조리기구도 대부분 세일기간이나 코너에 가서 사왔고, 음식도 거의 해먹기에 일주일에 한번 외식 할까말까, 요즘 특히나 내가 요리의 재미에 푹 빠져있어서 주말에는 거의 내가 다 요리를 하는 것 같다. (물론 와이프도 맛있는 요리를 많이 해주지만 🙂

특히나 교통 문제, 101 high-way의 차들과 함께 달리다 보면 나도모르게 120~130km/h 는 금세 밟고 있다. 아찔한 경험도 한두번 경험했고, 이곳의 사람들의 문제일까 아니면 그 어떤 다른 문제가 있을까. 분명 제한속도가 존재하는데… 학교(SJSU)에서 학생증으로 VTA라는 이곳의 교통수단을 무료로 제공해주고 있지만, 생각보다 치안도 별로고 해서 별로 애용하지는 않는다. 게다가 기사들도 이를 꺼리기도 하고 말이다.

학교 생활은 크게 어렵지 않다. 내가 수강하는 세 과목(Digital Design, Enterprise SW Platform, Network Application & Programming) 중 후자 두 과목에 팀플이 있었는데, 그중에서 하나는 이미 끝났다. Google App Engine에 대해 조사하고 활용 사례를 만드는 거라 생각보다 어렵지 않았다. 사실 수업이 뭐 이런가 싶기도 했지만.. 논리회로야 학부시절 부족한 과목이어서 그냥저냥 듣고 있고, 네트워크 플밍에서 배우는 SDN이 볼수록 신세계라서 재밌기도 하지만 한편으론 이걸 내가 정말 공부해야 하나 싶은 생각이 든다. 

내가 관심있는, 즉 학문적으로 소양을 넓히고 싶은 분야는 '분산처리' 나 '대규모 질의 처리'와 같은 부분이다. 그냥 뭐랄까, 스케일 인/아웃 자체에 묘한 매력을 느낀다. 이와 더불어, 서버 가상화도 정말 재밌어 보이는게 많다. docker/coreos로 부터 확장되어 가는 그 세계속에, 나는 묘한 그 커다란 기술의 자기화(?)에 대한 쾌감을 느끼기 때문이다. 그런데 SDN이라는 것이 사실 서버 가상화의 핵심 기술이란다. OpenStack 이 기본이 되어있어서 그렇다나.. 그렇게 접근하니 살짝 의아한 것이, 라우터나 스위치 등의 약간은 하드웨어적인 부분을 알아야 하고, 표준은 물론 좀 미지의 세계를 파는 기분이다. 과연 그런것이 좋은 것일까. 조금은 머신러닝을 공부하고 싶은데.. 그래서 아직은 더 생각해 봐야 할 부분이라 느껴진다.

지난주에 작업 공간을 구했다. 사무실이라 해야하나.. 집도 있긴 하지만, 혹여나 있을 법인 등록을 대비해서, 스타트업 비스무리하게 하려고 생각하다보니 작은 공간을 찾았다. 처음에는 사실 스타트업이 뭐 별거인가. 그냥 제품이나 열심히 만들면 되지 라 생각했는데 중요한 것은 아주아주아주 많이 있다. 여러 스타트업 책을 보면서도 느꼈지만, 그냥 가볍게 생각하고 넘길 것은 아닌 것 같다. 하지만 내가 정말 추구하고자 하는 그 꿈, 그것 하나만 있으면 된다는 생각이다. 그리고 난 그게 당연히 있으니..

유라임, 이곳 블로그에도 몇번 언급을 했지만 나는 자기관리에 있어서 항상 고민을 많이 해왔다. 그리고, 스스로 찾은 방법론이 있다. 쪼개는 것, 그 쪼개는 것에 있어서의 관리할 수 있는 툴을 만드는 것이 나의 목표이다. 즉, 자기관리에 있어서 최고의 툴을 만들고 싶다. 그리고 누구나, 자신의 꿈을 실현하는 데에 있어 많은 사례를 접했으면 좋겠다는 것이다.

3평 남짓한 사무실이야 그냥 작업할 공간이고, 혹은 집과는 떨어진 곳이다. 한국에서 들고온 imac과 리얼포스 키보드만 딸랑 갖춰놨다. 이외에 어떤것도 사실 지금입장에선 필요가 없다. 고객도 없고, 투자자도 없다. 지금은 그저, 지난 10년간 내가 고민해 오던 그 툴, "유라임" 이라고 명한 그것만 만들면 된다. 이를 만들기 위해서, 스스로도 많은 것을 갖췄다. 프로젝트 매니지먼트를 하며, 기본적으로 C.I , C.D 에 대한 흐름을 설계해뒀다.(당연히 git->jenkins->test/qa->real 의 구조) 요즘 JIRA를 써서 그런지, 나름대로 스크럼과 '버전'에 대해서도 민감해 졌다. (이것들도 결국 쪼개는 툴이다.) 때문에, 기존에 하던 작업을 통해 스스로에 대한 역량 체크도 많이 했다. Epic이라는 것을 통해, 기능별로 구분을 하고, 스토리보드에 따른 기능 및 테스크/서브테스크 구분은 물론이다. 이런 작업들이 물론 한번에 이뤄지지는 않지만 어쨌든, 나 혼자의 역량으로는 가능하다. 하물며 Maven스크립트도 6년전부터 쓰던 것이 있으니.. 어쨌든 스크럼은 요즘에서야 제대로 쓰고 있는데, 만들고자 하는 유라임과도 사뭇 비슷하다. 어쩜 그리, 나를 잘 알아가는 과정이 되어버리는지.. 이런게 LEAN이고, 이런게 스타트업일까,

개발적인 부분으로 넘어가서, 미국에 와서 Frontend에 대한 고민을 많이했다. 결론은 즉, AngularJS를 통해 우선 지금의 프론트 기술을 따라가야 겠다는 생각을 했다. Yeoman을 통해 어느정도 StartKit에 대한 기술의 감을 잡았고, 특히 앵귤러의 많은 부분을 섭렵했다. 스프링과 크게 다르지 않았다. D.I 중심이니.. RestFul이 기본이니 이에 대한 서비스와 펙토리를 구현해 두고, 기본적인 뭐 CRUD에 대한 페이징이라던가, Bootstrap과 연동된 많은 부분들이나 JS LazyLoading등이야 많은 것들이 지원을 하더라. 특히 세션이나 쿠키 관리에 대해서, 어차피 중요할 것은 당연히 알기 때문에 많이 익혀두었다.

백엔드는 기존에 쓰던 스프링을 계속 쓰다가 Spring Boot로 넘어갔다. 환경설정이 쉬운 것 이외엔 크게 차이가 없다. 다만, 원래는 MyBatis를 사용하던 환경이 JPA를 사용함으로써 조금 적응이 안되다가도 요즘에는 왜 이리 편한것을 안썼을까 하는 생각이다. 이젠 정말 차원이 다른 RDB와의 ORM이 지원되는구나.. 기존 DataTable과 비교하면 이해도 쉽고, IDEA에서는 자동적으로 domain까지 클래스로 빼와주니..

이런 와중에도 어쨌든 REST로 가기 때문에 보안적인 부분을 많이 공부해야 했다. Spring-Security를 적용하면서, Token이라던가 Redis에서 관리하는 캐시라던가.. 부터 CORS필터링, Cross-Domain까지. 뭐 원래도 이런 이슈는 있긴 했지만 이젠 이런 부분이 보편화 되어 있는 것 같았다. XSS라던가 그런 부분은 문제가 발생했을때 부랴부랴 처리했던 것이 엊그제 같은데… AngularJS와 Spring-Security간에 그 Token교환방식은, 사실 잘 이해가 안가서 몇주를 고생했던 기억이 난다. 웃기지만, 유라임부터는 Play!로 가기로 했다. 올초에 배운것도 아깝고, 트랜드를 어느정도는 따라가고자 하는 스스로의 마음 때문이다. 코드의 간결함, 물론 람다가 주는 웃긴 경우도 있지만 그게 진짜 사람과의 소통을 통한 언어가 아닐까,, 물론 스칼라 얘기이다.

디자인적은 부분에서는, 요즘엔 워낙 Bootstrap기반의 프로젝트가 잘 되어 있어서 그냥 마음에 드는 레이아웃/플러그인을 채택한 WrapBootstrap에서 저렴한 10~20불짜리 하나 구해다가, PSD에서 어느정도 내 색깔만 입히고, 인터랙티브 입힌 후, 추후 CSS에서 조금 수정을 입히면 된다. 요즘엔 정말 많이 또 디자인적인 부분이 세분화 되었다는 생각이다.. 그런데 문득, 포토샵을 보다보니 Color에 대한 그 색배합(?)이라 할까, 그것이 눈에 띄더라. 그래서 요즘 즐겁게 색에 대해서도 공부중이다. 현재까지는 bootstrap이나 fontawesome, 그리고 Google Font만 있어도 크게 문제는 되지 않는 것 같지만 말이다. 아쉬운 점은, Flex개발처럼 Adobe Flash Builder/Catalyst를 제공해서 인터렉티브를 그대로 코딩에 구현할 수 있으면 얼마나 좋을까라는 생각도.. 뭐 요즘 트랜드는 인터렉티브 같지는 않지만 🙂

모바일 얘기를 살짝 해본다. 원래는 당연 반응형 웹 만들고 웹뷰로 뭐 코도바 돌려다 하이브리드로 배포하려 했다. 근데 그게 사실 퍼포먼스 문제가 있다. 코도바 자체도 난 좀 부정적으로 보는게, js파일이 왜이리 기능별로 많고 복잡한지 원.. 결국 그냥, 스스로 네이티브 하나 파다가 어차피 REST니깐 필요한 뷰 부분을 조금씩 구현하는게 낫지 않나 싶다. 스칼라도 조금은 적응되는 시점이니, Swift를 해보면 어떨까.. 애플 개발자 등록 5년째인데, 이때 한번 써봐야지 하는 생각에 아주 조금씩 보고 있다. (하면서도 스위프트는 정말 훌륭한 펑셔널 언어 같다.) 다행히 안드로이드는 3년 정도 경험이야 있고, 자바베이스니..(thanks god)

배포 환경도 요즘 신세계다. 난 원래 도커따윈 고려 안했는데, 본래 운영하던 GCE에서 Kubernetes를 지원한다. 즉, 도커 컨테이너를 쉽게 관리할 수 있는 환경이고 이를 통해 서버 사용률을 크게 끌어올릴 수 있다 한다. 사실 기존 D2서버도 20%도 서버운영이 안되서 자원낭비라 생각했는데.. 물론 네트워크 트래픽에 따른 그 과금정책이 있겠지만, 어쨌든 서버를 풀로 사용할 수 있다는 것은 즐거운 일이다. 도커 이미지 서버야 금방 만들고, 연결만 해두면 자동으로 스케일 인/아웃이 되니 이건 마치 조금 더 내게 맞게 설계된 PaaS와도 같지 않나 싶다.

다만 중요한 것은, 핵심적인 알고리즘 설계이다. 유라임 자체가 컴퓨터의 학습을 필요로 하기 때문에 올초부터 조금씩 머신러닝을 공부하고 있다. 사실 3학년때 들었던 인공지능 수업이 컸는데, 그때는 그냥 이해하기로는 아 그냥 뭐 랜덤을 돌리던 무한반복을 하는것 밖에 없구나.. 했는데, 결국 하나의 두뇌(?)를 만들어 가는 학습과정인 것이었다. 그런 방법에는 뭐 다양한 방법이 있고.. k-NN이라던가 🙂 내가 과가 Software관련된 대학원이었으면 벌써 머신러닝 하나만 공부했겠지만, 하드웨어를 어느정도 다루기 때문에.. 어쨋든, 머신러닝은 재밌고 데이터 과학이던 분석이던 웹개발이던 추천시스템이던 어디던간에 안쓰이는데가 없다. 그리고 그것이 결국, 사업의 핵심이 될 것이라는 생각이다.

풀스택으로 살아갈 수 밖에 없는 나라는 존재이다. 아직까지는, 사람을 쉽게 믿지 못한다. 벌써 10년전, 하던 사업이 망하고 나서 그때부터일까, 가벼운 관계는 많지만 무거운 관계는 거의 없다. 있다면 와이프 정도(?) 내 동업자도 지금까지는, 와이프다. 그런 나도 조금씩, 이곳 실리콘벨리에서 한국 그룹을 만나고 사람들을 조금씩 만나가고 있다. 그들과의 생각 교류는 즐겁고, 교류를 해서 피드백을 받아야 스스로도 발전이 있다고 생각한다. 아주 조금씩이지만, 그래도 발전하고 있다.

하지만 아직까지는 혼자 조용히, 개발하고 싶다. 사업이 성공하던 실패하던 좋다. 어차피 드는 돈은 나에게 쓰는 돈 뿐이다. 그래서 더욱이나, 위험부담이 없고, 그래서 더욱이나, 내가 하고싶은 것을 해볼 수 있는 것 같다. 그래서 이곳의 삶이, 꿈만같다. 아무 생각없이 만들고 싶은 것 하나에만 집중할 수 있는 시간, 대자연의 아름다움, 신혼의 즐거움. 만끽할 수 있음을 감사한다.