2번째 날 어제보다는 약간 일찍 일어나서 호텔 조식도 먹고 출근했다. 오늘은 샌프란시스코에서 일하는 강문식 군과 점심을 먹느라 세션 2개 정도를 건너뛰었다. 나중에 비디오로 보기로…
Building Highly-resilient Systems at Pinterest by Yongsheng Wu
Yongsheng Wu는 Storage & caching team의 lead. 수만개의 AWS instance를 사용하고 있고, 100개 정도의 서비스를 가지고 있다고 한다. 서비스 수십개 관리하기도 어려운데 수백개라니… 마이크로서비스가 업계 대세인 것인가 하는 생각이 들었다. 서비스가 나뉘어져있다보니 사용하는 언어도 Java, Scala, Go, C++로 다양한 것 같다.
토픽에 해당하는 Highly Resilient한 시스템을 위해서 5가지를 내세웠는데 다음과 같다.
- Dynamic service discovery
- Realtime configuration
- Caching
- Persistent storage
- Async processing
Dynamic service discovery에 대해서는 상식적으로 생각할 수 있는 수준인 ZooKeeper의 ZNode들이 서버들을 나타내도록 하고 클라이언트는 상위 노드의 변화를 subscribe하는 형태를 기본으로 하고 있다. 이러한 시스템은 누구나 쉽게 상상할 수 있는 것이지만, 문제는 ZooKeeper에 장애가 발생했을 때 서비스의 가용성이 0가 될 수가 있다는 점인데, Pinterest에서는 Zum이라는 local daemon을 도입해서 ZooKeeper의 로드를 줄이고, 로컬 카피를 애플리케이션에게 제공하는 것으로 이 문제를 해결하고 있다. 단순하면서도 실용적인 해결책이라고 생각한다.
Realtime configuration에 대해서도 역시 Zum을 이용해 로컬 카피를 제공하는 비슷한 접근을 활용하고 있는데, 설정이 ZooKeeper에 있는 것이 아니라 Amazon S3에 두고 ZooKeeper는 단지 versioning과 변경 통지를 위한 용도로만 사용하고 있다.
Caching은 memcached의 consistent hash ring을 관리하기 위해 Facebook의 Mcrouter를 사용하고 있다고 한다. 재미있는 것은 일시적인 실패로 인해 cache inconsistency가 발생하는 문제를 해소하기 위해 Mcrouter의 로그를 Kafka에 보내고 이를 다시 플레이하는 시스템을 가지고 있는 점이었다.
MySQL Shard의 설정 관리도 위에서 설명한 Zum을 이용해 관리되는 것 같다.
Async processing을 위해서는 PinLater라는 서버를 가지고 있는데, 비동기적인 작업을 queue로서 관리하고 일정 회수 만큼 재시도해주는 서버다. Dashboard로 각 작업의 현황을 쉽게 볼 수 있는 점은 편리해 보였다.
발표에서 소개된 것들을 발표 이후에 곧 오픈소스화할 예정이라고 하니, 조금 더 살펴볼 여지는 있을 것 같다. 문제 자체도 LINE이 가지고 있는 문제들과 비슷하고, 해결책도 (엄밀한 해결책이라기보다는) 굉장히 실용적인 스타일이라 공감이 되는 면이 있었다.
Beyond ad-hoc automation: to structured platforms by Bridget Kromhout
수많은 meme들을 이용해서 토크를 이어나갔는데, 나름대로 흥미로운 이야기들을 많이 한 것 같지만, 이건 나중에 슬라이드와 비디오가 나온 후에야 정리를 할 수 있을 듯 하다. 그 중에서도 생각나는 것들을 들자면, 회사나 조직의 환경에 한정되는 ad hoc 도구들을 만드는 것에 대해서 비판적인 논조를 유지한 것 같고, 항상 200 OK를 뱉는 healthcheck를 예를 들며 도구보다는 원리에 집중하라는 이야기, 자동화는 플랫폼이고, 이 플랫폼에서 무엇을 하려는 것인지 constraint를 정의하라는 이야기 등이 생각이 난다. 단순히 몇가지 도구를 추가해서 자동화하는 것이 아니라 전체적인 관점에서의 플랫폼을 만들어나가야 한다는 조언으로 되새기게 된 것 같다.
A Brief History of Chain Replication by Christopher Meiklejohn
Chain Replication은 그동안 공부해보고 싶은 토픽 중의 하나였는데, 대략적으로 어떠한 문제들을 다루는지 조금은 알게 된 것 같다. Chain Replication에 관련된 연구들을 하나하나 요약해서 설명해주었는데, 사실 굉장히 엄밀하게 생각해보지 않으면 안되는 것들이라 짧은 시간 내에 이해하기는 쉽지 않았다.
Datastructures in and on IPFS by Juan Batiz-Benet
IPFS는 구글과 같이 하나의 서비스에 종속된 서비스를 가질 것이 아니라 인터넷이라는 분산된 네트워크를 활용해서 정보들을 안전하게 저장해보자는 동기로부터 출발해, Merkle tree의 아이디어를 차용한 내용 기반의 addressing을 기초로 여러 인터넷 프로토콜, 인터넷 포맷들을 조합해서 파일시스템을 만들어보자는 아이디어 그리고 구현이다. 하나의 연구분야일거라고 생각하고 있었는데, 한 사람의 아이디어로부터 출발한다는 것이 놀라웠다.
내일은 프로그램의 마지막인 3일차. 내일도 흥미로운 발표들이 많으니 기대가 된다. 더불어 1일차 비디오들이 차근차근 업로드되고 있어서 이것들도 소화해보기 시작해야할 것 같다.