깃허브 블로그와 노션 연동하기 [인프라]
깃허브 블로그와 노션 연동하기 #인프라
[관련 포스팅]
깃허브 블로그와 노션 연동하기 [인프라]
이번 편에서는 인프라 구조에 대해 자세하게 설명한다. 인프라는 클라우드 기반으로 설계되었다. 마침 AWS 크레딧이 있었기에 Amazon Web Services(AWS)를 이용했다.
구조
- API Gateway
- Lambda
- SQS
- Secrets Manager
API Gateway
선택한 이유
Lambda를 트리거하는 방식은 웹을 이용하기로 했다. 작성이 완료된 것은 사용자인 내가 판단한다. 클라이언트인 내가 수동으로 요청을 보내야한다. 나는 HTTP(s) 엔드포인트로 요청을 보내는 방법을 선택했다.
API를 선택한 이유는 람다를 호출할 때, 여러 파라미터가 필요하다. 예를 들어 우리가 포스팅할 페이지의 ID를 넘겨줘야 한다. 이때 URL 문법은 path, query, fragment 등을 지원하기에 파라미터를 넘기기 편하다.
또한, 람다를 트리거하는 다른 방법은 노션에서 바로 동작할 수 없다. 예를 들어 메시징 서비스는 노션이 아닌 AWS SDK 혹은 AWS CLI가 필요하다. 하지만, 웹은 클릭 한 번으로 요청을 보낼 수 있다.
API 형식
HTTPS 엔드포인트 형식은 다음과 같다. 노션 페이지의 ID와 포스팅 제목을 넘겨준다.
1
2
3
4
5
6
Events:
Api:
Type: Api
Properties:
Path: /{pageid}/{title}
Method: get
https://{api_id}.execute-api.ap-northeast-2.amazonaws.com/{stage}/{pageid}/{title}
형식으로 진행된다.
ex) https://1234.execute-api.ap-northeast-2.amazonaws.com/Prod/c60b0a6e00784cdf8e13f2c8a6a6e657/Lambda 정리
과금
서울 리전에서의 요금은 아래와 같다. 사실 아래와 같은 요금이어도 백만 건을 채우기 쉽지 않다. 하루에 하나씩 포스팅을 진행해도 1년에 365건이다.
하지만, 프리티어 요금이 적용되어 한 달에 100만 개까지는 무료이다. 한 달의 요청 수는 약 10일정도 지난 현재 기준으로 23개이며, 예측량 또한 71개이기에 할당량에 0.00%도 채우지 못한 것을 확인할 수 있다.
그렇기에 Cost Explorer를 확인하면 11월부터 사용했지만 과금된 내역이 없는 것을 확인할 수 있다.
Lambda
Lambda 선택 이유
해당 프로젝트는 많은 트래픽이 발생하지 않는다. 포스팅이 필요할 때만, 혹은 내용을 업데이트할 때만 서버가 동작하면 된다. 하루 평균 1~2회 정도의 요청을 예상되고, 로컬에서 프로그램이 실행되는데 약 10초 이내로 걸렸다. 그렇기에 서버리스를 선택했다.
2023/11 ~ 2024/3월까지의 호출 횟수를 시각화하면 아래와 같다. 주로 0~2번 정도 호출이되고, 하루에 최대 9번 정도 호출되었다.
과금
요청은 프리티어로 매월 1,000,000개의 요청은 무료이고, 프리티어 이후부터는 100만 개의 요청당 0.2달러의 요금을 부과한다.
기간 요금은 400,000GB/s는 무료이며, 600,00GB/s에 대해 1달러의 요금을 부과한다.
여기서 GB는 메모리용량을 의미한다. 즉 메모리 1GB로 동작하는 람다 함수에 대해 400,000초까지는 무료이며 이후 600,000초가 지났을 때마다 1달러를 부과한다.
실제로, 작은 프로젝트의 경우 메모리 사이즈가 작아도 상관없다. 그렇기에 메모리 용량 당 비용은 더욱 저렴하게 느껴졌다. 프로젝트에서 사용하는 람다 함수는 메모리사이즈가 256MB이다.
이번 달 프리티어 사용량 현황은 아래와 같다. 시간에 대해서만 할당량의 0.02% 사용했다. 하지만, 요청량은 턱없이 부족하다.
프리티어 상태이기에 과금된 것은 없다.
SQS
SQS는 Google Search Console 인덱싱 자동화 때문에 도입된 부분이다. 관련 내용은 Google Search Console 인덱싱 자동화3, SQS 도입에서 확인할 수 있다.