

IT 자원을 구축하는 전통적인 방법에 온프레미스 구축 방법이 있다.
프레미스(premise)는 기본, 건물, 토지라는 뜻이므로 온프레미스는 자체적인 공간과 자원을 이용하여 사용자가 직접 구축 및 운영하는 방식을 의미한다고 볼 수 있다.
사용자 입장에서 이런 구축 방식은 모든 것을 수행해야 하기 때문에 부담이 클 수 밖에 없으며, 비용 또한 만만치 않다.
이런 문제점을 고려하여 효율적으로 IT 자원을 구축하는 방법으로 클라우드 구축 방법이 떠오르고 있으며, 많은 비즈니스 환경에서 이 방식을 도입하자는 요구가 있다. 클라우드가 '구름'을 뜻한다는 것은 쉽게 알 수 있지만, 과연 IT 영역에서 클라우드는 어떤 의미일까?
일반적으로 IT 자원 구성도를 그릴 때, 인터넷에 있는 다양한 자원을 구름 형태로 표현하곤 한다. 이에 클라우드는 구름처럼 눈에 보이지 않는 형태로 집합되어 있는 IT 자원들이라고 생각할 수 있다.
클라우드 컴퓨팅은 인터넷을 통해 요구가 있을 때 즉시(온디맨드) IT 자원을 제공하며, 사용한 만큼 비용을 지불하는 서비스이다. 좀 더 이해하기 쉽게 앞서 설명한 클라우드 단어 의미와 연결하여 생각하면, 인터넷 구간 어딘가에 구름 형태로 쌓여 실제 물리적인 자원은 보이지 않지만 IT 자원을 원하는 대로 가져다 사용할 수 있는 컴퓨팅 서비스를 의미한다. AWS와 같은 클라우드 공급자에게 필요에 따라 다양한 IT 자원을 공급받을 수 있다.

클라우드를 통해 광범위한 기술에 쉽게 접근할 수 있어 거의 모든 것을 빠르고 혁신적으로 구축할 수 있다.
클라우드 컴퓨팅을 사용하면 기존 온프레미스 환경처럼 향후 비즈니스 확장을 고려한 IT 자원을 사전에 과하게 구성할 필요가 없다.
클라우드 컴퓨팅은 Pay Per Use로, IT 자원을 사용한 만큼 비용을 지불하면 된다.
말 그대로 인프라에 대한 클라우드 서비스 유형을 의미한다. 여기에서 인프라는 서버, 네트워크, 스토리지 등 하드웨어 영역과 가상화 기능이 해당된다. 클라우드 공급자는 해당 인프라 영역을 관리하고 서비스를 제공하며, 클라우드 사용자가 나머지 영역을 직접 고나리하는 구조이다.

플랫폼 형태로 제공되는 클라우드 서비스 유형을 의미한다. 클라우드 공급자가 자체적으로 구축한 플랫폼을 제공하며, 클라우드 사용자는 별도의 플랫폼을 구축하지 않고 애플리케이션을 개발 및 관리만 하면 된다. 즉, 클라우드 사용자는 애플리케이션 영역만 담당하고 나머지는 클라우드 공급자가 관리 및 제공하는 구조이다.

SaaS는 소프트웨어 영역까지 클라우드 공급자가 관리 및 제공하는 유형을 의미한다. 클라우드 사용자는 별도의 애플리케이션을 설치하거나 운영할 필요 없이 클라우드 서비스를 제공받을 수 있다. 즉, 클라우드 공급자가 모든 것을 제공하고 클라우드 사용자는 서비스만 받는 구조이다.

일반적으로 사용자가 클라우드 자원을 소유하지 않으며, 자체적인 공간에 위치하지 않고 클라우드 공급자가 서비스를 제공하는 환경이다. 확장성이 우수하며, 글로벌 서비스 제공에도 유리하다.
사용자 전용 클라우드 환경으로, 자원 소유권은 사용자에게 있고 프라이빗 클라우드는 온프레미스 환경에 구축되어 서비스를 받는 환경이다. 즉, 서비스 주체가 '사용자'이다. 보안이 우수하지만, 퍼블릭 클라우드보다 서비스 확장성이 떨어진다.
퍼블릭 클라우드와 프라이빗 클라우드의 단점을 보완하려고 등장한 클라우드 모델이다. 다수의 클라우드 시스템이 혼합되어 있는 형태로, 클라우드 시스템이 서로 연결된 모델이다.

AWS는 다양한 퍼블릭 클라우드 컴퓨팅 리소스를 제공하고 있으며 직접 장비를 구매하거나 임대하지 않고 인터넷 환경을 통해 필요한 만큼의 리소스를 제공하는 클라우드 서비스 제공자이다. 현재 aws는 200개 이상의 클라우드 서비를 제공하는 것으로 알려져 있다. AWS는 32개의 리전(클라우드 서비스를 위해 자원이 집적되어 있는 물리적 데이터 센터의 지리적 위치)과 102개의 가용 영역(리전 내 구성되는 하나 이상의 개별적 데이터 센터)을 운영하여 글로벌 클라우드 인프라를 제공하고 있다.


각 분류별로 200개 이상의 세부 서비스가 있다.
퍼블릭 클라우드의 서버 자원에 대해 가상 머신을 생성하고 비용 및 용량을 관리하는 서비스로 구성되어 있다.
퍼블릭 클라우드에 생성한 다양한 자원으로 내/외부 통신을 하는 네트워크 서비스들로 구성되어 있다.
퍼블릭 클라우드에 안정적이고 확장성이 높은 스토리지 서비스들로 구성되어 있다.
데이터베이스 목적과 용도에 따라 퍼블릭 클라우드에 다양한 데이터베이스 엔진을 제공하여 완전 관리형 데이터베이스 서비스를 하고 있다.
퍼블릭 클라우드 자원과 사용자 자격 증명 및 접근 관리, 데이터/네트워크/애플리케이션 보호와 위협 탐지 및 모니터링을 위한 다양한 서비스로 구성되어 있다.
AWS는 Pay Per Use로, IT 자원을 사용한 만큼 비용을 지불하는 형태로 서비스를 제공한다. 물론 무료 서비스도 있지만, AWS 서비스 과금은 서비스마다 책정하는 방식과 기준이 다르다. 클라우드 서비스를 도입하기에 앞서 비용 검토가 선행되어야 하고 필요 자원을 산정해야 한다. 항상 과금은 시간과 사용량에 비례하여 사용한 만큼 부여한다는 점을 유의해야 한다.
특정 부분을 계산해서 답을 구하고 추정하는 행위 자체를 Computing(컴퓨팅)이라고 정의하고 있다. 컴퓨팅을 전문적으로 수행하기 위해 인간이 아닌 컴퓨팅을 목적으로 하는 장비가 존재한다. 대표적으로 서버가 컴퓨팅을 위한 장비에 해당된다.
AWS Computing Service는 퍼블릭 클라우드에서 컴퓨팅 자원을 활용해서 다양한 워크로드를 수행할 수있는 서비스를 의미한다.

컴퓨팅 리소스를 사용할 수 있는 만큼 비용을 지불하면 수분 내로 가상의 서버 자원을 생성하고 관리할 수 있다.
EC2(Elastic Compute Cloud) : 클라우드 환경에서 서버 자원을 인스턴스라는 가상 머신의 형태로 제공하는 가장 기본적인 AWS Computing Service
Lambda : Serverless 컴퓨팅 서비스로, 별도의 서버 설정 없이 환경을 제공해서 코드만 실행해 주는 서비를 의미
Lightsail : 독립적인 환경을 제공한다. 최소한의 설정만으로도 바로 사용 가능한 컴퓨팅 서비스
ECS(Elastic Container Service) : EC2 기반 관리형 클러스터에서 실행되는 컨테이너 형태의 자원에 대해 배포, Scheduling, scaling 등을 관리하는 서비스
Amazon EC2란 퍼블릭 클라우드 환경에서 확장 가능한 컴퓨팅 리소스를 제공하여 가상의 서버 인스턴스를 운영할 수 있도록 하는 서비스를 의미한다.
EC2 인스턴스는 가상 컴퓨팅 환경을 기반으로 하고 AMI(Amazon Machine Image)를 사용해서 인스턴스에서 필요한 소프트웨어 정보를 정의한다.
EC2 인스턴스는 가상의 컴퓨팅 환경으로 프로세서, 메모리, 스토리지, 네트워크 용량을 결정하는 다양한 인스턴스 유형을 제공한다. 인스턴스가 실행 중인 임의의 프로세스로 해석된다는 점과 클라우드 컴퓨팅이 가상의 환경에서 필요한 자원을 임대해서 사용하다는 점이 서로 일맥상통한 의미를 갖는다.EC2는 500개가 넘는 인스턴스 유형을 제공해서 사용자의 목적과 비즈니스 환경에 맞게 인스턴스를 선택할 수 있다.

인스턴스 상태는 일반적으로 7가지로 분류할 수 있으며, 어떤 행위에 최종적으로 도달하는 상태와 진행 과정에 따른 상태로 나눌 수 있다.

AMI는 인스턴스를 시작할 때 필요한 정보를 제공하는 것으로 운영 체제의 이미지 등 EC2 인스턴스에 대한 전반적인 메타데이터를 제공하는 템플릿을 의미한다.

AWS에서 자체적으로 제공하는 기본 AMI를 활용해서 인스턴스를 생성하고 사용자 요구에 따라 변경하거나 구성하여 사용자 정의 AMI를 생성할 수 있다.
이렇게 만들어진 사용자 정의 AMI를 통해 다른 인스턴스를 생성할 수 있다.
AMI를 통해 인스턴스 환경을 설정했다면 다음으로 어떤 저장소를 사용할지 결정해야 한다. EC2는 유연하고 효율적인 스토리지 환경을 제공하고 아래와 같이 두 종류로 나뉜다.

EC2 인스턴스용 스토리지 유형은 인스턴스 스토어와 블록 스토리지인 Amazon EBS로 나뉜다.
인스턴스에 바로 붙어 있는 저장소로, Amazon EC2 인스턴스를 생성하면 기본적으로 존재하는 스토리지이다. 다만 일부 인스턴스 유형은 인스턴스 스토어를 지원하지 않는다.
아무래도 직접 붙어 있는 구조 덕분에 매우 빠른 I/O를 보장한다는 장점이 있지만, 인스턴스 스토어는 Amazon EC2 인스턴스를 중지하거나 종료하면 인스턴스 스토어에 저장된 데이터가 모두 손실된다는 단점이 있다. 따라서 임시적인 데이터 저장소로 생각할 수 있으며, 장기적으로 보존해야 하는 데이터는 인스턴스 스토어에 저장하지 않는 것이 좋다.
Amazon EBS는 AWS에서 제공하는 블록 스토리지 서비스로 EC2 인스턴스와 함께 사용되며 데이터의 지속성과 가용성을 보장한다. 디스크 형태로 작동하며 EC2 인스턴스에 네트워크로 연결하여 데이터를 저장하고 관리할 수 있다. 영구 보존이 가능하다.
EC2 인스턴스가 중지되거나 종료되어도 Amazon EBS에 보존하는 데이터는 그대로 유지할 수 있다. EBS는 관리 콘솔을 통해 스냅샷을 생성해 백업하거나 EBS 연결을 해제한 후 다른 인스턴스에 연결 가능하다는 특징이 있다.

Amazon EC2 인스턴스는 어떤 서비스를 수행하기 위해 특수한 목적으로 만들어진 가상 서버 머신이다. 서비스를 제공하기 위해 자연스럽게 통신이 가능한 환경으로 구성될 필요가 있다. 이때 EC2 네트워킹을 통해 통신이 가능한 환경을 구성할 수 있다.
Amazon VPC는 AWS 퍼블릭 클라우드 내부에서 논리적으로 격리된 가상의 클라우드 네트워크 환경이다. 생성된 EC2 인스턴스는 별도로 구성된 하나의 Amazon VPC 내부에 생성되어 네트워킹된다.
AWS에서는 ENI(Elastic Network Interface)라는 논리적 네트워크 인터페이스가 VPC 내 생성되며, ENI를 EC2 인스턴스에 연결해서 네트워킹을 수행한다.
네트워크 인터페이스에는 별도의 IP 주소가 존재하고 IP 주소로 각 인스턴스나 호스트를 구분하고 통신을 수행한다 이러한 IP 주소는 사설, 공인 IP 주소로 구분된다.
AWS에서도 클라우드 내부의 보안 요소들을 중요하게 인식하고 있으므로 EC2의 안정적인 운영을 위해 EC2 보안 기능을 제공하고 있다.
보안 그룹의 경우 EC2 인스턴스의 트래픽을 송수신 트래픽을 제어하기 위해 설계된 가상의 방화벽 환경이다. EC2 인스턴스를 기준으로 인바운드/아웃바운드 트래픽에 대한 규칙을 제어하게 된다. 트래픽 제어를 위해 IP 주소, 포트 번호, 프로토콜 등의 정보가 사용된다.
EC2 인스턴스에 연결할 때 사용자 자격을 증명하기 위한 보안 키다. 키 페어는 Public, Private로 구분되며 퍼블릭 키는 Amazon EC2 인스턴스에 저장되고 프라이빗 키는 사용자 로컬 환경에 저장된다.
EC2의 모니터링 기능은 서비스의 안정성, 가용성, 성능 유지에 반드시 필요한 기능이다. 불특정 다수에게 서비스되는 의미 있는 비즈니스 아키텍처의 경우 언제 어느 시점, 또는 특정 시점에 트래픽이 몰려서 서버가 다운될지 모른다. EC2의 리소스는 유한하기 때문에 자원에 대한 부하를 컨트롤하고 모니터링할 필요성이 있다.
아래와 같은 모니터링 계획을 정의해서 관리하는 것이 중요하다.
말 그대로 관리자가 직접 관리 콘솔을 이용하여 모니터링을 수행하는 것이다. Amazon EC2 대시보드에서 간단한 통계 정보를 확인하거나 Amazon CloudWatch라는 모니터링 전용 서비스를 이용하여 상세한 통계 정보를 모니터링할 수 있다.

오토 모니터링의 경우 대상 리소스에 대해 임계값을 지정하고 임계값을 초과하게 되면 Alert Message를 관리자에게 보여주는 형식으로 동적인 모니터링을 진행하게 된다. 다양한 도구가 있지만 대표적으로 Amazon CloudWatch가 있다.
CloudWatch의 경보 시스템을 통해서 동적으로 단일 리소스를 모니터링하고 지정된 임계값을 초과하는 경고 메시지를 생성하는 등의 방법으로 모니터링이 가능하다. 경고 메시지 등의 경우 Amazon SNS(Simple Notificationi Service)를 통해 관리자 이메일로 메일을 보내거나 EC2 자원을 동적으로 컨트롤할 수 있게 된다.
