데이터를 기반으로

특정 키워드 뉴스 카카오톡 자동 발송 구축하기(with GCP) - (2) 본문

GCP(Google Cloud Platform)

특정 키워드 뉴스 카카오톡 자동 발송 구축하기(with GCP) - (2)

이노후 2024. 3. 29. 01:10
728x90
반응형

앞서 소개한 로직을 먼저 보고 와야 해당 글을 이해할 수 있을 것 같습니다.

https://ds92.tistory.com/140

 

특정 키워드 뉴스 카카오톡 자동 발송 구축하기 - (1)

여느 날과 같이 집에서 저녁을 먹다가 와이프가 갑자기 나에게 한가지를 물어보았다. "자기야 특정 뉴스 매일 카톡으로 오면 좋겠는데 그런 기능은 없어?" 자존심으로 똘똘뭉친 나는 "아니? 그런

ds92.tistory.com

----------------------------------------------------------------------------------------------------------------------

 

개인적으로 물리 서버 조그만걸 하나 사서 집에 둬야하나...라는 생각을 예전부터 해온적이 있었다.

 

최근 AWS 프리 티어를 받아서 이것 저것 테스트 해보다가 궁금해서 GCP도 가입을 해보았다.

 

GCP(Google Cloud Platform)에 대한 자세한 설명은 웹 서칭을 통해서 학습하길 바란다.

 

다시 본론으로 돌아와 나는 해당 자동화를 GCP의 Cloud Functions를 사용해서 구축해보고자 했다. 결론적으로는 아주 만족스럽게 사용 중이다.

 

GCP는 AWS와는 다르게 크레딧을 주는 시스템이다. 어떻게 보면 AWS는 프리티어가 기간이 정해져있다 보니 GCP가 더 좋은 선택지일 수도 있다.

(각자의 상황에 맞게 고려하면 될 것 같다.)

 

https://cloud.google.com/free?hl=ko

 

https://cloud.google.com/free?hl=ko

 

cloud.google.com

 

단순 가입하고 카드 등록만 하면 무료 크레딧이 주어지니 위 링크에 들어가 따라서 설정하면 될 것 같다.

 

 

먼저, GCP의 Cloud Functions에 들어와서 함수 만들기 버튼을 클릭한다.

 

 

여기서 가장 중요한 것은 트리거 부분의 인증되지 않은 호출 허용을 클릭해주는 것이다.

 

외부에서도 호출이 일어나는 경우가 있다보니 해당 부분을 설정했다.

(추후 보안을 위해서는 특정 IP만 허용하던지 AWS VPC 같은 기능을 GCP에서도 적용이 가능할 것으로 보이지만...실제 사용해보진 않았다)

 

 

그 다음 나는 파이썬으로 코드를 작성하였으니 런타임 부분에 Python 3.10 으로 설정한 것을 볼 수 있다.

 

그리고 진입점은 외부 호출 및 내부에서 실행하고자 할 때 가장 먼저 실행되는 Module을 의미한다.

 

왼쪽 소스코드 밑에를 보면 main.py 와 requirements.txt 를 확인할 수 있다.

 

AWS lambda(이하 람다) 를 자주 사용했는데 람다는 항상 패키지를 말아서 직접 올려줘야하는 수고스러움이 있었다.

 

GCP의 Cloud functions에 가장 강력한 기능 중 하나는 requirements에 패키지명과 버전을 넣으면 자동으로 사용할 수 있는 구조다.

(만약, AWS에서도 비슷한 기능이 있다면 말씀 부탁드립니다.)

 

위 그림 처럼 나는 3개의 패키지만 사용했다.(사실 맨 마지막 구글 스토리지는 사용하지 않았는데 들어가있었다..)

 

이렇게 설정은 다 마치고 코드는 이전 게시글들 설명 코드들을 조합해 완료했다.

 

그렇게 조합한 cloud functions 가 자동으로 돌아갈 수 있도록 스케줄러를 생성하였다.

 

 

 

Google Scheduler 인데, 크론탭으로 스케쥴링이 가능한 서비스이다. 작업 만들기를 클릭한다.

 

 

이름은 정해주고, 리전은 혹시 몰라서 cloud functions 를 생성한 리전과 동일하게 잡아두었다.

시간대는 우리나라 시간으로 지정하고 빈도 부분은 크론탭으로 작성하였다.

 

실제로 작성하게되면 위 처럼 빈도도 해석해서 아래 처럼 보여진다.

 

나는 매일 오후 5시 58분 나에게 전송되게 설정해두었다.

 

 

그 다음 부분은 실행 구성이다. 위 실행할 URL은 Cloud Functions 의 URL을 넣으면 된다. 그리고 실행 구성인 HTTP 구조는 기존에 Cloud Functions를 생성하면서 테스트 했던 json 구조와 동일하게 가져가면 된다.

 

 

이런식으로 구성해서 진행하였다.

URL은 Google Cloud Functions 에 트리거로 들어가서 존재하는 URL을 복사해서 입력하면 된다.

 

그리고 인증헤더는 아래를 참고해서 설정하는 것이 좋다.

 

https://cloud.google.com/identity-platform/docs/web/oidc?hl=ko

 

OIDC로 사용자 로그인  |  Identity Platform 문서  |  Google Cloud

의견 보내기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. OIDC로 사용자 로그인 이 문서에서는 Identity Platform을 사용하여 OpenID Connect(OIDC) 공급업체로 사용

cloud.google.com

 

OAuth2.0으로 하는 것보다 OIDC를 추천한다.

(그게 더 편하다...OAuth2.0은 설정해야할 것이 너무 많다...)

 

이렇게 모든 설정이 끝났고, 다음날 오후 5시 58분 까지 두근두근 거리며 기다렸다.

 

 

이런 식으로 나에게 자동 발송된 것을 확인할 수 있었다.

 

혹시라도 오류가 나거나 중간에 발송이 안됐다면 Cloud Functions에 로그 부분에서 직접 확인해보면 디버깅이 쉬울 것이다.

 

위 기능을 구현해서 조금이라도 쓸모가 있는 남편이 되었다.

(그날 저녁은 소고기를 먹었다 ㅎㅎ)

 

다른 분들도 위 기능을 잘 활용해서 멋진 결과물을 얻기를 바랍니다.

 

P.S. 항상 모든 지적은 환영입니다! 조언 부탁드립니다. 모든 선배님들.

728x90
반응형