서버리스 백엔드

2017.03.27

왜 서버리스?

값이 싸다. API Gateway + Lambda + DynamoDB로 백엔드를 구성해두면 사용한 만큼만 과금이 되기 때문에 토이프로젝트를 서버리스 아키텍처로 구성해 두면 언제든 엑세스할 수 있지만 값은 거의 들지 않는다. 수십개의 토이프로젝트 api를 만들어 놔도 접속량이 없으면 과금이 거의 되지 않으니 얼마나 꿀인가.

서버관리가 필요없다. 프로세스가 죽었을 때 다시 켜줄 필요도 없고 도메인 연결이나 리눅스 계정관리등의 귀찮음이 해소된다.

해보니

DB를 이렇게 구성했다.

{
  "channel": "public",
  "video": ["video1 id", "video2 id", "video3 id"]
},
{
  "channel": "private",
  "video": ["video1 id", "video2 id", "video3 id"]
}

channel로 필터해서 비디오 목록을 가져오는건 아주 잘 된다. DynamoDB에서 반환하는 데이터에는 1MB 제한이 있어서 초과하면 페이지로 나눠서 준다고 한다.

DB에 값을 업데이트하는 것도 잘 된다. list_append함수를 사용하면 리스트의 앞이나 뒤에 값을 추가하는 게 된다.

다만 중복없이 값을 넣고싶은데, list_append와 같이 사용하는 방법을 모르겠다. 어떻게 하면 되긴 할텐데.

값을 삭제하는 건 한번에 하나씩만 된다고 한다. 여러개를 삭제하려면 여러번 요청해야 한다. 생각보다 제한사항이 꽤 있는듯.

마치며

겉핥기 수준이지만 서버리스 아키텍처가 만능은 아닌것 같다. 장단이 있고 큰 효용이 있는 피쳐에 적용하면 꿀이긴 하지만 초기비용이 싸다고 해서 무조건 서버리스로만 할 수는 없을듯.