AWS 클라우드 기초 개념

wjdghks95·2024년 6월 29일

클라우드 컴퓨팅이란?

클라우드 컴퓨팅은 IT 리소스를 인터넷을 통해 온디맨드로 제공하고 사용한 만큼만 비용을 지불하는 것을 말한다.

* 온디맨드: 공급 중심이 아닌 수요에 반응해서 서비스를 제공하는 것

클라우드 컴퓨팅의 장점

  1. 자본지출(CAPEX)을 운영지출(OPEX)로 대체
    a. 데이터 센터 구축 비용, 서버 구매 비용 => 운영비
    b. 막대한 초기비용 대신 쓰는 만큼 비용 지불
  2. 규모의 경제로 얻게 되는 이점
    a. 한 개를 사는 것 보다 100개를 사는게 단가가 낮음 => 규모의 경제
    b. AWS의 규모의 경제로 인한 이득을 누릴 수 있음
  3. 용량 추정 불필요
  4. 속도 및 민첩성 개선
    a. 몇 번의 클릭으로 바로 리소스를 확보 가능
    b. 개발비용 절감
  5. 데이터 센터 운영 및 유지 관리에 비용 투자 불필요
    a. 인프라 관리가 아닌 비즈니스에 자원 집중 가능
  6. 빠른 확장성
    a. 몇 번의 클릭으로 전 세계에 서비스 가능

클라우드 컴퓨팅 모델

IaaS: Infrastructure as a Service&

  • 인프라만 제공
  • OS를 직접 설치하고 필요한 소프트웨어를 개발해서 사용
  • 즉 가상의 컴퓨터를 하나 임대하는 것과 비슷함
  • 예: Amazon EC2

PaaS: Platform as a Service

  • 인프라 + OS + 기타 프로그램 실행에 필요한 부분(런타임)
  • 바로 코드만 올려서 돌릴 수 있도록 구성
  • 예: Firebase, Google App Engine 등

SaaS: Software as a Service

  • 서비스 자체를 제공
  • 다른 세팅 없이 서비스만 이용
  • 예: Gmail, DropBox, Slack, Google Docs

클라우드 컴퓨팅 배포 모델

공개형(클라우드)

  • 모든 부분이 클라우드에서 실행
  • 낮은 비용
  • 높은 확장성

폐쇄형

  • 모든 부분을 사설 데이터센터에서 실행
  • 높은 수준의 커스터마이징 가능
  • 초기 비용이 비쌈
  • 유지보수 비용이 비쌈
  • 높은 보안

혼합형(하이브리드)

  • 폐쇄형과 공개형의 혼합
  • 폐쇄형에서 공개형으로 전환하는 과도기에 사용
  • 혹은 폐쇄형의 백업으로 사용

클라우드 컴퓨팅의 용어 및 개념

고가용성(High Availability)

  • 장애 상황을 해결하고 서비스를 지속할 수 있는 능력
  • 장애 상황의 준비가 되어있는 아키텍쳐가 필요

장애 내구성 or 내결함성(Fault Tolerance)

  • 장애 상황에도 서비스를 지속할 수 있는 능력
  • 장애 상황에 영향을 받지 않는 아키텍쳐가 필요

  • 타이어 하나가 터지면 운전 불가능
  • 고가용성(X), 장애 내구성(X)

  • 하나의 타이어가 터지더라도 운행자가 내려서 수리 후 운전 가능
  • 단, 내려서 수리하는 동안에는 운전 불가능
  • 고가용성(O), 장애 내구성(X)

  • 엔진 하나가 고장 나더라도 계속 비행 가능
  • 고가용성(O), 장애 내구성(O)

* 장애내구성 확보

  • 일반적으로 완전한 장애내구성 위해서는 한 개 이상의 예비 인프라가 필요 => 비용 x2
  • 이외에 두 개 이상의 인프라를 활용하기 위한 추가적인 아키텍처가 필요 => 복잡함 증가
  • 고가용성 / 장애 내구성 중 어떤 것을 확보할 지 고민이 필요함

확장성(Scalable)

  • 쉽고 빠르게 규모를 늘릴 수 있는 능력
  • 주로 수요에 따라 컴퓨팅 파워 혹은 용량 확장

탄력성(Elastic)

  • 수요에 따라 컴퓨팅 파워/용량을 확장 하거나 축소할 수 있는 능력
  • 불필요한 자원을 사용하지 않고 비용 최적화에 필수적인 능력

긴밀한 결합(Tight Coupling)

  • 다른 주체에 대해서 단단하게 얽힌 상태
  • 주체끼리 높은 의존성을 가지고 있어 변경이 쉽지 않음

느슨한 결합(Loose Coupling)

  • 다른 요소에 대해 얽히지 않고 연결되어 있는 상태
  • 주체끼리 낮은 의존성을 가지고 있어 쉽게 변경할 수 있고 유연함

가상화

  • 단일 컴퓨터의 하드웨어 요소를 일반적으로 가상 머신(VM)이라고 하는 다수의 가상 컴퓨터로 분할할 수 있도록 해주는 기술

온프레미스

  • 자체적으로 데이터센터 혹은 전산실에 서버를 설치해 운영하는 방식

프로비전

  • 리소스를 사용할 수 있도록 준비

가상화란?

1세대: 완전 가상화(Fully Emulated)

  • 모든 시스템 요소가 에뮬레이터 안에서 돌아감
  • 즉 CPU, 하드디스크, 마더보드 등 모든 요소를 에뮬레이터로 구현하여 Guest OS(가상화 환경의 OS)와 연동
  • 엄청느림

2세대: Paravirtualization

  • Guest OS는 하이퍼바이저와 통신
  • 하이퍼바이저: OS와 하드웨어 사이에 존재하는 일종의 가상화 매니저
  • 속도의 향상
  • 몇 몇 요소의 경우 여전히 에뮬레이터 필요 = 느림

3세대: Hardware Virtual Machine(HVM)

  • 하드웨어에서 직접 가상화를 지원
  • 직접 Guest-OS가 하드웨어와 통신 = 빠른 속도(near bare-metal)

AWS의 구조

리전(region)

  • AWS의 서비스가 제공되는 서버의 물리적 위치

  • 전 세계에 흩어져 있으며 큰 구분(동남아, 유럽, 북아메리카 등등)으로 묶여 있음

  • 각 리전에는 고유의 코드가 부여됨

    • 예: 서울 리전은 ap-northeast-2
    • 예: 미국 동부(버니지아 북부)리전은 us-east-1
  • 리전별로 가능한 서비스가 다름

* 리전을 선택할 때 고려할 점

  • 지연 속도
  • 법률(데이터, 서비스 제공 관련)
  • 사용 가능한 AWS 서비스

가용 영역(Availability Zone)

  • 리전의 하부 단위
  • 하나의 리전은 3개 이상의 가용영역으로 구성
  • AZ라고 줄여 부름
  • 하나 이상의 데이터 센터로 구성
  • AZ간의 연결은 매우 빠른 전용 네트워크로 연결
  • 반드시 물리적으로 일정 거리(몇 KM 이상) 떨어져 있음
    • 다만 모든 AZ는 서로 100KM 이내의 거리에 위치
    • 여러 재해에 대한 대비 및 보안
  • 각 계정별로 AZ의 코드와 실제 위치는 다름

엣지 로케이션(Edge Location)

  • AWS의 CloudFront(CDN)등의 여러 서비스들을 가장 빠른 속도로 제공(캐싱)하기 위한 거점
  • Global Accelerator와 유저를 연결하는 거점
  • 전 세계에 여러 장소에 흩어져 있음

ARN(Amazon Resource Names)

  • AWS의 리소스에 부여되는 고유 아이디
  • arn:[partition]:[service]:[region]:[account_id]:[resource_type]/resource_name/{qualifier}

AWS 계정과 프리티어

AWS 계정

  • AWS의 사용자와 리소스를 관리하는 단위
    • AWS 계정에 AWS 리소스를 생성
    • 이후 다양한 사용 주체(IAM 사용자, 역할 등)가 생성된 리소스를 사용
    • 계정 != 사용자

Root 사용자

  • 계정을 생성할 때 같이 생성되는 사용자
  • 계정의 모든 권한을 가지고 있으며 계정 권한을 제한할 방법이 없음
  • 탈취 당했을 때 복구가 매우 어려움 = MFA 필수

IAM 사용자

  • IAM(Identity and Access Management)을 통해 생성한 사용자
  • 생성 시 권한이 따로 부여되어 있지 않으며 정책 혹은 그룹을 통해 권한을 부여 받아 활동
  • 사람이 아닌 어플리케이션 등의 가상의 주체를 대표할 수도 있음
  • AWS의 관리를 제외한 모든 작업은 관리용 IAM User를 만들어 사용 권장

IAM 기초

IAM이란?

  • AWS의 보안 및 관리를 담당하는 글로벌 서비스
  • 주요 기능
    • AWS 어카운트 관리 및 리소스/사용자/서비스의 권한 제어
      • 임시 권한 부여
      • 서비스 사용을 위한 인증 정보 부여
    • 사용자의 생성, 관리, 계정의 보안
      • MFA
      • 사용자의 패스워드 정책 관리
    • 다른 계정과의 리소스 공유
    • Identity Federation(Facebook 로그인, 구글 로그인 등)

IAM 구성

사용자

  • 실제 AWS를 사용하는 사람 혹은 어플리케이션을 의미

그룹

  • 사용자의 집합
  • 그룹에 속한 사용자는 그룹에 부여된 권한을 행사

정책(Policy)

  • 사용자의 그룹, 역할이 무엇을 할 수 있는지에 관한 문서
  • JSON 형식으로 정의
  • 그룹, 역할, 유저 등에 부여되어 각 주체가 행동 가능한 권한을 정의
  • 구성
    • Resource: 어떤 AWS 리소스에 대해서
    • Action: 어떤 행동을
    • Effect: 허용/거부
    • Condition: 정책이 적용되는 조건

역할(Role)

  • AWS의 권한의 집합
  • 특정 사용자나 그룹에 연결되어 있지 않음
  • 다양한 어플리케이션, 서비스, IAM 사용자가 역할을 받아 사용

AWS 사용과 인증

AWS 이용 방법

  • AWS 웹 콘솔
    • 콘솔 액세스 자격 증명을 사용하여 인증
  • 프로그래밍 액세스
    • Command Line Interface(CLI)
    • Software Development Kit(SDK)
    • 프로그램 방식 액세스 자격 증명을 사용하여 인증

콘솔 액세스 자격 증명

  • Root Email/Password
  • IAM 사용자 이름/Password
  • MFA

프로그래밍 방식 액세스 자격 증명

  • Acess Key Pair
  • 하나의 IAM 사용자 당 2개의 Access Key 발급 가능

실습 - IAM 사용과 인증

액세스 키 할당
1. 사용자 생성 후 권한 부여
2. 액세스 키 생성(Access Key, Secret access key)
3. EC2 연결
4. CLI 창에 aws configure 입력
5. Access Key, Secret access key, default region 입력

* profile 설정 및 실행
aws confiure --profile user-a
aws iam list-users --profile user-a

참고

https://www.inflearn.com/course/%EC%89%BD%EA%B2%8C-%EC%84%A4%EB%AA%85%ED%95%98%EB%8A%94-aws-%EA%B8%B0%EC%B4%88/dashboard

0개의 댓글