Cloud

[Cloud] AWS Cloud 기초 part 1

꾸준함. 2024. 5. 13. 19:34

서론

사내 온라인 강의 내용을 정리한 글입니다.

틀린 내용이 있을 수 있으니, 발견되면 댓글로 지적해 주시기 바랍니다!

 

1. AWS(Amazon Web Services)

  • 컴퓨팅, 스토리지, 데이터베이스, 분석 등등 광범위한 글로벌 클라우드 기반 제품 제공 업체
  • 클라우드 제공 업체 (Cloud Service Provider)
  • 2006년에 서비스를 시작했고 클라우드 컴퓨팅 시장에 초기에 진입해서 광범위한 경험을 쌓음
  • 200개 이상의 클라우드 서비스를 제공하고 있고 컴퓨팅, 스토리지, 데이터베이스, 인공지능, 머신러닝, IOT 등 다양한 영역에 걸쳐져 있음
    • 이 다양성은 사용자가 필요한 모든 IT 서비스를 하나의 플랫폼에서 이용할 수 있게 함

 

  • AWS는 전 세계에 분산된 데이터센터를 보유하고 있기 때문에 지리적으로 분산된 사용자들에게 안정성과 성능을 제공
  • 대규모의 글로벌 인프라는 사용자에게 신속하고 안정적인 서비스를 제공할 수 있도록 지원
  • 강력한 보안 기능과 규정 준수를 갖추고 있어 다양한 업종과 규모의 고객들에게 안전하게 데이터를 저장하고 처리할 수 있는 환경 제공
    • 다양한 보안 도구 그리고 서비스를 활용해서 사용자가 데이터를 안전하게 관리할 수 있게 지원

 

  • 풍부한 문서, 튜토리얼, 커뮤니티 포럼 제공

 

1.1 AWS 특징

  • 전 세계적으로 분포된 데이터 센터가 200개가 넘는 완벽한 기능의 서비스를 제공하는 세계적으로 가장 포괄적이며 널리 채택되고 있는 클라우드
  • 빠르게 성장하는 스타트업이자 가장 큰 규모의 엔터프라이즈이며 주요 정부기관을 포함해서 수백만명의 고객이 AWS를 사용하여 비용을 절감하고 민첩성을 향상하고 더 빠르게 혁신하고 있음
  • 전 세계적으로 수백만 명의 활동 고객과 수만 개의 파트너로 이루어진 가장 역동적인 최대 규모의 커뮤니티를 갖추고 있음
    • 스타트업, 엔터프라이즈, 공공 부문 이러한 조직을 비롯해서 규모에 상관없이 거의 모든 산업의 고객이 AWS에서 다양한 사용 사례를 운영하고 있음

 

  • AWS는 컴퓨팅 스토리지 데이터베이스와 같은 인프라 기술부터 머신러닝, 인공지능, 데이터 레이크, 빅데이터 분석, 사물 인터넷 등 새로운 기술까지 다른 CSP보다 훨씬 더 많은 서비스와 서비스 내 기능 제공
    • 이를 통해 더 빠르고 쉬울 뿐 아니라 경제적으로 기존 애플리케이션을 클라우드로 이동하고 계획된 것의 거의 모든 것을 구축 가능

 

  • AWS는 또한 이러한 서비스 내에서 가장 전문적인 기능을 갖추고 있음
    • ex) 최고의 성능과 비용을 위해서 작업에 적합한 도구를 선택할 수 있도록 여러 유형의 애플리케이션에 맞게 특별히 구성된 다양한 데이터베이스 제공

 

  • AWS는 현존하는 플랫폼 중에 가장 안전하고 유용한 클라우드 컴퓨팅 환경으로 설계됨
  • AWS의 핵심인프라는 군사, 국제은행과 같이 중요한 조직의 보안 요구 사항을 충족하도록 설계됨
    • 300개 이상의 보안규정 준수 및 거버넌스 서비스와 기능을 포함하는 심층적인 클라우드 보안 도구 세트 그리고 143개의 보안 표준 및 규정 준수 인증에 대한 지원이 이를 뒷받침해 줌

 

  • AWS를 사용하면 더 최신 기술을 사용해서 더 빠르고 혁신적으로 업무를 진행할 수 있음
    • 지속적으로 혁신 속도를 가속화해서 비즈니스 변혁에 사용할 수 있는 완전히 새로운 기술들을 발명해내고 있음
    • ex) 2013년에 개발자가 서버를 프로비저닝 하거나 관리하지 않고 코드를 실행할 수 있는 AWS 람다를 출시하는 것으로 서버 없는 컴퓨터 공간 일명 서버리스 컴퓨팅을 개척해냄
    • ex) 개발자와 과학자가 어떠한 배경 없이도 머신러닝을 할 수 있게 해주는 완전 관리형 머신러닝 서비스 아마존 세이지 메이커 개발

 

  • AWS는 모든 CSP들 사이에서 가장 가용성이 높은 그리고 더 큰 규모의 환경을 갖추고 있음

 

1.2 클라우드 컴퓨팅의 이점

  • 선행 비용을 가변 비용으로 대체
    • 선행 비용은 데이터 센터와 물리적 서버와 같이 선제적 투자금
    • 가변 비용은 사용한 컴퓨팅 리소스에 대한 비용

 

  • 데이터 센터 운영 및 유지 관리에 비용 투자 불필요
    • 데이터 센터에서 컴퓨팅을 하려면 인프라 및 서버 관리에 비용, 시간, 인력을 투입해야 함
    • 클라우드의 경우 인프라 관리에 신경을 덜 쓰고 애플리케이션과 사용자에 집중할 수 있는 환경 제공

 

  • 용량 추정 불필요
    • 클라우드 컴퓨팅에서는 애플리케이션을 배포하기 전에 필요한 인프라 용량 산정 불필요
    • 필요할 때 EC2 인스턴스를 시작하고 사용한 컴퓨팅 시간에 대해서만 비용 지불
    • 사용하지 않은 리소스 때문에 비용을 지불하거나 제한된 용량을 사용해야 하는 대신 필요한 용량만 사용 가능
    • 수요에 따라 확장 및 축소 가능

 

  • 규모의 경제로 얻게 되는 이점
    • 대규모 생산 시설을 갖추는 초기 비용에 비해서 사업이 시작되고 고객이 증가할수록 사업을 유지하는 비용이 감소
    • 클라우드 컴퓨팅을 사용하면 인프라를 소유할 때보다 가변 비용이 낮아짐
    • 클라우드에서 수많은 고객의 사용량이 누적될 수 있으므로 AWS와 같은 공급자는 더 높은 수준의 규모의 경제를 달성할 수 있음

 

  • 유연성
    • 클라우드 환경에서는 필요에 따라 IT 리소스를 확장 및 축소시킬 수 있음
      • ex) 특별한 이벤트나 급증하는 트래픽에 대응하기 위해서 서버를 추가적으로 프로비저닝 하거나 시스템 부하가 감소하면 자동으로 가용 리소스를 줄일 수 있음
    • on-demand 비용, 예약 인스턴스, 스팟 인스턴스 등 다양한 비용 모델을 제공
      • 이는 조직이 자원을 효과적으로 활용하고 예산을 관리할 수 있도록 지원
      • 사용한 만큼만 비용을 지불하므로 비용 효율성 높아짐

 

  • 몇 분 만에 전 세계에 배포
    • AWS 글로벌 입지를 기반으로 전 세계 고객에게 신속하게 애플리케이션을 배포하는 동시에 짧은 지연 시간 제공

 

1.3 클라우드 컴퓨팅 배포 모델

  • 퍼블릭 클라우드
    • 서버, 네트워킹, 스토리지 리소스와 같은 IT 인프라가 인터넷을 통해 액세스 할 수 있는 가상 리소스로 제공되는 클라우드 컴퓨팅 모델
    • AS-WAS: 기존에는 조직이 애플리케이션을 실행할 때 필요한 인프라를 구매하고 자체 관리해야 했음, 이에 따라 비용이 많이 들고 고급 인프라 사용 제한적
    • AS-IS: IT 인프라 서비스를 완전 관리형 서비스로 접근할 수 있게 함으로써 위 문제들을 해결, 또한 써드 파티 공급 업체는 전 세계에 분산된 데이터 센터 네트워크에서 하드웨어, 관련 소프트웨어, 그리고 라이선스 관리
    • 어떤 디바이스를 선택하더라도 규모에 상관없이 온디맨드 방식으로 사용 가능
    • 조직은 퍼블릭 클라우드를 사용해서 인공지능, AI, 블록체인, IOT와 같은 첨단 신기술에 접근 가능하며 이를 통해 기술 발전의 속도와 채택이 증가하고 서비스 제공 및 고객 만족도가 향상됨

 

  • 프라이빗 클라우드
    • 단일 조직 전용 클라우드 컴퓨팅 환경
    • 모든 클라우드 인프라에는 셀프서비스 포털을 통해 프로비저닝 하는 CPU, 스토리지와 같은 기본 컴퓨팅 리소스 존재
    • 프라이빗 클라우드에서는 모든 리소스가 분리되어서 하나의 조직에서 제어 가능
    • 프라이빗 클라우드라는 용어는 이러한 내부 클라우드 환경과 AWS와 같은 퍼블릭 클라우드 서비스를 구분하기 위해 사용됨
    • 오늘날 일부 기업은 클라우드 컴퓨팅의 몇 가지 개념을 제공하기 위해서 운영에 여러 기술들을 도입하고 변화를 줬고 한 가지 예로 기업들은 사업부에서 사용하는 컴퓨팅 리소스에 대해 해당 사업부에 비용을 청구할 수 있음
    • 하지만 대부분의 고객은 퍼블릭 클라우드에 버금가는 이점을 가진 프라이빗 클라우드 구축 못 함
    • 이에 따라 AWS는 진정으로 일관된 하이브리드 환경을 위해서 거의 모든 온프레미스 또는 엣지 로케이션에서 AWS 인프라 그리고 서비스를 제공하는 완전 관리형 솔루션 패밀리인 AWS Outposts 제공
    • AWS Outposts 솔루션을 통해 온프레미스에서 기본 AWS 서비스를 확장 및 실행 가능
    • Outposts 사용 시 일부 AWS 서비스를 로컬에서 실행하고 로컬 AWS 리전에서 사용 가능한 광범위한 서비스에 연결 가능
    • Outposts는 온프레미스 시스템에 대한 빠른 접근, 로컬 데이터 처리, 데이터 레지던시, 로컬 시스템과 상호 종속된 애플리케이션을 마이그레이션 하는 것이 필요한 워크로드 및 디바이스 지원

 

  • 하이브리드 클라우드
    • 클라우드 기반 리소스를 온프레미스 인프라에 연결
    • 기업의 내부 IT 리소스를 써드 파티 클라우드 제공 업체의 인프라와 서비스를 통합하는 IT 인프라 설계 방식
    • 여러 환경에서 애플리케이션을 실행 가능
    • 퍼블릭 클라우드 + 프라이빗 클라우드 형태
    • 하이브리드 환경에서는 컴퓨팅 리소스를 프로비저닝 하고 확장하고 중앙에서 관리 가능
      • ex) AWS PrivateLink: VPC와 AWS 간에 프라이빗하고 안전한 네트워크 연결 설정 (외부 연결 최소화 및 보안 강화)
      • ex) AWS Direct Connect: 온프레미스 사이트와 AWS 간의 전용 네트워크 연결 설정 (프라이빗 클라우드와 온프레미스 인프라 간의 안전한 연결 구축 가능)
      • ex) AWS VPN: 사이트 간 VPN 연결 가능 (온프레미스 네트워크와 VPC 간 안전한 연결 구축 가능)

 

2. EC2(Elastic Compute Cloud)

  • AWS에서 크기 조정이 가능한 컴퓨팅 용량 서비스
  • 가상 컴퓨팅 환경을 제공해서 사용자의 필요에 따라 가상 서버를 프로비저닝 즉, 사용자의 요구에 맞게 시스템 자체를 제공하고 실행할 수 있도록 지원
  • 클릭 몇 번만으로 몇 분 내 여러 가지 운영체제에서 실행되는 가상 서버 확보 가능
  • 확장성이 뛰어나고 필요에 따라 컴퓨팅 리소스를 동적으로 조정할 수 있는 유연성 제공

 

2.1 회사의 리소스 아키텍처를 책임지고 새로운 웹사이트를 구성한다고 가정

  • 온프레미스 리소스 사용 시 미리 하드웨어를 구매해야 되고 서버가 배송될 때까지 대기해야 하며 물리적 데이터센터에 배송이 온 서버를 설치하고 필요한 모든 구성을 안전하고 정확하게 수행해야 함 (굉장히 많은 프로세스가 필요하며 시간 많이 소요됨)
  • AWS EC2 인스턴스 통해 구성할 경우 AWS 클라우드에서 가상 서버를 사용해서 애플리케이션 실행 가능 (몇 분 내 EC2 서버 프로비저닝 후 실행 가능)
    • 워크로드 실행 완료했다면 인스턴스 중지도 가능
    • 인스턴스가 실행 중일 때 사용된 리소스에 대해서만 비용 지불 (비용 절감 효과)

 

2.2 EC2 작동 방식

  • EC2를 비롯해서 여러 AWS 서비스는 사용자가 관리하는 AWS Management Console, AWS CLI, 또는 API를 통해 구성 가능
  • EC2를 시작할 때는 사용자가 인스턴스의 유형, AMI, 인스턴스의 개수, 보안 그룹, 키페어 등등을 설정해야 함
    • 우선 AMI를 선택하게 되며 AMI는 미리 구성된 운영체제 그리고 소프트웨어 구성을 포함하는 이미지를 의미 (Amazon Machine Image)
    • AMI 선택 후 애플리케이션의 성능 및 요구사항에 맞게 인스턴스 유형 선택
    • 이후 사용자는 인스턴스가 속하는 가상 클라우드 즉 VPC와 서브넷, 보안그룹 등 네트워크와 보안 설정 가능
    • 그리고 키페어를 설정하며 이 키 페어를 지정해서 인스턴스에 SSH 또는 RDP 같은 원격 접근 활성화 가능
    • 그리고 나서 사용자 데이터 설정

 

2.2.1 인스턴스 시작 및 종료

  • 인스턴스를 시작하면 EC2는 사용자가 선택한 AMI를 기반으로 가상 서버 프로비저닝 (User Data를 제공해서 인스턴스가 실행될 때 스크립트 혹은 명령 지정 가능)
  • 인스턴스 구동 후 접속할 때 키페어를 통해 원격으로 해당 인스턴스 접속 가능
  • 필요에 따라 사용자는 ELB 통해 트래픽 분산 가능하며 auto-scale 기능을 통해 인스턴스 수 유연하게 조절 가능
  • EC2 사용이 끝나면 사용자는 필요에 따라 중지 및 중단 가능 (원할 때 재기동 가능)

 

2.3 EC2 인스턴스 유형

  • Amazon EC2 인스턴스 유형은 다양한 작업에 최적화
  • 인스턴스 유형을 선택할 때는 워크로드 및 애플리케이션의 구체적 요구 사항 고려 필요 (컴퓨팅, 메모리, 스토리지 기능에 대한 요구사항 포함될 수 있음)
    • 범용 인스턴스
    • 컴퓨팅 최적화 인스턴스
    • 메모리 최적화 인스턴스
    • 액셀러레이티드 컴퓨팅 인스턴스
    • 스토리지 최적화 인스턴스

 

2.3.1 Amazon EC2 읽는 법

 

c5.large

  • c: 인스턴스 종류
  • 5: 인스턴스 세대
  • large: 인스턴스 사이즈 (사이즈가 클수록 성능도 좋은 만큼 가격 또한 높게 책정되어 비용 청구)

 

2.3.2 범용 인스턴스

  • 컴퓨팅, 메모리, 네트워킹 리소스를 균형 있게 제공
  • 주로 사용되는 곳은 애플리케이션 서버, 게임 서버, 앤터프라이즈 애플리케이션용 백엔드 서버, 중소 규모의 데이터베이스

 

2.3.3 컴퓨팅 최적화 인스턴스

  • CPU 위주의 고성능 프로세서의 이점을 활용하는 컴퓨팅 집약적 애플리케이션에 적합
  • 주로 사용되는 곳은 고성능 웹 서버, 컴퓨팅 집약적 애플리케이션 서버, 그리고 게임 전용 서버
  • 단일 그룹에서 많은 트랜잭션을 처리해야 하는 일괄 처리 워크로드에 사용 가능
    • 고성능 컴퓨팅, 배치 처리 엔지니어링 응용 프로그램과 같은 컴퓨팅 집약적 작업에 사용됨
    • ex) 과학 연구 혹은 엔지니어링 분야에서 복잡한 계산이 필요할 때 (유체역학 시뮬레이션, 기상 예측)
    • ex) 데이터 처리 (로그를 분석하여 배치 데이터 처리 등)

 

2.3.4 메모리 최적화 인스턴스

  • 메모리에서 대규모 데이터 집합을 처리하는 워크로드에 빠른 성능을 제공하기 위해 설계
  • 컴퓨터 프로그램이나 애플리케이션은 스토리지에서 메모리로 로드된 후 실행
  • 사전 로드 프로세서 덕분에 CPU가 컴퓨터 프로그램에 직접 접근 가능
  • 주로 사용되는 곳은 애플리케이션을 실행하기 전 많은 데이터를 미리 로드해야 하는 워크로드
    • 고성능 DB
    • 방대한 양의 비정형 데이터의 실시간 처리하는 워크로드
    • 대규모 데이터 분석 및 집합 (Apache Spark Cluster)
    • In-memory DB (Redis)

 

2.3.5 액셀러레이티드 컴퓨팅 인스턴스

  • 하드웨어 액셀러레이터 또는 코프로세서를 사용하여 일부 기능을 CPU에서 실행되는 소프트웨어보다 더 효율적으로 실행
  • 더 높은 처리량을 위한 병렬처리 활성화
  • 측정 워크로드에 대해서 gpu나 fpga와 같은 가속기를 통해 높은 성능 제공
  • 주로 사용되는 곳은 그래픽 애플리케이션, 게임 스트리밍, 애플리케이션 스트리밍
    • 대규모 머신러닝, 딥러닝에 적합 (모델 학습 및 추론을 가속기 통해 가속화 가능)
    • 고성능 컴퓨팅에는 액셀러레이터를 통해 계산 속도 향상 가능
    • 데이터베이스 처리 서능 향상 가능

 

2.3.6 스토리지 최적화 인스턴스

  • 로컬 스토리지의 대규모 데이터 집합에 대한 순차적 읽기 및 쓰기 액세스가 많이 필요한 워크로드를 위해 설계
  • 주로 사용되는 곳은 대용량 데이터베이스, 빅데이터 분석, NoSQL 데이터베이스, 데이터 웨어하우스 솔루션, 대규모 파일 시스템
    • AWS RDS
    • AWS Red Shift
    • AWS Dynamo DB

 

2.4 EC2 결제 옵션

Amazon EC2 요금은 사용 사례에 따라 다양한 요금 옵션 제공

  • 온디맨드
  • 절감형 플랜
  • 예약 인스턴스
  • 스팟 인스턴스
  • 전용 호스트
  • etc.

 

2.4.1 온디맨드

  • 장기 약정 없이 시간 또는 초 단위로 컴퓨팅 용량에 대해 지불
  • 인스턴스의 수명 주기를 완전히 제어 가능
  • 시작, 중지, 수면, 사용 시작 또는 종료 시기 결정 가능
  • 장기 약정 필요 없이 온디맨드 인스턴스가 러닝 상태인 시간에 대해서만 요금 지불하면 됨
  • 중단할 수 없는 불규칙한 단기 워크로드가 있는 애플리케이션의 경우 온디맨드 인스턴스 사용하는 것을 권장
    • 비용 절감 측면

 

2.4.2 절감형 플랜

  • 1년 또는 3년 기간으로 일정 사용량(시간당 USD로 측정)을 약정
  • AWS 컴퓨팅 워크로드를 최대 72% 절감 가능
  • 인스턴스 패밀리, 크기, OS, 리전에 관계없이 인스턴스 사용량에 대해 더 저렴하게 제공
  • AWS fargate, AWS 람다에서 적용됨

 

2.4.3 예약 인스턴스

  • 온디맨드 인스턴스 요금과 비교하여 Amazon E2C 비용을 대폭 절감하는 효과 제공
  • 물리적인 인스턴스가 아니고 계정에서 온디맨드 인스턴스를 사용할 때 결제 할인에 가까움
  • 결제 할인을 받으려면 인스턴스 유형 혹은 리전 조건에 부합해야 함
  • 1년 약정이나 더 큰 할인을 제공하는 3년 약정으로 예약 인스턴스 구매 가능
  • 자동으로 갱신되지 않기 때문에 만료될 경우 중단 없이 EC2 사용 가능하나 요금은 온디맨드 요금으로 청구
  • 구입한 이후에는 구입 철회 안되며 변경, 교환, 판매는 가능

 

2.4.4 스팟 인스턴스

  • 온디맨드 가격보다 저렴한 비용으로 제공되는 예비 EC2 용량을 사용하는 인스턴스
  • 큰 할인율로 미사용 EC2 인스턴스를 요청할 수 있기 때문에 사용자는 EC2 비용을 대폭 낮출 수 있음
  • 시간당 가격을 스팟 가격이라고 칭함
  • 각 가용 영역 안에 있는 인스턴스 유형별 스팟 가격은 EC2에서 설정 가능
    • 스팟 인스턴스의 장기적 공급 또는 수요에 따라 점진적으로 조정됨
    • 컴퓨팅 용량을 사용할 수 있을 때마다 스팟 인스턴스가 실행되고 스팟 인스턴스는 애플리케이션이 실행되는 시간을 유연하게 조정할 수 있고 애플리케이션을 중단할 수 있는 경우 선택하는 비용 효율적 인스턴스

 

  • 데이터 분석, 배치 작업, 백그라운드 프로세싱에 적합

 

2.4.5 전용 호스트

  • 사용자를 위한 완전 전용 물리적인 서버
  • 사용자 전용의 Amazon EC2 인스턴스 용량을 갖춘 물리적 서버
  • 온디맨드 요금과 비교하여 최대 70%까지 할인을 제공
  • 선택적으로 인스턴스 용량을 다른 AWS 계정과 공유하도록 설정 가능
  • 인스턴스 배치에 대한 가시성과 제어 기능을 제공하고 호스트 선호도를 지원
    • 특정 호스트에서 인스턴스를 시작하고 실행할 수 있고 인스턴스가 특정 호스트에서만 실행되도록 설정도 가능

 

  • 포괄적인 기존 보유 라이선스 사용 지원 제공
  • 라이선스 조항에 따라 전용 하드웨어에서 인스턴스를 실행해야 하지만 인스턴스 배치에 대한 가시성이나 제어 기능은 필요하지 않고 소프트웨어 라이선스를 사용할 필요가 없는 경우에는 전용 인스턴스를 전용 호스트 대신 사용 가능
    • 전용 인스턴스, 전용 호스트 모두 물리적인 전용 서버로 EC2 서버 시작하는 데 사용 가능
    • 전용 인스턴스와 전용 호스트 간 성능, 보안 상의 차이, 물리적 차이는 없음
    • 전용 호스트는 사용자 전용 인스턴스 용량을 갖춘 물리 서버
    • 전용 인스턴스는 계정의 전용 물리 서버
    • 전용 호스트의 경우 호스트 단위로 가격 책정, 인스턴스는 인스턴스 단위 가격 책정

 

2.4.5.1 전용 인스턴스

  • 단일 AWS 계정 전용 하드웨어에서 실행되는 EC2 인스턴스
  • 장기 약정 없이 사용한 만큼만 비용 지불
  • 시간당 인스턴스 사용료와 리전당 전용 요금, 두 가지로 책정

 

2.5 AWS의 여러 컴퓨팅 옵션들

 

2.5.1. 서버리스 컴퓨팅

  • 개발자가 서버를 관리할 필요 없이 애플리케이션을 개발하고 배포할 수 있는 클라우드 컴퓨팅 모델
  • 서버리스는 실제 서버가 없는 것이 아니라 개발자가 서버를 직접적으로 다루지 않아도 된다는 의미
  • 서버리스 환경에서는 CSP가 백그라운드에서 서버 관리, 확장, 유지보수 등의 작업을 처리
  • 개발자는 코드를 업로드하고 실행하는데 집중 가능

 

2.5.1.1 서버리스 컴퓨팅 특징

  • 이벤트 기반 실행( 함수 또는 서비스가 특정 이벤트에 trigger 되어 실행하여 필요한 경우에만 실행되는 효율적인 이벤트 기반 실행)
  • 쓰고 버리기 (함수 또는 서비스가 실행된 후에는 메모리에서 삭제되므로 지속적으로 리소스 소비 X)
  • 스케일링 (사용량에 따라 자동으로 스케일링됨에 따라 성능과 효율성 향상)

 

2.5.1.2 서버리스 컴퓨팅의 예시 (AWS Lambda)

  • 서버를 프로비저닝 하거나 관리할 필요 없이 코드를 실행할 수 있는 AWS의 서버리스 컴퓨팅 서비스
  • 기본적인 flow
    • Lambda예 코드 업로드
    • 이벤트 소스에서 트리거 되도록 코드 설정 (S3 버킷에서 파일이 업로드되었을 때, API Gateway로 요청이 들어왔을 때, DB가 변경되었을 때)
    • 코드는 트리거 될 때만 실행됨
    • 사용한 컴퓨팅 시간에 대해서만 비용 지불

 

  • 작동 순서
    • 이벤트 트리거 설정
    • Lambda 함수 활성화
    • 컨테이너 시작
    • 이벤트 처리
    • 작업 완료 및 리소스 정리

 

2.5.2 컨테이너

  • 애플리케이션과 애플리케이션에 필요한 모든 종속성(라이브러리, 설정 파일 등)을 패키징 하는 경량화된 환경
  • 애플리케이션을 한 곳에서 실행될 수 있도록 독립된 공간 제공
  • 가상화 기술의 한 형태로 여러 애플리케이션과 서비스를 호스팅 환경과 분리된 상태로 유지함에 따라 충돌이나 간섭 최소화
  • 각 컨테이너는 고유한 파일 시스템, 환경 변수, 네트워크, 프로세스 이러한 공간을 가지고 있어 마치 독립된 VM처럼 동작
  • 컨테이너는 VM보다 가볍고 빠르게 시작이 되고 이식성이 뛰어나 확장이 용이
  • 주로 Docker와 같은 컨테이너 관리 도구를 통해 컨테이너를 생성하고 배포하고 관리할 수 있음
  • MSA, DevOps, 클라우드 환경에서 많이 사용되고 일관된 환경에서 애플리케이션을 실행하는 데 도움을 줌

 

2.5.2.1 컨테이너 작동 순서

  • 이미지 생성 (실행 환경, 응용 프로그램 코드, 종속성 및 코드를 모두 포함하는 패키지)
  • 이미지 기반 컨테이너 생성
  • 컨테이너 실행
  • 응용 프로그램 실행
  • 요청 처리
  • 작업 완료 후 컨테이너 종료

 

2.5.2.2 컨테이너 예시 (Amazon ECS)

  • AWS에서 컨테이너 기반 애플리케이션을 실행하고 관리하기 위한 서비스
  • Docker 컨테이너를 지원한다는 것이 주요 특징
    • 애플리케이션을 쉽게 패키지화하고 배포하고 이를 통해 일관된 환경 즉 컨테이너에서 실행 가능
    • 고성능 및 확장성 제공하여 대규모 애플리케이션을 효과적으로 운영할 수 있도록 지원
    • 도커 커뮤니티와 엔터프라이즈 에디션 지원
    • API 호출을 통한 애플리케이션 제어 기능 제공

 

2.5.2.3 컨테이너 예시 (Amazon EKS)

  • AWS에서 Kubernetes를 실행하는데 사용할 수 있는 완전관리형 서비스
  • 마찬가지로 컨테이너화된 애플리케이션을 쉽게 실행하고 관리할 수 있는 서비스
  • 컨테이너 오케스트레이션 그리고 관리를 담당하는 서비스로 개발자와 운영팀에서 컨테이너를 효과적으로 활용할 수 있도록 지원
  • 오픈소스 도구인 K8S를 AWS에서 쉽게 사용하고 관리할 수 있도록 패키지 해서 제공해 주는 AWS 서비스

 

2.5.2.4 컨테이너 예시 (Amazon Fargate)

  • 컨테이너용 서버리스 컴퓨팅 엔진
  • Amazon ECS와 Amazon EKS에서 작동
  • 사용량에 따라 요금이 부과되는 컴퓨팅 엔진
  • 서버를 관리할 필요가 없기 때문에 애플리케이션 구축에 집중
    • 관리 부담 줄어듦
    • 결제 방법을 선택 가능
    • 설계에 적용된 경위를 통해 보완 강화 가능

 

  • 인프라가 아니라 애플리케이션을 배포하고 관리하게끔 운영 오버헤드 없이 서버를 확장하고 패치하고 보호 및 관리를 수행할 수 있도록 지원
  • 선불 비용 없이 사용한 컴퓨팅 리소스에 대해서만 비용 지불하며 saving plan, fargate spot을 통해 추가로 비용 최적화 가능

 

 3. Auto Scaling

 

3.1 용어 정리

 

Scaling

  • 필요에 따라 서비스, 애플리케이션, 서버를 확장하거나 축소하는 행위
  • 유형에 따라 Horizontal Scaling과 Vertical Scaling으로 구분됨

 

Horizontal Scaling

  • Scale 작업을 Scale Out과 Scale In으로 표현
  • Scale Out은 원래 있던 서버와 동일한 성능과 구성으로 대수 자체를 늘려주는 작업
  • 반대로 Scale In은 늘어났던 서버의 대수를 죽여주는 작업
  • 위 작업들을 자동으로 진행하면 Auto (Horizontal) Scaling
  • ex) 쇼핑몰 트래픽이 갑자기 늘어나는 경우 현재 서버 대수로 부족해질 수 있어 Auto Scaling을 통해 Scale Out을 했다가 부하가 줄어들면 Scale In (CPU 사용률이 70% 이상일 경우 Scale Out 하도록 설정하여 Auto Scaling 적용)

 

Vertical Scaling

  • Scale 작업을 Scale Up과 Scale Down으로 표현
  • Scale Up은 기존 서버의 성능을 스펙 업하는 작업 (기존 서버의 메모리를 16GB -> 32GB로 늘림)
  • Scale Down은 기존 서버의 성능을 스펙 다운하는 작업
  • 위 작업들을 자동으로 진행하면 Auto (Vertical) Scaling

 

3.2 AWS AutoScaling

  • 사용자가 정의한 크기 조정 정책을 사용하여 EC2 인스턴스를 자동으로 추가하거나 제거하는 기능
  • 애플리케이션 최적화 및 비용 절감

 

3.2.1 AWS AutoScaling 이점

  • 탄력적 리소스 활용
  • 자동 확장과 축소
  • 트래픽 예측 및 대응
  • 비용 최적화
  • 수동 간섭의 최소화

 

3.3 AWS AutoScaling 구성 요소

  • Launch Template (AMI, Instance type 등)
  • ELB (NLB, ALB, Target Group)
  • Auto Scaling Group (Desired Capacity, Min/Max Size, Target Group 등)

 

https://cloud.in28minutes.com/aws-certification-auto-scaling-group-dynamic-scaling-policy

 

4. Load Balancing

 

4.1 용어 정리

 

Load Balancing

  • 여러 대의 서버에 들어오는 트래픽을 균등하게 분산시켜 주는 서비스

 

4.2 AWS ELB

  • 워크로드를 가상 서버와 같은 다수의 컴퓨팅 리소스로 분산
  • Auto Scaling Group으로 들어오는 모든 웹 트래픽의 단일 접점 역할
    • 들어오는 트래픽의 양에 맞춰 EC2 인스턴스 양을 추가하거나 제거함으로 이러한 요청이 Load Balancer로 먼저 라우팅 되고 이후 요청을 처리할 여러 리소스로 분산됨
    • ex) EC2 인스턴스가 여러 개인 경우 ELB는 워크로드를 여러 인스턴스로 분산시켜 어느 한 인스턴스가 대량으로 워크로드를 처리할 필요 없이 골고루 처리하게 유도하여 인스턴스가 과다하게 사용되는 것을 방지해 줌

 

  • ELB와 Auto Scaling은 별도의 서비스지만 서로 연동해서 사용
  • 고가용성이 필요한 곳에 서버의 신뢰도를 높이고 가용성을 높일 때 사용
  • ELB는 리전 수준의 확장 즉 리전 구조로 동작하며 리전 전체에 실행되므로 자동으로 고가용성 제공
  • 트래픽 증가에 따라 자동으로 확대 및 축소 가능
  • http, https, tcp 등 다양한 프로토콜 지원

 

4.2.1 ELB 사용 예시

  • 웹 애플리케이션
  • API 서버
  • 마이크로 서비스 아키텍처

 

4.2.2 ELB 종류

  • ALB
  • NLB
  • GLB
  • CLB

 

4.2.2.1 NLB

  • Network Load Balancer
  • OSI 모델 계층 중 4 계층 트래픽을 라우팅
    • TCP와 UDP를 사용하는 트래픽 분산
    • HTTP Header 해석은 못 함

 

  • 연결 요청을 받게 되면 대상 그룹의 대상을 지정하고 Listener 구성에 지정된 포트에 TCP 연결 시도
  • 낮은 latency 자랑하고 수백만건의 요청을 초당 단위로 처리 가능하며 갑작스러운 트래픽 증가/감소에도 최적화되어 있음
  • EIP라는 공인 IP를 고정해서 사용할 수 있어 DNS와 IP를 모두 사용 가능

 

4.2.2.2 ALB

  • Application Load Balancer
  • OSI 모델 계층 중 7 계층 트래픽을 라우팅
  • 트래픽을 분산시켜 줄 뿐만 아니라 HTTP, HTTPS 헤더를 통해 부하 분산 가능
  • 경로 기반 매핑과 함께 포트에 따라도 매핑 가능
  • 지속적으로 IP가 바뀌는 유동 IP이기 때문에 항상 도메인 기반으로 사용해야 함

 

4.3 ELB 구성요소

  • 리스너
    • 구성한 프로토콜 및 포트를 사용하여 연결 요청을 확인하는 프로세스
    • 최소 1개 이상 있어야 함
    • 없는 경우에는 클라이언트로부터 트래픽을 수신할 수 없음

 

  • 대상그룹
    • LoadBalancer가 받은 트래픽을 전달시킬 대상 인스턴스들의 묶음
    • 지정한 프로토콜과 포트 번호를 통해 EC2 인스턴스와 같은 개별적으로 등록된 대상으로 요청을 라우팅
    • 여러 대상 그룹의 대상 등록 가능
    • 대상 그룹을 기준으로 상태 확인 구성 가능
    • 가용 영역 활성화 시 ELB가 해당 가용 영역에 로드 밸런서 노드를 생성
      • 로드밸런서 노드는 해당 가용 영역에 등록된 대상에게 트래픽 분산

 

4.4 ELB 기능

 

교차 영역

  • 각 로드 밸런서 노드가 활성화된 모든 가용 영역에 있는 등록된 대상에게 트래픽 분산 가능

 

헬스 체크

  • 정상 동작하는 서버에게만 트래픽을 분산하도록 상태 확인하는 기능

 

5. 구독과 전송 알림 서비스

 

5.1 Amazon Simple Notification Service (Amazon SNS)

  • 게시자가 구독자에게 메시지를 전송하는 관리형 서비스
  • AWS에서 제공하는 완전 관리형 메시지형 전송 서비스
  • 다양한 종류의 클라이언트에게 빠르게 메시지 전송 가능
  • 다양한 애플리케이션에서 발생하는 이벤트를 모니터링하고 사용자에게 신속하게 알림을 전달하는 데 사용

 

5.1.1 Amazon SNS 기능 및 장점

  • 다양한 종류의 메시지
  • 이벤트 기반 알림
  • 토픽 기반 메시지 전송
  • 확장 가능한 서비스
  • 모바일 푸시 알림
  • 높은 확장성과 신뢰성 (서비스가 안정적으로 동작하며 시스템이나 서비스에 문제가 적고 혹여나 장애가 발생하더라도 복구 가능)

 

5.1.2 AWS SNS 구조 개념

  • 사용자(AWS 계정을 가진 개인 또는 조직)
  • 주제(Topic)
  • 게시자(Publisher)
  • 구독자(Subscriber)

 

Amazon SNS

 

5.1.3 AWS SNS 프로세스

  • 게시자(Publisher) 설정
  • 주제(Topic) 생성
  • 구독자(Subscriber) 설정
  • 게시자(Publisher)가 특정 행위에 대해 주제에 게시
  • 구독자가 알림을 수신
  • 수신한 내용에 대해 알맞은 특정 기능 수행

 

5.2 Amazon Simple Queue Service (AWS SQS)

  • 분산 시스템에서 메시지를 안전하게 전송하고 저장하는 메시지 대기열 서비스
  • 웹 애플리케이션 성능과 응답 속도 향상에 기여
  • 다른 컴퓨터끼리 효율적으로 소통 및 작업 조율에 적용
  • 메시지를 손실 없이 소프트웨어끼리 전송, 저장 및 수신 가능
  • ex) 이메일 전송 서비스에서 메일을 큐에 넣고 나중에 비동기식으로 처리하는 경우

 

5.2.1 AWS SQS의 이점

  • 보안 (기본 SQS 관리형 서버 측 암호를 사용하거나 AWS KMS의 SSE 키를 사용함으로써 대기열에 있는 메시지 콘텐츠를 보호함으로써 민감한 정보를 전송할 수 있도록 설정 가능)
  • 내구성
  • 가용성
  • 확장성
  • 신뢰성
  • 사용자 지정

 

5.2.2 AWS SQS 프로세스

  • 메일 전송 요청
  • SQS 큐에 메시지 추가
  • 비동기 처리 시작
  • 메일 전송 서비스 동작
  • 성공적인 전송 후 메시지 삭제
  • 실패 시 재시도 혹은 에러 처리
  • 애플리케이션 업데이트 및 모니터링

 

5.3 Monolithic, Micro Service

  • 모노리식 애플리케이션은 여러 구성 요소로 구성됨
    • 구성 요소는 서로 통신하여 데이터를 전송하고 요청을 이행하고 애플리케이션 실행
    • 하나의 큰 애플리케이션으로 그 안에는 DB, 서버, 사용자 인터페이스, 비즈니스 로직이 강경합되어 있음
    • 하나의 구성요소가 변경되거나 장애 발생 시 다른 구성 요소에도 영향을 끼침
    • 규모가 커지면 관리 유지보수가 어려워짐

 

  • MSA는 여러 작은 구성 요소로 나누어 운영
    • 각 구성 요소는 서로 독립적으로 실행 중이며 모노리식과 달리 약결합되어 있는 상태이기에 유지보수가 용이함
    • 단일점에서의 장애가 확산되지 않음
    • 각 서비스 간 통신이 중요
    • AWS SNS를 통해 이벤트 발행 및 소통

 

  • SNS, SQS가 이 둘 간 전환을 쉽게 할 수 있도록 지원

 

6. 글로벌 스케일

 

6.1 글로벌 인프라

  • AWS는 글로벌 기업 및 개발자들이 안정적이고 확장 가능한 클라우드 서비스를 이용할 수 있도록 글로벌 인프라 구축
  • 38개의 로컬 영역 그리고 245개의 국가와 지역에서 서비스 제공
  • 전 세계적으로 수백만명의 활동 고객과 수만 개의 파트너로 이루어진 가장 큰 규모의 가장 역동적인 에코 시스템

 

6.1.1 글로벌 인프라 구현하기 위한 AWS 개념

  • 리전과 가용영역
  • 콘텐츠 전송 네트워크
  • 다양한 프로비저닝 방식

 

6.1.1.1 AWS Region

  • 전 세계에서 데이터 센터를 클러스터링 하는 물리적 위치
  • 논리적 데이터센터 각 그룹을 가용영역이라고 표현하고 각 AWS Region은 지리적 영역 내에서 격리되고 물리적으로 분리되어 있는 최소 3개의 가용 영역으로 구성
  • 각 가용 영역은 독립된 전원, 냉각 및 물리적 보안을 갖추면 지연 시간이 짧은 중복 네트워크를 통해 연결
  • 고가용성을 중시하는 AWS 고객은 여러 가용 영역에서 실행되도록 애플리케이션을 설계해서 내결함성을 한층 강화 가능
  • AWS 인프라 Region은 가장 높은 수준의 보안, 규정 준수 및 데이터 보호 충족
  • AWS는 다른 어떤 CSP보다 광범위한 국제적 입지 제공
  • 각 리전은 다른 리전으로부터 격리되어 있어 가장 강력한 내결함성과 안전성을 달성
  • 리소스를 볼 때 지정한 리전에서 연결된 리소스만 노출 (리전이 서로 격리되어 있기 때문)
  • 인스턴스를 시작할 때 동일한 리전에 있는 AMI 선택 필요

 

https://cloudacademy.com/blog/aws-regions-and-availability-zones-the-simplest-explanation-you-will-ever-find-around/

 

6.1.1.2 AWS Region 주의사항

  • 고객과의 근접성 (고객과 가까운 리전을 선택하면 고객에게 콘텐츠를 더 빠르게 제공하는데 도움)
  • 리전 내에서 사용 가능한 서비스 (리전마다 사용 가능 서비스 다름)
  • 요금 (리전마다 요금 다를 수 있음)

 

6.1.1.3 가용 영역

  • 독립적이고 이중화된 인프라 네트워킹 및 연결을 갖춘 2개 이상의 개별 데이터 센터
  • AWS Region 내 한 가용영역은 연관된 장애 방지를 위해 최대 100km 거리를 둠
    • 지연 시간이 10ms 동기 복제를 사용할 수 있을 정도의 거리
    • 전력 공급, 단수, 광케이블 격리, 지진 혹은 화재 같은 천재지변에 함께 영향을 받지 않도록 설계

 

  • 단일 가용영역 배포보다 여러 가용영역에 걸친 분산 배포가 가용성 측면에 유리

 

6.1.1.4 Amazon CloudFront

  • AWS CDN(Content Delivery Network) 서비스
    • CDN은 데이터 사용량이 많은 애플리케이션의 웹 페이지 로드 속도를 높이는 상호 연결된 서버 네트워크
    • CDN 도입 시 웹사이트 콘텐츠는 지리적으로 사용자와 가까운 CDN 서버에 저장되며 사용자의 컴퓨터에 훨씬 빨리 도달
    • CDN은 웹사이트 성능을 향상하고 중요한 네트워크 인프라 지원하는 다양한 장점 제공

 

  • CDN의 중요성 및 이점
    • 페이지 로드 시간 감소
    • 대역폭 비용 절감
    • 콘텐츠 가용성 제고
    • 웹 사이트 보안 강화

 

  • CDN의 전송 컨텐츠
    • 정적 콘텐츠 (사용자 간 변경되지 않는 웹사이트 데이터, CDN에 저장하기 이상적인 데이터)
    • 동적 콘텐츠 (접속하는 사용자마다 다르게 보여주는 데이터)

 

  • CloudFront 동작 방식
    • 콘텐츠를 사용자가 요청
    • 클라이언트 요청이 CloudFront에 도달하면 해당 요청을 처리하기 위해 CloudFront의 DNS 서버에 도메인 이름 요청 및 해결됨 (CloudFront는 최적의 엣지 로케이션 지정을 위해 DNS 서버 활용)
    • CloudFront DNS 서버는 클라이언트의 위치 및 기타 요청 특성을 고려해서 최적의 엣지 로케이션 선정
      • 엣지 로케이션은 CloudFront의 글로벌 네트워크에 분산되어있으며 보통 클라이언트와 가장 가까운 엣지 로케이션으로 요청
    • 엣지 로케이션 내 캐시 된 콘텐츠가 있는지 확인
      • 있으면 바로 전송
      • 없거나 만료되면 origin 서버에 요청 전달 후 받은 결과를 클라이언트에게 전달 (결과는 캐싱)

 

6.1.1.5 서비스 프로비저닝 방법

  • AWS Management Console
    • Amazon 서비스 액세스 및 관리를 위한 웹 기반 인터페이스
    • 작업 수행 프로세스를 단순화하는 마법사와 자동화된 워크플로우 제공
    • 모바일 애플리케이션도 제공

 

  • AWS Command Line Interface
    • 명령줄 셸에서 명령어를 사용하여 AWS 서비스와 상호 작용할 수 있는 오픈 소스 도구
    • 다양한 운영체제에서 설치 및 사용 가능
    • AWS 계정 연동 후 CLI 명령으로 AWS 리소스 관리 가능

 

  • 소프트웨어 개발 키트(SDK)
    • 프로그래밍 언어 또는 플랫폼용으로 설계된 API를 통해 AWS 서비스를 보다 간편하게 사용
    • 선호하는 언어를 통해 AWS와 통합된 애플리케이션 개발 가능
    • 모바일 앱 개발, 웹 개발, 클라우드 컴퓨팅, IOT 등에 활용 가능
    • 효율적인 개발을 도와주며 빠른 통합 및 배포를 지원하고 개발 시간을 단축시켜 비용을 절감 효과 있음

 

  • AWS Elastic Beanstalk
    • 사용자가 애플리케이션 코드와 설정 제공 시 이를 기반으로 필요한 컴퓨팅 리소스를 자동으로 관리해 주는 서비스
    • 용량 조절, 로드 밸런싱, Auto Scaling, 애플리케이션 상태 모니터링 기능 지원
    • 다양한 플랫폼에서 애플리케이션을 구축하고 실행 가능

 

  • AWS Elastic Beanstalk 워크플로우
    • 애플리케이션 생성 (자바의 경우 war 파일과 같은 소스코드 번들)
    • 준비된 애플리케이션 버전을 Elastic Beanstalk에 업로드하고 필요한 정보 제공
    • Elastic Beanstalk은 업로드된 애플리케이션 버전 정보를 기반으로 자동으로 환경을 실행하고 코드 실행에 필요한 모든 AWS 리소스를 생성하고 구성 (사용자의 개입 없이 자동으로 진행됨)
    • 환경이 실행된 후에는 사용자가 환경을 직접 관리하고 새로운 애플리케이션 배포도 가능

 

  • AWS CloudFormation
    • 설계도와 같은 역할
    • IAC에 속함
    • AWS 리소스를 모델링하고 설정하여 리소스 관리 시간을 줄이고 AWS에서 실행되는 애플리케이션에 더 많은 시간을 사용하도록 해주는 서비스

 

7. AWS의 여러 네트워크 서비스

 

7.1 Amazon Virtual Private Cloud(Amazon VPC)

  • 사용자의 AWS 계정 전용 가상 네트워크
  • AWS 클라우드에서 리소스를 private 하게 구축하고 관리할 수 있게 해주는 가상 네트워킹 환경 제공

 

7.1.1 Amazon VPC 구성요소

  • VPC (자체적인 가상 네트워크를 프로비저닝 하고 관리 가능)
  • Subnet (특정한 가용 영역에 속함)
  • Routing Table (Subnet 내 트래픽이 이동하는 경로 정의)
  • Internet Gateway (VPC와 인터넷 간 통신을 가능하게 해 줌)
  • NAT Gateway (VPC 안의 인스턴스가 인터넷에 접속할 수 있도록 하지만 외부에서는 직접 연결 불가능하도록 설정)

 

7.2 AWS Route53

  • 가용성, 신뢰성, 확장성을 갖춘 고성능 DNS 웹 서비스
  • 사용자의 웹 애플리케이션 또는 인프라 리소스와 연결 및 관리
  • 웹사이트와 애플리케이션을 효율적으로 관리할 수 있는 가상 호스팅을 더불어 글로벌하게 분산된 네트워크를 통해 DNS 쿼리에 대한 안전성과 신속한 응답 시간을 제공해 주면서 사용자로부터 지리적으로 가장 가까운 엔드 포인트로 매핑해 주는 기능 제공

 

7.2.1 AWS Route53 주요 기능

  • 도메인 등록 (도메인 식별자를 통해 AWS 리소스와 연결)
  • DNS 라우팅 (애플리케이션의 IP 주소로 매핑)
  • 상태 확인 (사용자가 정의한 엔드 포인트에 대해 헬스 체크를 진행해 장애 발생 시 다른 엔드 포인트로 라우팅 되도록 처리)

 

7.3 AWS Global Accelerator

  • AWS의 관리형 서비스로 글로벌 네트워크를 사용하여 애플리케이션의 가용성, 성능, 보안을 개선하는 서비스
  • 네트워크 가속 서비스
  • 주요한 기능으로는 사용자의 애플리케이션 트래픽을 AWS의 글로벌 네트워크에 위치한 엣지 로케이션으로 로드 밸런싱
    • 전 세계 사용자에게 일관된 성능 및 가용성 제공
    • 애플리케이션의 엔드 포인트 관리 및 장애 발생 시 자동으로 이상적으로 엔드포인트로 트래픽을 라우팅 하여 가용성 향상
    • 지연 시간 최소화 및 성능 최적화
    • DDoS와 같은 공격으로부터 대비하는 보안 기능 제공
    • 애플리케이션에 대한 실시간 모니터링 및 성능 지표 제공

 

7.3.1 AWS Global Accelerator 구성요소

  • 고정 IP 주소
  • 가속기 (서비스 핵심 요소)
  • DNS 이름 (각 가속기에 고유한 DNS 이름 부여)
  • 네트워크 존 (가속기에 가용성을 향상, 네트워크 리소스에 대한 트래픽을 효율적으로 분산)
  • 리스너 (가속기에서 특정 포트로 들어오는 트래픽 수신)
  • 엔드포인트 그룹 (Elasitc IP 주소, ALB, NLB와 같은 AWS 리소스 포함)
  • 엔드포인트

 

7.3.2 Accelerator 종류

  • 표준 액셀러레이터 (글로벌 네트워크 사용, 자동으로 트래픽 가속화)
  • 사용자 라우팅 엑셀러레이터 (사용자가 직접 정의한 라우팅 규칙에 따라 라우팅)

 

7.3.3 Accelerator 사용 사례 예시

  • 애플리케이션 활용도 향상을 위한 확장성
  • 지연 시간에 민감한 애플리케이션을 위한 가속화
  • 재해 복구 및 다중 지역 복원력
  • 애플리케이션 보호
  • VoIP 또는 온라인 게임 애플리케이션의 성능 향상

 

8. AWS VPC

 

8.1 VPC 구성 절차

  • VPC가 구성될 Region과 IP 대역 설정
    • 인프라, 리소스, 서비스를 배포할 리전 선택
    • IP 대역 설정 시 클래스 방식이 아닌 CIDR 기법을 이용하는 방식
    • CIDR은 Classless Inter-Domain Routing의 약어로, IP 주소 할당 및 라우팅을 위한 주소 체계이며 이전에 사용된 클래스 기반의 IP 주소 할당 방식을 대체 (CIDR은 IP 주소를 네트워크 ID와 호스트 ID로 나누는 방식을 사용하며 이를 통해 주소 블록을 조금 더 효율적으로 사용할 수 있으며, 네트워크의 크기를 동적으로 조절 가능)
    • NAT를 통해 공인 IP 하나를 사설 IP 여러 개로 나눠 사용 가능

 

  • 가용영역(AZ)에 Subnet 생성
    • Subnet이란 리소스가 배치되는 네트워크
    • VPC의 IP 대역을 적절한 단위로 분할해서 생성하는데 이때 VPC 대역을 Subnetting
    • 각 Subnet도 VPC와 동일하게 CIDR을 통해 IP 대역 설정
    • 서브넷팅의 목적은 VPC IP 대역을 적절한 단위로 분할해서 각 네트워크의 트래픽 흐름을 원하는 대로 차별화하는 것
    • 서브넷의 CIDR은 생성 후 변경 불가능 (이 때문에 서비스 확장성 여부에 따라 넉넉하게 설정하는 것을 권장)
    • 여러 가용영역에 걸쳐 서브넷과 서비스, 애플리케이션을 배치하는 것을 권장

 

  • Routing 설정
    • VPC 초기 생성 시 외부 네트워크와 단절된 상태
    • 외부와 통신하기 위해서는 Internet Gateway를 생성해서 VPC에 연결해줘야 함
    • 서브넷 안에 있는 인스턴스 혹은 리소스들이 외부와 통신하기 위해서는 서브넷과 인터넷 게이트웨이를 연결시켜 주는 라우팅 테이블 설정 필요
    • Routing Table은 트래픽 흐름을 원하는 형태로 제어하는 테이블
      • VPC 생성 시 자동으로 Default Routing Table 생성
      • 각 Subnet은 하나의 Routing Table만 연결 가능
      • 직접 생성한 커스텀 Routing Table을 사용하고 싶다면 직접 서브넷에 수동으로 연결 필요
    • Private Routing 설정
      • Routing Table을 하나 더 설정해서 Private Subnet에 위치한 서버, 인스턴스 등이 인터넷을 사용할 수 있게 NAT Gateway로 설정
      • NAT Gateway는 Internet Gateway로 트래픽이 흘러가도록 설정

 

  • Traffic 통제 (In/Out)
    • 9장에서 상세설명

 

8.2 용어 정리

  • Public Subnet
    • 외부의 인터넷과 연결되어 있는 서브넷으로 일반적으로 퍼블릭 IP 주소 사용
    • 외부에서 접근 가능하며 외부에서의 트래픽이 허용되는 영역

 

  • Private Subnet
    • 인터넷과는 분리되어 있는 서브넷
    • 외부에서의 직접적인 접근이 허용되지 않으며 내부 시스템 간의 통신이 중요

 

9. 보안그룹과 NACL

 

9.1 데이터가 전송되는 과정

  • 고객이 애플리케이션에 데이터 요청 시 데이터는 패킷으로 나뉘어 전송
  • 패킷은 클라우드 진입을 위해 인터넷 게이트웨이를 거침
  • 패킷이 특정 서브넷으로 입/출입 전 해당 서브넷과의 통신 권한 확인 필요 (NACL)

 

9.2 NACL (Network Access Control List)

  • 서브넷 수준에서 특정 인바운드 또는 아웃바운드 트랙픽을 허용하거나 거부
    • 인바운드란 들어오는 트래픽
    • 아웃바운드 나가는 트래픽

 

  • VPC 내 서브넷 간 네트워크 트래픽 제어를 하며 방화벽과 유사한 역할
    • 각 서브넷마다 적용됨
    • 서브넷 인바운드 및 아웃바운드 트래픽을 허용하거나 거부
    • 특정 서브넷 간의 흐름을 세밀하게 제어 가능
    • ex) 특정 서브넷에서 특정 포트로의 인바운드 트래픽 차단, 다른 서브넷으로의 특정 아웃바운드 트래픽 허용
    • VPC 내 원하는 보안 정책 적용하여 네트워크를 안전하게 관리

 

9.3 보안 그룹

  • EC2 인스턴스 가상 방화벽으로 인바운드 및 아웃바운드 트래픽 제어
  • 연결된 리소스에 도달하고 나갈 수 있는 트래픽 제어
  • 보안그룹은 기본적으로 모든 인바운드 트래픽 거부하며 모든 아웃바운드 트래픽 허용 (경비원 같은 역할)
  • 규칙 설정 시 특정 출처에서만 인바운드 트래픽을 허용하며 특정 포트에 대한 아웃바운드 트래픽을 제한 가능
  • 서브넷에 여러 EC2 인스턴스가 있는 경우 동일한 보안 그룹 혹은 서로 다른 보안 그룹에 매핑 가능
  • 패킷에 대한 이전 결정을 기억 (캐싱)
    • ex) 특정한 연결을 맺은 패킷에 대해 기억하고 이후에 해당 연결에서 나가는 패킷에 대해 추가 작업 가능
    • 특정 규칙에 따라 연결 확립 혹은 거부
    • 위 기능을 상태 저장 패킷 필터링이라고 칭함
    • NACL

 

  • 반대로 네트워크에서 특정한 상태 정보를 추적하지 않는 방식으로 패킷을 필터링하는 방법을 Stateless Packet Filtering이라고 칭함
    • 각각의 패킷이 독립적으로 처리
    • 이전의 패킷 간의 관계나 상태 저장 X
    • 간단하며 높은 성능
    • 연결의 상태를 고려하지 않기 때문에 특정 응용 프로그램의 요구사항 충족하지 못할 수 있음
    • 대규모 네트워크 및 고속 네트워크에 특화
    • NACL을 통해 구현됨

 

9.4 NACL vs 보안 그룹

 

보안 그룹 NACL
인스턴스 레벨에서 운영 서브넷 레벨에서 운영
인스턴스와 연결된 경우에만 인스턴스에 적용 연결된 서브넷에서 배포된 모든 인스턴스에 적용
허용 규칙만 지원 허용 및 거부 규칙 지원
트래픽 허용 여부를 결정하기 전에 모든 규칙을 평가 가장 낮은 번호의 규칙부터 순서대로 규칙을 평가
상태 저장 상태 비저장

 

 

9.5 AWS Network Firewall

  • VPC 경계에서 네트워크를 필터링하는 상태를 저장하는 관리형 네트워크 방화벽이자 침입 탐지 및 방지 서비스
  • 상태를 저장하여 이전의 연결 정보를 기반으로 현재 연결 정보를 평가하고 공격을 효과적으로 차단
  • 초당 수백만 개의 패킷 처리가 가능 (고성능)
  • IP 주소, 포트, 프로토콜 등 다양한 기준으로 트래픽 필터링 가능

 

9.5.1 AWS Network Firewall 리소스

  • 방화벽
  • 방화벽 정책 (방화벽의 모니터링, 보호 동작을 정의, 규칙 그룹과 정책 설정의 세부 정의)
  • 규칙 그룹 (네트워크 트래픽 처리를 위한 재사용이 가능한 기준 세트로 상태 저장 및 상태 비저장 서비스 제공)

 

9.6 AWS Reachability Analyzer

  • VPC의 소스 리소스와 대상 리소스 간의 연결 테스트를 수행할 수 있는 구성 분석 도구
  • VPC 환경에서 네트워크 트래픽의 경로와 연결성 분석 가능
  • 여러 기능 제공
    • 경로 분석
    • 연결성 테스트 기능
    • 보안 그룹/NACL의 검사
    • 경로 및 연결성 시각화 기능

 

9.6.1 AWS Reachability Analyzer를 통해 분석 가능한 리소스

  • 인스턴스
  • 인터넷 게이트웨이
  • 네트워크 인터페이스
  • Transit Gateway
  • Transit Gateway Attachment
  • VPC 엔드포인트 서비스
  • VPC 엔드포인트
  • VPC 피어링 연결
  • VPN 게이트웨이

 

10. AWS 데이터베이스

 

10.1 AWS RDS

  • 관계형 데이터베이스를 더 쉽게 설치, 운영 및 확장할 수 있는 웹 서비스
  • 사용자가 데이터베이스를 프로비저닝 하고 운영하는 복잡한 작업을 AWS에 대신 수행하므로 개발자는 데이터베이스 자체에만 집중 가능

 

10.1.1 AWS RDS 데이터베이스 엔진

  • 메모리, 성능 또는 입/출력(I/O)에 최적화된 6개의 데이터베이스 엔진에서 사용 가능
    • Amazon Aurora
    • PostgreSQL
    • MySQL
    • MariaDB
    • Oracle Database
    • Microsoft SQL Server

 

10.1.2 Amazon Aurora

  • 엔터프라이즈급 관계형 데이터베이스
  • MySQL 및 PostgreSQL 관계형 데이터베이스와 호환
  • 표준 SQL 데이터베이스보다 약 5배 빠른 속도
  • 표준 PostgreSQL보다 약 3배 빠른 속도

 

10.1.2.1 Amazon Aurora 주요 특징과 장점

  • 고성능 (더 저렴한 비용으로 고성능 제공)
  • 자동화된 백업 및 복구
  • 자동 확장 및 가용성 (비용 절감 효과)
  • 보안 및 규정 준수
  • MySQL 및 PostgreSQL 호환성
  • 서버리스 옵션

 

10.1.3 Dynamo DB

  • 완전관리형 NoSQL 데이터베이스 서비스
  • 높은 확장성, 고성능, 고가용성 제공하며 대규모 및 실시간 애플리케이션 사용의 요구사항을 충족시키는 데 사용

 

10.1.3.1 비관계형 데이터베이스 (NoSQL)

  • 관계형 데이터베이스와 달리 테이블 구조를 사용하지 않고 데이터를 저장하는 데이터베이스
  • 비관계형 데이터베이스 종류
    • 키-값 (AWS Dynamo DB)
    • 문서 (AWS Document DB)
    • 그래프 (AWS Neptune)
    • 열 (AWS KeySpaces)

 

10.1.3.2 Dynamo DB 특징과 장점

  • 서버리스 및 관리형
  • 고성능 및 확장성
  • NoSQL 데이터 모델
  • 유연한 스키마
  • 관리 및 모니터링
  • 보안 기능
  • Global Tables (데이터 전 세계적인 복제 및 동기화 자동 처리
반응형

'Cloud' 카테고리의 다른 글

[Cloud] AWS Cloud 기초 part 2  (1) 2024.05.20
[Cloud] 클라우드 이해  (1) 2024.04.30