서론
사내 온라인 강의 내용을 정리한 글입니다.
틀린 내용이 있을 수 있으니, 발견되면 댓글로 지적해 주시기 바랍니다!
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 비용, 예약 인스턴스, 스팟 인스턴스 등 다양한 비용 모델을 제공
- 이는 조직이 자원을 효과적으로 활용하고 예산을 관리할 수 있도록 지원
- 사용한 만큼만 비용을 지불하므로 비용 효율성 높아짐
- 클라우드 환경에서는 필요에 따라 IT 리소스를 확장 및 축소시킬 수 있음
- 몇 분 만에 전 세계에 배포
- 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 등)
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)
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 선택 필요
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 |