AWS 강의 2일차가 되었습니다.

1일차는 어제긴한데, 내용도 포괄적이고 이해도 잘 가지 않아서 생략!하겠습니다.

사실 오늘도 1일차라고 불러도 상관없는 내용입니다 :)


AWS DEV 1일차


1. 클라우드 컴퓨팅이란?

인터넷을 통해 IT 리소스와 애플리케이션을 온디멘드로 제공하는 서비스를 말하며, 요금은 종량 과금제입니다.

클라우드 컴퓨팅을 사용하면 인프라를 더는 하드웨어로 생각하지 않고, 소프트웨어로 생각하고 사용할 수 있습니다.

클라우드 컴퓨팅의 세 가지 모델

  • IaaS(Infrastructure as a Service) : 클라우드 IT의 기본 구성 요소(네트워킹, 컴퓨터, 스토리지)
  • PaaS(Platform as a Service) : 기본 인프라를 관리할 필요 없이 애플리케이션을 실행할 수 있게 해줍니다.
  • SaaS(Software as a Service) : 서비스 제공자가 실행 및 관리하는 완전한 제품을 사용자에게 제공합니다.

2. AWS 서비스 스택

image.png

3. AWS 기초 서비스

image.png

  • 컴퓨팅 : EC2를 사용하여 새로운 인스턴스를 확보하고 부팅하는데 필요한 시간을 몇 분으로 단축합니다.

    EC2를 ELB 및 AutoScaling 서비스와 결합하여 애플리케이션을 위한 고가용성 및 고성능 인프라를 개발합니다.

  • 네트워킹 : DNS서비스를 제공하고, 사용자에게 AWS상의 가상 네트워킹 환경을 직접 제어할 수 있는 기능을 제공하며, 마치 기존 네트워크 내에 있는 것처럼 EC2 인스턴스와 상호작용할 수 있도록 지원합니다.

  • 스토리지 : 데이터 및 사용 유형에 따라 여러 스토리지 옵션을 제공합니다.

  • 관리 및 보안 : IAM서비스를 통해 사용자 인증과 권한 부여 기능을 관리할 수 있습니다.

4. 비관리형 & 관리형

  • 비관리형 : 사용자가 확장, 내결함성 및 가용성을 관리. (ex : Amazon EC2)
  • 관리형 : 일반적으로 확장, 내결함성 및 가용성이 서비스에 내장되어 있음. (ex: Amazon S3)

5. 플랫폼 서비스

AWS에서는 클라우드에서 애플리케이션을 개발 및 배포할 수 있는 몇 가지 플랫폼 서비스를 제공합니다.

image.png

6. 서버리스 컴퓨팅

AWS Lambda는 이벤트에 응답하여 코드를 실행하고 자동으로 기본 컴퓨팅 리소스를 관리하는 서버리스 컴퓨팅 서비스입니다. AWS Lambda를 사용하여 사용자 지정 로직으로 다른 AWS 서비스를 확장하거나 AWS 규모와 성능, 보안에 따라 작동하는 자체 백엔드 서비스를 만들 수 있습니다. AWS Lambda는 Amazon API Gateway를 통한 HTTP 요청, Amazon S3 버킷 객체 수정, Amazon DynamoDB의 표 업데이트 및 AWS Step Functions의 상태 전환과 같은 여러 이벤트에 응답하여 자동으로 코드를 실행할 수 있습니다.

image.png

7. 아키텍처 진화

image.png

8. 서비스 소개

  • Amazon EC2

    서버로 할 수 있는 거의 모든 것을 EC2 인스턴스로 할 수 있습니다.

    Ec2는 다른 서비스와 연동하여 사용하도록 최적화되어 있습니다.

    요금은 온디맨드, 예약 인스턴스, 스팟 인스턴스 방식이 있습니다.

image.png

  • Elastic Load Balancing (ELB)

    ELB는 수신되는 애플리케이션 트패픽을 EC2 인스턴스, 컨테이너 및 IP 주소등의 여러 대상에 자동으로 분산합니다.

    단일 가용 영역 또는 다중 가용 영역에서 애플리케이션 트래픽의 다양한 로드를 처리할 수 있습니다.

    로드 밸런서의 고정 세션 기능을 사용하면 로드 밸런서가 사용자의 세션을 특정 서버 인스턴스에 바인딩할 수 있습니다.

image.png

  • Auto Scaling

    Auto Scaling을 사용하면 애플리케이션의 로드를 처리할 수 있는 적절한 수의 EC2를 유지할 수 있습니다.

    사용량이 시간, 일, 주 단위로 바뀌는 애플리케이션에 특히 적합합니다.

image.png

9. AWS를 사용하는 4가지 방법

  1. AWS Management Console: AWS가 제공하는 대부분의 기능에 리치 그래픽 인터페이스를 제공합니다.
  2. AWS CLI : Linux/Max 또는 Windows의 명령 프로그램에서 실행할 수 있는 유틸리티 묶음을 제공합니다.
  3. AWS SDK: 널리 사용되는 프로그래밍 언어에서 액세스할 수 있도록 해 주는 패키지를 제공합니다.
  4. AWS API : API를 직접 사용합니다.

image.png

10. 개발자 도구

  • AWS Cloud9

    프로젝트를 빠르게 시작하고 브라우저만으로 코딩할 수 있고, 실시간으로 함께 코딩할 수 있습니다.

image.png

  • AWS X-Ray

    개발자가 마이크로서비스 아키텍처를 사용해 구축된 애플리케이션과 같은 프로덕션 분산 애플리케이션을 분석하고 디버그하는 데 도움이 됩니다.

image.png

아래와 같이 각 과정을 분석하여, 어느 기능에서 병목 현상이 발생하는지 등의 디버깅을 할 수 있습니다.

image.png

9. IAM

image.png

IAM은 AWS 리소스에 대한 사용자의 액세스를 안전하게 제어하는 웹 서비스입니다. IAM을 사용하여 AWS 리소스를 사용할 수 있는 사용자(인증)와 해당 사용자가 어떤 리소스는 어떤 방법으로 사용할 수 있는지 제어합니다.

빅픽처

image.png

계정(Account)

  • 사용자 가입 : 이메일 / 암호 / 결제정보
  • 가입하면 계정ID(12자리)가 발급 됨. (별칭(Alias)을 설정할 수 있음)
  • 가입한 사용자를 root(루트)사용자로 두고, 직원마다 각자 IAM을 발급하여 사용
  • CloudTrailer로 사용 추적이 불가능.
  • 루트 사용자는 하드웨어적, 소프트웨어적 MFA를 사용하여 보안을 권장.

IAM Entity

  1. 사용자 : 하나의 로그인과 지정된 권한을 제공 [ 사용자명 / 암호 , 액세스 키(액세스 키 ID, 비밀 액세스 키) ]

    액세스키를 이용하는 것은 주로 CLI, SDK, API에 사용.

  2. 그룹 : 지정된 권한을 사용자 그룹에 적용

  3. 역할 : 권한 그룹을 특정 사용자 또는 AWS 서비스에 위임할 수 있는 간단한 방법을 제공

  4. 정책 : 엔터티가 어떤 리소스에 어떤 작업을 수행할 수 있는 지 지정하는 권한을 포함 (JSON형식)

권한 부여

사용자가 인증을 받으면, AWS 서비스에 액세스할 수 있는 권한을 부여받아야 합니다. 기본적으로 IAM 사용자는 계정에서 어떤 항목도 액세스할 수 없고, 권한을 명시적으로 나열하는 JSON 형식의 문서인 정책을 생성하여 사용자에게 권한을 부여해야 합니다. 최소한의 권한 세트로 시작하여 필요에 따라 추가 권한을 부여하는 것을 권장합니다.

image.png

정책 예제

IAM 정책은 정책의 결과, 작업, 리소스, API 호출을 통해 엔터티가 호출할 수 있는 선택적 조건을 정의하는 JSON문서입니다. 명시적으로 허용되지 않은 작업이나 리소스는 기본적으로 거부됩니다.

image.png

10. AWS Storage Option

image.png

Amazon S3

Amazon S3는 개발자와 IT 팀에 매우 안전하고 안정적이며 확장 가능한 객체 스토리지를 제공합니다.

간편한 웹 서비스 인터페이스를 통해 웹상 어디서나 원하는 양의 데이터를 저장 및 검색할 수 있으며 사용이 간편합니다.

image.png