작은 프로젝트 단위에선 Netlify나 Vercel과 같은 Faas를 사용했었다. 프로젝트 규모가 커질 수록 직접 인프라를 설정할 일이 많을텐데 전반적인 네트워크와 인프라 지식들을 학습해보고자 AWS를 이해하는 시간을 가지려 한다.
AWS에 대해 공부하기 전에 우선 Iaas
와 Faas
두 모델의 차이점에 대해 알아보자.
Iaas
는 서버의 물리적인 부분은 기업에 돈을 내고 이용하며 소프트웨어를 직접 관리하는 방식이다. 대표적으로 아마존 AWS의 EC2 / S3 + CloudFront
나 구글의 GCP
등이 있다.
트래픽에 따라 서버의 가용량을 직접 증감시킬 수 있으므로 자유도가 높으며 호스팅 지식이 높아지면 다른 툴과의 전환이 쉽다는 장점이 있다.
사용자를 예상하고 그에 맞는 용량의 서비스를 사전에 구매하여 지불해야 하므로 손실이 날 수도 있다.
Faas
는 함수를 서비스로 제공한다.
업로드한 코드를 함수 단위로 쪼개어 대기시키다가 요청이 발생하면 함수를 실행시키고 작업이 끝나거나 일정 시간이 경과되면 대기상태로 돌아간다.
함수 호출 횟수(실제 사용량)에 따라 비용이 청구되기 때문에 경제적이다.
Iaas 보다 상대적으로 서버에 신경을 쓸 필요가 없다.
코드가 대기상태에 있다 보니 Iaas 등의 모델보다 속도가 느리다.
프로젝트 규모가 커질 경우 비용이 많이 청구될 수 있다.
AWS(Amazon Web Service)는 Amazon에서 제공하는 클라우드 서비스이다. 즉 서버나 네트워크, 스토리지 등의 인프라 자원을 가상으로 제공해준다.
S3는 데이터를 저장하거나 추출할 수 있는 온라인 스토리지 웹 서비스이다.
버킷
은 S3에서 생성할 수 있는 최상위 디렉토리로, 각 Region 별로 생성이 가능하다. 계정별로 100개까지 생성할 수 있다.객체
는 파일과 해당 파일을 설명하는 메타데이터(option)로 구성된다.EC2
는 아마존에서 크기 조정이 가능한 컴퓨팅 용량을 제공하는 웹 서비스이다.
이미지
로 새 인스턴스를 생성하면 저장된 상태 그대로 다시 컴퓨터를 생성할 수 있다.Cloud Front
란 직접 만들 수 있는 CDN (Content Delivery Network)
이다.
Client에게 빠른 전송 속도를 제공하기 위해 세계 이곳저곳에 중계서버(Edge Location)
를 두고 Client에게 가장 가까운 서버에서 웹 자원을 대신 전달하여 빠르게 데이터를 제공한다.
CDN은 세계에 널리 퍼진 중계 서버들의 집합이라고 생각하면 된다.
Origin
Edge Location(Server)