devOps
서비스 장애 잘 이해하고 대비하기
글을 작성하기에 앞서약 3주 전에 한빛세미나에서 주최한 서비스 장애 잘 이해하고 대비하기 라는 세미나를 들은적이 있습니다.이번 아티클은 위의 세미나를 요약하고, 그리고 제 생각또한 적당하게 녹여보았습니다.글의 순서는 아래와 같은 순서로 전개할 예정인데, 세미나의 순서와 아예 동일하지만 중간중간에 제 사견도 섞어서 말씀드리도록 하겠습니다.어디까지 장애라고 볼 수 있을까?장애는 어떻게 잘 대응할 수 있을까?장애를 예방할 수는 있을까?장애 대응의 두 가지 사례 소개어디까지 장애라고 볼 수 있을까? (장애의 정의)우선 장애가 무엇인지 정의하기에 앞서서, 장애에는 어떠한 구성요소가 존재하는지부터 알아볼 필요가 있습니다. 장애에는 아래의 두 가지 구성요소가 존재합니다.민감도 (범위)심각도민감도민감도에는 장애를 경험..
Redis OOM 장애
거의 1년만에 아티클을 작성하게 되었는데, 오랜만에 작성하게된 아티클의 주제는 제가 직접 겪어본 Redis OOM으로 인한 장애에 대해서 공유를 해보고자합니다. 해당 아티클의 순서는 아래의 순서로 전개될 예정입니다.Redis OOM이 일어나게 된 배경Redis 아키텍처 돌아보기단기적인 장애 대응 방법최종적인 장애 대응 방법, 그리고 회고글 마무리Redis OOM 장애가 일어나게 된 배경제가 운영하던 백엔드의 API 일부 중에는 Redis를 적극 활용하여 대용량 데이터를 프로세싱하여 클라이언트에게 추천 데이터를 반환해주는 로직이 하나 있었습니다.그리고 API 서버는 ECS 환경에서 운영되어 트래픽이 늘어나거나, 혹은 CPU, MEM 사용량을 관측하여 일정 임계치를 넘어가면 태스크의 개수를 스케일 아웃하도록..
Docker File System (Overlay2)
얼마전 회사에서 트러블슈팅을 진행하면서 docker exec 명령어를 이용해서 container의 bash쉘을 연 다음에, 바로 컨테이너 내부의 파일을 변경한 적이 있었습니다. 그런데 저는 여기서 의아한 부분이 하나 있었습니다. 과연 Docker 컨테이너 내부의 파일을 저렇게 바로 변경해도 되는가? 였습니다. 이에 대해서 공부를 하던 중에, Ubuntu의 docker는 기본적인 파일시스템으로 Overlay2를 채택하고 있었고, 또한 Overlay2 스토리지 시스템의 특징으로 인해서 컨테이너 내부의 파일을 바로 변경한다고 해서, 근간이 되는 image의 레이어가 훼손되지는 않는다는 것을 알게되었습니다. Overlay2 스토리지 시스템에 대해서 공부한 내용들을 이 포스트를 통해서 공유드려볼까 합니다. 1. ..
Kubernetes 워커노드의 OOM에 의한 클러스터 장애
이번 글에서는 Kubernetes 워커노드에 OOM이 발생하여 모든 워커노드가 연쇄적으로 장애를 일으키는 바람에 쿠버네티스 클러스터가 통째로 먹통이된 사건에 대해서 다뤄볼까합니다. 0. 상황 현재 저는 엘리스파크 라는 토이프로젝트를 진행중에 있습니다. 그리고 엘리스파크의 백엔드를 쿠버네티스 환경에서 운영중이며, 동시에 엘리스파크의 백엔드를 빌드시키는 젠킨스 서버를 모두 쿠버네티스 위에서 운영중에 있습니다. 제가 운영중이던 쿠버네티스 환경은 아래와 같습니다. Amazon EKS (Kubernetes v1.22) 각 워커노드는 t3.medium 인스턴스로 운영중에 있었음 (vcpu 2 + 4Gi Memory) 단일 노드그룹에 워커노드는 min size = 2, desired size = 2, max size..