하루에 10번 배포하기 - flickr

78
하하하 10 하 하하하하 Flickr 하 하하하하 하하하하 하하 하하하 John Allspaw & Paul Hammond Velocity 2009

Upload: seongsik-kim

Post on 12-Jun-2015

1.147 views

Category:

Technology


5 download

DESCRIPTION

flickr의 개발자와 운영자의 협력이야기

TRANSCRIPT

Page 1: 하루에 10번 배포하기 - flickr

하루에 10 번 배포하기Flickr 의 개발자과 운영자의 협력 이야기

John Allspaw & Paul HammondVelocity 2009

Page 2: 하루에 10번 배포하기 - flickr

30 억장의 사진들 초당 40000 장의 사진

Page 3: 하루에 10번 배포하기 - flickr

개발자 versus 운영자

Page 4: 하루에 10번 배포하기 - flickr

“ 장비가 잘못된 게 아냐 ,당신 코드가 이상 한거라구 !!”

Page 5: 하루에 10번 배포하기 - flickr

“ 코드가 잘못된게 아니고 , 장비가 이상한거야 !”

Page 6: 하루에 10번 배포하기 - flickr

스위치나 나사를 조이고 있다쉽게 흥분한다 .장애가 발생하면 막 소리지른다

약간 좀 괴상하다상사 가까이 앉아있다

너무 복잡하게 생각한다

Page 7: 하루에 10번 배포하기 - flickr
Page 8: 하루에 10번 배포하기 - flickr

맨날 “안돼 ~~~” 만 연발하고신기술은 우리 사이트를 망쳐버릴 것이라고 무서워하며

뭔 일만 터지면 남 탓만 하는…

Page 9: 하루에 10번 배포하기 - flickr

운영자의 고정관념

왜냐면 사이트는 갑자기 예고 없이 죽으니까…

왜냐면 누구도 운영자에게암것도 얘기 안해주니까…

왜냐면 걔네들은 맨날 안돼다고만 하니까…

Page 10: 하루에 10번 배포하기 - flickr

전통적인 생각들

개발자의 역할은 새로운 기능들을 추가하는 것이다 .

운영자의 역할은 사이트를 안정적이고 빠르게 유지시키는 것이다 .

Page 11: 하루에 10번 배포하기 - flickr

운영자의 역할은 사이트를 안정적이고 빠르게 유지시키는 것이 아니다

Page 12: 하루에 10번 배포하기 - flickr

운영자의 역할은 사업이 잘 돌아가게 하는 것이다( 이것은 개발자의 역할이기도 하다 )

Page 13: 하루에 10번 배포하기 - flickr

사업은 언제나 변화를 요구한다

Page 14: 하루에 10번 배포하기 - flickr

그러나 변화가 이 모든 일들의 원흉은 아니다

Page 15: 하루에 10번 배포하기 - flickr

안정성을 위해서 변화를 거부하고또는

필요할 때마다 계속 변화를 요구하는 것 ?

Page 16: 하루에 10번 배포하기 - flickr

여러 툴과 문화를 바꿔서 변화의 무서움을 이겨내야 한다

Page 17: 하루에 10번 배포하기 - flickr
Page 18: 하루에 10번 배포하기 - flickr

운영자처럼 생각하는 개발자개발자 처럼 생각하는 운영자

Page 19: 하루에 10번 배포하기 - flickr

“ 하지만 그건 내게 달렸어 !”

Page 20: 하루에 10번 배포하기 - flickr

여러분은 항상 더 다른 사람처럼 생각할 수 있어요 !

Page 21: 하루에 10번 배포하기 - flickr

Tools

Page 22: 하루에 10번 배포하기 - flickr

1. Automated infrastructures만약에 오직 한가지 여러분이 할 수 있는 것을 꼽자면…

Page 23: 하루에 10번 배포하기 - flickr

1. Automated infrastructures만약에 오직 한가지 여러분이 할 수 있는 것을 꼽자면…

Chef CFengine

BCfg2 FAI

System Imager

Puppet Cobbler

Page 24: 하루에 10번 배포하기 - flickr

Role &설정 관리

OS 이미지화

Page 25: 하루에 10번 배포하기 - flickr

2. Shared version control

Page 26: 하루에 10번 배포하기 - flickr

모든 사람들이 어디를 봐야 하는 지 안다 .

Page 27: 하루에 10번 배포하기 - flickr

3. One step build

Page 28: 하루에 10번 배포하기 - flickr
Page 29: 하루에 10번 배포하기 - flickr

3. One step build

and deploy

Page 30: 하루에 10번 배포하기 - flickr
Page 31: 하루에 10번 배포하기 - flickr
Page 32: 하루에 10번 배포하기 - flickr

누가 ? 언제 ? 무엇을 ?

Page 33: 하루에 10번 배포하기 - flickr
Page 34: 하루에 10번 배포하기 - flickr

작고 여러 번의 업데이트

Page 35: 하루에 10번 배포하기 - flickr

4. Feature flag( 일명 코드 브랜칭 )

Page 36: 하루에 10번 배포하기 - flickr
Page 37: 하루에 10번 배포하기 - flickr
Page 38: 하루에 10번 배포하기 - flickr

항상 trunk 에 저장

Page 39: 하루에 10번 배포하기 - flickr

모든 사람들이 어디를 봐야 하는 지 안다 .

Page 40: 하루에 10번 배포하기 - flickr
Page 41: 하루에 10번 배포하기 - flickr

beta 버전은 멤버들만

Page 42: 하루에 10번 배포하기 - flickr
Page 43: 하루에 10번 배포하기 - flickr

Dark launches(UI 변경이 없고 , perfomance 향상이 목적인 업데이트를 특정 사용자 집단에게만 노출해서 테스트 )

Page 44: 하루에 10번 배포하기 - flickr
Page 45: 하루에 10번 배포하기 - flickr

5. Shared metrics

Page 46: 하루에 10번 배포하기 - flickr
Page 47: 하루에 10번 배포하기 - flickr
Page 48: 하루에 10번 배포하기 - flickr
Page 49: 하루에 10번 배포하기 - flickr
Page 50: 하루에 10번 배포하기 - flickr
Page 51: 하루에 10번 배포하기 - flickr

5. IRC and IM robots

Page 52: 하루에 10번 배포하기 - flickr

개발자 , 운영자 로봇이서로 대화하는듯한 로그

Page 53: 하루에 10번 배포하기 - flickr

Culture

Page 54: 하루에 10번 배포하기 - flickr

1. Respect만약에 오직 한가지 여러분이 할 수 있는 것을 꼽자면…

Page 55: 하루에 10번 배포하기 - flickr

고정관념을 버려요( 모든 개발자가 게으른 건 아닙니다 )

Page 56: 하루에 10번 배포하기 - flickr

다른 사람들의 전문성과 , 의견 , 책임을 인정해요 .

Page 57: 하루에 10번 배포하기 - flickr

그냥 “노”라고 대답하지 마세요

Page 58: 하루에 10번 배포하기 - flickr

감추지 마세요

Page 59: 하루에 10번 배포하기 - flickr

개발자 : 운영자에게 당신의 코드가 어떤 영향을 줄지 말해주고

• 어떤 메트릭스가 변경되고 , 어떻게 변경되었는지 ?• 리스크는 무엇인지 ?• 무언가 잘 못 돌아가게 되었을때의 징후는 ?• contingencies 는 어떤것 들이 있는지 ?

이것들은 운영자와 이야기 하기 전에 개발자 분들이 정리해야 하는 것입니다 .

Page 60: 하루에 10번 배포하기 - flickr

2. Trust

Page 61: 하루에 10번 배포하기 - flickr

운영자는 새로운 기능에 있어서 개발자를 믿어줘야 하고 ,

개발자는 운영자가 제안하는인프라의 변화를 믿어줘야합니다 .

모든 사람들이 다른 사람들이 우리 사업을 위해서최선을 다하고 있다는 것을 믿어줘야 합니다 .

Page 62: 하루에 10번 배포하기 - flickr

운영서와 escalation 계획을 공유하세요

Page 63: 하루에 10번 배포하기 - flickr

문고리나 레버들을 제공하세요( 조작가능한 포인트들 )

Page 64: 하루에 10번 배포하기 - flickr

운영자에게 : 투명해져요개발자에게 시스템에 들어갈 문을 만들어주세요 .

Page 65: 하루에 10번 배포하기 - flickr

3. 실패에 대한 의연한 태도

Page 66: 하루에 10번 배포하기 - flickr

실패는 있습니다

Page 67: 하루에 10번 배포하기 - flickr

만약 여러분이 모든 실패를 방지할 수 있다고 믿고 있다면 , 여러분은 대응력을 개발하지 못하고 있는 겁니다

Page 68: 하루에 10번 배포하기 - flickr
Page 69: 하루에 10번 배포하기 - flickr

우리에게 필요한건 ,

비상사태 대비훈련

Page 70: 하루에 10번 배포하기 - flickr

4. Avoiding Blame

Page 71: 하루에 10번 배포하기 - flickr

손가락질 금지 !

Page 72: 하루에 10번 배포하기 - flickr

손가락질 프로세스장애닷 !아악 !!

놀라기 ,묵비권 ,

잘못 찾기

비난하기 ,내 살길

찾기

낑낑숨기 ,

자아보호

문제 파악하기

장애수정복구

Page 73: 하루에 10번 배포하기 - flickr

생산적인 프로세스장애닷 !아악 !!

죄책감느끼기

새 삶살아가기

문제 파악하기

장애수정복구

Page 74: 하루에 10번 배포하기 - flickr

개발자들에게 : 당신의 코드가 붕괴되면 ,, 누군가가 당신을 깨울 겁니다

Page 75: 하루에 10번 배포하기 - flickr

운영자들에게 :현재 여러분의 두통과 고통에 대해서 건설적인 피드백을 주세요 .

Page 76: 하루에 10번 배포하기 - flickr

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

Page 77: 하루에 10번 배포하기 - flickr

쉽지 않습니다 . 그냥 서로에게 계속 소리지르면서 지낼 수도 있을 겁니다 .

Page 78: 하루에 10번 배포하기 - flickr

( 감사합니다 )