채널톡 아이콘

인프런 커뮤니티 질문&답변

이한희님의 프로필 이미지

작성한 질문수 7

Airflow 마스터 클래스

Connection 과 Hook

airflow로 실시간 데이터 수집이 가능한가요??

작성

·

128

0

안녕하세요! 강의 항상 잘 보고 있습니다!

강의를 보고, 배치작업이 아닌 외부 api를 1분마다 호출해서 실시간 데이터처럼 보일 수 있게 데이터를 수집하는 로직을 짜고자 합니다. 이런 데이터 수집 작업도 airflow를 쓰기도 하나요??

이렇게 요청이 자주 발생하는 작업은 airflow에서 비추천한다고 하는 글을 봐서 강사님의 생각은 어떤지 궁금합니다!

강의랑 큰 관련은 없는 주제일 수 있지만 만약 airflow를 사용하지 않는다면 보통 이런 로직을 구현할 때 어떤 기술을 사용하는지 궁금합니다...!

답변 2

0

김현진님의 프로필 이미지
김현진
지식공유자

안녕하세요 이한희님!

아마 제가 강의 초반에 1분단위 스케줄은 권장하지 않는다고 말씀드린 적이 있긴합니다.

Airflow의 부하가 많지 않으면 상관없는데 부하가 많을 경우 누락되는 스케줄이 발생될 수 있어서 권고하진 않아요. 하지만 저도 1분 단위 스케줄을 적용해본적이 있는데 5분 단위 스케줄 5개를 만들어서 수행했습니다.

첫 번째 */5 * * * *

두 번째: 1-59/5 * * * *

세 번째: 2-29/5 * * * *

네 번째: 3-59/5 * * * *

다섯 번째: 4-59/5 * * * *

스케줄을 이렇게 1분씩 엇갈리도록 하고 로직이 동일한 5개의 DAG을 만들어 수행한 적은 있습니다.

사실 이렇게 1분마다 조회하는 건이 좀 애매하긴해요. (준 실시간이라는 단어를 쓰는데 준 실시간의 명확한 정의도 없습니다)

 

어쨌든 API를 1분마다 수행해야 한다면 위 방법대로 Airflow로 구현해도 되구요.

만약 1분보다 더 짧은 주기로 호출해야 한다면 Kafka Producer/Consumer를 만들어보는 것도 방법입니다.

Kafka Producer/Consumer는 보통 Java 로 작성하지만 Python으로도 작성할 수 있는데 내부 로직은 custom하게 구현할 수 있습니다.

Kafka Producer 에서 API 조회 후 데이터 Broker로 전송

Kafka Consumer에서 데이터 꺼내와 로직 처리

하는 방식으로도 작성해볼 순 있습니다. Kafka Producer에서는 1분보다 더 짧은 주기로 API 조회하도록 로직을 작성하면 됩니다.

 

궁금한 점이 좀 해결되었을까요?

이한희님의 프로필 이미지
이한희
질문자

넵!! 감사합니다!! 개인 프로젝트를 하면서 많은 도움을 받고 있습니다! 감사합니다!

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 이한희님!

Airflow는 주로 데이터 워크플로우 관리와 배치 작업에 최적화된 도구로, 짧은 간격으로 자주 실행되는 작업보다는 상대적으로 긴 주기의 배치 작업을 효과적으로 처리하는 데 적합합니다. 1분마다 API를 호출하여 실시간 데이터 수집을 구현하기에는 Airflow가 비효율적일 수 있습니다. 이는 Airflow의 스케줄러가 DAG(Directed Acyclic Graph)를 주기적으로 실행하도록 설계되었고, 과히 잦은 주기의 작업은 오히려 성능 저하, 자원 낭비 그리고 예기치 않은 문제를 유발할 수 있기 때문입니다.

대안으로 실시간 데이터 수집 및 처리를 위해 다음과 같은 기술들을 활용할 수 있습니다:

  1. Apache Kafka: 실시간 데이터 스트리밍을 관리하는 데 널리 사용됩니다. 대규모 실시간 데이터 처리에 강력한 성능을 발휘합니다.
  2. Flink 또는 Spark Streaming: 실시간 데이터 처리가 필요한 경우 적합한 도구들입니다. 대용량 데이터 처리에 탁월한 성능을 제공합니다.
  3. Celery: 분산 작업 큐이며, 비동기 실행을 통해 정기적으로 작업을 처리할 수 있습니다. 이는 RabbitMQ나 Redis와 같은 브로커와 함께 사용되어 실시간 처리에 빈번히 활용됩니다.

관련된 논의와 예제를 다룬 기존 답변들을 참고하시면 도움이 될 것 같습니다:

  1. 1년에 한 번 돌리는 스케줄도 에어플로우로 관리하면 좋을까요?
    이 질문에서는 Airflow의 장기 스케줄링 작업과 관련된 논의를 통해 적시 적절한 사용 사례를 제시합니다.

  2. 외부 파이썬 함수 수행하기 관련 질문 드립니다.
    Airflow와 외부 작업 간의 호출 및 효율적인 처리 방법에 대해 안내한 글입니다.

  3. Airflow 데이터 처리
    Airflow를 통해 데이터 수집 및 처리를 관리하는 데 대해 설명한 답변입니다.

Airflow는 실시간 대량 데이터를 처리하기 위해 설계된 도구가 아니므로, 위에 제시된 다른 도구들을 고려해보시길 추천드립니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.