필자는 현재 aws와 elastic search 를 활용해 도서 추천 프로젝트를 수행 중이다. 근데 사용자가 거의 없기도 하고 로그인 과정도 없어 ec2를 사용하지 않고 서버리스 아키텍처를 사용하고 있다.
아직 클라우드에 대해서 잘 모르지만 조사한 결과에 따르면 총 5가지 측면에서 비교할 수 있다.
1. 관리 부담 감소
2. 자동 스케일링
3. 비용 효율성
4. 개발 속도와 생산성
5. 결합도 감소
결론은 지속적으로 유지보수하지 않거나 실사용자가 적을 때는 람다로 구현해보는 것이 나쁘지 않을지도?
아키텍처는 위와 같이 구성했다. s3로 정적 호스팅하고 api gate way를 통해 동적 컨텐츠를 관리할 수 있게 설정하였다. 사실 나는 이번 프로젝트에서 처음으로 구조도를 그려보는 작업을 해서 진짜 2일만에 책 1.5권을 독파해서 그렸었다...
이게 처음 작성한 나의 비루한 구조도다... 지금은 조금 감이 잡혔지만 처음 그렸을 때는 정말 울고 싶었다.🥹 참고했던 것은 책과 aws 레퍼런스다. aws 공식 홈페이지에 구조도 참고 문서들이 많으니 나와 유사하게 처음 시작하는 분들은 아래 링크를 참고해서 그려보는 것을 추천한다.
aws 구조도
아래와 같은 과정이 수행된다.
- 람다 함수 코드 작성
- 도커 이미지 생성
- 도커 이미지 빌드 및 테스트
- 도커 이미지를 ECR에 업로드
- AWS Lambda 함수 생성
- 함수 테스트
나는 이 레퍼런스를 열심히 참고해서 올려본 경험이 있다.
여기서 겪은 시행착오는 다음과 같다.
- aws configure 설정
- IAM 권한 생성
- 지역 일치해야 함
- public ecr 링크는 lambda와 연결할 수 없음 (region이 url에 담겨있지 않아서 연결이 되지 않는다. 다들 주의하시길... lambda 함수는 public ecr 은 연결이 되지 않고 private ecr만 가능하다... 이것 때문에 거의 3일은 삽질함)
- 통신하기 위한 반환값 body 코드 수정 (이 코드 한줄 때문에 7시간은 삽질함)
위 사항들은 블로그에 작성하지는 않았지만 이미 겪은 과정들이다. 이것 외에 개발하면서 겪은 문제점이나 방법론들을 계속해서 작성해나가겠다.