관련 영상: https://www.youtube.com/watch?v=jQNCuD_hxdQ

 

Pinterest Marty Weiner goto; conference 2014의 강연.

 

"web 사이트 어떻게 만들어 왔나?"라는 창업기부터 현재에 이르기까지 단계적으로 테크놀로지 스택이 어떻게 진화했는지

현재의 Pinterest 시스템 아키텍처의 전체 모습.

개별 기술의 선택 이유.

등을 말한 45분짜리 비디오로 goto;conference 사이트에서 슬라이드 PDF 다운로드(첫날의 10:20 ) 할 수 있으니 그쪽을 봐도 좋다

 

"사이트가 다운되면서 어떤 의미로 자연스럽게 배우게 되었다"라고 하는데, "이를 들어주는 여러분이 자신들과 같은 실패를 하지 않기 위해서"라는 것이 Marty가 전해 주고 싶은 포인트.

 

 

테크놀로지를 선택할 때 자문해야 할 것은

1. 자신들의 욕구를 충족하고 있나?

 

2. 그 기술은 성숙해 있는가?

"성숙(피와 땀이 쏠린 볼륨÷복잡함"이다. , 개발에 수많은 시간이 소비된 테크놀로지도 그 진화에 따른 복잡성이 해소해 나가지 않으면 "성숙" 이라고 할 수 없다. MongoDB가 유행하고 있어서 손을 내밀어 많은 사람이 대응했으나(자신들에게 있어서 복잡성이 해소되지 않고, 잘 다룰 수 있지 않아서)우리에게는 실패였다.

 

3. 일반적으로 많이 쓰이고 있는 것? 그 기술 경험자를 고용할 수 있는가?

예를 들어 MySQL의 경험자라면 Palo Alto의 거리에서 큰 소리로 부르면 주위에 굴러다니다.

 

4. 그 테크놀로지의 개발자 커뮤니티는 활발한가?

개발자 커뮤니티에 질문을 던졌을 때 바로 답 글이 달리나?

세벽 2시에 사이트가 다운되어 고립 무관했을 때 구글에서 많은 기사를 찾을 수 있거나 Stackoverflow에서 많이 다루고 있으면 문제 해결에 큰 도움이 된다.

 

5. 장애 내성 and/or 장애 복구를 고려하고 있는가?

 

6. 잘 확장 할 수 있을까? 자신의 서비스가 그 테크놀로지의 최대 사용자가 돼도 불안하지 않는가?

 

7. 디버깅 툴은 충실하고 있는가? 프로파일러는? 백업 소프트웨어는 있는가?

 

8. 비용에 알맞을까?

 

 

만약 시계 바늘을 돌려서 Pinterest를 다시 만들 수 있다면 ?

1. 첫날부터 했어야 할 것은

로그를 모은다. 모든 요청, 이벤트, 유저 등록 등.

기본적인 분석 도구나 nagios에서 경고 등.

장애로부터의 데이터 복구를 고려하고 만든다.

 

2. 더 시기를 앞당겨야 했던 것은

MySQL의 샤딩. 슬레이브에서 읽기에 의존하게 된 시점에서 장래 장애의 시한 폭탄 카운트다운이 시작되고 있다고 생각해야 한다.

오퍼레이션 엔지니어의 채용 시기.

Chef / Puppet

빌드에 Jenkins를 이용한 유닛 테스트

A/B시험. 단계적인 release나 금방 롤백 할 수 있는 구조.

 

 

출처: http://wazanova.jp/items/1597

 

저작자 표시
신고
by 흥배 2014.10.27 10:26
| 1 |