이 시리즈는 AWS EKS & FastAPI 환경에서 로그를 적용하는 과정을 다루고 있습니다. 전체 시리즈는 다음과 같습니다.
- FastAPI log (1) - AWS EKS Fargate 환경에서 log 를 외부시스템에 보내기
- FastAPI log (2) -AWS EKS Fargate, 왜 Fluent Bit 인가?
이전글 "AWS EKS Fargate 환경에서 log 를 외부시스템에 보내기" 에서 Fargate 내부에 Fluent Bit 에이전트가 기본적으로 설치되어 있으며, AWS가 제공하는 설정 방식에 따라 CloudWatch 등으로 로그를 전송할 수 있음을 설명했다.
그러나 클라우드 환경에서 관측 데이터(telemetry data)를 수집하여 Log Storage로 보낼 수 있는 다양한 옵션이 존재하는데, 왜 AWS는 Fluent Bit을 선택하여 Fargate에 포함시켰을까?
1. 범용 로그 수집기 비교
일반적으로 사용되는 로그 수집기들의 성능을 비교한 자료(2021년 벤치마크)를 요약하면 다음과 같다.
- Fluent Bit: 적은 CPU 자원으로도 높은 효율을 보이며, 높은 부하에서도 성능 저하가 크지 않음. 단, 대용량 로그 처리 시 메모리 사용량이 증가함.
- Fluentd: 대량의 로그를 안정적으로 처리하지만, CPU와 메모리 사용량이 상대적으로 높음.
- Vector: 가장 뛰어난 로그 처리 성능을 보였지만, CPU 사용량이 Fluent Bit보다 2~3배 많음.
Fluentd는 Fluent Bit 및 Vector와 비교했을 때 특별한 장점이 없기 때문에 고려 대상에서 제외할 수 있다. 결국 Fluent Bit과 Vector 중 하나를 선택해야 하는데, 메모리를 더 많이 활용할 경우 Fluent Bit을, CPU를 더 많이 활용할 경우 Vector를 선택하는 것이 합리적이다.
또한, LogStash와 Promtail은 AWS와의 통합이 부족하여 비교군에서 제외되었으며, Rsyslog는 시스템 로그 수집에 초점이 맞춰져 있어 범용성이 떨어지는 것으로 판단된다.
2. Fargate에서 CPU와 메모리의 특징
앞서 메모리를 더 많이 활용할 경우 Fluent Bit을, CPU를 더 많이 활용할 경우 Vector를 선택하는 것이 적절하다는 가설을 세웠다. 이를 검증하기 위해 AWS EKS Fargate의 리소스 할당 방식을 살펴보자.
Fargate의 리소스 할당 방식
AWS Fargate는 EC2 기반이 아닌 서버리스 컨테이너 환경으로, 인스턴스를 직접 관리하지 않는다. 대신, 컨테이너별로 고정된 CPU와 메모리를 할당하는 방식이 적용된다.
CPU (vCPU)
- Fargate에서는 컨테이너에 할당할 수 있는 vCPU를 정해진 옵션에서 선택해야 함.
- CPU는 Burstable 방식이 아니며, 설정된 값까지만 사용 가능.
- 과부하 시 추가적인 CPU 자원이 자동으로 할당되지 않음.
메모리 (RAM)
- 컨테이너에 고정된 메모리 값을 할당.
- 메모리가 초과되면 OOM(Out of Memory) Kill 발생 → 프로세스 강제 종료.
- 하지만 CPU와 다르게 사용 가능한 메모리를 미리 충분히 할당할 수 있음.
결론
할당 가능한 vCPU | 할당 가능한 메모리 |
0.25 vCPU | 0.5GB ~ 2GB |
0.5 vCPU | 1GB ~ 4GB |
1 vCPU | 2GB ~ 8GB |
2 vCPU | 4GB ~ 16GB |
4 vCPU | 8GB ~ 30GB |
- Fargate는 CPU 사용량을 필요 이상으로 증가시키는 것이 불리하다. (Burstable X)
- 메모리는 미리 할당해놓으면 활용 가능, 하지만 초과하면 프로세스가 죽는다.
- 즉, CPU를 많이 쓰는 Vector는 제약을 받을 가능성이 크고, Fluent Bit처럼 메모리를 활용하는 방식이 유리할 수 있다.
따라서 AWS가 Fargate 환경에서 Fluent Bit을 기본 로깅 솔루션으로 선택한 이유는 CPU 사용량을 최소화하면서도 안정적으로 로그를 수집할 수 있기 때문이다.
참고자료
- logs hipper 비교: The Top 7 Log Shippers and How to Choose One
- log collector 벤치마크: Who is the winner — Comparing Vector, Fluent Bit, Fluentd performance
'탐구 생활 > FastAPI Log' 카테고리의 다른 글
FastAPI log (4) - 개선하기 (0) | 2025.03.02 |
---|---|
FastAPI log (3) - 설계, 구현 (0) | 2025.01.30 |
FastAPI log (1) - AWS EKS Fargate 환경에서 log 를 외부시스템에 보내기 (0) | 2025.01.30 |