brunch

You can make anything
by writing

C.S.Lewis

by 배울장 Aug 11. 2019

서버리스로 웹서비스 제작

진짜 낮은 단가로 웹서비스 구현

 결론부터 말씀드리면 이 글에서는 컨텍스트 레이어 서비스를 개발한 개발기이다. 맞춤가구 서비스인데, 사이즈와 컬러를 선택할 수 있다. 컬러는 상판색, 옆 모서리 색을 선택할 수 있다.

 개발 목표는 아마존웹서비스를 활용한 서버리스 서비스다.

 이용한 AWS 서비스는 아래와 같다.


REST API - AWS API 게이트웨이

백앤드 함수 - AWS 람다

회원 관리 - AWS Cognito

데이터베이스 - AWS RDS

로그 - AWS CloudWatch

파일서버 - AWS S3

배포서버 - AWS CloudFront

도메인서버 - AWS Route53

SSL - AWS Certificate Manager

유저 트래킹 - 구글 애널리틱스

알림 - 카카오톡 플러스친구


 사실 EC2와 같은 서버를 위한 서비스를 사용하지 않으면 서버리스라고 해도 되는 것 같은 느낌이 있지만 우선 서버리스라고 불리는 것을 활용했다.

 서버리스의 장점은 서버를 케어하지 않아도 된다는 것. 서버 과부하를 걱정할 필요가 없고, 이용한 만큼 돈을 내면 되기 때문에 돈 걱정도 크게 없다.(유저가 없어도 슬퍼하지 않아도 돼..)

 개발하면서 들어간 돈은 만원 안쪽. 돈을 걱정해야하는 솔플 개발자 혹은 스타트업이라면 서버리스를 고려하면 좋겠다.


 전반적인 구조는 다음과 같다.

 유저가 도메인으로 접근하면 파일서버에서 미리 가져온 파일을 배포서버가 유저에게 전달해준다. 유저는 이것 저것 누르게 되는데, 함수를 클릭하면 API 게이트웨이를 거쳐 람다함수가 실행된다. 만약 로그인 혹은 가입을 시도한다면 Cognito를 통해 이루어진다. 모든 데이터는 RDS에 저장되며 유저의 행동은 구글 애널리틱스로 전송되고 백엔드 로그는 CloudWatch가 지켜보고 있다.


 원래대로 개발한다면 EC2를 하나열고 그 안에 DjangoExpressApache웹서버를 하나 만들고 그 안에서 모두 이루어진다. 로그도 EC2 내부에 저장되고 물론 다른 서비스들을 이용할 수 있지만 그 내부에 모두 개발할 수 있다. 자유도가 높긴하다. 하지만 이용량이 급증하면 오토스케일링을 통해 트래픽을 관리해야하고 아무도 사용하지 않아도 기본 사용료가 나간다.


서론이 길었다. 이제 개발기 시작하겠다.


1. 시뮬레이터 제작

 맞춤가구 서비스이기에 유저의 상상력에 도움을 줄 수 있는 3D 시뮬레이터를 개발했다. Three js를 활용하여 개발했으며 실시간으로 유저가 입력한 사이즈와 컬러를 적용해 보여준다.

조절 UI


2. 장바구니

 유저가 장바구니에 저장하거나 결제를 누르면 API 게이트웨이를 이용해 람다함수를 실행시켜 RDS에 정보를 저장한다. 로그인 하지 않아도 임시 토큰을 이용해 저장할 수 있고 차후에 가입을 하거나 로그인을 한다면 해당 임시토큰을 로그인 한 정보로 변경하여 장바구니에 넣었던 물품들을 그대로 유지할 수 있도록 만들었다.


3. 결제

 아직 PG사 계약을 진행중이지만 아임포트를 이용하여 개발했다.


4. 알림서비스

 람다를 활용해 결제가 이루어졌을 경우 카카오톡 플러스친구로 결제완료 알림 메세지를 보낸다.


5. 주문조회

 카카오톡 플러스친구로 배송조회, 주문조회가 모두 가능한 링크를 보낸다. 이러면 유저가 다시 웹페이지로 접속해서 확인해야하는 번거로움을 줄일 수 있지 않을까 했다.


 사실 리액트로 개발하고 서버리스로 배포하려고 했는데, 이 결정을 내렸을 때는 이미 강을 건넌 이후였다. 바꾸기엔 너무 많은 시간이 걸릴 것 같았고 다시 시작하기엔 지금까지 한 것이 너무 아까웠다. 결국 우선 개발을 끝내자(GET SHIT DONE) 라는 생각으로 개발했다.

작가의 이전글 오픈소스 로봇팔 제작기
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari