【한글자막】 AWS Certified Solutions Architect Professional | Udemy

2023.01.06 - [DevOps/aws] - Udemy | AWS Certified Solutions Architect Associate 강의 | Section1~2

2023.01.06 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 3: AWS 시작하기

2023.01.06 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 4: IAM 및 AWS CLI

2023.01.09 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 5: EC2 기초

2023.01.10 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 6: EC2 - 솔루션스 아키텍트 어소시에이트 레벨

2023.01.11 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 7: EC2 인스턴스 스토리지

2023.01.13 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 8: 고가용성 및 스케일링성: ELB 및 ASG

2023.01.13 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 9: AWS 기초 : RDS + Aurora + ElastiCache

2023.01.16 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 10: Route 53


117. 솔루션 아키텍처 토론 개요

이 파트에서 여러 예시를 배우고 솔루션 아키텍처로서 배워야하는 자질을 알아볼 것이다. 

 

WhatIsTheTime.com

MyClothes.com

MyWordPress.com

Instatiating applications quickly

Beanstalk

 


118. WhatIsTheTime.com

사람들에게 시간 알려주는 사이트 

db 필요 없음. 

다운타임을 축소하고 싶음. 

다운타임 축소를 위해 수평, 수직 확장할 필요 있음. 

 

1. 사용자가 늘어나서 인스턴스를 t2.micro에서 m5.large 로 교체한다.

교체하는 기간에 다운 타임 발생

EIP 존재

2. 수평 확장으로 인스턴스를 늘림.

하지만 EIP 갯수도 늘어난다. 관리 어려움. 

 

다른 방식으로 해보자!

 eip를 제거하고 route 53을 활용한다. 

a record, ttl 1 hour 로 고정 

인스턴스 제거하는 과정에서 ttl 1시간 캐시되므로 

특정 유저는 접속 안됨 

 

로드 밸런서를 이용하자 !

ELB 는 상태 체크 가능하다. (보안 그룹 이용) 

ELB의 ip 주소가 지속적으로 바뀌기 때문에 별칭 레코드를 사용한다. 

 

수동으로 인스턴스 관리 하는 것보다 

ASG를 이용하자 

 

리전에 지진이 발생한다면 ? 

 

다중 AZ 를 사용

 

비용 절감을 위해 예약 인스턴스를 사용한다

ASG 의 최소 용량은 항상 돌아가야하니까 ( 최소한의 예약인스턴스 사용)

 

 

Route 53의 ttl 정책 때문에 항상 a레코드 타입을 쓸 수는 없다.  alias 존재 이유


119. MyClothes.com

Stateful Web App: MyClothes.com

 이번엔 Stateful 웹 앱인 myClothes.com 을 예로 들어보자. 

옷을 살 수 있고,  장바구니가 있고 

동시에 수백 명의 사용자가 있다. 

수평 확장을 하고 싶으며 앱을 stateless로 유지하게 해야한다. 

사용자는 장바구니를 잃어버리면 안된다. 

또한 주소 등의 사용자 정보를 효과적으로 보관하고 어디에서나 접근할 수 있는 데이터베이스에 저장할 거다.

 

ASG 사용 

ELB로 트래픽을 각 ASG 로 보낸다고 가정하자

A 인스턴스에서 장바구니를 만들고 

다음 연결에서 B인스턴스에 연결되면 장바구니가 사라진다.

 

사용자가 같은 ASG 의 인스턴스에 연결되게 할려면 세션을 켜야한다. 

 

ELB session 사용

고착도 , 세션 밀접성을 도입해야한다. 

Stickiness 을 설정하면 ELB에서 특정한 인스턴스로만 접근한다. 

세션을 사용해도 인스턴스가 종료되면 장바구니를 잃어버리게 된다. ㄴ

 

Introduce User Cookie 

사용자 쿠키를 사용해보자

만약 장바구니에 대한 정보를 사용자가 지니고 있다면? 

인스턴스들은 장바구니에 대한 정보를 알 필요가 없다. -> stateless 하게 된다. 

사용자 , 클라이언트에서 계속 인증하니까 

하지만 데이터를 전송할 때마다 사용자에 대한 정보를 보내므로 HTTP 요청이 무거워진다. 

또한 전송과정에서 사용자의 쿠키가 변경되면 보안 위험도 존재한다 .

따라서 EC2 인스턴스가 사용자 쿠키 내용을 점검해야한다. 

Cookie must be validated 

전체 쿠키의 크기는 4kb 이하까지만 가능해 쿠키 내에는 매우 작은 정보만 저장 가능 

대량의 셋은 불가하다. 

 

Introduce Server Session 

전체 장바구를 웹 쿠키로 보내는 대신에 단순 세션 ID 만 보내는 것이다.

백그라운드에는 ElastiCache 클러스터가 존재한다. 

세션 ID를 보낼 때 EC2 인스턴스에게 '이 물건을 장바구니에 추가할 거야'라고 말한다. 

EC2 인스턴스는 장바구니 내용을 ElastiCache 에 추가하고 이 장바구니 내용을 불러올 수 있는 ID가 바로 세션 ID 가 된다.  ( 사용자 세션 ID를 EC2 를 걸쳐 ElastiCache 에 저장하고, EC2 에 작업이 생길 때마다 ElastiCache 에서 세션 ID를 찾는다.) 

ElastiCache 는 1천분의 1초 이하의 성능을 가졌다. 따라서 이 모든 것이 매우 빠르게 진해오딤 .

세션 데이터는 DynamoDB에 저장한다. 

ElastiCache 내부를 수정할 수 없기 때문에 훨씬 안전하다. 

 

Storing User Data in a database

사용자 데이터를 RDS에 저장한다. 

RDS 는 인스턴스와 통신할 수 있으며 일종의 다중 AZ stateless 솔루션을 효과적으로 얻을 수 있다. 

 

Scaling Reads

사용자가 매우 많아졌다고 가정하자.

RDS 읽기 전용 복제본을 사용한다. (최대 5개의 replicas 가능) 

 

Scaling Reads (Alternative) - Write Through

EC2 인스턴스에서 데이터를 찾을때 먼저 elastiCache 를 확인한다. cache miss

데이터가 없으면 RDS 에 찾아보고 해당 데이터를 elastiCache에 캐싱한다 . cache hit 를 위해 

캐싱 했기 때문에 rds 상의 트래픽을 줄이고 동시에 성능을 높일 수 있다. 

 

Multi AZ - Survive disasters

다중 AZ ELB가 있다.

route 53 도 가용성이 높다. 

로드밸런서를 다중 AZ로 만든다 .

오토 스케일링 그룹도 다중 AZ 

RDS 역시 다중 AZ 

 

대기 복제본을 만드는 것도 방법이다. 

레디스를 사용한다며 ElastiCache도 다중 AZ 기능을 가짐.

 

철저한 보안그룹 

 

3 tier 아키텍처를 위한 팁

클라이언트, 웹, 데이터베이스 

 

ELB 고정 세션

웹 쿠키를 이용한 stateless 애플리케이션 

ElastiCache 

- 세션 저장 ( 또는 dynamodb 사용)

- RDS 캐싱 

- 다중 AZ

RDS

- 사용자 데이터 저장 

- 읽기 복제본 생성 

- 다중 az for DR

철저한 보안그룹 설정  


120. MyWordPress.com

완전히 확장 가능한 WordPress 웹 사이트 만들기 

사진을 업로드하고 보여주는 기능 

사용자 데이터, 콘텐츠는 mySql 에 저장된다. 

 

확장하고 싶다면 ? 

RDS를 Aurora 로 교체

다중 az, read replicas, 글로벌 데이터베이스 사용 가능 

 

Storing  images with EBS

EBS에 사진을 저장하는 경우 

ELB에서 다른 두개의 인스턴스와 각각 EBS가 연결되어있다면 

한쪽 EBS 만 사진을 갖는다 .

EBS 볼륨의 단점은 하나의 인스턴스만 있을 때는 잘 작동하지만 다중 AZ 또는 다중 인스턴스로 확장을 시작하면 문제가 생기기 시작한다 .

 

Storing images with EFS

EFS 는 네트워크 파일시스템 nfs 이다. 

EFS 드라이브에 접근하기 위해 각 AZ 에 ENI 를 생성한다. 

 

정리

Aurora Db를 이용하여 쉽게 다중 az 와 읽기 복제본을 생성한다. 

EBS 에 데이터를 저장 ( 단일 애플리케이션에 유리) 

Vs Storing data in EFS ( 분산 애플리케이션에 유리

 

EFS가 EBS 보다 비싸다.


121. 애플리케이션을 빠르게 인스턴스화 하기

Instantiating Application quickly

풀 스택을 실행하면 애플리케이션을 설치하고 데이터 삽입 및 복구하고 모든 내용을 구성한 다음 

애플리케이션을 실행하는데 매우 긴 시간이 걸린다.  어떻게 하면 더 빨리 할 수 있을까?

 

full stack ( EC2, EBS, RDS) 

클라우드의 이점을 활용하면 된다 .

 

EC2 Instances: 

1. Golden AMI 사용

애플리케이션과 OS 종속성(dependencies) 등 모든 것을 사전에 설치하고 그것으로부터 AMI를 생성한다. 

애플리케이션 ,OS 종속성 등을 재설치할 필요가 없다. 모든 것이 이미 설치된 상태에서 바로 실행된다. 

 

2. 사용자 데이터 부트스트래핑

인스턴스가 처음 시작될 때 구성하는 것

애플리케이션, OS 종속성 등을 설치하기 위해 부트스트래핑을 할 수 있다.

매우 느리다.

 

3. 하이브리드

Elastic BeanStalk  은 ami를 구성하고 사용자 데이터를 추가하는 방식

 

RDS Databases:

스냅샷으로부터 복구 

EBS Volumes:

스냅샷으로부터 복구


122. Beanstalk 개요

Developer problems on AWS 

인프라 관리, 코드 배포, db lb 에 대한 환경 구성, 스케일링 문제등

고려해야할 문제가 많다.

 

개발자는 코드만 신경 쓰게 하자.

 

Elastic Beanstalk - Overview

여러 aws 서비스로 구성된다. 

관리형 서비스 

  • 자동으로 용량 프로비저닝, 로드 밸런싱, 스케일링, 애플리케이션 상태 체크, 인스턴스 구성
  • 코드만 신경 쓰면된다.

여전히 각각의 구성 요소를 완전히 제어할 수 있다.

beanstalk은 하나의 인터페이스에 통합되어 있음. 

 

beanstalk 은 무료이지만 구성요소인 aws 서비스는 지불해야함. 

 

Elastic Beanstalk - Components 

Beanstalk의 구성요소는 애플리케이션으로 이루어져 있다. 

(환경, 버전, 구성 등) 

 

애플리케이션 버전 

애플리케이션 코드의 반복이다. 버전1, 버전2,.... 등이 있을 수 있다

 

애플리케이션 환경

특정 애플리케이션 버전을 실행하는 리소스의 모음이다.

환경 내에서는 한 번에 하나의 애플리케이션 버전만 존재할 수 있다.(onlt on application version at a time) 

환경 내에서 애플리케이션 버전을 버전 1에서 버전 2로 업데이트 할 수 있다. 

 

Beanstalk에서는 서로 다른 두개의 티어를 가질 수 있다. 

웹 서버 환경 티어작업자 환경 티어 

다양한 환경을 만들 수 있다. ( dev, test, prod 등)

 

 

애플리케이션을 생성하고 버전을 업로드하고 환경을 실행하고 그 후에는 환경 수명 주기를 관리한다. 

이를 반복한다. 

 

Beanstalk이 지원하는 언어 

Go, Java SE, Java with Tomcat .NET Core on Linux

.NET Core on Windows Server Node.js, PHP

Python, Ruby, Packer Builder Single Container Docker

Multi-container Docker Preconfigured Docker 등입니다

지원하는 언어가 없다면 사용자 지정 플랫폼을 만들 수 있는 고급 기능이 있다. 

 

beanstalk 에서는 거의 모든 것을 배포할 수 있다. 

 

Webserver Tier vs Worker Tier 

웹서버 티어와 작업wk티어는 무슨 뜻일까? 

웹티어는 1번 , 전통적인 방식의 아키텍처로 로드 밸런서가 있고 웹서버가 될 다수의 EC2 인스턴스가 있는 오토 스케일링 그룹으로 트래픽을 보낸다 .

 

작업자 티어는 2번 

여기서 클라이언트가 ec2 인스턴스에 직접 접근하지 않는다.

메시지 대기열인 sqs 대기열을 사용한다. 

메시지가 sqs 대기열로 전송된다. 

ec2 인스턴스들이 작업자가 된다.  sqs 대기열로부터 메시지를 가져와서 처리한다. 

sqs 메시지 숫자에 따라 ec2 인스턴스가 확장된다. 

 

웹 환경이 작업자 환경의 sqs 대기열로 메시지를 푸시함으로써 웹 환경과 작업자 환경이 함께 할 수 있다. ?


123. Beanstalk 실습

PaaS | 응용 프로그램 관리 | Amazon Web Services

 

PaaS | 응용 프로그램 관리 | Amazon Web Services

데이터베이스, 스토리지, 보안 및 기타 범주에 대한 정보를 확인하세요.

aws.amazon.com

클라우드 포메이션에서 stack 을 가져와서 실행했다. 

 


Quiz 8: 클래식 솔루션 아키텍처 퀴즈

1. 웹사이트 TriangleSunglasses.com는 Application Load Balancer가 관리하는 오토 스케일링 그룹에서 관리 중인 EC2 인스턴스 플릿에 호스팅되어 있습니다. ASG는 웹사이트로 들어가는 트래픽을 온디맨드 기반으로 스케일링하도록 구성되었습니다. 비용 절감을 위해, ASG가 ALB로 통하는 트래픽을 기반으로 스케일링을 하도록 구성해 둔 상태입니다. 솔루션의 고가용성을 보장하기 위해, ASG를 업데이트하고 최소 용량을 2로 설정했습니다. 요구 사항을 충족시키되, 비용을 더욱 절감하려면 어떤 작업을 해야 할까요?

어떤 상황이건 2개의 EC2 인스턴스를 실행하면 추가적인 비용을 절감할 수 있습니다.

 

2. 다음 중 "무상태" 애플리케이션 티어를 설계하는 데에 도움이 되지 않는 것을 고르세요.

EBS 볼륨은 특정 AZ에 저장되며, 한 번에 하나의 EC2 인스턴스에만 연결될 수 있습니다.

 

EBS 볼륨은 az에 생성! | 하나의 EC2 인스턴스에만 연결된다.

 

3. 관리 중인 Linux EC2 인스턴스 100s에 소프트웨어 업데이트를 설치하려 합니다. 이 업데이트를 EC2 인스턴스로 동적으로 로딩되어야 하며, 많은 양의 연산을 요구해서는 안 되는 공유 스토리지에 저장하고자 합니다. 어떤 방법을 사용해야 할까요?

EFS는 EC2 인스턴스의 100s에 동일한 파일 시스템을 마운트할 수 있게 해주는 네트워크 파일 시스템(NFS)입니다. EFS에 소프트웨어 업데이트를 저장하면 각 EC2 인스턴스가 이들을 평가할 수 있게 됩니다.

 

4. 솔루션 아키텍트로서, 여러분은 복잡한 ERP 소프트웨어 스위트를 AWS Cloud로 이전하려 합니다. 오토 스케일링 그룹이 관리하는 한 세트의 Linux EC2 인스턴스에 소프트웨어를 호스팅할 계획입니다. 소프트웨어가 Linux 기기를 준비하는 데에는 보통 한 시간 이상이 걸립니다. 스케일 아웃이 발생할 경우, 설치 과정을 빠르게 만들기 위해서는 어떤 방법을 추천할 수 있을까요?

Golden AMI는 설치되고 구성된 전체 소프트웨어를 포함한 이미지이기 때문에, 향후 이 AMI로부터 EC2 인스턴스를 빠르게 부팅할 수 있습니다.

 

5. 애플리케이션을 개발 중에 있으며, 최소 비용을 사용해 이 애플리케이션을 Elastic Beanstalk으로 배포하려 합니다. 이를 위해서는, 애플리케이션을 .................. 에서 실행해야 합니다.

 

문제에서 애플리케이션이 아직 개발 단계에 있으며 비용을 절감하고자 한다고 언급하고 있습니다. 단일 인스턴스 모드는 하나의 EC2 인스턴스와 하나의 탄력적 IP를 생성합니다.

 

6.애플리케이션을 Elastic Beanstalk으로 배포하던 도중, 배포 프로세스가 극도로 느리다는 것을 알게 되었습니다. 로그를 검토한 결과, 종속성이 매 배포 당 각 EC2 인스턴스로 리졸브된다는 사실을 발견했습니다. 영향을 최소화하면서 배포 프로세스를 빠르게 하려면 어떻게 해야 할까요?

Golden AMI는 전체 소프트웨어, 종속성 및 구성을 포함하는 이미지이기 때문에, 향후 이 AMI로부터 EC2 인스턴스를 빠르게 부팅할 수 있습니다.

+ Recent posts