[23.01.25] 64일차 [클라우드]

W·2023년 1월 25일
0

국비

목록 보기
94/119

AWS

▪ 클라우드란?

  • 클라우드란 언제, 어디서든 인터넷을 통해서 접속이 가능한 환경을 말한다.
  • 기존에는 개인 단말기에 설치한 소프트웨어나 저장한 데이터밖에 사용할 수 없었지만, 클라우드 환경에서는 인터넷상에 설치된 소프트웨어나 동영상·음악 등 자원을 사용할 수 있고 로컬 환경에 저장하는 것처럼 클라우드에 저장하는 것도 가능하다.
  • 클라우드 환경은 스스로 만들 수 있고, 빌릴 수도 있으며 사업자가 제공하는 서비스를 이용하는 방법도 있다.

▪ 클라우드 컴퓨팅: 인프라를 통째로 빌린다.

  • 클라우드 중에서도 서버 및 네트워크 등 인프라 전체를 임대해 주는 서비스로 AWS 및 마이크로소프트 애저(Azure), 구글 클라우드 플랫폼(Google Cloud Platform)이 있다. 이와 같이 클라우드에 구축된 인프라를 활용하는 서비스나 이를 사용하는 것을 클라우드 컴퓨팅이라고 한다. 일반적으로 클라우드라고 하면 이러한 클라우드 컴퓨팅을 말한다.
  • 클라우드 컴퓨팅은 가상화 기술을 사용하여 언제 어디서든 마음대로 서버나 인프라를 구축하여 운영할 수 있도록 구축되어 있다.
  • 이를 이용할 때는 서버와 인프라를 대여하는 것이 주류인데 이는 하드웨어 및 네트워크 등 물리적인 설비를 직접 보유할 필요가 없기 때문이다.
    ▪ 온프레미스와 임대
  • 온프레미스(on-premise)란 자사가 서버 등을 구축하는 것을 말한다. 데이터센터에 서버를 두기만 해도 온프레미스이다.
  • 이는 소유권이 자사에 있기 때문이다.
  • 임대 서버와 차이를 구분하기 어렵지만, 보통 서버만 임대하는 경우를 임대 서버라고 부르며 네트워크나 장소를 임대하는 경우에는 온프레미스라고 부른다.
  • 온프레미스의 장점은 자사에서 자유롭게 설계·운영할 수 있다는 것이다. 그러나 그만큼 서버 구성을 빈번하게 변경해야 할 수도 있고, 이를 대비한 숙련된 기술자도 필요하다.
  • 온프레미스의 반대말이 클라우드처럼 생각되지만 오프프레미스(off-premise)라고 볼 수 있다. 좀 더 가까운 말은 임대나 공용.
  • 자사가 소유 또는 운영하지 않고 임대하거나 공공장소에 구축된 것을 사용하는 형태이다.
  • 임대의 장점은 회사에서 직접 관리할 필요가 없다는 것이다.
  • 기본적으로 제공하는 측이 모든 유지 보수를 실시하기 때문에 기술자를 갖출 필요가 없고 번거롭지도 않다. 다만 단점은 제공하는 측의 규제를 지켜야 하는 점이다.
  • OS 업데이트나 설치할 수 있는 소프트웨어, 구성 등에 제한이 있는 경우가 많고, 자유도
    와 비례하여 비용이 증가한다.
    ▪ 공용(Public) 클라우드와 사설 클라우드
  • 공용 클라우드란 AWS처럼 임대하는 클라우드를 말한다.
  • 사설 클라우드는 자사에 구축하는 클라우드이다.
  • 클라우드는 인터넷으로 사용할 수 있는 IT 자산이므로 꼭 임대할 필요가 없다.
  • 온프레미스와 클라우드는 완전히 반대되는 말은 아니지만 자사에서 물리적인 모든 것을 충당하는 체제에서 클라우드 환경을 임대하여 사용하는 체제로 크게 움직이고 있다고 이해하면 되겠다.

▪ 클라우드를 지탱하는 2대 기술

  • 클라우드를 지탱하는 주된 기술은 가상화와 분산 처리이다.

▪ 가상화

  • 컴퓨터가 어떤 작업을 하려면 물리적인 메모리와 하드 디스크, OS 등 다양한 부품이 필요하다. 이를 소프트웨어로 대체하는 것이 가상화 기술이다.
  • 서버를 예로 들면 서버에 필요한 물리적인 부품들을 가상으로 생성하여 가상 서버로 만들고 이 가상 서버를 한 대의 물리 서버에 동작시킨다. 이 때 가상 서버를 게스트 서버라고 한다.
  • 네트워크도 마찬가지로 물리적 배선 1개를 가상으로 분할하여 다른 네트워크와 통합하거나 그 즉시 연결을 바꿀 수도 있다.

▪ 가상화를 통한 복제

  • 가상 서버에 할당된 메모리와 스토리지는 자유롭게 늘리거나 줄일 수 있다.
  • 그렇기 때문에 나중에 필요할 때 용량을 늘리거나 줄여 메모리와 스토리지의 성능을 조절할 수 있지만 가상 서버의 성능을 올리는 것에는 한계가 있다.
  • 성능을 한계까지 끌어올려도 부하가 발생할 때 서버 대수를 늘리지 않으면 대응할 수 없다.
  • 물리적인 서버의 경우 1대를 늘리는데 CPU와 메인보드, 메모리, 스토리지 등이 필요하다.
  • 쉽게 생각하면 서버(PC)를 1대 더 늘리는 것이다. - 늘릴 때는 필요한 대수를 어느 정도 구매하지 않으면 안되고, 줄일 경우는 처분해야 한다.
  • 이럴 때 가상화가 유리하다.
  • 소프트웨어처럼 구축하기 때문에 서버 복제가 쉽고 대수를 늘리거나 줄이기도 쉽다.

▪ 분산 처리와 로드 밸런서

  • 클라우드를 지탱하는 중요한 기술로 가상화와 함께 분산 처리가 있다.
  • 분산 처리란 기기 여러 대를 분산하여 처리하는 방법을 말한다.
  • 이 기술을 많이 사용하고 있는 것이 웹 사이트이고, 서버 여러 대를 분산하여 처리한다.
  • 개인이나 일반적인 회사의 웹 사이트에서는 접속이 크게 집중될 일이 없지만 접속자가 많은 사이트일 경우 서버 한 대로는 처리할 수 없을 만큼 접속이 많이 발생하기도 한다.
  • 이럴 때 같은 기능이나 정보를 가진 서버를 여러 대 분배하여 처리하면 서버1대의 부담을 줄이고 서버가 응답할 수 없거나 다운되는 사태를 막을 수 있다.
  • 서버 여러 대를 분배하는 장치를 로드 밸런서(LB)라고 한다.
  • 로드 밸런서는 각 서버를 확인하여 부하를 분산하고 경우에 따라서 부하가 너무 높아진 서버를 분리하기도 한다.
    AWS는 로드 밸런서로 ELB(Elastic Load Balancing)를 제공한다.
  • 클라우드의 ‘언제든지 마음대로 서버나 인프라를 구축할 수 있다’는 특징은 가상화와 분산 처리에 의해 지탱되고 있다.

▪ SaaS, PaaS, IaaS

  • SaaS(Software as a Service)는 인프라나 플랫폼(OS)뿐만 아니라 애플리케이션까지 제공한다. 구체적으로 SNS나 블로그 서비스, 웹 메일 서비스 등을 들 수 있다. 구글의 G Suit나 파일 스토리지 서비스인 드롭박스(Dropbox)도 SaaS에 해당한다.
  • PaaS(Platform as a Service)는 플랫폼까지만 제공한다. OS가 설치된 서버에 사용자가 애플리케이션 등을 설치해서 사용해야 한다. 임대 서버가 이에 해당한다.
  • IaaS(Infrastructure as a Service)는 인프라만 제공한다. 즉, 네트워크나 서버 머신등을 제공한다. - SaaS, PaaS, IaaS를 통칭하는 말은 EaaS(Everything as a Service)이다. XaaS라고도
    하며 네트워크를 통한 통신부터 소프트웨어까지 모두 제공하는 서비스이다.
  • AWS는 EaaS라고 할 수 있다.

▪ SaaS, PaaS, IaaS 서비스의 특징

  • SaaS의 특징
    1) 편리한 반면 자유도가 낮다.
    2) 바로 사용할 수 있기 때문에 작업량이 적다.
    3) 특별한 지식이 필요 없다.
    4) 단말기 외에 준비할 것이 없다.

  • PaaS의 특징
    1) 애플리케이션을 마음대로 설치할 수 있지만 대응하지 않는 애플리케이션도 있다.
    2) 서버 관리에 대한 지식이 필요하다.
    3) 경우에 따라서는 애플리케이션을 준비해야 할 필요가 있다.

  • IaaS의 특징
    1) 사용하려면 세팅이 필요하다.
    2) 서버 관리에 대한 지식이 필요하다.
    3) 경우에 따라서는 애플리케이션을 준비해야 할 필요가 있다.

    ▪ 서버

  • 서버 없이 구축된 시스템이 없다고 해도 과언이 아닐 정도로 서버는 시스템의 핵심을 담당하고 있다.

  • AWS의 대표적인 서비스는 Amazon EC2(Elastic Compute Cloud)이다.

  • EC2를 간단히 말하면 서버를 임대하는 서비스이다. - 서버란 Server의 이름 그대로 어떠한 서비스를 제공하는 것을 말한다.

  • 웹 서버라면 웹 기능을 메일 서버라면 메일 기능을 제공하는 것을 말하며 ‘OO 서버’의 기능은 소프트웨어로 제공된다.

  • OO 서버를 만드는 것 = OO용 소프트웨어를 설치하고 그 기능을 갖추는 것
    ▪ 서버는 같이 사용할 수 있다.

  • 컴퓨터 한 대에 ‘OO 서버’ 여러 대를 같이 사용하는 것도 가능하다. 소프트웨어가 기능을 작고 있기 때문에 소프트웨어 여러 개를 설치하면 되는 것이다.

  • 웹 서버와 메일 서버를 같은 컴퓨터에 설치하는 경우 웹 서버 겸 메일 서버가 된다.

  • 컴퓨터 한 대에 ‘OO 서버’의 기능을 몇 개까지 설치할 수 있는지 제한은 없지만, 너무 많이 설치하면 성능이 떨어지게 된다.
    또한, 장애가 발생했을 때 모든 기능이 멈추게 된다. 따라서 실제 운영할 때는 컴퓨터 한 대에 소프트웨어 여러 개를 같이 사용하는 경우는 별로 없다.

▪ 대표적인 서버

1) 웹 서버

  • 웹 사이트의 기능을 제공하는 서버이다.
  • HTML 파일이나 이미지 파일, 프로그램 등을 저장한다.
  • 클라이언트의 웹 브라우저로 접속하면 이러한 파일을 제공한다.
  • 대표적인 소프트웨어는 Apache, Nginx, IIS 등이 있다.

2) 메일 서버

  • 메일의 송수신을 담당하는 SMTP 서버와 클라이언트에 메일을 수신하는 POP 서버가 있다.
  • 이 두가지를 합쳐서 메일 서버라고 부르는 경우가 많고 메일을 내려받지 않고 서버에 둔 채로 읽는 IMAP4 서버도 있다.
  • 대표적인 소프트웨어는 Sendmail, Postfix, Devecot 등이 있다.

3) 데이터베이스 서버

  • 검색하기 위한 데이터를 저장하는 서버이다.
  • 대표적인 소프트웨어는 MySQL, PostgreSQL, MariaDB, SQLServer, Oracle Database 등이 있다.

4) 파일 서버

  • 파일을 저장하여 공유할 때 사용하는 서버이다.
  • 대표적인 소프트웨어에는 Samba가 있다.

5) DNS 서버

  • IP 주소와 도메인을을 변환하는 DNS 기능을 가진 서버이다.

6) DHCP 서버

  • IP 주소를 자동적으로 분재하는 서버이다.

7) FTP 서버

  • FTP 프로토콜을 사용하여 파일을 송수신하는 서버이다.
  • 웹 서버와 같이 구축하는 경우가 많고 파일을 업로드하거나 다운로드하는데 사용한다.

8) 프록시 서버

  • 통신을 중계하는 역할을 하는 서버의 통칭이다.
  • 사내 LAN과 같이 인터넷과 격리된 장소에서 인터넷으로 서버에 접속할 때 사용한다.
  • 또한, 프록시 서버를 통하면 접속한 대상에게 자신이 어디서 접속하는지를 숨길 수 있기 때문에 자신이 접속한 장소를 숨기고 싶은 경우에도 사용한다.

9) 인증 서버

  • 사용자 인증을 하기 위한 서버이다.
  • 윈도우(Window) 네트워크에 로그인을 하기 위한 Active Directory 서버나 무선 LAN, 원격으로 접속할 때 사용자 인증을 하는 Radius 서버 등이 있다.
  • 대표적인 소프트웨어는 OpenLDAP, Active Directory 등이 있다.

▪ 서버에 필요한 요소

  • 서버는 특별한 컴퓨터가 아니라 역할이 다를 뿐 기계가 다른 것은 아니다. 따라서 CPU 및 메모리, 메인보드, 스토리지(HDD나 SDD)가 있고, OS가 있다.
  • 일반 데스크톱을 서버로 사용하는 것도 가능하다.
  • 하지만 서버용 PC는 서버용으로 사용하기 쉽게 구성되어 있으며 24시간 가동하는 것을 전제로 하기 때문에 불필요한 기능을 생략하고 잘 고장나지 않는 부품으로 구성되어 있다.

1) CPU

  • PC의 두뇌라고 할 수 있는 부품이다.
  • 제어·연산 등의 처리를 한다.
  • 프로그램 실행은 CPU가 담당한다.

2) 메모리(메인 메모리)

  • 일시적인 기억 장치이다.
  • CPU에는 기억 장치가 없기 때문에 프로그램을 실행할 때 데이터의 저장 장소로 사용한다.
  • 사용자가 입력한 데이터, 파일 읽기, 네트워크 통신 읽기 등을 처리한다.

3) 메인보드

  • 전자회로 기판이다.
  • CPU 및 메모리, 스토리지를 연결한다.

4) 스토리지

  • 보조 기억 장치로 HDD나 SDD 등이 있다.
  • 메모리에 저장된 내용은 전원이 꺼지면 지워지기 때문에 영구적으로 남기고 싶은 데이터는 스토리지에 저장한다.

5) OS

  • 컴퓨터를 움직이기 위한 시스템이다.
  • 하드웨어와 OS 위에서 동작하는 소프트웨어 사이에서 중간 역할을 한다.

▪ 서버용 OS란

  • OS(Operating System)란 컴퓨터를 움직이기 위한 소프트웨어로 하드웨어와 OS 위에서 동작하는 소프트웨어 사이에서 중간 역할을 한다.
  • 대표적인 서버용 OS는 유닉스(Unix) 계열과 윈도우 계열이 있고, 서버용 OS로 유명한 리눅스(Linux)와 BSD는 유닉스 계열이다.
  • 서버용 OS는 클라이언트용 OS에 비해 종류가 많고 특히 유닉스 계열은 원래 오픈 소스로 개발되었기 때문에 종류가 다양하다. (리눅스는 다양한 배포판이 있다.)
  • 배포판이란 커널(OS의 핵심부분)의 주변 기능(기본적으로 명령이나 소프트웨어)을 추가한 패키지를 말한다.
  • 리눅스 배포판에는 레드햇(ReaHat), 센트OS(CentOS), 우분투(Ubuntu), 데비안(Debian)
    등 다양하다.
  • 윈도우 계열은 윈도우 서버(Windows Server)만 있다.
  • 파일 서버의 OS로는 윈도우 서버가 웹 서버나 메일 서버 등 인터넷에 사용되는 서버의 OS에는 리눅스 계열이나 BSD 계열이 많이 사용된다.

▪ 인스턴스와 서버

  • Amazon EC2에서 서버는 ‘인스턴스’로 생성된다.
  • 인스턴스란 ‘실체’라는 의미이며 실제 가동되고 있는 가상화 컴퓨터를 말한다.
  • 예를 들어 서버라고 하면 실체를 말하는 것인지, 물리적인 서버 자체를 말하는 것인지 애매하지만 인스턴스라고 하면 서버로 가동되고 있는 가상 서버를 말한다.
  • 기능으로서의 서버는 인스턴스라고 부르지 않으며 ‘웹 서버의 인스턴스’를 생성한다는 말은 사용하지만 ‘웹 인스턴스’라고 하지는 않는다.

▪ DNS

  • DNS(Domain Name System)란 URL에 포함된 이름에 해당하는 서버의 IP 주소를 알려주는 방식이다.
  • 열람자는 URL로 접속한다고 생각하지만 실제는 DNS가 백그라운드에서 도메인명에 해당하는 IP주소를 확인하고 IP 주소를 가진 서버에 접속한다.
  • AWS에서도 DNS 서비스를 제공하고 있으며 ‘Route 53’가 이에 해당한다.
  • IP주소의 네트워크부, 호스트부로 나누어 볼 수 있듯이 URL의 경우도 itwillbs.co.kr 과 같이 조직이나 소속 등을 나타내는 도메인명과 www나 ftp와 같은 임의적인 이름을 가진 호스트명으로 구성된다.
  • 호스트명과 도메인명을 연결한 것을 FQDN(Fully Qualified Domain Name)이라고 한다.
  • https://www.itwillbs.co.kr 을 보면
    https - 프로토콜명
    www - 호스트명
    itwillbs.co.kr - 도메인명

▪ HTML과 웹 브라우저의 구조

  • 웹 사이트의 콘텐츠는 HTML 이라는 형식으로 기술되어 있다.
  • HTML 형식이란 어느 부분은 제목, 어느 부분은 크게 하고 붉은색 문자로 표현하는 등의 태크의 구조를 나타내는 문서이다.
  • HTML에 기술되어 있는 것은 문자와 구조뿐이다.
  • 이미지는 별도의 파일로 저장되고 HTML 에는 이미지를 저장한 장소만 쓰여 있을 뿐이다.
  • 이렇게 각각의 파일로 저장하는 문서와 이미지를 웹 브라우저에서 조합하여 한 페이지로 표시한다.

▪ 웹서버의 구조

  • HTML이나 이미지 파일을 저장하고 있는 건 웹 서버 이다.
  • 웹 사이트를 열람할 때 웹 브라우저로 보고 싶은 웹 사이트의 URL에 접속하면 웹 서버에서 해당하는 파일을 웹 브라우저로 보낸다.
  • 웹 서버용 콘텐츠는 HTML 파일이나 이미지 파일 외에 동영상 파일, PHP나 Perl로 작성된 프로그램 파일 등으로 구성되어 있다.

▪ 웹 사이트와 관련된 기술
1) 웹 서버용 소프트웨어 : 웹 브라우저에서 요청을 받아 파일을 전송하는 소프트웨어이다. 대표적인 소프트웨어는 Apache, Nginx가 있다.
2) FTP : 서버에 파일을 전송할 때 사용하는 프로토콜이다.
3) SSH : 서버를 원격으로 조작할 때 사용하는 접속 방식이다.
4) SSL 증명서 : 증명서를 작성한 서버를 설치하면 통신을 암호화할 수 있고 사이트가 변조
되지 앟았다는 것을 증명할 수 있다. https로 시작하는 URL의 서버에는 이 증명서가 설치되어 있다.
5) 리다이렉트 : 요구된 URL에 대해서 다른 페이지로 전송하는 방법이다.
6) CGI : 서버에서 처리하는 프로그램을 말한다. 대부분은 perl(펄)이라는 언어로 작성한다.
7) PHP : 프로그래밍 언어 중의 하나이다. 웹 애플리케이션 개발에 많이 사용된다.
8) 자바스크립트(JavaScript) : 프로그래밍 언어 중 하나이다. 웹 브라우저로 처리된다.
9) 스트리밍 : 데이터를 모두 내려받을 때까지 기다리지 않고 도착한 앞쪽 데이터부터 바로
재생하는 방법이다.
10) 확장자 : 어떤 형식으로 파일이 저장되어 있는지를 나타낸다. 파일명에 마침표 뒤에 기술된다. 워드의 경우 .docx, 엑셀이라면 .xlsx, HTML은 .html or .htm, 이미지는 .jpeg, .png 등이 있다.
11) Index.html : 관례적으로 웹 사이트의 메인 페이지가 되는 HTML 파일에 붙여진 이름이다. 파일명을 지정하지 않을 경우 이 페이지가 표시된다.
12) 로드 밸런서 : 아래에 서버 여러 대를 두고, 트래픽을 분산하여 1대당 서버의 부하를 줄이는 장비이다.
13) FW : 방화벽이라고 하며, 송수신하는 데이터에 대해 통과 여부를 결정하는 장비이다. 특히 WAF(Web Application Firewall)는 실제 데이터의 내부까지 확인하고 잘못된 데이터를 제거한다.
14) CDN : 콘텐츠를 캐시하는 방식이다. 만료될 때까지 캐시를 사용자에게 돌려주는 방식으로 서버의 부하를 줄여준다.

▪ 웹 사이트에 대한 공격 방법

  • 웹 사이트는 불특정 다수가 사용하는 서비스이기 때문에 보안 대책이 필요하다.

  • 보안의 취약점을 이용한 공격 방법을 이해하고 사전에 대책을 준비하는 것이 중요하다.
    1) 멀웨어 : 부정하고 유해한 의도로 만들어진 악성 소프트웨어나 악성 코드이다. 바이러스, 트로이 목마, 웜, 봇, 스파이웨어, 키로거, 백도어와 같은 종류가 있다.
    2) XSS : 크로스 사이트 스크립팅이라 하며, 방문자의 웹 브라우저에 악의적인 스크립트를 심는 공격이다.
    3) CSRF : 사이트 간 위조 요청이다. 일명 이미지 태그 공격이라고 한다. 사용자의 의지와 무관하게 공격자가 변조한 폼의 데이터를 특정 서버에 요청하여 처리하도록 유도하는 공격이다.
    4) SQL 인젝션 : SQL 문(데이터베이스를 조작하는 명령)을 송신하여 데이터베이스에 부정한 조작을 하는 공격이다.
    5) 세션 하이제킹 : 세션이라고 하는 접속 정보를 도용하는 공격으로, 다른 사람인 척할 수 있다.
    6) DoS공격 : 표적 서비스에 부하를 발생시켜 서비스를 중지시키거나, 서비스를 방해하는 공격이다. 최악의 경우 서버가 다운되는 경우도 있다.
    7) 패스워드 크래킹 : 서버의 패스워드 파일에 접속하거나, 전송되는 패스워드를 도용하거나, 패스워드를 알아내는 공격이다.

▪ 클라우드 서비스의 형태(추가)

  • DaaS(Desktop as Service) : 클라이언트 PC 환경을 가상화하여 네트워크에 구축하는 서비스이다. 사용자는 네트워크를 통해 원격으로 사용한다. 따라서 언제 어디서나 어떠한 PC이든지 ‘같은 PC 환경’을 사용할 수 있다. 구체적으로 회사 PC를 DaaS화하여 회사에서도, 집에서도 같은 환경에서 작업하는 것을 목적으로 한다.
  • FaaS(Function as a Service) : 함수를 설치하면 실행되는 서비스이다. 서버리스라는 시스템으로 ASW Lamda가 FaaS에 해당한다.

▪ 매니지드 서비스

  • 매니지드 서비스는 AWS가 관리하는 서비스의 통칭이다.
  • 가상 서버인 Amazon EC2는 매니지드 서비스가 아니지만 스토리지인 Amazon S3, DB서버인 Amazon RDS 등이 대표적인 매니지드 서비스이다.
  • 매니지드 서비스는 백업 및 업데이트가 자동으로 이루어진다.
  • 관리자가 수동으로 할 필요가 없기 때문에 관리 부담이 줄어든다.
  • 특히 Amazon S3의 경우는 관리자가 설정하지 않아도 스토리지 용량이 자동으로 증가하기 때문에 상당히 편리하지만 업데이트하고 싶지 않은 소프트웨어가 업데이트되거나 예상 이상으로 스토리지 용량이 커져서 요금이 발생할 수 있기 때문에 완전히 신경을 안 쓸수
    는 없다. 하지만 작업이 필요 없다는 점만으로도 부담이 크게 줄어든다.
  • 매니지드 서비스의 동작
    1) 자동 백업
    2) 자동 알림
    3) 모니터링
    4) 패치관리
    5) 보안
    6) 장애를 대비한 이중화

[AWS 비용]

▪ 사용한 만큼 지불하는 종량제

  • AWS는 서비스에 따라 요금 체계가 다르다.
  • 대부분의 공통적인 서비스에 종량제를 도입하고 있으며 ‘사용한 서비스 1개당 금액 + 사용한 분’의 과금 형태가 많다.
  • 사용한 만큼의 비용이니 향후에 필요하지만 지금은 필요없는 자원을 확보해 둘 필요가 없다. 최소로 필요한 만큼만 준비해서 시작하고 필요할 때 늘리면 된다.

▪ AWS 요금 산출 방법

  • AWS 요금은 서비스에 따라서 계산하는 방법이 다르다.
  • 예를 들어 Amazon EC2를 계산해 보면 아래와 같다.
  • Amazon EC2의 요금 산출 방법은 ‘①인스턴스 사용량(가동한 시간 × 단가) + ②EBS 요금(용량 × 단가) + ③통신료 + ④그외에 옵션’ 이다.
  • tc.micro(2vCPU, 1GiB 메모리) 인스턴스를 선택하고 30GB SSD 스토리지, 네트워크는 150GB/월 정도(일반적인 웹 서버에서는 충분한 용량), 옵션은 없음이라고 가정해보자.
  • ①인스턴스 사용량(가동한 시간 × 단가) : 단가는 0.0117 USD → 0.0104 US달러/시간 × 24시간 × 30일 = 8.424 US달러 = 1,0455.87원(1만455.87원)
  • ②EBS 요금(용량 × 단가) : 단가는 0.114 USD
    → 0.114 US달러/1GB × 30GB = 3.42 US달러 = 4,240.80(4,240.80원) + 통신료 : 단가 0.126 USD
    → 0.126 US달러/1GB × 150GB = 18.9 US달러 = 23,428.44(2만3,428.44원)
    합계는 38,125.11원이 된다. 약 38,125원 정도
    ※ 단가는 리전마다 다르며 서울 리전에 해당하는 단가이다.

▪ AWS 요금의 장점과 단점

  • ‘종량제이므로 사용한 만큼 결제하면 된다’라고 생각하면 굉장히 싸다고 느낄지도 모르지만 꼭 그렇지만은 않다.
  • 초기 비용(이니셜 코스트)이 들지 않는 대신 운영 비용(러닝 코스트)이 들기 때문에 경우에 따라 정액제 임대나 자사에서 준비하는 편이 더 저렴할 수도 있다.
  • 또한, 아무리 종량제라고 해도 최저 요금이 있는 요금 체계도 있고, 사용하는 서비스 1개당 요금이 발생하는 체계도 있다.
  • 이벤트나 캠페인과 같이 돌발적으로 접속 수가 늘어나는 웹 사이트의 경우는 AWS의 유연성이 큰 장점이 되지만, 그다지 변동이 없는 시스템은 이점이 없을수도 있다.
  • 이와 같이 변화가 없는 경우 비용 절감에 주목해야 할 것은 종량제보다 인건비의 축소이다.
  • AWS는 운영에 대한 부분을 맡길 수 있기 때문에 관리하는 사람이 없어도 된다.
  • 또한, 기술적 지식이 부족해도 사용할 수 있는 서비스가 많기 때문에 전문적인 지식을 필요로 하지 않는다.
  • 회사가 전문적인 기술자를 육성하고 지속적으로 고용해야 하는 것까지 전체적으로 생각한다면 저렴하다.

[AWS를 사용하기 위한 도구]

▪ AWS를 사용하기 위해 알아야 할 기본 개념

  • AWS는 클라우드 서비스이므로 ‘사용한 만큼 비용을 지불한다’가 기본이다.
  • 이는 필요한 것을 필요한 만큼 사용한다는 의미이며 항상 ‘자신에게 최적화된 상태로 관리한다’가 클라우드를 잘 사용하는 요령이다.
  • AWS는 서비스를 종합적으로 제공하기 때문에 웹 사이트나 시스템 구축에 필요한 기능 및 소프트웨어를 대부분 갖추고 있다.
  • 그러나 운영 방법에 따라 요금이 다르게 나오므로 무엇을 어떻게 사용할 것인지 적절하게 선택해야 한다.

▪ AWS는 서비스를 종합적으로 관리할 수 있다.

  • 사용자가 AWS의 여러 가지 서비스를 사용하는 경우가 많아서 AWS는 서비스를 종합적으로 관리할 수 있는 편리한 기능을 제공한다.
  • 서버 엔지니어와 같은 전문가가 없어도 운영할 수 있게 웹 브라우저로 조작할 수 있는 사용자 환경을 제공하고 있다.
    1) 관리 콘솔 : 서비스 설정 화면으로 웹 브라우저에서 사용할 수 있다.
    2) CLI : 명령어로 조작 가능한 명령줄 도구이다. 관리 콘솔에서 할 수 없는 것도 가능하다.
    3) IAM : 서비스를 사용하기 위한 사용자 계정이다. 그룹이나 정책 등을 일괄로 관리할 수 있다.
    4) 비용 관리 : 비용을 그래프 등으로 확인할 수 있다. 예산에 따라 관리할 수 있다.
    5) CloudWatch : 감시도구이다. 임계 값을 넘는 경우 조치를 취할 수 있다.

▪ AWS 계정

  • AWS를 사용하기 위한 계정을 AWS 계정이라고 한다. - AWS 계정을 생성하려면 이메일 주소와 암호, 연락처, 결제하기 위한 신용카드를 등록해야 한다.
  • AWS 계정은 아마존에서 쇼핑할 때 사용하는 아마존 계정과는 다르다.
  • AWS 서비스는 서버나 스토리지를 임대할 수 있으며 개인도 사용할 수 있지만 규모가 큰 단체가 사용하기에 장점이 많기 때문에 기업 사용자가 많다.
  • 여러 프로젝트에서 같은 계정을 사용하면 비용이 모호해지고 관리도 복잡해져서 규모가 커지면 프로젝트나 비용을 관리하는 단위로 AWS 계정을 구분하여 많이 사용한다.

▪ root 사용자

  • AWS 계정은 등록한 이메일 주소와 함호로 로그인한다.
  • AWS 계정은 모든 조작이 가능한 관리자 권한을 가지고 있기 때문에 root 사용자라고 부른다.
  • 모든 권한을 가지고 있다는 것은 편리하기는 하지만, 실수할 경우 치명적이고 도용된다면 매우 곤란해진다.
  • 이러한 이유로 AWS는 IAM이라는 서비스만 사용하는 사용자를 별도로 관리하고 있다.
  • 일반적인 운영에는 IAM을 사용하는 것이 일반적이다.

▪ 서비스를 개인에 맞춰서 최적화

  • AWS는 언제든지 시작해서 언제든지 멈출 수 있다.

  • 필요할 때만 필요한 서비스를 사용하는 것이 철칙이다.

  • 준비하기 귀찮은 기능이나 소프트웨어를 서비스로 설정만 하면 언제든지 사용할 수 있다.

  • 서비스 한 개에 여러 옵션이 있으며 Amazon EC2의 경우 인스턴스 유형(서버의 성능)을 선택하거나 용량을 선택할 수도 있으며 한 번 선택한 다음 방치하는 것이 아니라 상황이 바뀌면 서비스 또한 상황에 맞춰 선택할 수 있다.
    ▪ 관리 콘솔

  • 관리 콘솔은 웹 브라우저에서 AWS 서비스를 관리하는 화면(사용자 환경)이다.

  • 서비스별로 고유 화면(대시보드)이 있고, 서비스 설정, 리전 선택, AWS 계정 관리, 필요한 서비스나 리소스 그룹의 검색과 사용, AWS 문서의 참조 등 다양한 관리를 수행한다.

    ※ 리소스 : 각 인스턴스와 같이 가동 중인 서비스나 용량을 확보하고 있는 서비스와 같이 사용 중인 것 일체를 말한다.

  • 스마트폰을 지원하는 Amazon Console 모바일 앱 도 있어서 리소스의 상태를 외출 중에도 확인할 수 있다.

  • 복잡한 명령어를 입력해 서비스를 조작할 필요 없이 명령어를 잘 알지 못하는 사람도 관리 콘솔에서 서비스를 사용할 수 있다.

▪ 리전 선택

  • 관리 콘솔은 지역을 대표하는 리전 단위로 조작한다. - 같은 Amazon EC2 서비스라도 A 리전의 Amazon EC2와 B 리전의 Amazon EC2는 다른 것으로 간주된다.
  • 관리 콘솔은 처음 지역이 버지니아로 되어 있으며 AWS 계정으로 로그인하면 화면 오른쪽 상단 메뉴에서 서울 등 사용하고 싶은 리전으로 전환할 수 있다.
  • 리전은 한 번 선택하면 저장되기 때문에 같은 리전을 사용하려면 한 번만 선택하면 된다.
  • 다른 리전의 서비스를 사용할 때는 화면 오른쪽 상단메뉴에서 리전을 전환한다.
  • 서비스의 조작 화면이나 관리 콘솔의 오른쪽 상단 메뉴외에서도 언제든지 변경할 수 있다.
  • 리전에 따라 사용할 수 있는 서비스와 사용할 수 없는 서비스가 있으며 사용할 수 없는 서비스를 선택하면 사용 가능한 리전으로 전환하라는 경고가 표시된다.

▪ 대시보드

  • 관리 콘솔에는 서비스별로 메뉴가 있어 각 화면에서 조작한다.
  • 서비스를 조작할 수 있는 메인 화면을 대시보드라고 한다.
  • EC2인 경우 EC2 대시보드, S3인 경우 S3 대시보드가 있다.
  • AWS의 각 서비스를 조작하려면 AWS 계정으로 로그인한 후 리전이나 서비스를 선택하여 해당 대시보드를 열어야 한다.
  • 대시보드에서 가능한 조작은 서비스에 따라서 다르지만 서비스의 시작과 종료, 각종 설정, 현재의 상태에 대한 표시 등은 공통으로 많이 사용하는 기능이다.
  • 서비스를 시작한 지 얼마 안 된 서비스는 대시보드가 아직 한글화되지 않은 경우도 있지만, 주요 서비스는 한국어를 지원한다.

▪ 대시보드 화면 조작
1) AWS 계정으로 로그인한다.
2) 리전을 선택한다.
3) 서비스를 검색한다.
4) 대시보드를 연다.

▪ AWS CLI

  • AWS CLI(Common Line Interface)는 로컬의 명령어 단말기 혹은 서버에서 명령어나 스크립트로 AWS 서비스를 빠르게 수행하기 위한 CLI(명령줄 환경)이다. - AWS의 다양한 서비스 설정이나 조작은 ‘관리 콘솔’에서 시각적으로 진행하지만, 스크립트를 작성해서 여러 가지 조작을 한 번에 실행하거나 좀 더 자동화 프로그램화된 방법으로 조작할 경우 AWS CLI가 편리하다.

  • AWS CLI는 파이썬(Python)의 패키지 관리 도구인 pip를 사용하여 설치한다.

  • 작업은 컴퓨터의 명령 프롬프트나 터미널을 열고 aws로 시작하는 일련의 명령어를 사용한다.

  • awsconfigure에서 AWS 로그인의 인증 정보를 입력하여 설정하며 EC2 인스턴스의 시작이나 정지, Amazon S3에 파일을 복사하여 백업 등을 사용 예로 볼 수 있다.

    ▪AWS CLI 예시

  • I-12345678이라는 이름의 EC2 인스턴스를 시작한다.
    => $ aws ec2 start-interfaces --instance-ids I-12345678

  • S3 패키지의 목록을 표시한다.
    => $ aws s3 ls ▪AWS IAM

  • AWS IAM이란 Identity and Access Management(ID와 접속 관리)의 약어로 AWS의 인
    증 기능이다.

  • AWS 계정과 비슷하지만 AWS 계정은 계약을 관리하는 계정인데 반해, IAM은 각 서비스에 대한 접속을 관리하는 기능이다.

  • 사람에 대해 부여하는 IAM을 IAM 사용자라고 한다.

  • 서비스나 프로그램 등에 부여하는 IAM은 IAM 역할이다.

  • IAM 자체는 추가 요금이 없고 무료로 사용할 수 있으며 IAM 사용자가 사용한 AWS에는 과금이 되지만, IAM 자체는 추가 요금이 없고 AWS 계정에 제공되는 기능이다.

  • AWS는 사용자 인증에 MFA(Multi-Factor Authentication)를 참조할 것을 권장하고 있
    다.

  • IAM을 사용자나 서비스에 부여하여 접속을 관리한다.
    (접속 : 사용자 A, 사용자 B, 웹 서비스 : 사용자 X, php 서비스 : 사용자 Y 등)

▪ IAM 그룹과 IAM 정책

  • IAM 사용자, IAM 역할 두 가지 모두에 필요한 최소한의 기능을 부여하고, 필요한 사람에게만 전달하여 운영하는 것이 기본이다.
  • ‘혹시 필요할지도 모르니까’라는 불필요한 권한을 부여하는 것은 보안적으로 바람직 하지 않다.
  • 또한, 계정 하나를 여러 사람이 돌려쓰는 것도 바람직하지 않다. 무슨 일이 생길 경우에 누가 수행한 작업인지 알 수 없기 때문이다.
  • 각각의 서비스에 대해서 멤버 한 사람 한사람에게 권한을 설정하는 것은 힘든 일이다.
  • 그렇기 때문에 사용자나 역할을 효과적으로 설정하고 관리할 수 있는 구조로 되어 있다.
  • 사용자는 IAM 그룹으로 그룹화 할 수 있다. 그룹화하면 같은 권한을 부여하고 싶은 사용자를 일괄로 관리할 수 있다.
  • IAM 정책은 실행자(사용자, 역할, 그룹)가 어떤 서비스에 접속할 수 있는지 정해진 규칙을 설정하는 기능이며 실행자가 무엇을 할 수 있는지를 개별로 설정하는 것이 아니라 정책을 적용하는 형태로 설정한다.
  • 따라서 권한 설정을 변경하고 싶을 때도 정책만 변경하면 그룹에 속한 모든 사용자나 역할의 설정을 변경할 수 있다.
  • 정책은 실행자 한 명에 대해 여러 설정을 할 수 있고, 정책 한 개를 여러 사용자나 역할에 설정할 수도 있다.
  • IAM 정책으로 사용자나 그룹의 권한 설정을 관리한다.
  • IAM 정책에 그룹이나 사용자를 연결하고 해당 정책을 변경하면 연결된 그룹이나 사용자의
    권한이 바뀐다.

▪ IAM 정책 설정하기

  • IAM 정책은 무엇에 대해서(Amazon EC2 서비스나 Amazon S3의 폴더 등) 어떤 조작을(시작 및 정지, 파일 쓰기 및 읽기, 삭제 등) 허가할지 말지를 설정하는 것이다.
  • 실행자(사용자, 역할, 그룹)가 ‘어떤 일을 할 수 있는가’의 형태로 설정이 가능하고 조작 대상(서버 및 폴더 등)에 대해서 ‘무엇을 허락할 것인가’의 형태로도 설정할 수 있다.
  • 전자를 ‘자격 기반 정책’ 후자를 ‘리소스 기반 정책’이라고 한다.
  • 어떠한 조작을 지정할 수 있는지는 서비스나 대상에 따라 다르며 세밀하게 설정할 수 있다.
  • 예를 들면 스토리지 서비스인 Amazon S3의 경우는 읽기, 추가하기, 덮어쓰기, 삭제하기 등 세밀하게 설정할 수 있고 특정한 장소(IP 주소)에서만 허가하는 설정도 가능하다.
  • IAM 정책은 자기만의 정책을 생성하는 것이 가능하지만(고객 관리형 정책), 정해야 할 항목이 굉장히 많고 설정하다 실수하기도 쉽기 때문에 기본적으로는 미리 준비되어 있는 AWS 관리 정책을 사용하는 것을 추천한다.
  • 예를 들면 Amazon S3에 대해 ‘모든 조각 가능, 읽기 쓰기 가능, 읽기만 가능’ 등 자주 사용하는 것들은 AWS 관리 정책에 준비되어 있으므로 이를 사용하면 실수를 줄일 수 있다.
  • AWS 관리 정책과 다른 부분만 고객 관리형 정책을 설정하는 식으로 조합하면 좋다.
  • 또한, 자격 기반 정책과 리소스 기반 정책에 설정할 수 있는 항목이 조금 다르다.

0개의 댓글