배포
TRANSCRIPT
장고 스터디 쉬어가는 타임
배포에 대해서 알아 봅시다
먹고살기 힘드네요• 먹고사니즘으로 발표의 질이 저하되었습니다 .• 미식가 분들은 유의하세요
배포가 무엇일까요 ?
• 사전적 정의
신문이나 책자 따위의 물품을 널리 나누어줌
배포가 무엇일까요 ?
• 미쿡사람들의 생각
the distribution of forces in preparation for battle or work
배포가 무엇일까요 ?
• 우리 동네의 생각
Software deployment is all of the activities that make a software system available for use.
소프트웨어 시스템이 사용가능 하도록 만드는 모든 활동들 .
릴리즈와 배포• 릴리즈
웹으로 말하자면 내부 스테이징에서 테스트가 완료된 상태
• 배포준비된 릴리즈를 프로덕션에 올려서 사용자가 쓸수 있게 하는것
배포의 안좋은 사례• 소스 형상관리 툴을 사용하지 않음• 그래서 작업을 그냥 서버에서 해버림• 그런데 그 서버가 프로덕션• 나의 수정이 곧 배포• 릴리즈가 없음
배포의 안좋은 사례• 소스 형상관리 툴을 여전히 사용안함• 내 로컬 머신에서 테스트함• 작업 완료된걸 서버에 올림• 근데 그 서버가 프로덕션• 여전히 릴리즈는 없는거임• 너무 예제가 극단적인가요
배포의 안좋은 사례• 형상관리툴 사용함• 개발 및 테스트는 내 로컬 머신에서• 스테이징에 배포• 프로덕션에 배포
• 무엇이 문제일까요 ?
왜 릴리즈가 있어야 하는가• 완료지점이 있어야함 . 일종의 목표 .• 문제가 발생한 시점을 확실하게 알수 있음• 롤백이 쉬워짐• 각 문제를 격리 시킬수 있음
손 배포의 문제• 어쨋든 사람손이 끼면 문제는 발생함• 사람은 실수를 하기마련• 하지만 배포는 자주 하게됨• 기능이 많아질수록 배포도 복잡해짐• 단순작업은 놓치기 쉬움 (sanity check)• 실수는 점점 잦아짐 .• 결론은 자동 배포 .
자동 배포의 장점• 좋음…• 그냥 좋음…• 무조건 좋음…
• 배포가 더이상 노동이 아닌 단순 작업화됨 .• 노동은 개발에만 쏟아도 부족함 .• 자동화 할수 있는건 역시 모두 자동화해야함
쉽고편한 자동배포툴• FABRIC 을 쓰는겁니다 .• 묻지도 따지지도 말고 쓰는겁니다 .• SSH 를 통해 여러분이 하는 모든작업을 자동화
시키는 겁니다 .
FABRIC 의 자주 쓰는 기능• Run : 원격 서버에서 명령을 실행함• Env : ssh 유저명 , 원격 호스트등의 값설정• Local : 원격이 아닌 로컬에서 명령을 실행• Cd : 원격에서 작업 디렉토리 변경시 사용• Task : 데코레이팅한 함수만 명령어로 사용
FABRIC 의 고급 기능• Parallel : 데코레이팅된 함수를 병렬로 실행
관리하는 서버가 많은경우 유용함• Context_manager: with 구문과 같이 쓸수 있는
명령어를 다수 제공run 명령어는 stateless 하게 수행되기 때문
LET’S FABRIC
• 배포시에 하는 작업을 써내려갑니다 .• 써놓은 작업 목록을 패브릭으로 하나씩
구현해봅니다 .
무중단 배포• 옛날에 이런거 많이 봤죠 ?
배포의 어려움• 언제나 위험성을 내포하고 있음• 적절한 시간선택• 롤백의 가능성• 서비스 가용성 저하로 인한 손해
무중단 배포는 가능한가• 돈 많으면 별로 고민할 필요 없음 .• 전가의 보도 L4 스위치• ㅈㄹ 짱 비쌈 .
싸게싸게 쉽게쉽게• 쉽게쉽게
graceful reload• 싸게싸게
Nginx reverse proxy
graceful
• 우아하게…• 만들어진 커넥션은 일단 다 처리를 해줌 .• 중단없이 설정 변경
Nginx reverse proxy
• 가난한 자의 L4 스위치• 파랑 초록 배포
http://martinfowler.com/bliki/BlueGreenDeployment.html
• 참쉽죠 ?
쉬운줄 알았는데…• 공유 자원의 문제 .• DB 를 쪼갤것인가 .• 메시지 큐는 ..• 캐쉬…• 세션 ..• Key value 스토어… 쓸땐 편했는데 ..
무결성 검사• Sanity check.• 어려운건 아니나 꼭 해야하는 작업• 무엇을 검사행 무결성을 확인할수 있나• Package• Setting
잠깐 한번 해봅시다• 쉬우니까… 지금 할수 있을꺼야…
배포란…• 별거아님• 근데 별거아닌게 아님• 맺고 끊어주는것 .• 서버에서 작업하지 마세요• 진짜• 눈물이 납니다 ㅠㅠ
고맙고맙 감사감사