Skip to end of metadata
Go to start of metadata

 

AWS(Amazon Web Services)란

아마존이 인터넷을 통해 제공하는 컴퓨팅 파워, 데이터베이스 스토리지, 애플리케이션 및 기타 IT 리소스를 필요에 따라 사용하고,

사용한 만큼 비용을 지불하는 안전한 클라우드 서비스 플랫폼을 말함

AWS 소개

  1. AWS 특징
    • 아마존이 전 세계적으로 구축해 놓은 시스템과 네트워크 자원을 활용할 수 있음
    • 소프트웨어 방식으로 자원을 정의해서 사용할 수 있음

예) 아파치 웹 서버를 예를 든다면 Auto Scaling 그룹 생성을 통해 사용자 수가 많아져 인스턴스 로드율이 일정 수준이상 증가하면 인스턴스를 자동 확장.
로드율이 감소하면 인스턴스를 종료

    • 모든 클라우드 자원은 AWS API를 이용해서 소프트웨어 다루듯이 간단하게 생성, 삭제, 수정, 모니터링 할 수 있어 탄력적으로 자원을 운용할 수 있음
    • 사용한 만큼 비용을 지급하며 수요에 따라서 탄력적으로 운용할 수 있어서 빠른 서비스 전개가 가능

2. IaaS, SaaS, PaaS

    • 클라우드 관점에서 3가지 분류의 서비스를 제공함

    • laaS(Infrastructure as a service) : 시스템과 네트워크와 같은 물리적인 인프라를 서비스로 제공. EC2, ELB, VPC 등

    • PaaS(Platform as a service) : IaaS 를 플랫폼 개념으로 확대한 서비스.
      웹 서비스를 개발하려면 spring 설치, git 형상관리, 배포 등이 필요한데 이러한 일을 해 주는 서비스.
      엘라스틱 빈스톡(Elastic Beanstalk)과 같은 서비스.
      (코드를 업로드 하기만 하면 elastic beanstalk가 용량 프로비저닝, 로드 발렌싱, 자동 크기 조정부터 시작하여 애플리케이션 상태 모니터링에
      이르기까지 배포를 자동으로 처리함. Java, php, python, ruby, go, docker, apache, nginx, iis등)

    • SaaS(Software as a Service) : Iaas에 소프트웨어까지 패키지로 묶어서 제공하는 서비스.
      RDS(데이터베이스), SQS(메시지 큐), 엘라스틱 캐시(캐시 서비스)등

3. AWS 글로벌 인프라

    • 리전(region) 과 엣지(edge) 로 구분

    • 리전 : 2016년 12월 22일 기준 전세계적으로 16개 있음
      북남미, 유럽/중동/아프리카, 아시아 태평양……….. 리전표와 홈페이지 우측 상단 개수가 다름(14개)
      인터넷 기반 애플리케이션을 서비스하기 위한 모든 laas, saas, paas 를 제공. 완전한 컴퓨팅 파워와 네트워크를 제공하는 IDC라고 생각하면 됨

    • 엣지 : 비용 때문에 리전을 전 세계에 촘촘히 구성 못함. 인구가 많은 지역에 우선 리전을 구축. 전세계에 걸처 리전보다 더 촘촘하게 구축되어 있음
      서비스 품질이 떨이지는 지역에서 품질을 확보하기 위해서 엣지를 도입. 리전 엣지 캐시까지 55개.
      엣지는 AWS의 CDN 서비스인 클라우드프론트(CloudFront)를 제공. 이미지와 동영상 혹은 고정된 웹 페이지 등을 엣지에 배포함으로써
      데이터에 대한 접근 속도를 높이는 것으로 품질을 높임.

 

 

4. aws 프리 티어 계정 생성

    • aws는 가입해야 사용할 수 있는 인터넷 서비스. 일정기간 무료로 사용할 수 있는 계정

5. aws 대시보드

    • 많은 서비스를 관리 할 수 있게 AWS에서 제공하는 웹 기반의 UI로 이를 AWS Management Console이라 부름
    • 시연

 

6. AWS 주요 서비스

    1. EC2(elastic compute cloud)

      • 가장 많이 사용하는 일반적인 서비스. 물리 환경의 서버 컴퓨터와 대응, cpu, memory, 디스크를 포함한 서버 컴퓨터로 이해하면 됨

      • 표1의 타입별로 다시 스펙(cpu 타입, 메모리, 디스크) 등이 정해짐. 스펙은 (small, medium, large, xlarge, 2xlarge, 4xlarge, 8xlarge로 분류

      • 표 1-1 인스턴스 타입

        유형설명사용 사례
        T범용 인스턴스

        개발 목적으로 사용하는 소규모 서버

        M컴퓨터, 메모리, 네크워크에 균형잡힌 인스턴스

        다양한 범용 애플리케이션을 운용하는 서버

        C컴퓨터(CPU) 최적화

        이미지, 동영상 처리등 CPU를 주로 사용하는 서버

        R메모리 최적화

        인메모리 디비, 하둡 등 메모리를 주로 사용하는 서버

        I스토리지 최적화

        파일 기반의 데이터 베이스, 클러스터 파일 시스템 등

        G그래픽 최적화

        동영상 및 이미지 처리에 최적화



      • 표 1-2 인스턴스 유형별 스펙

        모델vCPU메모리스토리지EBS 처리량(Mbps
        c4.large23.75EBS 전용500
        c4.xlarge47.5EBS 전용750
        c4.2xlarge815EBS 전용1,000
        c4.4xlarge1630EBS 전용2,000
        c4.8xlarge3660EBS 전용4,000

b. AMI(Amazon Machine Image)

      • 클라우드 가상 서버인 인스턴스를 시작하는데 필요한 정보를 제공.
        아마존에서 직접 유지/관리하는 표준 운영체제와 사용자가 커스터마이징한 운영체제가 있음

      • 시연
        AWS Services -> EC2 클릭 -> Launch Instance 클릭. 추가로 비용이 발생하는 것도 있음
      • 그림 AMI를 이용한 서비스 관리
        가. AWS 표준 AMI 로 인스턴스를 실행
        나. 인스턴스에 애플리케이션을 설치하고 설정을 완료
        다. 인스턴스로 커스텀 AMI 를 생성
        라. 커스텀 AMI로 서비스 인스턴스를 실행
        마. 사용자 요청이 늘어나서 인스턴스가 필요하면 4번을 반복 수행하기만 하면 됨

c. 기본 네트워크 구성 요소

      • public ip 와 elastic ip

        • ec2 인스턴스를 만들면 기본적으로 aws 내부에서만 사용할 수 있는 사설 ip(private ip) 가 할당 됨
          옵션으로 공인 ip(public ip) 할당을 요청할 수 있음 

        • eip는 public ip의 다른 형태임. 외부와 통신하기 위해 public ip를 할당받는 것은 같지만 eip는 사용자의 소유로 고정됨

        • public ip는 고정된 자원이 아니므로 인스턴스가 종료되면 사라지고 인스턴스를 시작할 때 임의의 public ip가 할당됨
          인터넷 서비스가 목적인 경우에는 반드시 eip를 할당 받아서 사용해야 함.
          Lanunch Instance 보기에 보면 상세 정보가 나옴

      • ELB(elastic load balancing)

        • aws에서 제공하는 로드 밸런서 서비스로 관리자는 아마존 콘솔을 이용해 간단히 로드 밸런서를 설정할 수 있음

        • 사용자의 요청이 늘어나면 자동으로 ELB 인스턴스를 늘려주고, 줄어들면 ELB 인스턴스를 회수하는 Auto scaling을 소프트웨어 형식으로 제공

        • 시연 
          AWS 대시보드에서 EC2 클릭 -> 왼쪽 EC2 Dashboard -> Network & Security -> Load Balancing 클릭해서 추가 할수 있음
        • 참조 문서 : https://aws.amazon.com/ko/elasticloadbalancing/

      • VPC(Virtual Private cloud)

        • 인터넷과 격리된 private 네트웍

      • 시큐리티 그룹

        • 방화벽과 매우 유사하게 동작하는데 포트(port) 와 ip 주소를 기반으로 inbound/outbound 트래픽에 대한 접근을 허용하거나 차단할 수 있음
          리눅스 운영체제의 방화벽 소프트웨어인 iptables와 유사하게 동작

        • 시연
          EC2 Dashbord 에서 우측에 Security Groups를 보면 현재 instanc에게 할당되어 있는 security groups를 확인할수 있음
          inbound 는 바깥에서 인스턴스로 들어오는 트래픽을 의미하고, outbound는 인스턴스에서 바같으로 나가는 트래픽을 의미함
          예)  웹서버는 80, 443 포트는 모든 ip 허용, 22번(ssh)는 특정 개발자. 그외의 모든 포트는 DENY : ALL. WAS는 웹 서버로의 연결만 허용

6. VPC 네트워크

ec2 인스턴스는 aws에서 제공하는 vpc에 만들수 있음

    1. 인터넷 게이트웨이
      • 인터넷과 펯 네트워크를 중계하는 구성요소

      • 추가 삭제가 가능. 아래의 VPN gateway 같이 구성도 가능함

 

b. Ip 주소와 ip 서브넷

      • CIDR은 인터넷 주소로 구성되는 네트워크를 나눠서 관리하기 위한 표기법
        예) 10.0.0.0/8 과같은 형식에서 / 뒤에 있는 숫자는 고정된 네트워크의 비트 크기를 의미함
      • aws는 VPC 네트워크를 위해서 10.0.0.0/16 네크워크를 할당. 65000개의 노드를 관리할 수 있는 크기인데, 하나의 네트워크에서 모든
        인스턴스를 관리 할 수 없는 노릇이니 더 작은 네트워크(서브넷) 로 나누어서 관리
        예) 10.0.0.0/24, 10.0.1.0/24

      • 참조 : http://docs.aws.amazon.com/ko_kr/AmazonVPC/latest/UserGuide/VPC_Introduction.html

c. Routes

      • 네트워크에서 발생하는 패킷의 경로를 설정하기 위한 라우트를 제공. 서브넷 단위로 라우터 데이블을 조작할 수 있음

d. VPC의 장점

      • 격리된 네트워크 구성. 

      • 네트워크 트래픽 제어

      • 통합. 글로벌 서비스의 경우 서로 다른 리전에 인스턴스를 vpc를 이용하여 독립적인 네트워크로 묶을 수 있음
      • 관리의 효율성. 관리자는 vpc 내부에 있는 인스턴스의 사설 ip를 자유롭게 설정할 수 있음

 

7. 확장성과 가용성에 대한 방향 설정

    • 확장성은 입출력 데이터가 늘어날 때 이에 맞춰 시스템과 네트워크 그리고 소프트웨어를 유연하게 늘려서 늘어난 요청에 얼마나 잘 적용할 수 있는지에 대한 능력

    • 가용성은 일년 365일 중단 없이 서비스를 운용할 수 있는지에 대한 능력

    • 확장성은 횡적 확장과 종적 확장으로 구분할 수 있음
      종적 확장은 단일 서버의 스펙. cpu,core, memory 를 늘려 성능을 높힘. aws 인스턴스 타입을 변경하는 방식. scale-up, scale-downl
      횡적 방식은 서버를 여러 개 복제하는 방식. sacle-out, scale-in(줄임).
      aws는 횡적 확장 방식이 효과적임
    • 참조 : http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/using-regions-availability-zones.html
    • 아래 그림에서 리전안에 zoneA, ZoneB 2개의 가용성 존으로 구성되어 있다면 A가 장애가 발생해도 B가 서비스 가능
      국가적 재앙에 의한 리전에 대한 문제도 고려해야 할 서비스도 있음

 

8. RDS(데이터베이스 서비스)

    • Relation Database Service(관계형 데이터베이스 서비스)를 제공하는 Saas 형태의 서비스

    • Oracle, Postgresql, Mysql등의 관리와 운용을 aws에서 대신해 줌.
      ha 구성, 읽기 전용 리플리케이션 설정, 백업 정책, 자동 패치등을 복잡한 설정 없이 몇번의 클릭만으로 서비스를 받을 수 있음

    • 가용성 : 평소에 마스터로 서비스 하다가 문제가 생기면 슬레이브로 Failover 하는 방식으로 가용성을 확보. Failback은 지원하지 않음.
      간단히 마스터/슬레이브 방식의 고가용성을 구성

    • 확장성 : 사용자가 늘면 성능에 문제가 생길 수 있음. 보통은 읽기/쓰기 지연이 생기고, 읽기 전용 복제(Read Only Replica)를 만드는 것으로
      데이터베이스의 지연 문제를 해결. 쓰기는 마스터만, 복제 서버는 읽기만 제공. 대부분 쓰기보다는 읽기가 더 많으므로 유용

 

9. EBS와 Instance store

    • Elastic Block Store의 약자로 블록 스토리지(하드디스크)를 제공하는 서비스이며 사용자의 필요에 따라서 언제던지 생성, 제공할 수 있는
      유연성을 제공하는 것이 특징. 재부팅 없이 버튼 클릭만으로

    • ebs 볼륨은 원격 스토리지 시스템에 만들고 사용자에게 할당. 로컬 컴퓨터에 문제가 생겼을때 다른 컴퓨터에서 인스턴스를 실행해서 데이터를 복구할 수 있음
    • instance store는 인스턴스가 실행된 로컬 호스트에 위치. 인스턴스를 중단, 삭제하거나 디스크에 문제가 생기면 데이터를 사용할 수 없게 됨
      캐시, 버퍼와 같은 임시 데이터를 저장하는 용도

 

10.S3(Simple Storage Service)

    • 오브젝트 스토리지( Object Storage)를 제공하는 서비스.
      EBS와 차이점은 블록 스토리지는 하드 디스크를 추상화한 서비며 블록 단위로 동작하며 랜덤하게 데이터를 Acess 할수 있음
      운영체제나 소프트웨어를 실행하는 용도로 사용하는데 이들 데이터는 랜덤하게 접근할 수 있어야 하기 때문임

    • 예를들어  데이터 베이스 디스크 공간이 필요하다면 블록 스토리지 서비스인 EBS 를 사용해야 함
      오브젝트 스토리지는 FTP와 유사한 서비스라고 생각하면 됨.
      오브젝트(파일)에 ID를 부여하고 이 ID를 이용해서 데이터를 꺼낼수 있음. 주로 파일을 저장하고 꺼내기 위한 용도.
      이미지, 동영상, MP3와 같은 파일을 서비스 한다면 s3에 저장하는게 효율적.
      AMI나 데이터 백업 용도로 사용가능.
      드롭 박스와 같은 파일 클라우드 서비스를 만들 계획이라면 s3 가 핵심. 여러개의 사본을 유지함으로써 안전하게 데이터를 저장

 

11. 클루우드프런트(CloudFront)

    • AWS에서 제공하는 CDN(contents Delivery Network)으로 대량의 콘텐츠를 배포할때 높은 성능과 높은 가용성을 보장하는 용도
      예) 소프트웨어 업데이트 또는 패치.짧은 시간에 대량으로 배포 가능해야 함. 게임서버 업데이트 같은것. 
    • 웹 서비스가 화려해지고 상호작용이 중시 되면서 이미지, css, 자바 스크립트등의 파일이 커지고 있어서 클라우드프런트에 배치 성능 향상이 가능
    • 엣지에 위치하는 것도 장점

 

12. IAM

    • 서로 다른 권한이 있는 여러 사용자를 관리하는 계정 관리 시스템



EC2 인스턴스 생성

  • 시연 
    AWS  콘솔에서 EC2 선택 -> Launch Instance 클릭
  1. AMI 선택
    • centos7-201610182037 (ami-41f1252f) 



 

2. 인스턴스 타입 설정

    • 패밀리를 우선 선택. 하둡같은 메모리를 많이 사용하면 R. R의 경우 메모리에 대한 성능 최적화 및 같은 비용으로 다른 패밀리보다 더 많은 메모리 확보가 가능
      그 다음에 스펙 선택 . 저는 공짜러서 제일 낮은거 선택

 

3. 인스턴스 상세 설정

    • Number of Instances : 하나 이상의 인스턴스 생성 가능
      Network, Subnet : default
      Auto-assign Public ip : enable 로 설정하면 aws가 public ip를 할당.
      IAM Role : 다양한 권한이 있는 하나 이상의 유저를 관리하는 것을 허용
      Shutdown behavior : 인스턴스를 셧다운 할때 인스턴스 상태를 결정. 보통은 stop 으로 설정해서 나중에 다시 활용.
                                        다시 사용할 일이 없다면 terminat를 선택, terminate는 셧다운시 인스턴스 이미지를 삭제
      Monitoring : Cloudwatch를 이용한 모니터링 기능. 비용이 발생
      Tenancy : Shared tenancy 와 Dedicated tenancy 중에서 선택. Shared 의 경우 하드웨어 자원을 다른 사용자와 공유하는 방식이고 Dedicated 는 전용 하드웨어
      User data : 인스턴스 시작시 실행할 스크립트를 저장 할 수 있음.  AWS의 AMI가 내장하는 cloud-init 클라우드 초기화 소프트웨어가 읽고 초기화
                         { “hostname” : “gt100.com”, “admin” : “gt1000” }

 

4. 스토리지 추가

    • Root 볼륨은 운영체제가 이용하는 공간이며, Add New Volume를 클릭해서 추가

5. 인스턴스 태그 설정

    • 인스턴스에 태그를 붙여주기 위해서 사용. key, value 쌍으로 구성되는데 인스턴스의 분류, 검색등 관리를 목적

6. 시큐리티 그룹

    • 인스턴스에 대한 네트워크 접근 보안을 설정. Inbound 만 설정

7. 리뷰

    • 확인

8. ssh key pair 설정

    • 인스턴스에 접근하기 위한 key. create a new key pair를 선택하면 공용키(public key)와 개인키(private key)를 생성
      공용키는 인스턴스에 설치되며, 개인키는 내려받을 수 있음
      사용자는 개인키를 이용해서 인스턴스에 접속. 내려받은 키는 다시 내려 받을 수 없으므로 분실 주의
      키이름.pem 파일을 내려받음

9. 인스턴스 접속

    • PuTTY에서는 Amazon EC2에서 생성된 프라이빗 키 형식(.pem)을 기본적으로 지원하지 않음
      PuTTYgen을 사용하여 프라이빗 키 변환. ppk 파일 생성
      centos@ec3-55-11-11-11.ap-northeast-2.compute.amazonaws.com
      public ip 로도 접속 가능


AWS 보안

  • aws 에서 제공하는 보안 도구를 이용하는 방법과 운영체제의 기본적인 보안 설정을 이용해서 보안성을 높이는 방법이 있음

  1. 시큐리티 그룹 기본 정책

    • 서비스 포트외 모든 포트를 막음. ALL DENY를 기본정책으로 하고 필요한 서비스 포트만 허용

    • Source IP를 엄격하게 제한. VPN 망을 통해서만 접근하도록 제한
    • 같은 서브넷에 있는 인스턴스도 격리
      webserver, was server 가 있다면….. web은 퍼블릭 서브넷, was 는 프라이빗 서브넷으로 분리…. 서로간 접근을 막음

    • Outbound 도 ALL DENY를 설정한다음 필요한 트래픽만 허용하므로서 내부 데이터 유출을 방지

2. 네트워크 ACL

    • 네트워크 단위로 접근 설정을 할수 있는 네트워크 ACL(Access Control List) 도구를 제공

    • 네트워크 ACL은 규모가 큰 네트웍 규칙에 적용하고 시큐리티 그룹은 세부적인 단계에서 적용하면 됨

3. 운영체제 보안

    • 기본 유저 정책

      리눅스 계정권한 설명정책
      root모든 권한을 가진 슈퍼 유저

      외부에서 누구도 직접 루트(root)로 로그인 할 수 없음

      adminroot 권한을 획득할 수 있는 계정

      admin으로 접근한 유저는 su 명령을 이용해서 root 계정으로 전환.
      소수의 관리자만 획득

      application애플리케이션을 수행하기 위한 계정

      웹 서버와 같은 애플리케이션을 실행

      일반 계정리눅스 일반 계정뷰만 할수 있는 권한. 필요한 경우 su를 이용해서 application 계정으로 전환
    • application을 root로 실행하면 안된다는걸 알지만 귀찮아서 root 로 실행. 
      application이 root로 실행되면 application도 root 권한을 가짐. 보안 취약점에 노출될 경우 위험
      1024(이하는 root만 사용가능) 보다 큰 포트 사용. 배포를 위한 전용 디렉터리 구성
    • ssh 를 통한 유저 접근 정책. 루트로의 원격 접속 막기

4. IAM

    • AWS는 모든 클라우드 서비스를 AWS API를 이용해서 소프트웨어 처럼 관리할수 있음.
      AWS API를 이용하려면 Access Key 와 Secret Access Key를 이용해서 API 의 호출 권한을 증명.
      이 두개의 key는 aws 유저에게 할당됨. IAM 서비스에서 발급하며, IAM 를 이용해서 제한된 계정을 만듬

    • IAM은 유저, 그룹, 정책으로 나눔

    • 유저 : 권한 주체. 키 소유

    • 그룹 : 유저의 집합

    • 정책 : 한 개 이상의 권한과 권한을 행사할 수 있는 자격을 명시한 규칙

    • 시연
      IAM -> Users 클릭. 상단의 Add user를 클릭하여 사용자 추가
    • 유저를 생성하는 동시에 해당 유저의 Access Key와 Secret Access Key가 생성됨.
      비밀키는 단 한번만 공개됨. 나중에 확인할 방법이 없으므로 반드시 안전한 곳에 보관해야 함

    • IAM 그룹은 Groups -> Create New Group 으로 생성

    • 효율적인 IAM 보안 정책은 공통 계정이 아닌 여러 유저를 생성해 사용하며, 권한 관리는 그룹을 사용해서 조정. 최소한의 권한 부여
      강력한 패스워드 정책(웹 콘솔 로그인 계정)
      MFA(Multi-Factor Authentication) 를 이용한 2단계 인증. IAM Role 을 사용등

EC2의 효율적인 사용

  1. 스팟 인스턴스

    • AWS는 유저가 유연하게 EC2를 늘리는데 지장이 없도록 미리 수많은 서버를 준비해 두고 그 요청에 대응.
      이렇게 남는 자원을 스팟 인스턴스라는 형태로 판매하고 있음. 남는 자원이라 자원의 양에 따라 가격이 다름

    • 매우 저렴한 가격에 훌륭한 컴퓨터 파워를 사용할 수 있으나 시세가 올라 사용자가 제시한 가격보다 높은 시점에 인스턴스가
      종료될때 문제가 발생 할수 있음

    • 언제든 중단 되어도 다음에 다시 진행되면 되는 작업에 사용해야 함

2. 예약 인스턴스

    • 정해진 기간동안 미리 인스턴스를 구매하는 대신 할인을 받는 서비스. 타입에 따라 달라지겠지만 25 ~ 75% 저렴하게 구입 가능

    • 계약 기간에는 인스턴스를 사용하지 않아도 비용이 지출됨. 마켓 플레이스에서 예약 인스턴스를 판매할수 있음(리전에 따라 다음)

3. 비용

 

 

 

 

  • No labels

4 Comments

  1. 2시간 폰으로 동영상 같은거 남길 수 없을까요? 잇힝.

     

    1. AWS 는 발표자가 촬영을 거부했습니다....ㅠ.ㅠ

      1. 발표를 봤어야 하는데 말이죠!