AWS Technical Essentials

무스마에서 올해 하반기부터 본격적으로 Global SaaS 사업 프로젝트를 수행하게 됩니다. 이 사업을 수행하는 기업은 반드시 클라우드 서비스 아키텍처 기술 교육을 받은 인력을 확보해야 합니다. 그래서 제가 이번에 회사의 지원을 받아 서울로 교육 출장을 오게 되었습니다. 모든 교육 일정은 다음과 같습니다.

  • AWS Technical Essentials (중급, 1일)
  • Architecting on AWS (중급, 3일)

부산 to 서울

IT 관련 교육으로 유명하다는(?) 영우글로벌러닝 AWS 교육센터가 서울 강남구 논현동에 있습니다. (7호선 학동역 6번 출구 앞) 아침 비행기를 타고 김해 공항을 출발해서 김포 공항에 도착, 9호선(김포공항->고속터미널)과 7호선(고속터미널->학동역)을 타고 교육 시작 시간(09:30)에 딱 맞춰서 도착했습니다.

강사

강사는 홍혜선 님입니다. 여성이고, 조금 연세 있으신 분이었습니다. 이모님

  • rosehs00@nate.com
  • AAI(AWS 공인 강사, AWS Authorized Instructor)
  • AWS한국사용자모임(AWSKRUG)

과정 목표

AWS Technical Essentials의 과정 목표는 다음과 같습니다.

  • AWS 플랫폼 관련 용어 및 개념 습득
  • EC2, VPC, S3, EBS 등 기초 서비스 이해
  • AWS가 제공하는 보안 조치와 IAM 주요 개념 이해
  • RDS, DynamoDB 등 데이터베이스 서비스 이해
  • Auto Scaling, Cloud Watch, Elastic Load Balancer 등 클라우드 관리 도구 이해

내용

전에 이런 교육을 정식으로 받아본 적은 없지만, AWS 서울 리전이 오픈되고 너나 나나 클라우드 기반 서비스 갈아타기 시작한 2016년 무렵부터 AWS Free Tier 계정을 만들고 블로그 찾아보면서 만들고 돌려보긴 헀습니다. 회사에서 AWS를 도입하면서부터 일부 자원을 맡아서 관리하기도 했습니다. 하지만 기초를 제대로 닦지 않아서 어딘가 약간 불안한 구석이 있었습니다. 이번 AWS Technical Essentials 과정에서는 이미 알고 있는 부분들도 있었지만, 다시 훑어보면서 궁금했던 부분들을 해결할 수 있었습니다.

어떤 것들을 알게 되었는지 살펴보겠습니다.

1. AWS 관련 전문 용어 + AWS 기본 서비스

AWS 역사(AWS는 2006년부터, 서울 리전은 2016년부터, SQS는 EC2랑 같이 나온 서비스다… 등등)에 대한 간략한 설명과 많이 쓰이는 기본 서비스(EC2, VPC, S3, RDS 등)의 이름과 기능에 대해 설명을 들었습니다.

2. VPC

제가 AWS를 관리하면서 가장 혼란스러웠던 것은 네트워크 구성에 관한 부분이었습니다. 지금까지 이 부분은 그동안 제가 신경 쓰지 않아도 누군가 미리 구성해주는 때가 많았습니다. 그런데 이걸 제가 직접해야 구성해야하는 순간이 왔습니다. 일단 서비스를 올리긴 했어도, VPC, 서브넷, 라우팅 테이블, 인터넷 게이트웨이, NAT 등 다양한 네트워크 컴포넌트와 옵션들을 어떻게 구성해야 할지, 하더라도 잘 세팅한 것이 맞는지 늘 의문이었습니다.

백문이 불여일견!

과정에 VPC를 생성하고 EC2를 실행하는 실습 과제가 있었습니다. 강사님의 설명을 듣고 순서대로 실습을 한 번 해보니 VPC와 하위 컴포넌트가 어떤 관계로 구성되는지 한 눈에 알 수 있었습니다.

이 내용은 별도로 AWS VPC와 그 하위 요소 구성하기에서 자세히 다뤄보겠습니다.

3. AWS Auto Scaling, ELB, Cloud Watch

참조: [SKT Insight] Telco 인프라, Pets에서 Cattle로의 진화?

Pets and Cattle은 흔히 온-프레미스 환경과 클라우드 환경의 차이점을 비유하는 단어입니다. 제한된 인프라 자원을 최대한 100% 가용성을 목표로 애지중지(?) 관리하면서 수직적 확장(Scale-Up)을 통해 수요에 대응하는 기존의 운영 방법을 Pets에 비유하고, 이와 반대로 자원을 탄력적으로 운영하면서 대체 자원을 통해 장애에 대응하고, 수평적 확장(Scale-Out)을 통해 수요에 유연하게 반응할 수 있는 클라우드 기반 환경을 Cattle에 비유한 것입니다.

AWS에서는 AMI, Auto Scaling, Elastic Load Balancer, Cloud Watch 등의 도구로 이를 실현합니다.

실습 과제를 통해 Auto Scaling Group에 등록된 EC2 인스턴스가 Cloud Watch에서 발행된 높은 사용률 경고 알람을 받아 자동으로 인스턴스 수를 확장하고, 또 반대로 낮은 사용률 경고 알람을 받고 인스턴스 수를 축소하는 모습을 살펴볼 수 있었습니다.

AWS의 PaaS인 Elastic Beanstalk를 사용하면 이 요소들을 한꺼번에 구성할 수 있습니다.

4. IAM

강사님이 특히 강조했던 AWS 인증, 권한 관리 프레임워크 IAM입니다. 무스마에서는 AWS 루트 계정 대신 IAM 계정을 사용하고 있고, 적절히 권한과 역할을 부여해서 사용하고 있습니다.

이번에 새롭게 알게 된 Best Practice 한 가지가 있습니다.

전에는 애플리케이션에서 AWS SDK를 사용해서 자원에 접근할 때, IAM 계정 앞으로 발급받은 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY를 설정 파일이나 환경 변수에 두고 파라미터로 전달해서 사용하고는 했습니다.

그런데 Best Practice는 인스턴스를 생성할 때 IAM에서 생성한 IAM Role을 설정해서 사용하는 것을 권장하고 있습니다. 즉 특정 사용자 앞으로 부여된 권한을 통해 접근하는 것이 아니라 역할 기반 접근 제어(RBAC, Role-Based Access Control)를 사용하는 것입니다. Credentials을 복사-붙여넣기 해서 설정 파일이나 환경변수에 등록할 필요가 없으니 보안상 더 안전합니다. 인스턴스 설정에 IAM Role을 정해주면, 다른 AWS 자원에 액세스 할 때 AWS Credentials를 요구하지 않습니다.

그런데 생각해보니, 그럼 AWS EC2가 아니라 로컬에서 개발할 때는 어떻게 해야되는지 궁금해졌습니다. 이건 다음 시간에 따로 설명하겠습니다.

5. 서비스 스코프(Service Scope)

서비스 스코프를 염두에 두고 아키텍처 설계를 해야합니다.

  • Global
    • IAM, Route53, CloudFront, WAF+Shield
  • per Region
    • VPC, S3, EFS, Glacier, …
  • per AZ
    • EC2, RDS, …

소감

AWS의 기초에 관한 지식을 정리할 수 있는 유익한 시간이었습니다. 머리 속에서 한 번에 정리가 되는 느낌입니다.

다만 강의료가 조금 비싸고, 잘 나온 AWS 책을 정독하고 직접 실습하거나, AWS 홈페이지의 튜토리얼을 해보면 알 수 있는 내용이긴 합니다. 학원을 안 보내줘도 스스로 공부를 잘 하는 학생도 있고, 학원을 가야 그나마 공부를 하는 학생이 있기 마련입니다. 그래서 학원 갔다고 생각하면 그리 아깝지 않을 것 같습니다. 그래도 개인이 비용을 감당하기에는 압박인 건 사실

태워주고(항공료) 먹이고(식대) 재워주면서(호텔 숙박비) 비싼 교육을 보내주신 무스마에 감사드립니다.

계속: Architecting on AWS (중급과정, 3일) 수강기로 이어집니다.