5일차에 오신 것을 환영합니다! 디지털오션의 12일! 어제, 당신은 생일 알림 서비스를 디지털오션 함수에서 실행하도록 설정했습니다. 이제 서버리스이고 클라우드 준비가 완료되었습니다. 🎉 오늘은 이 서비스를 자동화하여 스스로 일정에 따라 실행되도록 한 단계 더 나아갈 것입니다. 수동 입력은 필요 없습니다.
이 가이드를 끝내면, 당신의 서비스(또는 작업 중인 다른 함수)는 매일 정해진 시간에 자동으로 실행될 것입니다. 즉, 더 이상 스스로 트리거를 기억할 필요가 없습니다. 자동으로 작동합니다.
자동화의 이유?
어제 클라우드에 함수를 배포한 것은 큰 성과였지만, 수동으로 실행해야 한다면 자동화의 목적을 무색하게 합니다. 오늘의 초점은 서비스를 자동으로 실행되도록 일정 설정하는 것입니다—시계처럼—당신이 설정하고 잊어버릴 수 있도록. 디지털오션 함수는 이 정확한 목적을 위해 트리거를 이용한 내장 일정 기능을 가지고 있으며, 이를 설정할 수 있는 두 가지 방법이 있습니다.
🚀 배울 내용
오늘이 끝나기 전에, 다음을 알게 될 것입니다:
- 자동으로 함수를 실행하도록 매일 트리거를 설정합니다.
- 두 가지 방법을 배웁니다—DigitalOcean 제어판을 통해 또는
doctl
CLI와project.yml
을 사용하여. - 설정을 테스트하여 제대로 작동하는지 확인합니다.
🛠 필요 사항
시작하기 전에 다음 사항을 확인하세요:
- 트리거로 자동화할 수 있는 DigitalOcean에 이미 배포된 함수(예: 4일차: 생일 알림 서비스 만들기)가 필요합니다.
doctl
CLI를 사용할 경우, 기능을 위한project.yml
파일이 필요합니다. 4일차에서doctl
CLI 설치 및 설정 방법과project.yml
파일 생성 방법에 대한 지침을 확인할 수 있습니다.
🧑🍳 5일차 레시피: 트리거로 기능 자동화하기
1단계: 기능을 위한 트리거 설정하기
DigitalOcean은 트리거 설정을 위한 두 가지 옵션을 제공합니다:
- 옵션 1: 빠르고 쉽게 설정할 수 있도록 제어판을 사용하세요.
- 옵션 2: 더 강력하고 프로그래밍 방식의 제어를 위해
doctl
CLI를 사용하세요.
경고: CLI를 사용하여 기능을 재배포하면 제어판에서 생성한 트리거가 사라집니다. 자주 재배포할 예정이라면 옵션 2를 사용하여 트리거를 project.yml
파일에 직접 추가하세요.
옵션 1: 제어판을 사용하여 트리거 만들기
트리거를 설정하는 가장 쉬운 방법은 DigitalOcean 제어판을 통한 것입니다. 빠르고, 설정이 필요 없으며, 간단한 일회성 구성에 적합합니다.
- DigitalOcean 대시보드에서 주요 함수 페이지로 이동합니다.
- 함수를 찾고 (예:
reminders/birthdays
) 트리거 탭을 클릭합니다.
- 트리거 만들기를 클릭하고 트리거의 이름을 추가합니다. 이는
daily-birthday-trigger
와 같이 설명적인 어떤 것이어도 됩니다. 이름에는 영숫자, 대시, 마침표만 포함되어야 합니다. - 일정을 설정하기 위해 크론 표현식을 추가합니다. 예를 들어,
0 9 * * *
는 함수가 매일 오전 9시에 실행됨을 의미합니다.
참고: 크론이 어떻게 작동하는지 확실하지 않나요? 유용한 가이드를 보려면 crontab.guru를 확인하세요.
- 트리거 저장합니다.
트리거를 생성한 후에는 모든 것이 예상대로 작동하는지 확인하기 위해 테스트하는 것이 좋습니다. 아래의 자동화 테스트 섹션으로 이동하여 방법을 알아보세요.
경고: 대시보드는 간단하고 효과적이지만, 여기서 생성한 트리거는 CLI를 사용하여 기능을 재배포할 경우 덮어쓰이거나 삭제됩니다. 자주 업데이트하거나 프로그래밍 방식으로 배포하려면 옵션 2로 건너뜁니다.
옵션 2: doctl
CLI와 project.yml
사용하기
트리거를 project.yml 파일에 직접 추가하여 생성할 수도 있습니다. 이 방법은 자주 재배포할 때 더 신뢰할 수 있으며, 트리거가 항상 기능의 구성에 포함되도록 보장합니다. 이전에 설명한 제어판 옵션과 달리, 이 방법은 재배포 중에 트리거가 덮어쓰이거나 손실되는 것을 방지합니다.
설정하는 방법은 다음과 같습니다:
-
당신의
project.yml
파일을 4일차: DigitalOcean Functions를 이용한 생일 알림 배포에서 열어보세요. 다음과 비슷해 보일 수 있습니다: -
함수 구성에
triggers
섹션을 추가하여 일정을 정의하세요: -
최종 업데이트된
project.yml
파일:이 설정은 DigitalOcean에
birthdays
함수를 매일 오전 9시에 실행하라고 지시합니다.-
triggers
섹션: 트리거의 이름, 유형 및 일정을 정의합니다. 트리거의 이름은daily-birthday-trigger
와 같이 설명적인 이름을 사용할 수 있습니다. -
cron
: 함수가 매일 UTC 기준으로 실행될 시간을 지정합니다. 예를 들어,0 9 * * *
라는 크론 표현식은 함수를 매일 오전 9시에 실행하도록 예약합니다.
-
-
파일을 저장하고
my-birthday-reminder-service
폴더가 포함된 디렉토리에서 다음 명령어를 실행하여 배포하세요:중요:
my-birthday-reminder-service
폴더 내부가 아닌 부모 디렉토리에서 명령어를 실행해야 합니다. 잘못된 위치에서 실행하면 다음과 같은 오류가 발생할 수 있습니다: -
배포가 성공적으로 완료되면 다음과 유사한 확인 메시지가 표시됩니다:
-
대시보드로 이동하여 기능 섹션 아래에 트리거가 생성되었는지 확인하세요.
전문가 팁: 트리거를 테스트하려면 크론 표현식을 잠시 후 몇 분으로 설정하세요 (예: 오전 9시 25분이면 28 9 * * *
로 설정). 작동하는 것을 확인한 후 기존 일정으로 업데이트하고 다시 배포하세요.
단계 2: 자동화 테스트
트리거가 작동하는지 확인하기 위해 테스트해 보겠습니다. 일반적인 일정에서 트리거가 작동하기를 기다리는 대신, 잠시 후 몇 분으로 설정하여 실행할 수 있습니다. 다음은 그 방법입니다:
-
트리거의 크론 표현식을 현재 시간(UTC)에서 몇 분 후로 설정하세요. 예를 들어, UTC 오전 9시 25분이면 크론 표현식을
28 9 * * *
로 설정하여 함수가 UTC 오전 9시 28분에 실행되도록 합니다.참고: 로컬 시간을 UTC로 변환하는 방법이 확실하지 않으신가요? 시간대 변환기와 같은 도구가 도움이 될 수 있습니다.
-
업데이트된 트리거를 저장하세요 (제어판을 사용하는 경우) 또는 업데이트된
project.yml
파일을 다시 배포하세요 (CLI를 사용하는 경우): - 트리거가 실행되기를 기다리세요, 그런 다음 활성화 로그를 확인하여 함수가 성공적으로 실행되었는지 확인하세요:
참고: 활성화 로그는 함수가 실행된 시점에 대한 세부 정보를 기록하며, 성공적으로 실행되었는지 또는 오류가 발생했는지 여부를 포함합니다. 이는 트리거가 예정된 시간에 발동했는지 확인하는 데 유용한 방법입니다.
이 명령은 함수의 가장 최근 활성화 세부 정보를 반환합니다. 예를 들어, 다음과 같은 내용을 볼 수 있습니다:
이것은 트리거가 발동했고 함수가 성공적으로 활성화되었음을 확인합니다! 🎉
참고: 모든 것이 정상 작동하는지 확인한 후, 크론 표현식을 원하는 일정으로 업데이트하고(예: 0 9 * * *
는 매일 오전 9:00 UTC) 저장하거나 재배포합니다.
로그에 대한 간단한 참고사항
활성화 로그 명령은 최근 실행을 확인하는 좋은 방법이지만, 때때로 함수의 문제를 디버그하거나 조사하기 위해 더 상세한 로그가 필요할 수 있습니다. DigitalOcean은 이러한 로그를 외부 로깅 서비스로 전달하는 옵션도 제공하여 시간이 지남에 따라 애플리케이션 모니터링 및 문제 해결을 쉽게 만듭니다.
6일차에는 로그를 직접 보고, 효과적으로 해석하며, Logtail 또는 Papertrail과 같은 외부 서비스로 로그 전달을 설정하는 방법을 배웁니다. 이러한 도구들은 당신의 기능 성능을 쉽게 파악하는 데 도움이 될 것입니다.
🎁 마무리
오늘 당신이 성취한 내용은 다음과 같습니다:
- 당신은 생일 알림 서비스(또는 다른 기능)를 매일 실행되도록 자동화했습니다.
- 당신은 제어판을 통해서와
doctl
CLI를 사용하여 트리거를 설정하는 두 가지 방법을 배웠습니다. - 당신은 설정을 테스트하여 예상대로 작동하는지 확인했습니다.
다음은 이 시리즈의 이전 튜토리얼입니다:
- 1일차: 생일 알림을 위한 PostgreSQL 데이터베이스 설정하기
- 2일차: Python으로 PostgreSQL 데이터베이스에 연결하기
- 3일차: 생일 확인 및 SMS 알림 전송하기
- 4일차: 생일 알림을 함수에 배포하기
다음: 서비스가 독립적으로 실행되므로, 다음 단계는 이를 효과적으로 모니터링하는 것입니다. 다음 튜토리얼에서는 함수 로그를 조회하고 이를 외부 서비스로 전달하여 추적 및 문제 해결을 간소화하는 방법을 배웁니다. 그때 뵙겠습니다!
Source:
https://www.digitalocean.com/community/tutorials/automating-birthday-reminders-with-triggers