내일배움캠프 39일차 개발일지

김광훈·2021년 10월 28일
2

TIL(Today I Learned)

목록 보기
32/49
post-thumbnail

백엔드 서버리스

오늘은 백엔드 부분 서버리스 실습을 진행했다. EC2로 서버를 구성했을 때는 확장성, 갑작스러운 트레픽 증가 금액적인 부분에서 문제가 발생할 수 있어 나와 같이 스타트업 또는 실험적인 서비스를 제공할 때는 AWS에서 제공하는 lambda를 이용해서 서버리스 백엔드를 구성한다고 한다. 특이하게도 lambda는 기존의 파이썬 FLASK 프레임워크에서처럼 모든 API가 담긴 파일을 올리는 것이 아니라 함수별로 쪼개서 API를 만들 수 가 있었다. 덕분에 다른 API에 문제가 발생해도 해당 API외에는 다른 곳에는 문제가 발생하지 않을 것 같아서 굉장히 유용해 보였다. 점점 어떻게 우리 프로젝트를 쪼개서 서비스를 사람들에게 제공해야할지 감이 잡혀오는 것 같다. 아주 아주 바람직하다고 생각한다.


오늘 한 일

  • AWS lambda 생성
  • AWS API Gateway 연동
  • AWS RDS 생성
  • AWS RDS secretmanager 생성
  • AWS lambda VPC 설정
  • AWS NAT 게이트웨이 생성 및 설정

✔서버리스 개념

  • 서버리스(Serverless) : 클라우드에서 서버를 빌려쓰는 형태에서 나아가서 서버를 관리해주는 것

  • 클라우드(Cloud) : 인터넷 통신망 어딘가에서 컴퓨팅 자원(CPU,메모리,디스크)을 원하는대로 가져다 쓸 수 있는 서비스. 내가 물리적으로 서버를 구축하지 않아도 인터넷 통신망에서 제공하는 클라우드 서비스를 이용하면 클릭만으로 서버를 구축할 수 있다.

  • 웹 호스팅(Web Hosting) : 호스팅 업체의 서버 중 일부(공간)만 임대해주는 서비스

  • 서버 호스팅(Server Hosting) : 호스팅 업체의 물리 서버를 단독으로 임대/구매하여 사용 서버 운영에 필요한 인프라와 기술력까지 제공받는 것

  • Lambda : AWS에서 제공하는 서비스로 S3처럼 백엔드를 Serverless로 운영할 수 있는 서비스이다.

  • Lambda VS 레거시

    • Lambda : 기본적으로 함수 단위로 배포한다.
    • 레거시 : 모든 기능을 포함하고 있는 전체를 배포하는 방식이다.
  • API Gateway : 백엔드 서비스 또는 데이터와 접속하고 API 호출에 대한 정책, 인증 및 일반 액세스 제어를 적용하여 중요한 데이터를 보호하는 트래픽 관리자이다. AWS에서의 Gateway서비스는 나아가 HTTP URL, METHOD(GET,POST등)을 만들어 주어 API 엔드포인트 역할도 갖고 있다.

  • Lambda private VPC : Lambda는 AWS에서 프라이빗한 VPC에서 관리되도록 권장하고 있다. 이때, 인터넷에서 클라이언트로 부터 API호출을 정상적으로 받기 위해 Nat Gateway를 설정해주어야한다.

    • VPC/Subnet : VPC는 아마존에서 사용자가 논리적으로 네트워크를 나눌 수 있게 만들기 위해 주어진 서비스로 대게 Public,Private 두가지로 나누어 사용된다. Subnet은 VPC의 IP주소 범위로 인터넷이 연결된 라우터에 서브넷이 연결되어 있는걸 Public 서브넷, 프라이빗한 VPC에 연결된 서브넷을 Private 서브넷이라 한다.
    • Routing Table : 서브넷에서 발생하는 아웃바운드 트래픽의 경로를 지정하는 테이블이다. 이를 통해서 람다의 트래픽을 NAT Gateway로, Nat Gateway의 트래픽을 IGW로 보낼 것이다.
    • IGW / NAT GW : 둘 모두 VPC내의 인터넷에 접근할 수 있게 해주는 서비스이다. 하지만, IGW(Internet Gateway)는 VPC에 연결하여 VPC와 외부 인터넷을 연결해주는 Gateway이고. NAT GW(NAT Gateway)는 사설 IP를 공인 IP로 바꾸어주는 일을 해준다. 즉 Public Subnet에 위치하여 Private Subnet(Lambda)의 요청을 받아 공인 IP를 추가하고 IGW에 패킷을 전달하여 인터넷에 접속할 수 있도록 도와준다
    • 순서
      1. IGW가 연결된 라우트를 만든다.(기존의 VPC가 이에 해당됨)
      2. NAT Gateway를 Public Subnet을 이용해 생성한다.
      3. Nat GateWay가 연결된 라우트를 만들고 이 라우트에 private subnet(lambda subnet)를 연결한다.
      4. 이렇게 하면 프라이빗한 람다 구조가 완성된다. 이러한 과정이 아래 그림과 같은 형태이다

✔생각 정리

서버리스 개념 정리 차곡차곡 해나가자!

<참조>
https://library.gabia.com/contents/infrahosting/9114/ 클라우드란 무엇인가 – 개념, 장점, 서비스 구분
https://www.tibco.com/ko/reference-center/what-is-an-api-gateway API 게이트웨이이란 무엇입니까?
https://medium.com/@kimjnsjwj/vpc%EB%82%B4%EC%9D%98-aws-lambda%EC%9D%98-%EC%9D%B8%ED%84%B0%EB%84%B7-%EC%A0%91%EC%86%8D-bc503e9940f5 VPC내의 AWS Lambda의 인터넷 접속

profile
잘 부탁드려요

0개의 댓글