배포 방식도 간단히 deployment/release로 표현되기도 하지만.. 사실 많은 전략이 있다.



보통 웹 서비스에서 많이 사용되는 방식을 소개하면.. 다음과 같다. 




1) 롤링 업데이트 (rolling update), 또는 Ramped 라고도 한다.


일반적인 배포를 의미하는데, 


단순하게 한 대씩 재시작한다. 만약 코드 변경에 따른 side effect가 발생할 수 있다. 


하지만 롤백이 가능하다는 점, 관리가 편하다는 점에서 많이 사용되었다.


한 대만 배포해서 살펴볼 수도 있다.





2) 블루-그린(Blue-Green)


https://martinfowler.com/bliki/BlueGreenDeployment.html


예전 배포물을 블루(blue), 신규 배포물을 그린(green)이라고 해서 붙여진 이름이다. 


새로운 배포물을 배포하고 모든 연결을 새로운 배포물만 보게 한다. 코드 변경에 따른 side effect가 없다.


그러자 장애가 발생하면 크게 영향을 준다.




2) 카나리 (Canary)


1대 또는 특정 user에게만 미리 배포했다가 잘되면 전체 배포하는 방식이다.






수정한 코드가 워낙 많이 바뀌어서 좀 불안할 때 사용하는 방식이다. 


단순히 1대만 배포하는 경우도 있고. zookeeper/storage를 이용해 특정 user에게만 배포하는 형태를 가질 수 있다. 




3) A/B 테스트


카나리 배포와 비슷하지만 A/B 테스팅만을 위한 것이다. 






그림 출처 : https://martinfowler.com/


참조 

네이버에서의 SRE 경험.

https://martinfowler.com/

http://container-solutions.com/kubernetes-deployment-strategies/



Posted by '김용환'
,


단순 cpu 부하 올리기(부제 모니터링 확인)


metric을 제대로 가져오는지, 제대로 metric threshold에 따라 메시지가 오는 지 확인할 때 dd 커맨드를 사용하면 좋다. dd는 이런 용도는 아니지만, 부하 생성기로도 쓰기도 한다.



$ dd if=/dev/urandom | gzip --best >> /dev/null &

(top으로 자원 사용량 확인)


$ kill %1



$ dd if=/dev/urandom | gzip --best >> /dev/null &

$ dd if=/dev/urandom | gzip --best >> /dev/null &

$ dd if=/dev/urandom | gzip --best >> /dev/null &


$ kill %1

$ kill %2

$ kill %3



Posted by '김용환'
,