본문 바로가기
개인공부

AWS + 면접질문추가

by 뭉지야 2023. 11. 17.
728x90

AWS에 대해 공부하기 전에 우선 Iaas와 Faas  두 모델에 대해서 알아보자.

작은 프로젝트 단위에선 Netlify나 Vercel같은 Faas를 사용한다.

 

Iaas(Intrastructure as a Service)
서버의 물리적인 부분은 기업에 돈을 내고 이용하며 소프트웨어를 직접 관리하는 방식이다. 
대표적으로 아마존 AWS의 EC2, S3나 구글의 GCP 등이 있다.

 

장점

-트래픽에 따라 서버의 가용량을 직접 증감시킬 수 있으므로 자유도가 높으며 호스팅 지식이 높아지면 다른 툴과의 전환이 쉽다는 장점이 있다.

 

단점

-사용자를 예상하고 그에 맞는 용량의 서비스를 사전에 구매하여 지불해야 하므로 손실이 날수도 있다.

 

Faas(Function as a Service)

함수를 서비스로 제공한다.

업로드한 코드를 함수 단위로 쪼개어 대기시키다가 요청이 발생하면 함수를 실행시키고 작업이 끝나거나 일정 시간이 경과되면 대기상태고 돌아간다.

 

장점

-함수 호출 횟수(실제 사용량)에 따라 비용이 청구되기 때문에 경제적이다.

-Iaas 보다 상대적으로 서버에 신경을 쓸 필요가 없다.

 

단점

-코드가 대기상태에 있다 보니 Iaas 등의 모델보다 속도가 느리다.

-프로젝트 규모가 커질 경우 비용이 많이 청구될 수 있다.


 

AWS
AWS는 Amazon Web Service, 즉 아마존에서 제공하는 클라우드 서비스이다. 현재 가장 유명하고 많이 쓰인다고 할수 있다. 
AWS같은 클라우드 서비스는 직접 물리적 기기를 관리할 필요가 없고 사용량에 따른 유연한 비용과 서버의 스펙을 원격으로 조절할 수 있는 등의 편리한 점이 많다.

 


S3
simple storage service

-정적 웹사이트 호스팅.
-클라우드 공간에 데이터(파일)를 저장하고 사용자에게 제공해주는 온라인 스토리지 웹 서비스이다.
AWS 콘솔을 통해서 업로드, 다운로드가 가능하고 http를 통한 접근이 가능하기 때문에 브라우저를 통한 서비스가 가능하다. 일반적인 시스템과는 파일(또는 데이터) 다르게
key, value 조합인 객체 타입의 구조로 구성된다. key는 파일 혹은 데이터 이름 value 파일 혹은 데이터 그 자체를 말한다.

S3장점
정적인 html이나 이미지 등을 제공하는데 용이하다.
대량 트래픽에 대응하기 위한 시스템 구축이 필요없다.
권한 및 캐싱 전략을 쉽게 추가 할수 있다.

 

정적 웹 사이트 호스팅
-언제, 어디서 , 누가 접속해도 항상 정해진 리소스만을 보여주는 웹 사이트.
-프로그래머가 미리 작성해놓은 파일들을 서버에 저장해놓고, 요청이 들어올때마다 별도의 가공 없이 그대로 클라이언트의 브라우저에 전달해주는 것.


동적 웹 사이트
-변화하는 데이터를 받아와서 상황에 따라 매번 다른 내용을 보여주는 웹 사이트

 


EC2
Elastic compute cloud
aws에서 제공하는 가상 컴퓨터 머신이라고 생각하면 된다. 기존의 웹 서버를 구축하기 위해서 사용한다.
기존에는 웹서비스를 제공하기 위해서 직접 물리적인 서버를 구축하거나 호스팅 업체에서 제공하는 서버의 서비스를 사용한다. 컴퓨터의 용량이나 트래픽을
시작부터 정해서 특정 공간을 임대하는 방시이다 보니 사용량이 몰릴때 유연하게 대처하기 어렵다.
aws에서 ec2를 사용하게 되면 웹 서비스 제공자들은 실제 물리적 서버나 시스템에 대해서 구축하고 신경 쓸 필요가 없다. 트래픽이 몰리거나 컴퓨터 머신의 업그레이드가
필요하면 aws 웹 콘솔에서 바로 기능을 올리거나 용량을 증가하는 등의 유연한 대처가 가능하다.
ec2라는 가상의 공간에 원하는 OS나 프로그램을 설치하고 서버를 구축할수 있다. 인스턴스라는 것은 EC2 내부 1대의 가상 컴퓨터를 말한다.

 


왜 S3를 선택했나? (MoonFlix 프로젝트의경우)
S3가 거대한 하드디스크라면, EC2는 하나의 거대한 컴퓨터를 빌린다고 생각하면 된다.
EC2에다가 특정 소프트웨어나 어플리케이션을 설치하여 실행시킬 수 있다.
EC2는 말 그대로 컴퓨터를 하나 통째로 빌리는 것이므로 서버를 밑바닥부터 설정할 수 있다.
그래서 보통 서버 로직을 올려놓고 구동시켜놓는 서버 컴퓨터 용도로 사용한다.

프론트 서버를 EC2로 구성하는 경우는 대개 프론트 서버에서 로직을 돌려야 하는 경우, 즉 SSR이다.
SSR을 위해서는 렌더링 로직을 프론트 서버에서 구동하여 그 결과로 생성되는 HTML 파일과 JS파일을 클라이언트(브라우저)에게 전송해야 하기 때문.

moonFlix 프로젝트 같은 경우는 CSR을 사용하는 SPA이기 때문에 프론트 서버는 그저 정적인 파일(HTML, CSS, JS)을 전달해주는 용도로만 사용된다. 
로직이 전혀 필요없다. 그래서 굳이 불필요한 비용을 들여가며 서버를 EC2로 구성할 필요가 없었고, S3의 정적 웹 사이트 호스팅 서비스를 이용하는 것만으로 
충분할 거라고 판단했다.


참고할블로그

https://iborymagic.tistory.com/94

728x90