배꼽파지 않도록 잘 개발해요

[엘리스sw] 실습으로 배우는 AWS - ① AWS 시작하기 본문

교육/엘리스 SW 학습 내용

[엘리스sw] 실습으로 배우는 AWS - ① AWS 시작하기

꼽파 2024. 5. 19. 16:48


1. AWS 시작하기
2. AWS Computing: EC2 활용하기
3. Storage, DB CDN 서비스 활용하기
4. AWS 네트워킹 활용하기


◆ AWS 시작하기

AWS 개념 & 주요 서비스

인프라(플랫폼)

- 프로그램이 작동할 때 이를 실행시킬 수 있는 환경

- PC, 서버, 데이터 센터

- 서비스를 안정적으로 유지하기 위해서는 인프라의 안정성이 중요함.


서버와 PC의 근본적인 차이 : 성능과 안정성
성능

  • PC : CPU 1개, 메모리 최대 4개
  • 서버 : CPU 6개, 메모리 12개까지 확장 가능

안정성

  • PC : 사용하다가 전원이 나가서 데이터 유실 가능성
  • 서버 : 사용하다가 전원이 나가도 데이터를 보호할 수 있는 장치가 내부에 탑재되어 있음. 실제로 서비스를 지속적으로 운영하기 적합합 환경

데이터 센터

  • 웹 서버의 사용자가 많아져서 수십, 수백대를 수용해야하는데 이를 관리하고 항상성을 유지할 수 있는 공간이 필요함. 
  • 데이터센터에서는 서버가 24시간 작동할 수 있도록 습도와 온도를 유지시키는 '항온항습' 기능이 있고, 장애가 발생했을 때에도 서비스를 유지시킬 수 있도록 서비스에 대한 '이중화 장치'가 마련되어 있음.

플랫폼(인프라) 관점에서 고려되어야 할 사항

  • 안정성 : 얼마나 안정적으로 서비스를 운영할 수 있는지
  • 민첩성 : 개발한 프로그램을 적재적소에 배포할 수 있도록 인프라 자원이 준비되어 있는지
  • 관리 : 여러 개의 인프라 자원이 존재하였을 때 관리가 얼마나 편리한지
  • 비용 : 얼마나 비용 효율적으로 인프라 자원을 운용할 수 있는지

 

데이터 센터, 가상화, 클라우드

  • 데이터 센터 : 물리적인 장비들을 안정적이고 중단 없는 서비스 유지 목적
  • 가상화 : 물리적인 서버 위에서 소프트웨어적으로 여러 개의 서버(논리서버, 가상머신) 논리적으로 구성하는 기술
    - 하나의 물리적인 장비에서 소프트웨어적으로 여러 개의 논리적인 자원으로 분리하여 비용대비 효율성 증대 목적
  • 클라우드 : 특정 기업이 호스팅(데이터 센터를 관리 및 운영)하여 인터넷을 통해 사용자에게 제공하는 서비스 혹은 플랫폼
    - 제공자에 따라 분류 : 프라이빗(기업 자체적으로 클라우드 개발) / 퍼블릿(외부 업체를 통해서 클라우드를 공급 받음)
    - 서비스 형태에 따라 분류 : IaaS (Infra As A Service) / PaaS (Platform As A Service) / SaaS (Software As A Service)

클라우드 : 인프라 자원, 플랫폼 자원, 소프트웨어 자원을 서비스 형태로 공급하는 모델

AWS : 퍼블릭 클라우드, 개인이나 기업이 서비스 혹은 데이터센터를 직접 소유하지 않고도 필요한 서비스를 제공함.

 

아마존 웹 서비스 (Amazon web service: AWS)

 

웹 어플리케이션 기본 구성

  • 3 Tier Architecture : 웹 애플리케이션은 웹 서버, API서버, 데이터베이스로 구성됨.


웹 서버

  • 사용자가 웹 서비스를 이용했을 때 응답을 가장 먼저 처리하는 것
    정적인 콘텐츠를 담고 있음.
  • 정적인 콘텐츠 : 변화가 없는 콘텐츠. HTML, CSS, JS와 같이 미리 서버에 저장해둔 다음에 서버가 요청을 받으면 응답을 즉시해주는 것으로 구성됨.


API 서버

  • 동적인 콘텐츠를 관리함.
    동적인 콘텐츠는 누가, 언제, 어떻게 서버를 요청했는지에 따라서 결과값을 다르게 보여주는 방식
    ex)
    - 사용자에 따라서 유튜브 추천 영상을 다르게 보여줌.
    - 마이페이지 정보를 다르게 보여줌.
  • 동적인 콘텐츠는 DB와 상호교류를 하면서 데이터를 주고 받음.

웹서비스는 정적인 콘텐츠와 동적인 콘텐츠를 모두 관리하는 서비스임.

이걸 개발하는 범위에 따라서 Front-end, Back-end로 구분하기도 함.

 

AWS 환경에서 동일하게 구성했을 때 

일반적인 서버에서 구현할 수 있는 대부분의 서비스가 AWS 상에서 구현이 가능하면서,

직접 서버를 보유하고 있지 않다고 하더라도 AWS에서 제공하는 서비스를 통해서 웹서버를 만들 수 있음.

 

  • 주황색 서비스 : 컴퓨팅 서비스
  • 초록색 서비스 : 스토리지 서비스
  • 빨간색 서비스 : 데이터베이스
  • 파란색, 보라색 서비스 : 부가적인 서비스들

AWS 글로벌 인프라

AWS 글로벌 인프라의 주요 요소는 리전(Region), 가용영역(AZ), 엣지 로케이션(Edge Location)이 있음.

https://aws.amazon.com/ko/about-aws/global-infrastructure/

 

글로벌 인프라 - AWS

 

aws.amazon.com

• 인프라 : IT 전반에 필요한 각종 서비스를 제공할 수 있는 환경
• 클라우드 : 인프라의 환경을 서비스 형태로 공급할 수 있는 환경
• AWS : 클라우드 서비스를 제공하는 제공자

 

AWS는 AWS 서비스를 제공하기 위해서 전 세계적으로 인프라스트럭처를 갖추고 있음.
전세계 245개 국가에서 인프라를 보유하고 있기 때문에 각종 나라에서도 동일한 AWS 서비스를 제공할 수 있음.
글로벌 인프라의 개념과 역할에 따라 3개로 분류됨.

 

Region (리전)

  • 물리적인 데이터센터 클러스터(논리적 묶음) 단위
  • 전세계적으로 리전 단위로 AWS 서비스 제공
  • 하나의 국가에 한 개 혹은 다수의 리전 존재
  • 아시아 태평양 리전 : 중국 (베이징, 닝샤), 시드니, 오사카, 도쿄, 뭄바이, 서울, 홍콩

 

서비스를 신규로 사용할 때 가장 먼저 해야할 일
1) 해당 서비스가 해당 리전에서 지원하는지 확인
2) 서비스를 배포할 때 어떤 리전에서 배포되는지 지정해야함.
ex. 대한민국 - 서울 Region

가용 영역 (Availability Zone, AZ)

  • 지리적으로 분리된 1개 이상의 데이터센터
  • 서울 리전에는 총 4개의 AZ 존재
  • AZ는 네이밍 규칙을 갖고 있음.
    ap : 아시아 태평양 (asia pacific)
    northeast : 서울
    2a~2d : 각 AZ별로 순차적으로 이름을 갖게 됨.
    - ap-northeast-2a
    - ap-northeast-2b
    - ap-northeast-2c
    - ap-northeast-2d
  • 왜 AZ를 분리하였을까?
    내결함성과 고가용성을 유지하기에 적합한 구조

· Region은 서비스를 제공할 수 있는 단위로, 지역적으로 분리되는 단위.

· AZ는 Region에 종속되는 개념으로 하나의 Region에 여러 개의 AZ가 존재할 수 있음.
  AZ는 Region이 제공할 수 있는 서비스를 기준으로 실제 데이터를 적재할 수 있는 장소


AWS에 제공하는 서비스는 AZ에 위치하는 것일까, 아니면 Region에 위치하는 것일까?
→ 둘 다임. 데이터가 적재될 필요가 있는 서비스의 경우 AZ에 위치하는 서비스, AWS가 전적으로 관리하고 제공하는 서비스의 경우에는 Region에 위치함. 하나의 Region에 여러 개의 AZ가 존재할 수 있음.

여러 AZ가 필요한 이유? (= multi AZ)
→  AZ는 데이터를 적재하는 공간이기 때문에 애플리케이션을 구동하는 관점에서는 AZ에 어떤 문제가 발생하더라도 데이터를 보존할 수 있는 내결함성과 고가용성(서버가 죽더라도 구성하는 능력)을 유지하기에 적합한 구조

엣지 로케이션(Edge Location)

  • 더 나은 네트워크 속도를 위한 서비스
  • 전 세계적으로 통신사와 협업하여 빠른 네트워크 서비스를 제공하기 위한 지역
  • 215개 이상의 엣지 로케이션을 전 세계적으로 제공됨.
  • 해외 서비스를 제공할 때 유용함.

전 세계적으로 어떤 서비스를 운영하고자 할 때 미국에 존재하고 있는 사용자가 한국 리전에 존재하는 서비스에 접근하기 위해서는 긴 네트워크 지연시간이 발생할 수 있음. 

이런 시간을 방지하기 위해서 미국에서 가까운 지역에 위치한 지역에서 데이터를 빠르게 공급할 경우 네트워크 지연시간을 줄일 수 있음.
네트워크 지연시간을 극도로 줄이기 위한 서비스로 Edge Location이 사용됨.

 

Region vs AZ vs Edge Location이 왜 중요할까?


서비스 제공 범위

  • 운영하고자하는 서비스가 해당 리전에서 제공되는지 반드시 확인하는 과정이 필요함.

서비스 지연 시간

  • 국내 사용자를 대상으로 서비스를 제공할 경우 국내에 위치한 region에 서비스를 배포해야함.
    해외 사용자를 대상으로 서비스를 하지만 실제 데이터는 국내에 있을 때에는 Edge Location과 같이 네트워크를 줄여줄 수 있는 서비스를 고려해야함.

비용 

  • 클라우드 서비스는 사용한 만큼의 시간이나 패턴에 따라서 다르게 부과되기 때문에 항상 고려되어야 할 부분 중 하나임.
  • 데이터의 안전성을 높이기 위해 하나의 데이터를 여러 개의 AZ에 걸쳐서 보안할 경우에는 더 많은 비용을 부과함.
    비용과 안정성을 고려했을 때 어떤게 가장 합리적인지 고려해야함.

AWS IAM 서비스 소개

IAM (Identity & Access Management) : AWS의 자격 증명과 접근 관리 서비스

개인이 일반적으로 AWS 서비스를 사용할 때는 모든 서비스에 대한 권한을 가지고 관리나 운영을 하는 것이 아니라, 해당 서비스에 대한 권한을 가진 담당자나 팀을 대상으로 권한을 부여한 후 각 서비스에 대해 관리를 하고 책임을 가져가는 구조임. 

IAM : 접근 권한을 가진 담당자, 개인이나 팀을 대상으로 권한을 부여하고, 관리할 수 있도록 제공해주는 서비스

IAM을 구성하기 위해서는 크게 2개 요소를 정의해야 함.
1) Identity (신원) : 내가 누구인지에 대한 신원을 정의 (나는 A이다.)
2) Access Management (접근 권한 부여) : 접근에 대한 권한을 부여하는 것 (A는 무엇을 할 수 있다.)

 

Root 계정, 사용자, 사용자 그룹 : Identity

Root 계정 · AWS 계정 생성 시 최초로 만들어지는 계정, 최초 설정의 목적으로만 사용함.
· 모든 서비스에 대한 권한을 가지고 있음 (가장 강력한 권한)
· MFA (Multi Factor Authentication)를 통해 보안 강화 필요
사용자 · AWS 서비스를 실질적으로 사용하는 유저, Root 계정과 독립적인 권한을 가짐.
· 사용자는 필요한 최소한의 권한으로 가져야 함.
· '그룹'에 의해서 그룹화 될 수 있음.

사용자 그룹 · 여러 명의 사용자를 대상으로 그룹화를 하여 권한을 제공할 수 있음.
· 사용자는 반드시 그룹에 소속될 필요가 없으며, 한 명의 사용자는 여러 개의 그룹에 소속될 수 있음.

 

권한 정책 (Permissions) : IAM Permission

  • 정책 (Permission)은 사용자 혹은 사용자 그룹을 대상으로 적용할 수 있음.
  • 정책은 JSON 형식 기반으로 구성할 수 있음.
  • 하나의 사용자 혹은 사용자 그룹은 여러 개의 정책을 설정할 수 있음.
  • AWS 환경에서는 사용자에 대해 필요 이상의 권한을 부여하지 않는 것을 원칙으로 함.

 

정책 (Permission)의 JSON 형식 : Permission JSON format

  • Effect : 허용할지, 차단할지에 대한 여부를 명시함.
  • Action : 수행하는 행위를 의미함. 서버를 시작하거나 중지하는 행위를 포함함.
  • Resource : IAM에 어떤 사용자가 이 정책을 적용받을지에 대해 기입하면 됨.
  • Condition : 옵셔널한 구문. 특정 조건에서만 해당 정책이 유효할 수 있게 추가설정을 걸 수 있음.

 

IAM : Identity (User, Group) + Access Management (Permission) 활용

 

IAM Role

  • 역할 (Role)은 AWS 서비스 대상으로 적용할 수 있음.
  • 역할(Role)을 구성하기 위해서는 어떤 권한(Permission)을 가지는지 명세 해야 함.
  • 역할(Role)을 적용하는 주요 대상은 EC2, Lambda 등이 AWS 서비스를 호출하는 데 사용됨(AWS 대부분의 서비스에 적용 가능)

 

멀티 팩터 인증 (MFA: Multi Factor Authentication)


 

AWS 서비스 사용법

사용방법으로 AWS 관리 콘솔 (Management Console), AWS CLI, AWS SDK가 있다.

AWS 관리 콘솔 웹 인터페이스

  • AWS 관리 콘솔은 웹브라우저를 통해 접속하여 AWS 서비스를 제어할 수 있도록 제공하는 유저 인터페이스
  • 사용자, 서비스 사용량, 월별 요금 등을 한눈에 모니터링 가능
  • UI 형식이라 사용자에게 친숙하고, 자주 사용되는 서비스를 커스터마이징하여 관리 및 접근할 수 있음.

 

AWS CLI

  • AWS CLI는 커맨드 라인 방식으로 Shell 화면에서 AWS 서비스를 사용할 수 있도록 제공해주는 툴
  • AWS 관리 콘솔에서 수행하는 대부분의 역할을 수행 가능함.
  • 커맨드 라인 스크립트 생성을 통해 반복적인 작업에 대해서는 스크립트 자동화를 구성할 수 있음.
  • AWS CLI는 Open source 기반

 

AWS 액세스 키 & 비밀 액세스 키

  • 액세스 키는 AWS CLI나 AWS SDK 활용 시, ID와 PW 같이 사용됨.
  • Access Key(액세스 키) ID = ID, Secret Access Key(비밀 액세스 키) = Password
  • 외부로 절대 노출 돼서는 안 됨!

 

AWS SDK

  • AWS SDK (Software Development Kit)는 프로그래밍 언어에서 라이브러리 형태로 제공되는 개발 킷
  • AWS 서비스를 프로그래밍 언어를 통해 구현 및 사용할 수 있음.
  • 지원 언어 : C++, Go, Java, JavaScript, .NET, Node.js, PHP, Python, Ruby

AWS CLI 설정하기

https://aws.amazon.com/ko/cli/

 

Command Line Interface - AWS CLI - AWS

aws-shell은 명령줄 셸 프로그램으로서, AWS 명령줄 인터페이스를 사용하는 새로운 사용자와 고급 사용자 모두에게 도움이 되는 편의 기능 및 생산성 기능을 제공합니다. 주요 기능은 다음과 같습

aws.amazon.com

aws ec2 describe-instances

해당 EC2의 정보는 AZ가 'ap-northeast-2a'에 존재, PrivateIpAddress는 172.31.5.152임.

728x90