하루에 10번 배포하기 - flickr
DESCRIPTION
flickr의 개발자와 운영자의 협력이야기TRANSCRIPT
하루에 10 번 배포하기Flickr 의 개발자과 운영자의 협력 이야기
John Allspaw & Paul HammondVelocity 2009
30 억장의 사진들 초당 40000 장의 사진
개발자 versus 운영자
“ 장비가 잘못된 게 아냐 ,당신 코드가 이상 한거라구 !!”
“ 코드가 잘못된게 아니고 , 장비가 이상한거야 !”
스위치나 나사를 조이고 있다쉽게 흥분한다 .장애가 발생하면 막 소리지른다
약간 좀 괴상하다상사 가까이 앉아있다
너무 복잡하게 생각한다
맨날 “안돼 ~~~” 만 연발하고신기술은 우리 사이트를 망쳐버릴 것이라고 무서워하며
뭔 일만 터지면 남 탓만 하는…
운영자의 고정관념
왜냐면 사이트는 갑자기 예고 없이 죽으니까…
왜냐면 누구도 운영자에게암것도 얘기 안해주니까…
왜냐면 걔네들은 맨날 안돼다고만 하니까…
전통적인 생각들
개발자의 역할은 새로운 기능들을 추가하는 것이다 .
운영자의 역할은 사이트를 안정적이고 빠르게 유지시키는 것이다 .
운영자의 역할은 사이트를 안정적이고 빠르게 유지시키는 것이 아니다
운영자의 역할은 사업이 잘 돌아가게 하는 것이다( 이것은 개발자의 역할이기도 하다 )
사업은 언제나 변화를 요구한다
그러나 변화가 이 모든 일들의 원흉은 아니다
안정성을 위해서 변화를 거부하고또는
필요할 때마다 계속 변화를 요구하는 것 ?
여러 툴과 문화를 바꿔서 변화의 무서움을 이겨내야 한다
운영자처럼 생각하는 개발자개발자 처럼 생각하는 운영자
“ 하지만 그건 내게 달렸어 !”
여러분은 항상 더 다른 사람처럼 생각할 수 있어요 !
Tools
1. Automated infrastructures만약에 오직 한가지 여러분이 할 수 있는 것을 꼽자면…
1. Automated infrastructures만약에 오직 한가지 여러분이 할 수 있는 것을 꼽자면…
Chef CFengine
BCfg2 FAI
System Imager
Puppet Cobbler
Role &설정 관리
OS 이미지화
2. Shared version control
모든 사람들이 어디를 봐야 하는 지 안다 .
3. One step build
3. One step build
and deploy
누가 ? 언제 ? 무엇을 ?
작고 여러 번의 업데이트
4. Feature flag( 일명 코드 브랜칭 )
항상 trunk 에 저장
모든 사람들이 어디를 봐야 하는 지 안다 .
beta 버전은 멤버들만
Dark launches(UI 변경이 없고 , perfomance 향상이 목적인 업데이트를 특정 사용자 집단에게만 노출해서 테스트 )
5. Shared metrics
5. IRC and IM robots
개발자 , 운영자 로봇이서로 대화하는듯한 로그
Culture
1. Respect만약에 오직 한가지 여러분이 할 수 있는 것을 꼽자면…
고정관념을 버려요( 모든 개발자가 게으른 건 아닙니다 )
다른 사람들의 전문성과 , 의견 , 책임을 인정해요 .
그냥 “노”라고 대답하지 마세요
감추지 마세요
개발자 : 운영자에게 당신의 코드가 어떤 영향을 줄지 말해주고
• 어떤 메트릭스가 변경되고 , 어떻게 변경되었는지 ?• 리스크는 무엇인지 ?• 무언가 잘 못 돌아가게 되었을때의 징후는 ?• contingencies 는 어떤것 들이 있는지 ?
이것들은 운영자와 이야기 하기 전에 개발자 분들이 정리해야 하는 것입니다 .
2. Trust
운영자는 새로운 기능에 있어서 개발자를 믿어줘야 하고 ,
개발자는 운영자가 제안하는인프라의 변화를 믿어줘야합니다 .
모든 사람들이 다른 사람들이 우리 사업을 위해서최선을 다하고 있다는 것을 믿어줘야 합니다 .
운영서와 escalation 계획을 공유하세요
문고리나 레버들을 제공하세요( 조작가능한 포인트들 )
운영자에게 : 투명해져요개발자에게 시스템에 들어갈 문을 만들어주세요 .
3. 실패에 대한 의연한 태도
실패는 있습니다
만약 여러분이 모든 실패를 방지할 수 있다고 믿고 있다면 , 여러분은 대응력을 개발하지 못하고 있는 겁니다
우리에게 필요한건 ,
비상사태 대비훈련
4. Avoiding Blame
손가락질 금지 !
손가락질 프로세스장애닷 !아악 !!
놀라기 ,묵비권 ,
잘못 찾기
비난하기 ,내 살길
찾기
낑낑숨기 ,
자아보호
문제 파악하기
장애수정복구
생산적인 프로세스장애닷 !아악 !!
죄책감느끼기
새 삶살아가기
문제 파악하기
장애수정복구
개발자들에게 : 당신의 코드가 붕괴되면 ,, 누군가가 당신을 깨울 겁니다
운영자들에게 :현재 여러분의 두통과 고통에 대해서 건설적인 피드백을 주세요 .
1. Automated infrastructure2. Shared version control3. One step build and deploy4. feature flags5. shared metrics6. IRC and IM robots
1. Respect2. Trust3. 실패에 대한 의연한 자세4. Avoiding Blame
쉽지 않습니다 . 그냥 서로에게 계속 소리지르면서 지낼 수도 있을 겁니다 .
( 감사합니다 )