[포스코x코딩온] KDT-Web-8 7주차 회고3 - AWS EC2 & RDS

Yunes·2023년 8월 15일
0

[포스코x코딩온]

목록 보기
19/47
post-thumbnail

📚 AWS 뭔지는 알고 사용하자

아마도 AWS 의 EC2 를 사용중인 초보 개발자들이라면 그저 서버를 배포해주는 서비스! 정도로만 생각할지도 모르겠다. 그래도 뭔지는 알고 사용해야 할지 않을까?

AWS 는 아마존 닷컴의 클라우드 컴퓨팅 사업부이다. AWS 는 서버 컴퓨터를 일정 비용을 받고 제공해주는 서비스라고 생각해도 될 것 같다.

서버는 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 시스템을 말한다.

  • Cloud Service : AWS 같은 클라우드 서비스를 이용해 서버를 구축

On-Premsie : 자체적인 서버를 구축해 직접 서버를 운영하는 방식
Cloud : 직접 서버를 구축하지 않고 서버를 임대해서 사용하는 방식

클라우드 서비스에 IaaS (Infrastructure as a Service) - PaaS (Platform as a Service) - SaaS (Software as a Service) 가 있는데 IaaS 에서 SaaS 로 갈수록 컴퓨터의 low level까지 제어하는 것에서부터 점점더 추상화된 서비스를 제공하는 것이다. 즉, IaaS 는 컴퓨터를 세세히 제어한다면 SaaS 는 애플리케이션을 다운받아 쓰는 것으로 이해했다.

클라우드 서비스의 장점

서버를 임대해서 사용하는 것을 클라우드라고 했다.

그렇다보니 직접 용산전자상가에 가서 컴퓨터를 주문하고 배달을 받는 절차보다 버튼 몇번에 임대를 굉장히 빠르게 할 수 있어서 신속성이 좋고 확장과 축소에 용이해 유연성이 좋으며 서버를 사용한 시간만큼 과금되므로 경제성에도 좋다고 볼 수 있다.

이러한 클라우스 서비스로 AWS, GCP (Google Cloud Platform), Microsoft Azure, NCP (Naver Cloud Platform) 등이 있다.

기본 개념

Region

여기서 보는게 Region 인데 AWS 데이터 센터가 존재하는 물리적인 지역을 말한다. 정확하게는 AWS 의 물리적 서버가 있는 국가적 위치를 리전이라고 한다.

그래서 빠른 서비스를 이용하려면 물리적으로 가까운 Region 을 선택해야 유리하다. 또한 Region 이 여러개 있으니 물리적으로 한 데이터 센터가 사용 불가능한 상태가 되더라도 다른 리전에 백업을 구축할 수 있다.

Available Zone

한 Region 내에서 실제 데이터센터가 존재하는 영역을 나타낸다. 한 Region 내에 여러개의 Available Zone, AZ 이 존재할 수 있다.

리전 내의 물리적 서버를 지역 단위로 나눈 위치를 AZ 라고 한다.

프리티어

이 뿐만 아니라 더 다양한 AWS 의 서비스들을 무료로 사용할 수 있다.

참고로 EC2 와 RDS 가 750 시간인 이유는 24시간 * 31 = 744 이기에 넉넉히 매달 750 시간씩 사용할 수 있다는 의미다.

단! 제한된 사용량 내에서 AWS 의 서비스를 무료로 사용하니 한도를 초과하면 요금이 부과된다. 그래서 청구서나 결제 대시보드를 반드시!! 정기적으로 확인하자.

EC2 (Elastic Compute Cloud)

가상 컴퓨터를 구축할 수 있다. 쉽게 말하면 컴퓨터 하나를 임대하는 것과 같다. 이렇게 임대한 컴퓨터를 인스턴스라고 한다.

EC2 는 시간당 사용료을 지불하므로 Elastic (탄력적인) 이라는 용어를 사용한다.

EC2 인스턴스의 유형은 순식간에 t2.micro 를 선택하고 넘어갔었는데 이 유형과 뒤에 붙는 숫자는 어떤 기능에 최적화되고 있고 용량이 어떤지를 의미한다.

예를 들어 m 시리즈는 범용이고 r 시리즈는 메모리 최적화, 그리고 g 시리즈는 GPU 최적화처럼 각각의 시리즈별 최적화된 기능이 따로 존재한다. 그러나 프리티어의 경우 선택할 여지없이 t2.micro 를 선택해야 한다.

나는 솔직히 이게 좀 악랄하다고 느낀게 프리티어인데 다른 인스턴스 유형을 막아둬야 하지 않나? 선택이 가능해서 얼마든지 과금이 가능하다는게 주의가 필요하다.

EBS (Elastic Block Storage)

어제 EC2, RDS, S3 를 만드는 동안 어느샌가 왼쪽 하단에 Elastic Block Store 에 생성되어 있는 이 EBS 는 서버에 연결하는 하드디스크로 EC2 에 연결하는 Storage 이다. 즉, EC2 를 만들때 이와 관련해서 생성이 된 것으로 보인다.

그리고 사실 인스턴스 생성시 건드리지 않았던 이 스토리지 구성이 EBS 를 만드는 설정이었다. SSD 타입을 가장 범용적으로 사용하는 gp2 로 설정한 것이다.

보안그룹

보안 그룹은 네트워크의 인바운드, 아웃바운드 트래픽을 제어하는 방화벽을 설정할 수 있다.

  • 인바운드 : 인스턴스 내부로 네트워크 트래픽 접근권한을 허용한다.
  • 아웃바운드 : 인스턴스 외부로 트래픽 접근권한을 허용한다.

수업중 인바운드 규칙에 MySQL/Aurora 를 추가했던 것도 EC2 외부인 로컬환경에서 EC2 내부에 접근하여 MySQL 을 사용하고자 추가했던 것 같다. 실습중엔 0.0.0.0/0 을 설정하여 누구나 다 접근할 수 있도록 했지만 보안상 허용할 IP 를 따로 설정하는 편이 좋다.

S3 (Simple Storage Service)

C 드라이브, D 드라이브처럼 하드 디스크만 임대하는 것이다. 즉, 스토리지를 구성할 수 있도록 도와주는 서비스를 말한다.

S3 는 웹 인터페이스를 통해 스토리지를 제공한다.

용도

  • 데이터 백업 : 데이터의 유실 가능성을 생각해 데이터를 백업
  • 빅데이터 저장 : 데이터양이 너무 많아 일반 하드 드라이브에 저장하기 힘들때 S3 에 저장
  • 재해복구 : 특정 지역의 데이터센터에 문제 발생시 이에 대한 장애 복구로 S3 활용

정책 생성기를 통해 버킷 안의 모든 리소스들을 허용해주고 정적 웹 사이트 호스팅을 활성화하면 특정 index.html 을 통해 정적 웹사이트를 만들 수 있다.

RDS (Amazon Relational Database Service)

RDB 를 구축할 수 있도록 도와주는 서비스를 말한다.

RDS 는 AWS 가 서비스하는 분산 관계형 데이터베이스로 애플리케이션 내에서 관계형 데이터베이스의 설정, 운영, 스케일링을 단순하게 하도록 설계된 클라우드 내에서 동작하는 웹서비스이다.

DynamoDB

NoSQL DB 를 구축할 수 있도록 도와주는 서비스를 말한다.

NoSQL DB : RDB 와 달리 스키마 없이 상대적으로 느슨한 구조를 이용해 데이터를 저장하는 데이터베이스

NoQL 장점

  • 스키마가 존재하지 않아서 다양한 데이터를 효율적으로 저장할 수 있다.
  • 데이터베이스를 수평적으로 확장할 수 있다.
  • 대용량 로그 데이터 저장에 적합하다.

DynamoDB 는 키 - 값 및 문서 데이터 구조를 지원하는 완전 관리형 독점 NoSQL 데이터베이스 서비스이다. 즉, AWS 에서 사용할 수 있는 NoSQL 형태의 데이터베이스를 말한다.

참고로 DynamoDB 도 프리티어로 생성할 수 있다.

테이블 생성하기

항목 생성하기

항목 검색하기

DynamoDB 삭제하기

Elastic IP, 탄력적 IP

EC2 인스턴스는 한번 인스턴스를 중지하면 퍼블릭 IP 가 바뀐다. 정확하게는 중지하면 퍼블릭 IP 가 사라지고

다시 인스턴스를 시작하면 퍼블릭 IP 주소가 바뀐다.

탄력적 IP 를 만들어 인스턴스에 연결하면 인스턴스가 중지되든 말든 상관없이 항상 고정적인 IP 를 유지할 수 있다.

주의! 탄력적 IP 를 만들고 인스턴스에 연결하면 요금이 부과되지 않으나 인스턴스에 연결하지 않으면 요금이 부과된다.

AMI (Amazon Machine Image)

인스턴스의 현재 상태를 이미지 형태로 만들어주는 서비스이다.

EC2 인스턴스를 만들때 Ubuntu 를 선택했던 이것이 AMI 이다.

AMI 는 OS, 기타 프로그램, 파일 등이 설치된 상태의 EC2 인스턴스를 말한다. 위에서 Ubuntu 를 선택했으니 EC2 인스턴스에 Ubuntu 가 설치되어 있는 상태로 대여했다고 보면 된다.

IAM (Amazon Identity and Access Management)

AWS 사용자 및 그룹을 만들고 관리하며 AWS 리소스에 대한 액세스를 허용 및 거부할 수 있는 기능이다.

AWS 에 로그인시 AWS 사용자를 루트 사용자와 IAM 사용자로 선택하라는 문구를 기억할 것이다.

루트 사용자는 수퍼권한? 모든 권한을 갖고 이 계정을 사용하긴 하는데 할 수 있는 권한을 제한하고 그룹화시키고 싶을때 IAM 사용자를 만들어 각 사용자별 실행할 수 있는 범위와 정책을 설정할 수 있다.

기본적으로 자신의 계정을 사용할때는 루트 사용자로 로그인하기에 이 기능을 쓸 일이 없을수도 있는다. 그러나 협업시 같은 계정을 공유한다고 할때 루트 사용자로 로그인하도록 하면 무슨 일이 생겼을때 책임을 져야 할 수도 있으니 애초에 문제가 발생할 수 없도록 권한을 제한해두는 IAM 사용자 로그인 정보를 협업하는 동료들에게 제공할 수 있다.

CloudFront

손쉽게 CDN 을 구축할 수 있도록 도와주는 서비스이다.

AWS CloudFront는 동영상이나 데이터, API 등을 전 세계 고객에게 제공할때 안전하고 빠르게 전송하는 고속 콘텐츠 전송 네트워크 서비스 (CDN) 를 말한다.

CDN (Content delivery network / content distribution network)

  • 콘텐츠를 효율적으로 전달하기 위해 여러 노드를 가진 네트워크에 데이터를 저장하여 제공하는 시스템
  • 높은 사용성과 효율로 사용자에게 컨텐츠를 제공하고자 한다.

CloudFront 는 S3 에서 생성한 버킷에 CloudFront 를 연결하여 CDN 을 구축할 수 있도록 해준다.

CloudWatch

모니터링을 도와주는 서비스이다.

CloudWatch 는 애플리케이션을 모니터링하고 시스템 전반의 성능 변경 사항에 대응하며 리소스 사용률을 최적화하고 운영 상태에 대한 통합된 보기를 확보하는데 필요한 데이터를 제공한다.

CloudWatch 는 인스턴스 - 작업 - 모니터링 및 문제해결 - CloudWatch 경보 관리를 통해 EC2 를 모니터링할 수 있게 해준다.

그냥 모니터링하는 것도 가능하지만 경보를 설정해서 CPU 사용량처럼 특정 분야에서 제한을 걸어둔 것을 초과할때 내가 지정해둔 이메일로 경고 메일을 전송하도록 할 수도 있다.
확실히 이런 것들을 알아두면 내 생각보다 더 많이 과금되는 상황을 방지할 수 있을 것 같다.

ELB (Elastic Load Balancing)

로드 밸런싱을 도와주는 서비스이다.

ELB 는 애플리케이션 트래픽을 EC2 인스턴스, 컨테이너, IP 주소, Lambda 함수 등의 여러 대상에 자동으로 분산시킨다.

Scale UP : 서버 1대의 성능을 증가시킨다.
Scale Out : 서버의 개수를 여러 대의 노드로 늘려서 트래픽을 분산, 분배한다.
Load Balancing : 하나의 인터넷 서비스가 발생하는 트래픽이 많을 때 여러 대의 서버가 분산처리하여 서버의 로드율 증가, 부하량, 속도 저하 등을 고려해 적절히 분산처리하여 해결해주는 서비스를 말한다.

ELB 는 Round-Robin 알고리즘을 사용하는데 이는 1~6 의 요청이 있으면 트래픽을 1번씩 돌아가면서 분배하는 방식의 알고리즘이다. 그래서 1은 EC2, 2 는 컨테이너, 3은 IP 주소, 4 는 Lambda 5는 다시 EC2 ... 이런 방식이다.

Auto Scaling

유동적인 서버 확장과 축소를 도와주는 서비스이다.

AWS Auto Scaling 은 애플리케이션을 모니터링하고 용량을 자동으로 조정하여 최대한 저렴한 비용으로 안정적이고 예측 가능한 성능을 유지할 수 있게 한다. 전체에서 여러 리소스에 대해 애플리케이션 규모 조정을 설정할 수 있다.

트래픽이 몰릴때 EC2 서버 개수를 자동으로 늘리고 트래픽이 적을때는 EC2 서버의 개수를 자동으로 줄인다.

Beanstalk

편리하게 어플리케이션을 배포할 수 있도록 도와주는 서비스이다.

AWS Elastic Beanstalk 을 사용하면 애플리케이션을 실행하는 인프라에 대해 자세히 알지 못해도 AWS 에서 애플리케이션을 빠르게 배포, 관리할 수 있다.

SES (Simple Email Service)

개발자가 모든 애플리케이션에서 이메일을 보낼 수 있는 경제적이고 유연하며 확장 가능한 이메일 서비스이다.

트랜잭션, 마케팅 혹은 대량 이메일 커뮤니케이션을 포함한 다수의 이메일 사용을 지원할 수 있다. SES 를 사용하면 대규모 이메일을 안전하게 전 세계로 보낼 수 있다.

📔 레퍼런스

cousre
Udemy - 실습으로 배우는 AWS 핵심 서비스

profile
미래의 나를 만들어나가는 한 개발자의 블로그입니다.

0개의 댓글