얼굴 아이콘

aws를 사용해 serverless 프로젝트를 구성하며 느낀점

2018-03-01

개발 aws serverless

Serverless?

서버리스란 말 그대로 서버가없는 서비스를 구성하는 프로젝트를 말한다 나는 현재 lambda를 사용해 개발을 하고 있으며 서버리스 프레임워크 serverless http를 이용해 개발을 하고 있다.

맞닦드린 문제들

이번은 es6(es2015)를 사용해 개발을 하고있다 특히 프론트도 vue로 하다보니 es6에 익숙해지는게 필요했다. babel을 사용해 dev프로젝트로 서비스를 가동하면 아무런 문제도 없던게 serverless-http사용해 aws lambda에 업로드하면 {forbidden:none} 에러를 뿜기 시작햇다.

문제를 찾기위해 열심히 뒤졌지만 생각보다 관련 정보는 나오지 않았는데, 정말 사소한 이유였다 aws lambda는 es6문법에서 async await를 적용하지 않는다는 점이다,

그렇다 모든 코드를 바꿔야했다.

그 밖에도 mongodb의 연결이 안되어서 문제가 생긴경우도 있는데 이는 config파일을 제대로 읽지 못해 발생했다.

exports.~~~라는 문법을 사용해서 해당 문제가 발생했다.

나름 엄격한 체제를 가지고 있기 때문에 기존에 가동되던 코드도 lambda에 업로드를 하면 안되는 경우가 너무 많았다. 아무튼 지금은 어느정도 중심을 잡은것 같다

Route53을 설정하기.

쉽지 않은 일이었다. 그냥 배포된 주소로 접근하면 정말 잘 되던게 꼭 api.pikiidea.com이라고 쓰면 forbidden… 구글링 결과 api의 키를 줘야한다 뭘 해야한다 이걸 해야한다…..~~ 그러나 나의 실수는 serverless-http의 공식문서를 제대로 안 읽어서 생긴 문제였다. serverless-http에서 도메인을 설정하기

여기서 잘 읽어보면 us-east-01에서만 작동한다고 잠깐 언급이 되는데 이 부분을 제대로 읽지않아 하루를 왜 안돼지? 왜???? 도쿄리전 때문이라는 것을 알기 까지 생각보다 긴~시간을 보냈다.

그럼에도 serverless

서버리스를 처음 접한건 firebase functions를 사용하면서 였다, 당시에 간단한 정보를 크롤링해서 가져오는게 필요했는데 서버를 구성하기에는 귀찮고, 귀찮은것 만이 아니라 관리도 해야하기에 정말로 하기가 싫었다.

그래서 발견하게 된것은 firebase functions

몇줄의 코드만으로 내가 원하는 기능을 추가할 수 있었다. 가령 이미지의 리사이즈나 업로드까지도 간편하게 추가가 가능했다.

그 이후부터는 서버리스가 메인인 프로젝트를 해보고 싶었다.

serverless의 유지보수는 간단하다

예전에 vultr를 사용해서 서버를 가동할땐 간혹 오류가 생기면 서버가 뻣어버리는 경우가 잦았다. 나같은 개인 개발자는 서버까지 신경쓰며 거기다가 디자인까지 해야하는 경우인데 이런 경우가 생기면 그냥 프로젝트를 접고 싶은 마음이 점점 커져가고 포기한 프로젝트도 많아졌다.

아마도 그래서 서버리스를 배워보고 싶었던 생각이 강했던것 같다.

결론

aws 에서 serverless-http를 사용해서 구성하시려면 그냥 리전을 es-east-01에서 하세요.