AWS 정복기: Architecting on AWS 교육

noni·2023년 11월 16일
0
post-thumbnail

AWS Training

운좋게 아키텍처 관련 교육 기회를 얻었다. AWS 는 자체적으로 기술 교육 팀을 운영하면서 다양한 교육 세션을 제공하는데, 무료나 온라인 세션도 많기 때문에 Solution Associate Architect 등등 AWS 자격증에 관심이 있거나 실습을 곁들인 공부를 하고 싶다면 들어보는 걸 추천한다.

대상 교육: https://aws.amazon.com/ko/training/classroom/architecting-on-aws/
교육 순서: AWS 관리 콘솔 > IAM > 네트워크 > 컴퓨팅 > VPC > 스토리지 > 데이터베이스 > 모니터링 > VPC 고가용성 > 자동화 컨테이너 > 서버리스 > 엣지 서비스 > S3 + CloudFront > 백업/복구 > 멀티 티어 아키텍처 구축 실습

강의 커리큘럼은 위와 같은데 전반적인 기초 내용을 다루고 있어서 독학 할 때 참고하기에 유용해 보인다. 알고 있지만 제대로 모르는 AWS 이론을 한 바닥 정리하는 데 큰 도움이 될 듯하여 냉큼 신청했다.

미리 알아둘 내용

  • AZ(Availability-Zone; 가용영역): 고가용성 제공, 개별 데이터센터의 그룹, 서울에 4개
  • Resion(리전): 가용영역 3개 이상, 전체 32개 (2023.11 기준)
  • Edge Location(엣지 로케이션): 캐싱(서비스 속도 향상) 제공 일종의 서버 인프라, 정확하게는 리전/가용영역과 별개로 CloudFront(AWS CDN)와 Route53(AWS DNS)의 캐시서버

Well-Architected Framework

세부 서비스가 200개에 달하기 때문에 AWS 통한 서버 구성에 자칫 어지러움을 느끼기 쉽다. 이 부분을 지원하기 위에서인지 에땁에스 측에서 정석 아키텍처의 기본 요소를 아래와 같이 소개했다.

  1. 보안 (IAM)
  2. 비용 최적화 (Auto Scaling)
  3. 신뢰성 (AZ, 복구 테스트)
  4. 성능 효율성 (Serverless, 지연 시간 감소)
  5. 운영 우수성 (CloudFormation, 템플릿화 통한 운영 속도 개선)
  6. 지속 가능성

이 여섯 가지 요소에 집중하고 인프라를 바라보면 보다 안전한 환경을 구성할 수 있기도 하고, SA를 준비 중이라면 실무 관점에서도 도움이 될 것 같다. 아래는 이번 강의 골자를 요약한 내용으로 위 여섯 가지 요소를 기억하며 정리하도록 하자.


1. IAM (Identity and Access Management)

보안 주체(User, Group, Role)와 정책(Policy, Permission) 관련 내용을 아래 도표로 정리했다.

  • 자격 증명 기반 정책 예시
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ],
            "Resource": "*"
        }
    ]
}
  • 리소스 기반 정책 예시
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AddCannedAcl",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:root",
                    "arn:aws:iam::444455556666:root"
                ]
            },
            "Action": [
                "s3:*",
            ],
            "Resource": "*",
        }
    ]
}

2. VPC

* Private VS Public Subnet

  • IP
    • Private IP - 변경되는 IP
    • Elastic IP - 고정된 IP (발급 받고 안 지우면 비용 나감 :cry:)
  • ENI (탄력적 네트워크 인터페이스) - EC2 와 같은 인스턴스에 연결해서 사용
  • NAT
    • 외부망으로 직접 들어오는 접근은 막고 싶지만, 외부로 나가는 접근은 허용하고 싶을 경우 사용
    • Private Subnet 의 RT 를 0.0.0.0/0 모든 요청에 대해, NAT 게이트웨이를 통하도록 설정하여 구성할 수 있음

3. Firewall

AWS 자격증 시험에 단골 등장하는 내용이라고 한다. NACL 과 Security Group(보안그룹)은 비교할 만한 내용이 많으므로 시험을 준비 중이라면 꼭 정리하고 넘어가 보도록 하자.

4. Computing Modules

  • AMI: EC2 실행에 필요한 위한 세팅의 모음

  • 서버리스(suverless)

    • 서버 관리 없이 app 빌드/실행 지원해 주는 클라우드 네이티브 개발 모델
    • 실제로 서버가 없는 것은 아니고 컨테이너와 유사하게 사용자가 서버에 대해 신경 써야 하는 요소를 줄인 것
    • (sample) 프로그래밍 언어 등을 설정해 주면 LaMDA가 관련 서버 구성을 담당해 줌
  • Storage

    • Elastic Block Storage (EBS)
      인스턴스에 탑재 되는 볼륨으로써 데이터 특정 시점 복사본으로 Amazon EBS 스냅샷 생성이 가능하다. AMI 데이터 저장에 사용되며 스냅샷은Amazon S3에 보관되고 새 EC2 인스턴스 재생성 시 사용될 수 있다. (ref: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html)
  • Tenancy

5. Pricing

  • EC2 Spot Instance
    남는 EC2 호스트 용량 사용하는 인스턴스로써 최대 비용을 기존의 90%까지 절약 가능한 장점이 있지만, 온디맨드 복귀가 필요할 때는 2분 이내에 빠르게 워크로드를 복구해야 한다는 단점이 존재한다.
    (내결함성, 유연성, 스테이트리스 워크로드에 활용하는 것이 최적)

Lab

앞서 정리한 내용을 바탕으로 간단한 아키테처 구현 실습을 진행했다.
(참고로, 정리된 내용은 인프라 구성에 필요한 모든 개념을 포함한 것이 아니며 실습과 관련된 강의 내용만을 발췌한 것이기 때문에 보다 심도 깊은 학습을 원한다면 추가 조사가 필요하다)

목표 아키텍처는 위 다이어그램과 같다. 구현할 VPC 안에는 Public과 Private Subnet 이 각각 존재한다. 생성한 EC2 Instance는 퍼블릭 액세스가 가능하고, 프라이빗 서브넷에 인스턴스 격리를 격리할 것이다.

먼저 Public Subnet 을 통해 외부 인터넷과 통신해야 하기 때문에 Internet Gateway 설정이 필요하다. 외부 인터넷 통신(이 실습에서는 IPv4)을 활성화하려면 해당 인스턴스의 프라이빗 IPv4 주소와 연결된 퍼블릭 IPv4 주소를 알아야 한다.

또한 외부 요청은 받지 않지만, 외부로 호출은 보내고 싶은 서비스를 위해 Private Subnet 을 구성해야 한다. 이때는 NAT Gateway 를 활용한다. 위 구조를 위해 크게는 VPC, Subnet, Instance 순서로 설정 및 생성해야 한다. 구체적인 절차는 아래와 같다.

  1. Amazon VPC 생성
  2. Public 및 Private Subnet 생성
    1) 가용영역 할당
    2) CIDR block 설정
    3) Public IP 할당 (public subnet)
    4) Internet Gateway 생성 (public subnet)
    5) VPC 연동
    6) Route Table 생성 및 Rule 추가 (Internet 혹은 NAT Gateway) + Association
  3. Security Group 생성
  4. Instance 생성
    1) VPC, Subnet, Security Group 할당
    2) IAM Role 배정

마치며

기초적인 부분일지라도 정확한 개념을 알고 넘어가는 것이 중요하다. AWS 클라우드 서비스의 기본 컴포넌트와 탄생 배경을 알게 되어 유익한 시간이었다. IAM 과 Subnet 등의 네트워크 구성 부분에서 실습에서 다루지 못한 디테일한 내용이 많이 남아 있기 때문에 AWS 입문자라면 서비스 시나리오를 정해서 가상 인프라를 구성해 보면 좋을 것 같다.

profile
#python #mlops

0개의 댓글