개요

회사에서 API, 크롤링 등을 통해 데이터를 수집, 수집한 데이터를 고객사가 원하는 조건에 맞게 처리, 데이터베이스에 적재를 하는 데이터 엔지니어와 유사한 업무를 맡았다.

특히 여기서 가장 중요한 부분은 데이터 수집 부분이다.

매일 하루에 한번 돌아가는 일일 배치 작업, 주, 월 등의 배치도 있다.

우선 업무는 이렇다 ETL, ELT 와 비스무리한 업무이다.

그런데 팀에 들어오고 배치 학습을 하는 기존 코드를 보고 충격을 받았다.

실제 배치 코드 일부를 봐보자

executeFile = [
        'pipenv run py batch1.py',      # 0     ====== 01:00 ======
        'pipenv run py batch2.py',      # 1     ====== 01:00 ======
        'pipenv run py batch3.py',      # 2     ====== 01:00 ======
        'pipenv run py batch4.py',      # 3     ====== 01:00 ======
        'pipenv run py batch5.py',      # 4     ====== 01:00 ======
        'pipenv run py batch6.py',      # 5     ====== 01:00 ======
        'pipenv run py batch7.py',      # 6     ====== 04:00 ======
        'pipenv run py batch8.py',      # 7     ====== 05:00 Every Monday ======
    ]
    time_list = ['01:00','04:00','05:00']
    while keep_going:
        time.sleep(60)
        if keyboard.is_pressed("q"):
            keyboard.release("q")
            break
        now = time.localtime()
        cmp_cur = "%02d:%02d" % (now.tm_hour,now.tm_min)
        weekday = datetime.today().isoweekday()
        if cmp_cur == time_list[0]:
            ...
        if cmp_cur == time_list[1]:
            ...
            ...
            ...
  • 어떤 원리인지 알아보기 정말 쉬웠고 놀라웠다.

  • 무한 루프를 돌다가 현재 시간이 리스트에 들어있는 시간과 맞으면 작동되는 원리이다.

  • 이 상태로 로컬환경에서 몇 달 동안 계속해서 작동하고 있었다.

  • 문제없이 잘 해오고 있기 때문에 계속 이렇게 사용되고 있었던 것 같다.

  • 필자는 이 환경을 개선하기 위해 배치를 위한 툴의 종류를 정리하고 실제 적용하기로 했다.

  • 배치 툴은 찾아보며 계속 추가할 예정이다. 우선 정리할 배치툴은 다음과 같다.

스케줄러 종류

  1. windows 작업 스케줄러 Link
  2. linux crontab Link
  3. airflow

다음 포스팅 부터 하나씩 알아보자!