1년간 그가 스타트업 정글에서 살아남은 방법

스타트업에 온지도 어언 1년이 넘었습니다. 정확히는 1년 하고 27일 되었네요. 이 글을 쓰는 너는 누구냐! 하실거 같아서 간단히 소개를 해보자면..

이 글은 2017년 12월 말에 작성된 글입니다.

스타트업에 온지도 어언 1년이 넘었습니다. 정확히는 1년 하고 27일 되었네요. 이 글을 쓰는 너는 누구냐! 하실거 같아서 간단히 소개를 해보자면..

저는 ZEPL 이라는 스타트업에서 엔지니어로 일 하고 있습니다. 첫 5–6개월은 Apache Zeppelin 이라는 오픈소스에 풀타임으로 참여 했었고, 지금은 데이터 분석을 위한 서비스 www.zepl.com 을 만들고 있습니다. (무료이므로 오셔서 써보시라능!)

스타트업에 처음 조인한 이후로 많은 것들을 바꿨고, 스스로도 변했고 그러면서도 아직도 무언가가 모자라진 않은가 늘 생각하기에 이상한모임 대림절 달력“1년간 그가 스타트업 정글에서 살아남은 방법” 이란 제목으로 기고 하기로 결정했습니다.

제 첫 회사는 2000 명 이상의 규모를 가진 회사였었고 그곳과 지금 근무하는 스타트업을 비교하는게 가장 쓰기 쉬울지도 모르겠지만 의미 있는 내용도 아닌거 같고 하여 그런 내용은 담지 않았습니다.

오히려 제가 풀어내고 싶은 이야기는 나는 여기서 왜 일하고, 무엇을 꿈꾸며 지난 1년동안 어떤것들을 헤쳐 나왔는지에 대한 내용입니다. (제목이 실제 내용보다 거창하게 도발적이었다면 사과를!)

1. 나는 왜 스타트업에 들어왔는가?

제 첫 직장을 그만두면서 많은 생각을 했었습니다. 배운것도, 마음가짐도 얻은게 많았지만 사실 사람 마음이 간사한것이 이유를 세우려면 수도없이 만들어 낼 수 있다는걸 깨달았습니다.

그런데 1년을 새로운 곳에서 지내보니 당연하게도! 그러나 스스로에겐 너무나 놀랍게도. 다른 뜻과 이유가 세워졌습니다.

스스로는 새로운 기술을 더 써보고 싶다고 했으나 기술은 그저 도구임을 명확히 깨달았습니다. 욕심은 시간과 비용을 잡아먹고 팀원을 힘들게 할 뿐이었습니다.

작은 서비스를 인프라부터 서비스 구현까지 다 해보고 싶은 마음이었으나 그것이 전체의 아주 작은 부분임을 알게 되었습니다. 정말 중요한 것은 고객에게 ‘가치를’ 전달하는 일이었습니다.

또한 쓸모없는 문서 작업과 보안 프로세스가 귀찮으며 시간 낭비라고 생각했으나 사실은 더 정확한 표현이 ‘중요한것에 집중 하고싶다’ 임을 알게 되었습니다.

인생은 정말 짧습니다. 나이가 중요한것은 아니지만, 누군가는 20살에 역사를 바꿨고 또 누군가는 30살에 세상을 변화시키기 시작했습니다. 내가 지금 이대로 10년을 살아도 누군가의 삶을 바꿀 수 없을거 같기에 결정을 내렸다는 사실을 2017년 이 1년이 지나서야 이해하게 되었습니다.

2. 지난 1년동안 무슨 문제들을 헤쳐왔는가?

팀이 커져감에 따라 엔지니어의 수가 늘었지만 팀의 퍼포먼스는 그 만큼 늘지 않는 경우도 있었고 과거의 잘못된 결정 때문에 오랜 시간을 허비했지만 결과를 얻지 못할때도 있었습니다. 시간이 갈수록 시스템이 커져가는 속도에 비해 팀의 속도가 떨어져만 가는것처럼 보였습니다.

우리는 단순히 개발뿐만 아니라 지식의 전달, 배포, 문서화 등 모든 측면에 있어서 scalable 한 팀이 되어야만 했습니다. 엔지니어들이 다뤄야 할 모든 대상들이 무한히 팽창하지 못하도록 만들거나 빠르게 늘어나도 리소스를 그만큼 소비하지 않도록 하는 조직적인 해결 방법이 필요했습니다.

기존에는 database 를 직접 migration 하고 있었습니다. DB instance 가 1개인 이상에야 누가 하든 상관 없지만 마이그레이션 방법을 누군가는 알고 있어야 하고 서버 접근 권한을 누군가는 가지고 있어야 했습니다. 느끼셨겠지만 이것은 scalable 하지 않습니다. 만약 10개의 서비스를 가지고 있다면 최소한 2명은 10개의 서버가 무엇인지 알고 작업할 줄 알아야 비상시에 대비할 수 있습니다. 사람이 회사를 나가도 팀과 시스템은 유지되어야 하는데 기존 방식은 이와는 정 반대였습니다.

대안으로 liquibaseflyway 를 찾아 보았고, liquibase 가 xml 로 작성해야 하는 대신 rollback 을 지원한다는 것을 알았지만 plain SQL 을 사용하는 flyway 를 택했습니다. 학습비용이 적어야만 누가 와도 해낼 수 있고 그 결과로 팀이 쉽게 스케일 할 수 있기 때문입니다.

또한 REST 로 통신하는 일부 backend service 간 프로토콜을 gRPC 로 바꾸기 시작했습니다. 아시겠지만 모두가 동의하는 REST design 을 하기는 정말 어렵습니다. 가까스로 합의를 거쳐 팀 자체적으로 규칙을 만든다 해도 시스템적으로 검사하지 않는 한, 시간이 지남에 따라 일관성이 점점 깨져갑니다. 한 눈에 봐서 이해할 수 없는 것들은 결국 비용으로 남습니다. 대안으로 swagger codegen 을 이용해서 client / server 코드를 생성할수도 있겠지만 REST call 은 가볍지도, 비동기적이지 않는데다가 디자인 이슈가 여전히 남아있습니다.

마지막으로 수동에 가깝던 배포를 1 click deploy 로 변경했습니다. 팀은 천천히 걸음마부터 시작해 kubernetes 로 환경을 옮겨왔습니다. 이전에는 몇명만 알던 배포 방법을 지금은 자신이 merge 한 커밋 해시만 알면 수십초 내에 배포하고, 테스트 해볼 수 있습니다. 팀은 이제 하루에도 수십번씩 배포하기 시작했습니다.

게다가 이제 모든 것들은 versioning 되므로 server 가 DB schema 와 webapp 대해 forward compatible 함을 확인만 한다면 (e.g feature flagging, …) 한국에 있는 backend 엔지니어가 휴가중이라 하더라도 미국에 있는 front 엔지니어가 복잡한 방법 없이 쉽게 롤백할 수 있게 되었습니다.

우리가 기술을 바꿨던 모든 결정에는 동일한 이유가 깔려 있었습니다. 어떨때는 새로 나오는 멋진 기술을 당장 쓰고도 싶었지만 그것을 매번 쫓아갈 수 없다는 사실을 깨달았습니다. 축구에서 시즌내내 442 등의 포메이션을 유지하는것처럼 엔지니어링도 동일하게, 고객에게 지속적으로 value 를 전달하기 위해서 큰 틀에서는 기술 스택을 유지해야만 팀의 퍼포먼스가 유지된다는 사실을 알게 되었습니다.

이런 변화를 만드는 과정에서 한 가지 얻은 교훈은 나는 내 자신을 스케일 할 수 없다는 사실입니다. 기껏 일해봐야 하루 16시간이고 어느 인간도 16시간씩 365일 계속 일할 수 없습니다. 따라서 나는 1명을 설득하고, 2명을 또 다시 설득하는 대신 시스템을 만들고 다른사람들이 그 시스템을 따르거나 싸우도록 만듭니다. 불합리하다면 시스템은 누군가에 의해 또 개선되겠지요.

3. 이제는 어떤 꿈을 꾸는가?

더 많은 사람들이 데이터로 대화하길 원합니다.

블로그에서 플러그인을 눌러 원하는 graph 를 검색하고 삽입할 수 있길 바랍니다. 이미지도 검색해서 넣을 수 있는데, 테이블이나 그래프가 뭐 어려울까요.

블로그 구독자는 버튼을 눌러 pie chart, bar chart 등 원하는 차트를 보며 gist 처럼 자신의 블로그에서 import 할 수 있으면 좋겠습니다. 내가 누군가에게 이 링크를 전달한다면 twitter, facebook, slack 에서 썸네일로 그래프를 보여준다면 더 멋있을테지요.

만약 그 graph 제작자가 2017년 데이터를 2018년도 데이터로 업데이트 하는 순간 이 데이터를 삽입한 전 세계 모든 블로그의 그래프도 새로고침만으로 방금 업데이트된 2018년도 그래프를 보여줄 수 있다면 정말 멋질거라 기대하고 있습니다. 게다가 이것들은 블로그나 카페뿐만 아니라 네이버 뉴스에서보는 모든 신문 기사에서도 가능할겁니다. 같은 글인걸요. 이제 모든 컨텐츠는 이미지나 영상뿐만 아니라 기본적으로 데이터와 그래프를 아주 쉽게 담을 수 있게 될겁니다.

사람들은 데이터를 더 많이 공유하고 어떤사람들은 reference 같은 public data 를 만들려고 할지 모릅니다. 대학생들은 이렇게 만들어진 2018 global demographic trends 데이터를 리포트로 인쇄하여 제출하는 대신 Apache Zeppelin 이나 Jupyter 로 온라인에 게재할 수 있을테구요. 또 다른 학생은 게임하느라 과제할 시간이 부족했는지 이 노트북을 github 같은곳에서 찾아내 자신의 레포지토리로 복사한 뒤에 버튼을 이것저것 눌러보며 그 자리에서 바로 분석해볼 수 있을테지요.

이 모든 재밌는 일들이 제가 꿈꾸고, ZEPL 이 해내고자 하는 일입니다. (관심 있으신 분들은 여기!)

아직은 먼 곳이 잘 보이지 않지만 매주 손에 닿지도 않을 높은 목표를 잡고 오늘이 마지막인 듯이 살아간다면 2018년은 좀 다르지 않을까. 기대해보고 있습니다.

2017년 회고 끄읏 🙂 읽어주셔서 감사합니다.

Refs

Featured Image

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.