준비물 :
1.GitHub Pages 리포지토리
2.AWS Lambda (Serverless 구현)
3.Paypal 결제 API
깃허브 페이지 도메인으로 접속하면 깃허브 리포지토리의 렌더링된 정적 리소스들을 확인할 수 있습니다.
여기서 궁금한 점이 생겼습니다.
1. 정적 리소스는 서버 및 DB로직 없이 렌더링될 수 있다.
2. (HTML + CSS + JS) 웹 표준 기술을 사용해 정적 리소스에서도 통신이 가능할까?
첫번째로 서버의 처리 없이 바닐라 HTML 만으로 깃허브 페이지에서 통신이 가능한지 의문이 생겼습니다.
그리고 두번째 의문도 생겼습니다.
3. 정적 리소스여도 서버 및 DB 로직 없이 사용자의 간단한 데이터를 저장할 수 있지 않을까?
4. 그렇다면 정적 리소스에서 외부 API를 호출하여 데이터를 불러와 JavaScript로 화면을 실시간 렌더링할수 있지 않을까?
불가능할 것 같지 않았습니다.
사용자의 간단한 데이터를 저장하려면 LocalStorage 라는 사용자의 브라우저에 데이터를 저장하는 기능이 있다고 합니다.
그리고 서버로직이 없는 웹 화면이어도 화면을 조작하는 건 JavaScript로 가능합니다.
그렇다면 깃허브페이지에서 "API를 통해 외부 데이터에 접근하는 건 가능한가?" 를 먼저 해결해야 했습니다.
[깃허브 페이지] -> 요청 -> [외부 API 서버] -> 응답 -> [화면 렌더링]
이런 연결고리를 구상해 봤습니다.
그렇다면 깃허브 페이지를 구성하여 외부 API서버에 통신을 용이하게 하려면
외부 API서버에 데이터를 요청하여 JSON과 같은 문자열 포맷을 통해 CSR을 구현하기 쉬울 것이라 예상했습니다.
REST API를 구현한 스프링부트를 클라우드를 통해 직접 배포하는 것은 번거울 것 같았습니다.
그리고 단순히 함수 몇개를 동작하기 위해 무거운 프레임워크를 설계하는 것은 비효율적입니다.
AWS에서 EC2와 RDS를 사용해 본 적이 있기때문에 AWS를 통한 다른 방법이 없나 고민해봤습니다.
AWS Lambda 라는 서비스를 사용하면 미리 지정된 몇개의 함수를 실행할 수 있다고 합니다.
서버 전체를 직접 구현하거나 배포하지 않고도 Lambda 함수를 호출하기만 하면 함수 단위로 서버 로직을 수행할 수 있는 서비스입니다.
곧 AWS의 Lambda로 서버 개별함수를 실행할 수 있다는 건, AWS의 RDS같은 DB 서비스도 이용할 수 있다는 뜻이었습니다.
그리고 일괄적인 보안 정책 적용으로 안정적이고 재사용성이 높은 서비스를 제공할 수도 있겠습니다.
EC2와 RDS의경우 지난번엔 인스턴스를 끄지 않은 것만으로도 계속 사용량이 쌓여 요금이 5달러 정도 부과되었었는데
Lambda는 서버를 배포하는 것에 비해 가벼운 기능이여서 요금이 낮게 책정되어 있는 것 같았습니다.
제가 이 프로젝트를 위해 딱 원하던 기능이었습니다.
함수 몇개를 가볍게 실행할 수 있는 서버 로직을 수행하는 공간이 필요했고, DB 서비스까지 사용할 수 있다면 확장성 및 기능부분에서도 훨씬 안정적입니다.
여기서 어떤 기능을 구현하고 싶은지 떠올랐습니다.
페이팔 결제 버튼을 깃허브페이지 웹사이트에 포함시키는 것입니다.
깃허브페이지로 구현한 제 웹사이트에 누군가 구현된 기능을 유용하게 여기거나, 후원 및 서비스 구입 등을 목적으로 결제 서비스를 이용할 수 있게 하고 싶었습니다.
그래서 싸이클은
- 결제 기능의 경우 :
[깃허브 페이지] -> Paypal 결제 버튼 클릭 시 -> (AWS Lambda 함수 호출) -> Paypal 결제 서비스 호출 및 진행 -> 결제 검증 절차 진행 -> 결과 반환 -> [깃허브 페이지에 결과 렌더링]
- 정적 리소스에서 서비스할 기능 :
HTML, CSS, JS 를 통해 정적 HTML에서 구현할 수 있는 매력적인 기능을 구현하여 깃허브 페이지에 업로드한다.
를 구현하는 것이 이 프로젝트의 목적입니다.
충분히 가능하다는 생각이 들었으나 이런 사례를 먼저 접해보거나 사용해 본 적이 없어서
굳이 이렇게 서비스를 설계하지 않는 이유나, 아니면 어쩔 수 없는 구조적인 이유로 막히는 점도 있을 것 같습니다.
그러나 서버리스를 경험해 볼 수 있다는 점은 매력적이며 깃허브페이지를 유용하게 다루게 된다는 것은 큰 장점이 될 것이라 생각하여 이렇게 진행해보려 합니다.
'Cloud' 카테고리의 다른 글
EC2 인스턴스에 도커 컨테이너를 실행하고 배포하기 [DockerHub] (0) | 2024.11.25 |
---|---|
GitHub Pages에서 직접 외부API를 사용하는건 힘들다 [AWS/탐구] (1) | 2024.10.15 |
아마존 AWS Lambda, API Gateway 설정하기 [후기] (1) | 2024.10.15 |
AWS EC2에 스프링부트 첫 배포한 후기 [RDS/MySql] (0) | 2024.09.30 |
카페24 웹호스팅 실패한 경험 [스프링부트/후기] (1) | 2024.09.30 |