| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- AWS
- DevOps
- docker
- 경로 계획 알고리즘
- amazon ecs
- 청첩장 모임
- 커머스
- 14일 공부
- AWS 비용 절감
- PostgreSQL
- Go-lang
- 구조 패턴
- 티스토리챌린지
- 디자인 패턴
- terraform
- MAPF
- 논문 정리
- 생성 패턴
- 지표
- 신혼 여행
- 회고
- study
- leetcode
- 실용주의 프로그래머
- Playwright
- Til
- github
- ssh
- 오블완
- Rust
- Today
- Total
밤 늦게까지 여는 카페
[Amazon ECS] Fargate 플랫폼 업데이트로 인한 Amazon ECS 작업 자동 배포 - 인프라 관리는 제대로 해야 합니다... ㅜ 본문
[Amazon ECS] Fargate 플랫폼 업데이트로 인한 Amazon ECS 작업 자동 배포 - 인프라 관리는 제대로 해야 합니다... ㅜ
Jㅐ둥이 2024. 6. 29. 09:31안녕하세요. 무더운 날씨가 계속되는 와중에 주말마다 비가 와서 어찌어찌 버티고 있는 것 같습니다.
벌써부터 밤에도 덥고 벌레도 많고 여간 힘든게 아니네요 ㅜ
이번에는 Amazon ECS를 사용하면서 겪었던 원인 모를 태스크 자동 배포에 대해 기록하려고 합니다.
되짚어보면 오래 전부터 겪었던 문제였는데 이번에 운 좋게 원인을 파악하게 되어서 뜻깊었습니다.
0. ECS 작업에서 실행되고 있는 long running task
새로운 버전의 서버를 배포할 때, 현재 실행되고 있는 long running 태스크가 무사히 완료되고 나서야 구버전의 서버가 종료될 수 있도록 여러 조치를 취했습니다.
그러나 제가 겪었던 것처럼 ECS의 작업이 스스로 자동 업데이트 되어 버리는 경우에는 준비한 무중단배포 시퀀스가 동작하지 않습니다.
- 에러가 발생해서 태스크가 종료된 것도 아니었고,
- 개발자가 실수로 서비스를 업데이트 한 것도 아니었습니다.
- 그냥 갑자기 태스크가 새롭게 실행되고 구버전의 태스크가 종료되었습니다.

1. 원인 식별의 어려움
ECS를 사용하면서 느꼈던 큰 불편함 중 하나는 태스크가 종료되고 일정 시간이 지나면 태스크의 종료 원인을 다시 볼 수 없다는 것입니다.

혹시 종료된 ECS 태스크의 정보를 시간이 지난 후에도 확인할 수 있는 방법이 있을까요?
있다면 정말 좋을 것 같네요... ㅜㅠ
만약 문제가 생겨서 태스크가 종료되었는데 그 당시에 종료 코드 같은 정보를 확인하지 못했다면 원인 파악에 어려움이 생기는 것이죠...
2년 전에 문제를 겪었을 때에도 몇 시간이 지난 후에 태스크가 종료되었던 것을 인지했고 원인을 찾지 못했습니다.
하지만 발생한 문제에 대해서는 어떻게든 조치를 취해야 했기 때문에 update-task-protection 기능을 이용해서 태스크가 종료되지 않는 미봉책을 시행했습니다.
- 시간이 흐르고 결국 이 조치 때문에 추가적인 문제가 발생하게 되었습니다.
2. 우연의 일치
그런데 정말 다행히도 이번에는 문제가 발생했을 당시에 작업을 확인할 수 있었고, 다음 문구를 확인할 수 있었습니다!
- ECS is performing maintenance on the underlying infrastructure hosting the task
검색해보니 Amazon ECS에서 AWS Fargate 작업 유지 관리 FAQ 페이지를 찾을 수 있었고, 이 때부터 문제의 원인과 해결 방법을 빠르게 찾을 수 있었습니다.
원인
- 일주일 전에 AWS Fargate 플랫폼이 업데이트 됨
- AWS에서 일주일 후에 점진적으로 구버전의 Fargate 플랫폼에서 실행되고 있는 태스크들을 업데이트 할 것이라고 알림을 줌
- AWS Health Dashboard를 모르고 있었고, AWS 계정과 연동된 메일이 비정기적으로 관리되었기 때문에 이를 인지하지 못함 ㅜ
해결 방법
- 일단 ECS 태스크가 자동으로 업데이트 되는 것을 막음
- AWS 계정의 Fargate 작업 사용 중지 대기 시간을 fargateTaskRetirementWaitPeriod 값을 14일로 증가시킴
- update-task-protection 기능을 이용해서 태스크가 종료되는 것을 막음
- 서비스 정기 배포 시간에 ECS 태스크들을 전부 새롭게 배포함
3. 가장 중요한 것은 정확한 관리
오래 전 부터 겪었던 문제를 해결하여 기뻤지만 동시에 여전히 AWS의 사용에는 미숙하다는 것을 통감했습니다.
AWS 인프라를 체계적이고 안정적으로 관리해야 하는데 우선 순위에서 밀리다보니 이렇게 되네요... 흑흑
그래도 하나씩 하나씩!
이제부터는 AWS Health Dashboard를 주기적으로 살펴보겠습니다
🎁다른 Amazon ECS 포스팅들 🎁