Blog

[CS]47 AWS S3, EC2를 사용하는 이유와 사용 경험에 대해서 답변해주세요.

Category
Author
Tags
PinOnMain
1 more property
AWS S3, EC2를 사용하는 이유와 사용 경험에 대해서 답변해주세요.
AWS S3는 객체 스토리지 서비스로, 파일이나 데이터를 안전하게 저장하고 검색할 수 있도록 해주는 서비스입니다. EC2는 클라우드 상에서 가상 서버 컴퓨터를 제공해주는 서비스입니다. 간단히 가상의 컴퓨터를 대여한다고 생각 할 수 있습니다.
S3를 사용하면 데이터를 안전하게 저장하고 필요한 만큼 확장할 수 있습니다. EC2를 사용하면 가상 서버를 간편하게 구축하고 관리할 수 있습니다. 이렇게 서비스를 사용하면 물리적 서버를 관리할 필요가 없어지고, 필요에 따라 확장이나 축소도 쉽게 할 수 있어 효율적인 인프라 관리가 가능해집니다.
특히 AWS 인프라 내에서는 서비스간의 간편한 연결, 호환 등을 관리해줍니다. 특히 각 서버간의 연결을 위해서는 설정 파일을 직접 이해하고 정확히 연결되어야 합니다. 이러한 파일들은 모두 다른 언어로 작성되어 있을 가능성이 있고 개발자 입장에서 이해도가 부족하여 실수 할 가능성이 있는데 AWS 인프라 내에서는 이러한 부분에서 자동화 또는 서포트 해주는 역할을 내부적으로 다양하게 지원하고 있습니다.
S3와 EC2는 프로젝트 배포에서 자동화 배포인 CI/CD파이프라인을 구축 할 때 경험해보았습니다. GitHub Actions를 사용하여 AWS S3에 빌드된 애플리케이션 코드를 업로드하고, AWS CodeDeploy를 통해 EC2 인스턴스에 배포하는 파이프라인입니다.
면접답변
S3와 EC2 모두 클라우드 컴퓨터를 대여하는 서비스라고 볼 수 있고 AWS S3와 EC2는 모두 아마존 웹 서비스 인프라 내의 서비스입니다. 여기서 AWS 인프라 내 서비스를 통해 간편한 연결, 호환 등을 AWS가 관리, 쉽게 설정 할 수 있도록 도와준다는 점에서 S3와 EC2를 사용하는 큰 이유라 생각합니다.
S3와 EC2는 프로젝트 배포에서 과정에서 경험해 보았습니다. GitHub Actions를 사용하여 S3에 빌드된 소스가 업로드되고, CodeDeploy 배포서비스를 통해 EC2 인스턴스 컴퓨터에서 서비스가 실행되는 파이프라인입니다.
S3의 장점
S3는 저장 용량이 무한대이고 파일 저장에 최적화되어 있다. 용량을 추가하거나 성능을 높이는 작업이 필요없다.
비용은 EC2와 EBS로 구축하는 것보다 훨씬 저렴
S3 자체가 수천 대 이상의 매우 성능이 좋은 웹 서버로 구성되어 있어서 EC2와 EBS로 구축했을 때 처럼 Auto Scaling이나 Load Balancing에 신경쓰지 않아도 된다.
동적 웹페이지와 정적 웹페이지가 섞여있을 때 동적 웹페이지만 EC2에서 서비스하고 정적 웹페이지는 S3를 이용하면 성능도 높이고 비용도 절감.
웹하드 서비스와 비슷하지만, 별도의 클라이언트 설치나 ActiveX를 통하지 않고 HTTP 프로토콜로 파일 업로드/다운로드 처리
S3 자체로 정적 웹서비스 가능
EC2의 장점
사양, 용량을 늘리거나 줄일 수 있다. (탄력성)
사용한만큼 지불하므로 저렴하다.
사용자가 인스턴스를 완전히 제어할 수 있다.
보안 및 네트워크 구성, 스토리지 관리 효과적이다.
파이프라인 설명 추가 필요시,
1.
GitHub Actions (CI):
개발자가 코드를 GitHub에 푸시하면, GitHub Actions가 작동합니다.
CI 워크플로우는 소스 코드를 가져와 빌드하고 테스트하는 단계를 수행합니다.
2.
AWS S3 (Artifact 저장):
빌드된 애플리케이션 코드나 패키지를 AWS S3에 업로드합니다.
GitHub Actions의 AWS S3 업로드 단계에서 사용된 secrets.S3_BUCKET은 S3 버킷의 이름을 나타냅니다.
3.
AWS CodeDeploy (배포):
AWS CodeDeploy를 사용하여 배포 그룹 및 애플리케이션을 생성하고 EC2 인스턴스에 에이전트를 설치합니다.
배포 스크립트 또는 설정 파일을 사용하여 배포 프로세스를 정의합니다.
4.
EC2 인스턴스 (CD):
CodeDeploy는 EC2 인스턴스에 새로운 코드를 배포합니다.
배포 프로세스는 로드 밸런서를 사용하여 트래픽을 교체하지 않으면서 배포를 완료합니다.