어쩌다보니 지금까지 미국이나 유럽 등지를 한번도 여행한 적이 없어서, 올해 초 다짐한 것이 미국 여행. 페이퍼를 읽는 것이나 토크를 보는 것도 좋아하기 때문에 무겁지 않은 QCon에도 가보자라고 해서 올해 봄 무렵에 QCon SF 2015를 예약해두었다. 여러가지 위기는 있었지만, 가족여행을 겸해서 QCon SF에 참석하는 계획을 잡았고, 지난 토요일에 San Francisco에 도착했다. 이로서 목표 달성!
오늘부터 3일에 걸쳐 QCon SF 2015의 본 프로그램이 진행되고 이후 이틀동안은 Workshop이 진행된다. 오늘만 하더라도 듣고 싶었던 토크는 꽤 많았지만, 그래도 고심 끝에 골라서 들어간 토크들이니 내 입장에서 듣고 느낀 것들을 적어본다.
Avoiding the Big Crash by Bill Buxton (Slides)
Xerox PARC 출신으로 35년간 컴퓨터 사이언티스트와 디자이너로서 종사하고 현재는 MSR의 Principal Researcher. 스마트 왓치와 같은 초소형 디스플레이를 가진 제품과 벽면을 가득 채울 정도로 커다란 디스플레이를 가진 제품은 완전히 다른 설계를 가져야 함을 설명하면서, 또한 기존의 경험들을 활용하기 위해 common denominator도 찾아야 한다면서 그 예로 Bimanual In-Place Commands를 든다.
모든 새로운 제품은 물론 그 자체로도 가치와 좋은 경험을 제공해야하지만, 전체적인 복잡도를 줄이고 다른 제품들의 가치를 더 높일 수 있어야 한다는 룰을 제시하고, 여러가지 inspiration이 될만한 설명들을 제공해주었다. 단지 돈을 벌기 위한 수단, 다른 제품들과의 경쟁 우위에 있어야만 하는 것으로서만 제품을 생각하는 것이 아니라 우리 주변에 있는 다른 사람들에게 더 좋은 경험을 제공해주기 위한 고민을 우리 스스로가 해야한다는 메시지로 받아들였다. 글로만 이러한 내용을 설명하기는 어렵지만 내가 했던 일들과 하고 있는 일, 그리고 해야하는 일들을 모두 돌아보게 만드는 굉장히 인상 깊은 토크였다.
Scaling Uber by Matt Ranney
5년동안 PHP+MySQL로부터 시작해서 빠르게 개발하기 위해서 technical debt도 많이 쌓였다는 이야기를 하면서 저런 성장하는 회사의 모습은 한국의 비슷한 상황의 회사와도 크게 다르지 않구나라고 느꼈다. 한편으로는 저런 이야기라면 LINE의 이야기도 충분히 재미있는 토크감이 될 수 있다고 생각했다. (물론 영어가 문제…)
Microservices 아키텍쳐로 2개의 서비스로 시작했던 서비스의 개수가 무려 700개 이상으로 늘어났다는 것이 굉장히 놀라웠다. PHP로 시작했지만 지금은 node.js, Python, Go, Java로 언어들이 늘어났다고 한다. 이러한 환경의 어려움을 극복하기 위한 도구로서, 서비스 간의 분산 및 failover를 위해서 ringpop-node, 통신 프로토콜로서 TChannel (+ tcurl, tcap, thriftrw), 서비스 디스커버리로서 Hyperbahn 등을 소개했는데, 다른 오픈소스를 가져다 쓰기 보다는 자체적으로 개발하고 이를 오픈소스화 했다는 점이 조금 신기했다.
How Netflix Directs 1/3rd of Internet Traffic by Haley Tucker & Mohit Vora
No comment.
Beyond the Hype: 4 years of Go in Production by Travis Reeder
Go가 그리 유명하지 않던 시절 Ruby의 CPU 소비를 줄이기 위해서 Go로 이동했다고 한다. Python, Javascript, Java, Ruby등과의 성능 비교 그래프를 보여주었다. 언어를 바꾸고 나서 30대 서버 (…)에서 2대 서버로 바꿀 수 있었다고 한다. 언어의 변경에 따르는 여러가지 문제들에 대해서 논리적인 대답을 가지고 있는 것은 아니라서 좀 아쉬웠다. 토크 자체는 20분 남짓 만에 일찍 끝나고 수많은 질문들이 이어졌는데, 대답하기 쉬운 질문들은 물론 아니었지만 대부분 문제된 적이 없거나 잘 모르겠다는 답변이 돌아와서 ‘4년’의 경험에서 기대한 것보다는 많이 모자랐다. Go언어의 초보라고 할 수 있는 내가 알고 있는 수준에서 크게 다르지 않다라는 느낌.
다만 질문들은 나름대로 Go언어 생태계에서 정답을 내놓을 필요가 있는 것들이라서 나열해본다.
- Dependency management: vendoring, submodule (Golang은 패키지에 version이라는 개념이 없다.)
- Compile time: 의존성이 있는 C 라이브러리들이 문제가 되었지 Go가 문제된 적이 없었음. (충분히 큰 소스의 프로젝트라면?)
- DB들을 위한 라이브러리들의 제공: 아직 불충분.
- Testing: go test로 충분. rspec과 같은 것이 있는가란 질문에 대해 잘 모르겠지만 Go언어의 특성상 그런 것이 존재할 수 있는지는 의문이라고 코멘트.
- IDE: sublime, intelliJ, … (Atom은 왜 언급안해…)
- GC 문제: 지금까지 경험한 적이 없다고. (없는 것 같다고 대답했다가 concurrent GC 언급한 다른 질문자에게 따끔하게 지적받음.)
- Debugging: 처음에 로그를 사용한다고 대답. godebug 등 오픈소스 도구들도 나타나고 있기 때문에 점차 개선되고 있다고 함. gdb등도 가능. (디버깅에 대한 IDE 지원은 절실하긴 한 듯.)
- Monitoring: JMX 등의 퍼실러티가 있느냐란 질문이었는데, 그런 건 없고 자기네들은 statsd을 사용.
- Java 아키텍쳐로부터의 마이그레이션 방법: 마이크로서비스별로.
- GUI: 서버 위주이고 별로 없는 것 같다고 대답. (아닌데…)
- Refactoring: 별로 본질적인 것은 아닌 것 같다고 대답.
- RoR scaffolding: 잘 모르겠다고 대답.
- Onboard engineer를 위해 특별히 하고 있는 것: 특별히 없음. Go가 variable의 type notation 등의 일부를 제외하면 다른 언어와 크게 다르지 않다고 대답.
- 언어 개선 표준 프로세스가 있는지: 오픈소스이니 디스커션이 가능하지 않겠냐는 대답.
- Profiling: pprof. production에 사용하기에는 어렵도 metric을 남기는 쪽이 좋을 듯 하다고 대답.
- interface가 있는지: 있음.
- Shared libary로 빌드할 수 있는지: 잘 모르겠다고 대답.
- Maven 같은 의존성 관리 도구가 있는지: 모르겠다고 대답.
- 사용하고 있는 design pattern이 있는지: 잘 모르겠다고 대답.
Personalization in the Pinterest Homefeed by Dmitry Chechik
Jet lag 때문인지 너무 졸려서 무슨 이야기를 했는지 잘 모르겠음. :(
Rust: unlocking systems programming by Aaron Turon
어느 한 쪽을 희생한 언어들과 달리 Rust는 Control과 Safe라는 특성을 둘다 달성하는 곳을 목표로 하는 언어이고, ownership의 이전 메커니즘에 따른 Memory safety에 대해서 설명함.
Spark: A Coding Joyride by Doug Bateman
Sponsored track인데도 Spark의 명성을 인정하듯 룸이 가득찼다.
Spark의 개요에 대해 설명. Spark, GraphX, MLlib의 코딩을 보여준다고 한 것 같은데, 실제로는 RDD와 필터링 정도만 코드를 보여주었다. 결과적으로는 내가 Spark에 대해서 아는 부분 이상을 얻지는 못한 듯. 스피커가 전문 Trainer라서 그런지 설명을 듣기에는 편했고, Databrics라는 Spark hosting 서비스는 Spark를 시험해보기에 굉장히 편리해보였다. (30일 trial 가능.)
So We Hear You Like Papers by Ines Sombra and Caitie McCaffrey Slides
Caitie McCaffrey는 Distributed system에 대해, Ines Sombra는 Verification 분야에 대해 몇몇 페이퍼들을 소개했다. 둘다 다른 컨퍼런스 등에서도 활약하는 듯 하고, Ines Sombra는 Papers we love meetup의 SF chapter에서 활동하는 듯하다.
둘다 설명하는 속도가 굉장히 빨라서 정확성을 차치하더라도 정말 대단하다고 생각. Exhibiter reception 직후 키노트라 다들 맥주 한두잔 한 후라서 그런지 조금은 덜 진지한 분위기였던 것 같기도 하고… Ines Sombra는 아예 맥주 한병을 들고 마시면서 진행했다. 어쨌든 스마트함을 마음껏 뽐내는 분위기 같아서 재미있었다. 중간중간에 관심을 가져볼만한 페이퍼들도 보였던 것 같아서 나중에 슬라이드를 확인해봐야 할 것 같다.
내일과 모레도 재미있는 토크들은 많은 듯 하니, 게으름 피지 않고 여기에 적어보려고 노력해보겠다. :)
재미있게 읽고 갑니다. ^^ 가족이 함께 가는 컨퍼런스 참 멋있네~!!
6월 SF에 있었던 DockerCon에 갔었는데 시차적응하는데 좀 힘들더라고.. 힘내고..다음 글도 기대!!