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 인스턴스에 새로운 코드를 배포합니다.
•
배포 프로세스는 로드 밸런서를 사용하여 트래픽을 교체하지 않으면서 배포를 완료합니다.