|
|
Amazon EC2 (Elastic Compute Cloud)은 Amazon Web Services(AWS)에서 제공하는 가상 서버 서비스이다. 사용자가 필요한 만큼의 컴퓨팅 용량을 손쉽게 스케일 업 또는 다운할 수 있게 해준다. EC2를 사용하면 물리적인 하드웨어를 직접 관리할 필요 없이 클라우드에서 가상 서버를 쉽게 시작하고 관리할 수 있다.
🐾 주요 기능 및 특징
1. 확장성(Scalability) : 사용자는 필요한 만큼 인스턴스를 생성하고 종료할 수 있어, 비즈니스 요구에 따라 서버 자원을 동적으로 확장하거나 축소할 수 있다. 자동 확장(Auto Scaling) 기능을 통해 트래픽이 증가하거나 감소할 때 자동으로 인스턴스를 추가하거나 제거할 수 있다.
2. 유연성(Flexibility) : 다양한 인스턴스( 애플리케이션을 실행할 수 있는 가상 서버 ) 유형을 선택할 수 있으며, 각각의 인스턴스는 CPU, 메모리, 스토리지, 네트워크 성능을 조정할 수 있는 옵션이 있다. 사용자는 다양한 운영 체제(OS) (예: Linux, Windows)를 선택하여 인스턴스를 구성할 수 있다.
3. 종량제 요금(Pay-As-You-Go) : 사용한 만큼만 비용을 지불하는 종량제 모델을 채택하여, 사용자는 실제로 사용하는 시간 및 리소스에 대해서만 요금을 지불한다.
4. 보안(Security) : EC2 인스턴스는 Virtual Private Cloud(VPC) 내에서 실행되며, 네트워크 트래픽을 제어하기 위해 보안 그룹과 네트워크 ACL을 사용할 수 있다.
AWS Identity and Access Management (IAM)을 사용하여 사용자와 애플리케이션에 대한 접근 제어를 세밀하게 관리할 수 있다.
5. 가용성(Availability) : 여러 리전(Region)과 가용 영역(Availability Zone)에서 인스턴스를 실행할 수 있어, 높은 가용성과 재해 복구를 지원한다.
Elastic Load Balancing (ELB) 기능을 통해 여러 인스턴스에 대한 트래픽을 분산시켜 가용성과 성능을 향상시킬 수 있다.
6. 네트워킹(Networking) : Elastic IP를 통해 인스턴스에 고정 IP를 할당할 수 있으며, 각 인스턴스는 고유의 공용 및 사설 IP를 가질 수 있다.
Elastic Network Interface (ENI)를 사용해 하나의 인스턴스에 여러 네트워크 인터페이스를 연결할 수 있다.
7. 스토리지(Storage) : Amazon Elastic Block Store (EBS)를 사용하여 영구적인 블록 스토리지를 제공하며, EBS 볼륨은 인스턴스가 중지되거나 재부팅되어도 데이터를 유지한다. Amazon S3와의 통합을 통해 객체 스토리지와의 연동이 가능한다.
8. 관리 및 모니터링(Management & Monitoring) : AWS Management Console, AWS CLI, SDK를 통해 EC2 인스턴스를 손쉽게 관리할 수 있다.
9. 템플릿 및 배포(Templates & Deployment) : Amazon Machine Images (AMI)를 통해 인스턴스 템플릿을 생성하고 관리할 수 있어, 동일한 설정을 가진 인스턴스를 쉽게 배포할 수 있다.
| AMI란 일종의 EC2를 시작하기 위한 기본 세팅의 모음이며, EC2 인스턴스를 실행하기 위해 필요한 정보를 모은 단위이다. - OS, 아키텍쳐 타입, 저장공간 용량 등 AWS의 AMI 정의 : AMI는 인스턴스를 시작하는 데 필요한 정보를 제공, 인스턴스 시작 시 AMI를 지정해야 한다. 동일한 구성의 인스턴스가 여러 개 필요할 때 한 AMI에서 여러 인스턴스 시작이 가능하다. 서로 다른 구성의 인스턴스가 필요할 때 다양한 AMI를 사용해 인스턴스를 시작하면 된다. AMI는 다음을 포함한다. - 1개 이상의 EBS 스냅샷 또는 인스턴스 저장 지원 AMI 경우 인스턴스의 루트 볼륨에 대한 템플릿(ex: 운영체제, 애플리케이션 서버, 애플리케이션) - AMI를 사용해 인스턴스를 시작할 수 있는 AWS 계정을 제어하는 시작 권한 - 시작될 때 인스턴스에 연결할 볼륨을 지정하는 블록 디바이스 매핑 AMI 만드는 과정 - EBS를 스냅샷을 뜸(OS 파일 시작권한이 포함) 그 후 S3에 저장한다.(내부적으로 자동진행) 그 후 AMI 등록 - AMI는 기본적으로 제공되는 것도 있고 내가 원하는 것에 복사해 나만의 AMI 제작이 가능, 타인과 공유가 가능하다. - 백업용으로 최적의 구성을 만든 후 AMI에 저장할 수 있다. - AMI 가지고 새로운 EC2 실행이 가능하고 AMI 복사 후 다른사람에게 넘겨주는게 가능 스냅샷이란 incremental 타입이다. EBS(Elastic Block Store, 영구 블록 스토리지 볼륨(하드디스크를 연상하자) 제공)에 대한 이미지를 생성한다. 그 후 바뀔 때 마다 기존 이미지에서 바뀐 부분만 저장(생성,삭제 모두 다)하기 때문에 용량이 많이 줄어든다. 비용을 절약할 수 있다. |
😎 주요 사용 사례
1. 웹 호스팅 및 애플리케이션 호스팅(Web and Application Hosting) : EC2 인스턴스를 사용하여 웹사이트, 블로그, 전자 상거래 사이트 및 다양한 애플리케이션을 호스팅할 수 있다.
2. 데이터 처리 및 분석(Data Processing and Analytics) : 대규모 데이터 처리 작업(예: 빅 데이터 분석, ETL 작업)을 수행할 때 EC2 인스턴스를 사용해 Hadoop 클러스터 또는 Spark 작업을 배포할 수 있다.
3. 백엔드 서버(Backend Servers) : 모바일 애플리케이션, 웹 애플리케이션, IoT 디바이스 등을 위한 백엔드 서버로 EC2 인스턴스를 활용할 수 있다.
4. 테스트 및 개발 환경(Test and Development Environments) : 개발자들이 테스트와 개발을 위해 독립된 환경을 쉽게 생성하고 관리할 수 있다.
5. 고성능 컴퓨팅(High Performance Computing, HPC) : 과학 연구, 기후 모델링, 금융 시뮬레이션, 유전자 분석 등 계산 집약적인 작업을 수행하기 위해 EC2의 고성능 인스턴스(예: GPU 인스턴스, CPU 인스턴스)를 활용할 수 있다. 병렬 처리와 클러스터링을 통해 대규모 계산 작업을 수행할 수 있다.
6. 재해 복구 및 백업(Disaster Recovery and Backup) : 재해 복구 계획의 일환으로 EC2 인스턴스를 사용해 신속하게 대체 서버를 배포할 수 있다. 또한, 백업 데이터를 EC2 인스턴스에서 복원하여 긴급한 상황에 대응할 수 있다.
7. 마이크로서비스 및 컨테이너 오케스트레이션(Microservices and Container Orchestration) : 마이크로서비스 아키텍처를 채택한 애플리케이션을 위해 EC2 인스턴스를 Kubernetes 또는 Docker Swarm과 같은 컨테이너 오케스트레이션 도구와 함께 사용하여 확장 가능하고 독립적인 서비스들을 운영할 수 있다.
8. 게임 서버(Game Servers) : EC2 인스턴스를 사용하여 온라인 멀티플레이어 게임 서버를 운영할 수 있다.
9. 빅 데이터 분석(Big Data Analytics) : Amazon EMR(Elastic MapReduce)와 결합하여 대규모 데이터를 처리하고 분석하는 데 EC2 인스턴스를 사용할 수 있다. 데이터 웨어하우스, 로그 분석, 클릭스트림 분석 등 다양한 빅 데이터 분석 워크로드에 적합하다.
10. CI/CD 파이프라인 구축(Continuous Integration and Continuous Deployment Pipelines) : EC2 인스턴스를 사용하여 Jenkins, GitLab CI/CD 등 지속적 통합 및 배포 환경을 구축할 수 있다.
EC2 인스턴스 유형 https://aws.amazon.com/ko/ec2/instance-types/
EC2 가격 안내 https://aws.amazon.com/ko/ec2/pricing/
🐾 시작하기
1. AWS 계정 생성
: AWS EC2를 사용하려면 먼저 AWS 계정이 필요하다. AWS 공식 웹사이트에서 계정을 생성할 수 있다.
계정을 생성한 후에는 AWS Management Console에 로그인한다.
참고 : 보안을 강화하기 위한 목적으로 AWS 계정에 2단계 보안 인증을 설정하는 방법
😊 https://jsikim1.tistory.com/279
2. EC2 대시보드로 이동
: AWS Management Console에 로그인한 후, "EC2"를 검색하거나 서비스 목록에서 "EC2"를 선택한다.
EC2 대시보드에 접속하면 인스턴스, 키 페어, 보안 그룹 등을 관리할 수 있는 화면이 나타난다.
3. 인스턴스 생성 (Launch Instance) : Launch Instance 버튼을 클릭하여 새 인스턴스를 생성.
인스턴스 시작 마법사에서 다음 단계를 따른다.
1) Amazon Machine Image (AMI) 선택: Amazon에서 제공하는 다양한 AMI 중 하나를 선택한다. 예를 들어, Amazon Linux 2, Ubuntu, Windows Server 등의 운영 체제를 선택할 수 있다.
2) 인스턴스 유형 선택: CPU, 메모리, 네트워크 성능 등을 결정한다. 초보자의 경우 t2.micro와 같은 무료 티어(Free Tier) 인스턴스를 선택할 수 있다.
3) 인스턴스 세부 정보 구성: 인스턴스 수, 네트워크 설정(VPC, 서브넷 등), 자동 할당된 퍼블릭 IP 여부 등을 설정한다. 기본 설정을 사용할 수도 있고, 필요에 따라 세부 사항을 조정할 수 있다.
4) 스토리지 구성: 인스턴스에 연결할 EBS 볼륨(스토리지)을 구성한다. 기본 값으로 설정된 루트 볼륨 외에 추가 스토리지를 연결할 수 있다.
5) 태그 추가: 인스턴스에 태그를 추가하여 나중에 쉽게 식별할 수 있다. 예를 들어, Name 태그를 사용해 인스턴스에 이름을 지정할 수 있다.
6) 보안 그룹 구성: 인스턴스에 대한 트래픽을 제어하는 보안 그룹을 설정한다. 기본적으로 SSH(리눅스) 또는 RDP(윈도우) 액세스를 허용하는 규칙을 설정한다.
7) 키 페어 생성: 인스턴스에 접속하기 위한 SSH 키 페어를 생성한다. 이미 키 페어가 있는 경우 기존 키 페어를 선택할 수 있다. 키 페어는 .pem 파일로 다운로드되며, 이를 분실하지 않도록 안전하게 보관해야 한다.
4. 인스턴스 시작 : 모든 설정을 완료하면 "Launch Instance" 버튼을 클릭하여 인스턴스를 시작한다. 인스턴스가 시작되면 EC2 대시보드에서 상태를 확인할 수 있다. 인스턴스가 "Running" 상태가 되면 준비가 완료된 것이다.
5. 인스턴스에 접속 : Linux 인스턴스: SSH를 사용해 터미널에서 접속한다.
예를 들어, 다음과 같은 명령을 사용할 수 있다.
bash 쉘에서 ssh -i /path/to/your-key.pem ec2-user@your-ec2-public-ip
Windows 인스턴스: RDP(Remote Desktop Protocol)을 사용해 접속한다. RDP 클라이언트를 사용해 퍼블릭 IP와 관리자 암호를 입력하여 접속할 수 있다.
6. 인스턴스 관리 및 종료 : EC2 대시보드에서 인스턴스를 시작, 중지, 재부팅, 종료할 수 있다. 사용이 끝나면 인스턴스를 종료(Terminate)하여 비용 발생을 방지할 수 있다.
7. 추가 설정 및 서비스 탐색 : EC2와 함께 사용할 수 있는 다양한 AWS 서비스를 탐색할 수 있다. 예를 들어, ELB(Elastic Load Balancing), Auto Scaling, CloudWatch 등을 사용해 인프라를 더욱 효율적으로 운영할 수 있다. 이 과정은 EC2를 시작하는 데 필요한 기본적인 절차이다. 각 단계는 AWS의 강력한 기능들을 이해하고 사용하는 데 중요한 기초를 제공한다.
👄 참고 : 과금 청구 비용 크기 제한 후 80% 초과시 메세지 받기
👄 참고 : 보안 그룹 변경 방법
- AWS Management Console에서 EC2 대시보드로 이동.
- 인스턴스(Instances) 메뉴에서 보안 그룹을 변경하고자 하는 인스턴스를 선택.
- 상단 메뉴에서 "작업(Actions)" 클릭.
- "보안(Security)" > "보안 그룹 변경(Change Security Groups)" 옵션을 선택.
- 보안 그룹 변경 창이 열리면, 이미 연결된 보안 그룹을 확인할 수 있다. 여기에서 새로 적용할 보안 그룹(mygroup)을 선택하고, 필요에 따라 기존 보안 그룹을 제거.
- 변경 사항을 저장(Save)
이 단계를 통해 선택한 보안 그룹을 인스턴스에 적용할 수 있다.
AWS는 글로벌 클라우드 서비스이다. 따라서 AWS에서 제공되는 클라우드 컴퓨팅 리소스들은 미국에서만 호스팅 되지 않고, 전세계 각국에서 호스팅된다. 이때 이 호스팅되는 위치를 지리적 관점으로 영역을 구분하는데, 이를 리전(Region)이라고 한다. 예를들어 한국 서울에서 호스팅 되는 영역은 서울 리전이라고 이야기 한다. 이렇게 전세계에 물리적으로 호스팅 영역을 구분해놓았기 때문에, AWS 사용자는 서비스될 국가와 가장 가까운 리전을 선택하여 빠른 속도를 낼 수 있게 되었다. 또한 한 국가에서만 호스팅되고 있지 않고, 전 세계로 영역이 분산되어 있기 때문에 천재지변 등의 불가항력에 대해 대처할 수 있다.
Amazon EC2의 Amazon Machine Images(AMI) :
: Amazon Machine Image(AMI)는 Amazon EC2 인스턴스를 설정하고 부팅하는 데 필요한 소프트웨어를 제공하는 이미지.
: 가상 서버를 생성하기 위한 템플릿이며, 인스턴스를 실행하는데 필요한 정보를 포함하고 있으며, 운영 체제(OS), 애플리케이션 서버, 애플리케이션 소프트웨어, 설정 데이터 등을 포함하여 생성할 수 있다.
Amazon EC2의 Amazon Machine Images(AMI) https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/AMIs.html
EC2 + RDS 연동하기 https://velog.io/@softwarerbfl/AWS-EC2-RDS-%EC%97%B0%EA%B2%B0%ED%95%98%EA%B8%B0
https://eun-dolphin.tistory.com/18
AWS 공식 문서와 튜토리얼 https://aws.amazon.com/ko/blogs/korea/ko-documentation/