서버리스 아키텍처 프로젝트의 흐름 (Feat: docker, ecr, lambda 를 사용하자)

송윤주·2024년 2월 10일
0

클라우드

목록 보기
1/8

서버리스 프로젝트 수행 중

필자는 현재 aws와 elastic search 를 활용해 도서 추천 프로젝트를 수행 중이다. 근데 사용자가 거의 없기도 하고 로그인 과정도 없어 ec2를 사용하지 않고 서버리스 아키텍처를 사용하고 있다.

EC2와 서버리스

아직 클라우드에 대해서 잘 모르지만 조사한 결과에 따르면 총 5가지 측면에서 비교할 수 있다.
1. 관리 부담 감소

  • EC2: 인스턴스 유형 선택, 운영 체제 및 소프트웨어 관리, 패치 적용, 스케일링 전략 구성 등과 같은 인프라 관리 작업이 필요하다.
  • 서버리스: AWS Lambda와 같은 서버리스 서비스는 인프라 관리를 AWS가 담당한다. 개발자는 코드 작성과 비즈니스 로직에 집중할 수 있으며, 운영 체제나 서버 관리에 신경 쓸 필요가 없다.

2. 자동 스케일링

  • EC2: 트래픽 변화에 따라 수동 또는 자동 스케일링 그룹을 설정해야 한다. 이는 추가적인 관리 작업과 구성을 필요로 한다.
  • 서버리스: Lambda는 자동으로 트래픽 변화에 따라 스케일링한다. 요청 수에 따라 자동으로 인스턴스 수를 조절하므로, 트래픽 예측이나 용량 계획에 대한 걱정 없이 서비스를 제공할 수 있다.

3. 비용 효율성

  • EC2: 인스턴스가 실행되는 동안 비용이 발생한다. 낮은 활용도에서도 최소한의 비용이 지속적으로 발생할 수 있다.
  • 서버리스: 실행 횟수와 실행 시간에 따라 비용이 발생한다. 사용하지 않을 때는 비용이 발생하지 않으므로, 비용 효율적이다. 특히 가변적 또는 간헐적인 트래픽 패턴을 가진 애플리케이션에 적합하다.

4. 개발 속도와 생산성

  • EC2: 서버 환경 구성, 배포 파이프라인 설정 등 개발 초기 단계에서 시간이 소요될 수 있다.
  • 서버리스: 배포가 간단하고 빠르다. 코드 변경이 있을 때마다 빠르게 배포할 수 있으며, 여러 환경에서의 테스트와 배포가 용이하다.

5. 결합도 감소

  • EC2: 애플리케이션의 다양한 구성 요소가 같은 서버 또는 인스턴스 그룹 내에서 실행될 수 있어, 결합도가 높아질 수 있다.
  • 서버리스: Lambda 함수는 독립적으로 실행되므로, 마이크로서비스 아키텍처를 채택하기 쉽다. 각 기능 또는 서비스가 독립적으로 배포 및 관리될 수 있어, 시스템의 결합도를 낮출 수 있다.

결론은 지속적으로 유지보수하지 않거나 실사용자가 적을 때는 람다로 구현해보는 것이 나쁘지 않을지도?

아키텍처

아키텍처는 위와 같이 구성했다. s3로 정적 호스팅하고 api gate way를 통해 동적 컨텐츠를 관리할 수 있게 설정하였다. 사실 나는 이번 프로젝트에서 처음으로 구조도를 그려보는 작업을 해서 진짜 2일만에 책 1.5권을 독파해서 그렸었다...

이게 처음 작성한 나의 비루한 구조도다... 지금은 조금 감이 잡혔지만 처음 그렸을 때는 정말 울고 싶었다.🥹 참고했던 것은 책과 aws 레퍼런스다. aws 공식 홈페이지에 구조도 참고 문서들이 많으니 나와 유사하게 처음 시작하는 분들은 아래 링크를 참고해서 그려보는 것을 추천한다.
aws 구조도

lambda 함수 올리기

아래와 같은 과정이 수행된다.

  1. 람다 함수 코드 작성
  2. 도커 이미지 생성
  3. 도커 이미지 빌드 및 테스트
  4. 도커 이미지를 ECR에 업로드
  5. AWS Lambda 함수 생성
  6. 함수 테스트

나는 이 레퍼런스를 열심히 참고해서 올려본 경험이 있다.

여기서 겪은 시행착오는 다음과 같다.

  1. aws configure 설정
  2. IAM 권한 생성
  3. 지역 일치해야 함
  4. public ecr 링크는 lambda와 연결할 수 없음 (region이 url에 담겨있지 않아서 연결이 되지 않는다. 다들 주의하시길... lambda 함수는 public ecr 은 연결이 되지 않고 private ecr만 가능하다... 이것 때문에 거의 3일은 삽질함)
  5. 통신하기 위한 반환값 body 코드 수정 (이 코드 한줄 때문에 7시간은 삽질함)

위 사항들은 블로그에 작성하지는 않았지만 이미 겪은 과정들이다. 이것 외에 개발하면서 겪은 문제점이나 방법론들을 계속해서 작성해나가겠다.

profile
모두가 정보를 습득할 수 있도록 냠냠쩝쩝 먹어보는 공간

0개의 댓글

관련 채용 정보