<aside> 💡 일단 단시간에 빠르게 코드를 작성하다 보니, 상당히 코드가 난잡해 있다. 또한 실행 가능성에 초점을 맞추어 메모리 사용량을 고려하지 않고 상당히 큰 xlarge를 사용하고 있기 때문에 이 부분에서 클라우드 사용 비용이 상당 부문 지출 되었기 때문에 이 문제를 해결하고자 리팩토링을 하기로 결심하였다.

</aside>

태스크별 정리

TFIDF를 이용한 키워드 추출(2021.12.28)

카테고리 자동화(2021.12.29)

스크립트 vs 파이프라인(2022.01.13)

Airflow config 옵션(2022.01.21)

docker stats —all을 확인한 모습

docker stats —all을 확인한 모습

EC2에서 실행되는 airflow 인스턴스의 모습을 보면 webserver 하나가 5.35GB를 차지하고 있는 모습이다. webserver와 scheduler만 합쳐도 족히 7~8GB가 넘는 상황이기 때문에 EC2의 사이즈를 xlarge를 사용하고 있는 상황이다.

airflow.cfg의 설정을 변경하여 웹서버의 메모리 사용량을 줄이고 더 작은 EC2를 통해 비용절감을 고려해 보자

1. Scheduler File Processing

airflow가 dag를 리로딩 하는 것을 방지하기 위한 옵션 세팅이다. 기본값은 0을 세팅이 되어있다.

min_file_process_interval = 60

별로 줄어들어 보이지 않는다...

별로 줄어들어 보이지 않는다...

모니터링에서 확인할 수 있는 소스 사용량은 줄어든 모습이지만 기존의 옵션만큼 로딩 속도가 빠르지 않다.

2. Scheduler heartbeat

스케줄러가 새로운 태스크를 주기적으로 얼마나 자주 티리깅을 할 것인지에 대한 옵션이다.

scheduler_heartbeat_sec = 60

스케줄러의 메모리와 CPU 사용량이 매우 감소한 것을 볼 수 있다.

스케줄러의 메모리와 CPU 사용량이 매우 감소한 것을 볼 수 있다.

실서버 통합(2022.01.24)

<aside> 💡 기본적인 테이블의 구조가 많이 바뀌었기 때문에, 이에 맞는 api의 수정이 필요하다고 판단하였다. 개발에서 테스트를 거치고 적용하도록 하자!

</aside>