Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

하루에 10번 배포하기 - flickr

1,886 views

Published on

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

Published in: Technology
  • Be the first to comment

하루에 10번 배포하기 - flickr

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

×