AWS의 인프라를 이용해 단축 URL 서비스를 만들어보려고 한다.
단축 URL 서비스는 https://google.com/fwarij4t3qt9pi3t3qtto3t3rzx22!31r31r/dafadfqefef와 같이 긴 URL을 my.ly/abcd로 축약하여 나타낼 수 있는 서비스이다. 대표적으로 bit.ly와 tinyurl.com 이 있다.
국내에는 네이버의 me2.do 서비스가 있었으나 현재 네이버는 개발자 API 형태로만 일일 한도를 제한하여 제공을 하고 있다
도메인 이름을 통한 브랜드 노출도 가능하여 다양한 기업에서 단축 URL을 활용하고 있다
리멤버 커뮤니티 https://app.rmbr.in/8brSSF5y5eb
링크드인의 프로필 https://linked.in/aaronroh
아래는 bitly의 메인 페이지 화면이다.
url을 입력하고 버튼을 누르면 단축된 URL이 생성되는 것을 볼 수 있다
우리는 이러한 서비스를 직접 만들어보고자 한다
그런데, 우린 서버 없이(serverless) 만들 것이다.
정말 서버가 없는 것은 아니고, 서버리스 컴퓨팅을 통해서 API나 해당 기능을 호출할 때에만 실행이 되는 방식이다
서버리스 컴퓨팅을 사용하면 자원 크기에 대한 프로비저닝, 오토스케일링 등의 인프라 관리 작업을 클라우드 제공사에 맡길 수 있기에 기능 구현에만 집중할 수 있는 장점이 있다.
더불어 필요할 때에만 실행하기에 종량제 요금이 적용되어 금전적인 절약도 맞이할 수 있다.
우린 다양한 클라우드 서비스 제공사 중에서 AWS의 서버리스 컴퓨팅 서비스인 Lambda(람다)를 이용하여 단축 URL 서비스를 만들어 볼 것이다.
생성한 Lamda 함수를 API 엔드포인트로서 요청할 수 있도록 API Gateway를 사용하고, 오브젝트 저장 서비스인 S3를 함께 이용할 것이다.
S3의 메타데이터 속성을 이용하여 원본 URL을 저장하여 진행한다.
이 글에서 관계형 DB와 redis와 같은 인메모리 Data store를 이용한 캐싱 적용과 같은 성능 향상에 대해선 다루지 않을 예정이다.
다음 글에서는 AWS Lambda와 S3에 대한 소개, 본격적으로 우리가 개발할 단축 URL 서비스 구조에 대해 알아본다
'Back-end' 카테고리의 다른 글
AWS 서버리스 단축URL 서비스 만들기 - 3 (0) | 2021.07.25 |
---|---|
AWS 서버리스 단축URL 서비스 만들기 - 2 (3) | 2021.07.25 |
Go gRPC 튜토리얼 #2 - Server Streaming RPC (0) | 2021.01.14 |
Go gRPC 서버에 REST API 요청 주고 받기 [grpc-gateway] (0) | 2020.12.31 |
JPA User 테이블, Postgres reserved keyword 해결하기 (0) | 2020.08.12 |
댓글