Skip to main content

실리콘밸리 구직 체험기2_201505 - 2. 미국에서의 개발 적응

2) 미국에서의 개발 적응

미국 생활 적응 뿐 아니라 개발 방식의 적응도 필요하다는 것을 절실히 느꼈습니다.
한국에서는 SW아키텍트를 하면서 요구기능이 있으면 주로 만들어 썼습니다.
메일, 로깅, 모니터링, FTP 기타 등등
외부 솔루션들이 있기는 하지만 상용 솔루션들은 비용도 많이 들고 사용하려면 다시 배우고 interface해야 하고 문제 발생 시 쉽게 조치받을 수 없기 때문에 빠른 개발을 위해서 바로 적용할 공통 모듈을 제공하는 것이 능력있는 아키텍트의 자질이였다고 생각을 했습니다.
그런데 이곳에서는 모두 밖에서(open source 또는 SaaS) 가져다 쓰는데,
AWS 메일(SES), 각종 모니터링 툴(AWS monitoring, uptime robot, newrelic), 각종 통계툴(mixpanel, adjust, amplitude) 등 거의 없는 것이 없었습니다.
새로운 요구 기능이 발생하면 외부에서 소싱할 수 있는지 먼저 확인하고 있으면 가져다 쓰는 방식이였습니다. (ruby의 Don't Repeat Yourself (DRY) 그 자체다.)
외부에 dependency가 생기고 연계 개발 시 오히려 생산성이 떨어진다고 PM이나 PL들을 설득해서 자체 모듈을 사용했던 한국에서의 나의 방식과는 사뭇 다른 접근입니다.
이런 접근이 가져 올 몇가지 장점들을 발견했습니다.


1. 외부 솔루션들이 검증되고 지속적으로 개선될 수 있다.
- 실리콘밸리의 다양한 업체들이 성공할 수 있는 기반이 아닌가 생각됩니다.
2. 개발자 의존도가 많이 줄어든다.
- 내가 만든 모듈을 사용한다면 나의 도움이 필요할 수도 있습니다.
- 6개월, 1년 계약직이 많고, 정규직이라도 5년 이상 근무하지 않는다고 하니 의존도를 낮추는 것이 중요합니다.
3. 소스가 simple해 진다.
- 복잡한 모듈이 외부에서 소싱되니 당연합니다.
하나 더, 나는 주로 업무 시스템만 했기 때문에 일반 사용자 대상 시스템에 대한 이해가 부족했다. 이건 미국, 한국의 문제가 아니라 업무시스템 / 일반사용자 시스템의 차이였습니다.


한국의 업무시스템 개발은 거의 획일적으로 unix, oracle, spring, EAI 이 정도의 stack에서 출발하는데 짦은 기간 동안 다양한 경험을 했다. 사실 엔지니어가 5명인 startup에서 다양한 경험을 하지 않을 수 없었는데, 특히나 내가 fullstack이며 server engineer이기 때문에 가능하지 않았나 싶습니다.

한국에서는 프로젝트 초반에 솔루션을 선정하고 프로토타이핑을 하면서 기술 검토를 하는 것이 나의 일반적인 업무였기 때문에 새로운 기술을 받아들이는 것이 부담되는 것이 아니라 오히려 재밌는 업무였습니다.

5명의 엔지니어팀에 1명은 인도계 미국인 CTO, 1명은 fullstack 엔지니어(android, server), 2명 안드로이드 개발자, 나 이렇게 구성되어 있었고, CTO는 관리업무만 했고 초반에 아키텍쳐를 구성했던 full-stack 엔지니어가 서버 관련 작업을 나에게 거의 넘기고 android 개발에 집중했기 때문에 모든 서버쪽 작업 및 새로운 시도는 나의 몫이 된 것이였다. 이렇게 다양한 시도를 하는 것을 한국에서는 꺼려하는 일이지만 이곳에서는 몇가지 이유에서 오히려 즐기는 분위기 였습니다.

- trendy한 startup의 기술 (Spring으로 prototyping했더니 node.js로 가자고 했습니다.)
- 엔지니어의 경력 개발 (빅데이터 관련 기술 경험을 위해서 필요성을 만들어서 도입하기도 합니다.)
- 외부 솔루션(opensource, SaaS) 엔지니어와의 자연스런 협업


지난 1년 동안 경험한 startup 기술을 정리하면 다음과 같습니다.
- 클라우드: aws
- node.js & angular.js
- Play!(Java)
- android
- Redis
- 사용량 통계(BI툴): amplitude, mixpanel
- health check: uptime robot
- 성능테스트, 모니터링: jmeter / newrelic
- 검색엔진: elasticsearch
http://doohee323.blogspot.com/search?q=elasticsearch
- 빅데이터: Apache Tajo ( with Hadoop Library)


특히 그루터의 사장님(권영길)이외 엔지니어 분들(최현식, 장정식, 최주열, 한연수 등) 수차례 방문하고 원격으로 지원한 덕에 나도 타조에 대한 얉은 경험을 할 수 있었습니다. Apache Tajo 사용은 짧았지만 앞으로도 깊이있게 경험하고 싶은 분야가 되었고, 면접을 보면서 타조의 장점에 대해서 많이 어필하곤 했습니다. 참고로 Apache Tajo 활용을 위한 batch app을 만들었는데 그 내용은 다음과 같습니다. 사용자 정보와 사용자의 이벤트 정보를 동적으로 join하기 위해서는 타조의 도움없이 힘들었을 듯한데, 미국에서는 다양한 사용자 분석 솔루션 회사가 존재하지만 (mixpanel, adjust 등) 사용자별 정보를 추출하기 위해서 별도의 빅데이터 분석 환경을 갖춰야 한습니다. 고가의 AWS 장비를 사용해야 하기 때문에 분석을 위한 배치 작업을 할 때만 spot instance를 띄웠다가 바로 terminate하도록 구성했습니다. 현재는 c3.2xlarge spot instance를 10개를 띄워서 cohort 분석 쿼리를 돌리는데 40초 정도밖에 걸리지 않습니다. 배치 프로그램은 아래와 같이 작성했습니다. 1. spot instance 10개 기동 2. 인스턴스 생성 및 tajo worker 동작 여부 확인 3. S3에 있는 source 로그 파일을 기반으로 tajo table 생성(사용자, 이벤트) 4. 결과를 저장할 수 있는 tajo table 생성 (S3) 5. 쿼리 수행후 결과를 tajo table에 저장 6. 저장된 결과(S3)를 다운로드 7. mysql에서 테이블 생성 8. 생성된 테이블에 다운로드된 결과를 load 9. spot instance 10개 종료 위에 기술한 많은 작업을 관리하기 위해서 별도의 툴을 만들었는데 그냥 터미널에 명령어를 입력하듯이 정의해 놓으면 동일하게 실행하도록 했습니다. (아주 급히 돌아가게만 만들었기 때문에 제대로 다시 만들 날이 왔으면 합니다. 그러려면 프로젝트에서 타조를 다시 쓸 수 있는 기회를 만들어 할 듯합니다.) 특별히 big data의 경험없이도 원하는 결과를 얻게 되었다. 물론 Tajo가 없었다면 접근하기 힘든 작업이 였습니다.



Comments

Popular posts from this blog

Install CoreOs on linode without VM

Install CoreOs on linode without VM 1. Add a Linode 2. Create a new Disk   CoreOS 3. Rescue > Reboot into Rescue Mode 4. Remote Access   Launch Lish Console 5. make an install script cat <<'EOF1' > install.sh # add needed package sudo apt-get update sudo apt-get install -y curl wget whois sudo apt-get install -y ca-certificates #sudo apt-get install gawk -y # get discovery url discoveryUrl=`curl https://discovery.etcd.io/new` # write cloud-config.yml cat <<EOF2 > cloud-config.yml #cloud-config users:   - name: core     groups:       - sudo       - docker coreos:   etcd:     name: node01     discovery: $discoveryUrl hostname: node01 EOF2 # get the coreos installation script #wget https://raw.github.com/coreos/init/master/bin/coreos-install wget https://raw.githubusercontent.com/coreos/init/master/bin/coreos-install # run installation chmod 75...

실리콘밸리 구직 체험기_201404(1) - 1. 이민 결정 과정

1. 이민 결정 과정 작년 만우절 거짓말로 "나 미국으로 이민간다"라고 페북에 올린 글이 실현되었습니다. 물론 비자 lottery 결과가 나와야 겠지만 결과가 나오기 전에 그간의 여정을 정리해야 할 사명이 있어 정리를 하고자 합니다. 비자 결과가 나온 후에 올리는 것이 제 개인적으로도 훨씬 좋겠으나 제가 큰 약속을 지켜야 하기에 이렇게 글을 올립니다. 15년 이상 IT 서비스 회사에 있으면서 당연히 개발을 해왔고 지금도 하고 있지만 설계도 하고, pre-sales도 수년간 했고 10억 정도 규모의 몇개의 프로젝트에서 PM도 해봤습니다. 설계, 영업, PM을 하면서도 40이 넘어서도 여전히 개발이 재미있고 앞으로도 계속 하고 싶다는 마음이 켰습니다. 몇년전 LGCNS 차장 승진 발표 때에도 이제는 관리를 해야 하는 것 아니냐는 팀장님들의 질문에 저같은 사람도 조직에서 계속 기여할 수 있지 않겠냐고 고집했었죠. 좀더 지나서 굳어지는 개인적인 비전은 70세가 넘어서도 개발을 하고 싶다는 것. 전 어렸을 떄 부터 비전은 보이는 그림 같은 것이라고 생각해 왔는데, 제 지금의 비전은 호수를 앞마당으로 하는 집에서 밖을 보면서 작가가 글을 쓰듯 코딩을 하고 그 보수를 받으면서 70세가 될 떄까지 일을 하는 것입니다. 이런 제 비전이 실현되기 위해서는 엔지니어가 대접 받는 곳에서의 경험이 제일 중요하다는 판단을 했죠. 그곳이 실리콘밸리 든, 호주 든, 싱가포르 든 상관 없이, 그런데 그렇게 대접받는 곳에서 일을 하려면 영어로 일을 해야 하고 가능한 한 기술 트랜드를 리드하는 실리콘밸리에서 시작하는 것이 맞다고 생각했습니다. 저는 2014/01/02에 실리콘밸리로 와서 오늘 2014/04/01까지 딱 무비자 3개월 미국에 있고 내일 한국으로 돌아 갑니다. 그간 어떤 준비를 통해서 어떻게 비자 스폰서를 받았는지 다음의 글 순서로 정리하고자 합니다. 실리콘밸리 구직 체험기_201404(1) - 1. 이민 결정 과정 실리콘밸리...

실리콘밸리 구직 체험기3_201704 - 아직도 진행 중...

혼돈의 시간을 보내고 이제야 안정을 찾게 되었습니다. 3주전 팀장이 회사를 나가고 디렉터는 revenue를 갉아 먹던 우리팀을 정리할 절호의 기회를 잡았다는 듯이 팀원들에게 4주의 시간을 줄 테니 다른 곳을 알아보라고 통보했습니다. 그 얘기를 듣고 며칠 안되서 시민권이 있는 다른 팀원들은 호기롭게도(? 아무런 걱정도 없이) 휴가를 내고 자리를 비웠습니다. 저만 남아서 사내 다른 팀으로 transfer할 수 있는지 알아보고 linkedIn에도 구직상태로 변경했습니다. 디렉터도 제 상황을 알기 때문에 영주권 진행에 문제가 덜 발생할 만한 규모 있는 회사를 알아보라는 조언을 했고 그 조언을 따라 규모가 큰 회사를 대상으로 apply했습니다. 이번에는 링크드인으로만 apply를 하고 메일을 보냈는데도 연락이 참 많이 왔습니다. (apply한 회사 중에서 연락이 없던 곳은 facebook, uber 정도를 빼고는 다 통화를 했네요.) 한국에서 왔을 때와 스타트업에서 옮길 때와는 또 다른 반응이였습니다. 아마도 규모 있는 현 회사에서 구직을 해기 때문에 상황이 바뀐 것 같았습니다. 그런데 그렇게 많이 연락을 받았는데도 기술 인터뷰를 통과하지 못한 나를 보면서 속이 타들어갔습니다. 사내 팀에서도 코딩인터뷰를 했었는데 비교적 쉬운 것도 풀지 못하고, 게다가 그 자리가 principal 자리인 지라 저를 인터뷰하는 개발자가 어처구니 없다는 듯이 돌아설 때에는 정말 초라하고 답답한 마음이 밀려 왔습니다. 제게 이번 경험의 특징은 크게 2가지 입니다. 1. on-site coding / assignment on-site coding 또는 assignment 가 많았다는 것인데 준비가 제대로 되지 않은 저는 한 군데도 통과를 하지 못했습니다. linkedIn -> on-line coding citrix -> on-line coding vmware -> on-line coding (quiz) Salesforce -> on-line coding S...