본문 바로가기

클라우드/AWS

Architecting on AWS (2일)

2. 컴퓨팅 계층 추가

2.1.  EC2

  - 인스턴스 메타데이터를 사용하여 EC2 인스턴스에 대한 정보를 가져올 수 있다.

    ** public-hostname을 이용한다.

    ex) #hostname = $ ( curl -s http://169.254.169.254/latest/meta-data/public-hostname(ec2 고유) 

 

2.2. EC2 요금 유형 

  - 온디맨드 인스턴스 : 사용한 만큼 지불 ( 1년 이상 비효율 )

  - 예약 인스턴스 : 용량에 대한 비용을 미리 지불, 장기 사용 시

  - Savings plans : 리전 등을 자유롭게 변경, 장기 사용 시

  - 스팟 인스턴스 : 비용변동, 비용이 변하면 종료 2분전 중단 공지

 

2.3. EBS : Elastic Block Storage

  - Instance Store 란 무료 서비스가 존재하지만 특정한 인스턴스에만 존재하며 휘발성의 특성을 지닌다.

  - EC2 인스턴스를 위해 안정적이고 분리 가능한 블록 수준 스토리지를 제공한다.

  - 볼륨을 추가하며 인스턴스에 연결해주면 사용 가능하다. ( 마운트 작업이 필요 )

  - 대체로 3세대부터 EBS 최적화를 지원한다.

  - 하나의 인스턴스에만 사용 가능하기 때문에 여러 인스턴스 사용 시 EFS나 FSx가 적합하다. ( NAS )

    * EFS -> linux 환경 ( NFSv4 프로토콜 )

    * FSx -> window 환경 ( SMP 프로토콜, AD통합, 분산 파일 시스템 )

 

2.4. EC2 전용 옵션 ( 테넌시 )

  - default : 인스턴스가 공유된 하드웨어에서 실행

  - 전용 인스턴스 : 다른 AWS 계정과 물리적으로 격리 : 규정 준수, 라이선스 사용에 대한 요구사항을 충족

                              ( 비 특정 하드웨어에서 실행)

  - 전용 호스트 : 고객 전용의 EC2인스턴스 용량을 갖춘 물리적 서버, 고객이 선택한 특정 하드웨어

        --> 독립적인 서버를 구성, 물리적 장치의 id를 사용할 수 있다.

 

2.5. 태그

  - 관리와 검색 필터링이 용이해진다.

  - 많이 사용하는 것이 좋다.

 

2.6. EC2 고려사항

  - 클러스터 배치 그룹 : 인스턴스를 동시에 시작하며 같은 기본 하드웨어에 배치하게 함으로써 네트워크 성능을 높임

  - 분산형 배치 그룹 : 서로 영향을 끼치는 인스턴스의 경우 서로 다른 하드웨어에 배치하도록 한다.

  - 파티션 배치 그룹 : 파티션을 나누어 인스턴스의 영향을 단일파티션으로 억제한다.

 

3. 데이터베이스 계층 추가

  - 데이터 베이스 유형 : 관계형 ( SQL ), 비관계형 ( NoSQL )

  - 관계형 DB : 엄격한 스키마 규칙 및 데이터 품질 적용 필요하다

                        데이터베이스가 과도한 읽기 쓰기 작업을 하지 않는다.

                         RDBMS가 최고의 솔루션이 될 수 있다. 수직확장을 한다.

  - 비관계형 DB : 수평적으로 확장한다.

                            기존 db 스키마에 적합하지 않다. 정형화 되지 않은 데이터에 사용

                            빠른 읽기 쓰기 속도를 지원한다.  ( 분산 처리 )

  - 관리형 데이터 베이스 : aws에서 서비스 관련한 모든 관리를 해주는 DBMS이다.

                                          따라서 OS적 접근은 불가능하다.

3.1. RDS

  - 완전 관리형 관계형 데이터베이스 서비스 ( 관계형 DB 엔진을 사용 )

  - 다중 AZ를 통해 마스터, 슬레이브를 통해 안정성 구현이 가능하다.  

  - 자동 백업 및 복원을 통해 안정성을 높힐 수 있다.

  - Amazon Aurora : MySQL 과 PostgreSQL 과 호환되는 완전 관리형 관계형 데이터 베이스 엔진이다.

                                3개의 가용 영역에 영역별 2개씩 총 6개의 복제본을 가질 수 있어 안정성이 높다.

  - RDS 보안 제어 : 엑세스, 암호화, 이벤트 알림

  - IAM으로 철저히 관리가 가능.

          

3.2. DynamoDB

  - 완전 관리형 비관계형 데이터베이스 서비스

  - 서버리스 환경에서 잘 활용된다.

  - 용량이 부족하다면 자동으로 수평적으로 확장된다. ( 최상의 수평 확장 기능 )

  - 글로벌 테이블 : 복제본 테이블로 식별되는 한개 이상의 테이블의 모음이며 가까운 리전에 해당되는 테이블을 사용함으                                 로써 최적의 성능을 이끈다.

  - 사용 사례 : 게임서버 : 많은 읽기 쓰기가 일어난다.

                       온라인카트 

  - 일관성 : 최종일관성 : 복제본에서 DynamoDB로의 이동하는 짧은 시간동은 옛날 값이 나올 수 있다.

                  강력한일관성 : 한번에 복제본에서 값을 이동함으로써 한번에 새로운 값을 꺼낼 수 있다.

  - IAM으로 철저히 관리가 가능.

 

3.3. AWS Database Migration Service 마이그레이션 서비스

  - EC2, RDS, S3, 온프레미스 데이터베이스간의 마이그레이션에 사용.

  - AWS SCT ( Schema Conversion Tool) : 사용자가 기존 데이터베이스 스키마를 다른 데이터베이스 엔진으로 변환하도록

                                                                    해주는 독립 애플리케이션

 

4. 실습

4.1. AWS 웹 애플리케이션 배포

  - 앱 보안 그룹 : 인터넷에서 액세스하도록 허용

     DB 보안 그룹 : 앱 보안 그룹에서 액세스하도록 허용  

다음과 같이 구성

  - 앱 보안 그룹 구성

앱 서버 보안 그룹 생성 : 이름 및 VPC 설정

 

HTTP 인바운드 규칙 생성

 

   - DB 보안 그룹 생성

디비 보안 그룹 생성 : source를 앱 보안 그룹으로 추가함으로써 앱 보안그룹이 접근할 수 있도록 한다.

       

  - Amazon RDS 생성

mysql 선택

 

개발 및 싱글 인스턴스로 생성

 

 

DB 인스턴스 이름 및 사용자 설정

 

인스턴스 유형 설정

 

 

네트워크 설정

 

초기 테이블 생성 및 모니터링 시스템 체크 해제

 

  - 인스턴스 생성

ami 선택

 

인스턴스 유형 선택

 

네트워크 설정 및 IAM 역할 설정 : 서브넷의 경우 private이 아닌 public으로 생성

 

iam에 속한 정책 : aws system manager parameter store 내에 있는 inventory-app 설정에 엑세스할 권한을 부여
사용자 데이터에 위 스크립트 붙혀넣기 : 아파치 및 php, inventory 애플리케이션 sdk 설치

 

태그 설정

 

생성한 앱 보안그룹 선택

 

  - 인스턴스 생성 완료

 

 

  - 주소로 접속

db가 연결되지 않아 내용이 보이지 않는다.

 

  - setting에 rds 엔드포인트 입력

db 정보 입력

 

  -연결 확인

확인

 

 

5. AWS 기반 네트워킹

5.1. VPC

  - 클라우드의 네트워크 환경 , 과금 x

  - 점유 리소스에 대한 CIDR범위를 지정한다. EX) 10.0.0.0/16~28

  - 리전 1개에 해당되며 해당 가용영역에서 모두 사용 가능

  - 각 VPC는 사용자가 지정하는 프라이빗 IP 주소의 범위를 예약 ( 해당 CIDR 범위 내에서 사용 가능 )

  - 일반적으로 다중 VPC를 사용 및 복수 계정

       * 하나의 vpc 사용 사례 = 소규모 단일 애플리케이션

                                                고성능 컴퓨팅 (ex. HPC)

                                                 자격 증명 관리

  - 다중 VPC 패턴 : 하나의 계정에 여러개의 vpc 생성

                                단일 팀 단일 조직, 더 쉽게 표준 상태를 유지하며 액세스를 관리

                               

  - 복수 계정 : 계정별로 하나의 vpc 생성

                      여러팀에서 관리하는 애플리케이션을 배포하는  엔터프라이즈 고객 또는 조직에 가장 적합

 

 

  - Service Limit : 계정당 리전당 vpc 5개를 생성 가능하다.

  - 서브넷을 사용하여 VPC를 분리 : aws 의 경우 서브넷마다 5개의 ip 사용불가 

                                                         0~3, 255 사용불가. 네트워크 id, 게이트웨이, 나머지는 예약됨

 

  - 라우팅테이블 : vpc 리소스간에 트래픽을 연결하는데 필요

                             주요 기본 라우팅 테이블이 존재 ( 내부만 통신 가능)

                              각 서브넷마다 사용자 정의 라우팅 테이블을 만드는 것이  모범 사례

 

  - 퍼블릭 서브넷 : 퍼블릭 인터넷에 대한 인 아웃 바운드 엑세스를 지원하기위해 인터넷 게이트웨이에 대한 라우팅 테이블

                              항목을 포함함.

 

  - 프라이빗 서브넷 : 인터넷 게이트웨이에 대한 라우팅 테이블 항목이 없으며 퍼블릭 인터넷에서 직접 액세스 할 수 없다.

                                  퍼블릭 인터넷에서 직접 액세스할 수 없으며, 제한된 아웃바운드 퍼블릭 인터넷 액세스를 지원하기

                                  위해 nat 게이트웨이를 사용.

        * 퍼블릭 보다 프라이빗 서브넷에 더 많은 ip를 할당

 

  - 각 서브넷에 인터넷 게이트웨이와 nat 게이트웨이에 라우팅 테이블을 추가하여 인터넷을 가능하게 한다.

  - 서브넷 권장 상황 : 큰 크기의 서브넷을 고려

  - 탄력적 네트워크 인터페이스 : 가상 네트워크 인터페이스 : 동일한 가용영역안에서 ec2 인스턴스간에 이동할 수 있다.

                                                  : 두 개이상 사용하여 용도 별로 사용 가능하다.

                                                  : 새로운 인스턴스로 이동하면 프라이빗 ip, 탄력적 ip, mac 주소 유지

  - 탄력적 ip : 고정 퍼블릭 ipv4 주소

 

5.2. 가상 사설 클라우드 생성 실습

다음을 구성

  - vpc 생성

vpc 생성

 

  - 생성한 vpc에 dns hostname 활성화

 

vpc에서 실행된 ec2 인스턴스에서 dns 호스트이름을 자동으로 수신

 

  - 퍼블릭 서브넷 생성

다음과 같이 생성

 

퍼블릭 서브넷 생성

 

서브넷 설정 편집

 

자동으로 ip를 할당받도록 설정

 

  - 프라이빗 서브넷 생성

서브넷 생성

 

  - 인터넷 게이트웨이 생성

생성 후 vpc에 연결

 

  - 프라이빗 라우팅 테이블 설정 : vpc 내부 통신 가능

생성한 vpc에 해당되는 라우팅 테이블의 이름변경 : private route table 생성

 

  - 퍼블릭 라우팅 테이블 설정 : 퍼블릭의 외부 통신 가능

퍼블릭 라우팅 테이블 생성

 

라우트 편집 : 모든 트래픽을 인터넷게이트웨이로 보내는 설정

 

  - 앱 서버용 보안 그룹 생성

http 허용

 

  - 퍼블릭 서브넷에서 앱서버 시작

인스턴스생성
유저 데이터 사용

 

 

보안 그룹 선택

 

  - 인스턴스 생성 완료

 

 

 

  - vpc 피어링 연결생성

 

  - vpc 적용

 

 

  - 피어링 커넥션 퍼블링 라우팅 테이블 생성

 

 

  - share vpc에서 역방향 라우트 테이블 생성

 

  - 접속

vpc peering을 통해 다른 vpc에 있는 db와 연결

 

연결 확인

'클라우드 > AWS' 카테고리의 다른 글

Architecting on AWS (4일)  (0) 2022.07.07
Architecting on AWS (3일)  (0) 2022.07.06
Architecting on AWS (1일)  (0) 2022.07.04
10. AWS ( EFS, ROUTE 53 )  (0) 2022.06.27
9. AWS ( 오토스케일링 )  (0) 2022.06.23