<aside> 💡 일단 단시간에 빠르게 코드를 작성하다 보니, 상당히 코드가 난잡해 있다. 또한 실행 가능성에 초점을 맞추어 메모리 사용량을 고려하지 않고 상당히 큰 xlarge를 사용하고 있기 때문에 이 부분에서 클라우드 사용 비용이 상당 부문 지출 되었기 때문에 이 문제를 해결하고자 리팩토링을 하기로 결심하였다.
</aside>
docker stats —all을 확인한 모습
EC2에서 실행되는 airflow 인스턴스의 모습을 보면 webserver 하나가 5.35GB를 차지하고 있는 모습이다. webserver와 scheduler만 합쳐도 족히 7~8GB가 넘는 상황이기 때문에 EC2의 사이즈를 xlarge를 사용하고 있는 상황이다.
→ airflow.cfg
의 설정을 변경하여 웹서버의 메모리 사용량을 줄이고 더 작은 EC2를 통해 비용절감을 고려해 보자
airflow가 dag를 리로딩 하는 것을 방지하기 위한 옵션 세팅이다. 기본값은 0을 세팅이 되어있다.
→ min_file_process_interval = 60
별로 줄어들어 보이지 않는다...
모니터링에서 확인할 수 있는 소스 사용량은 줄어든 모습이지만 기존의 옵션만큼 로딩 속도가 빠르지 않다.
스케줄러가 새로운 태스크를 주기적으로 얼마나 자주 티리깅을 할 것인지에 대한 옵션이다.
→ scheduler_heartbeat_sec = 60
스케줄러의 메모리와 CPU 사용량이 매우 감소한 것을 볼 수 있다.
<aside> 💡 기본적인 테이블의 구조가 많이 바뀌었기 때문에, 이에 맞는 api의 수정이 필요하다고 판단하였다. 개발에서 테스트를 거치고 적용하도록 하자!
</aside>