앞서 프로젝트 배포를 AWS를 사용해서 EC2 배포와 그리고 이미지를 S3에 올리는 것과 RDS를 사용해보았습니다. 하지만 이것은 배포만한 것이니 이론적인 부분을 설명하고자 합니다.


애자일 원칙

  • 고객을 만족시키기 위해 소프트웨어를 빠르고 지속적으로 배포한다.
  • 새로운 요구 사항은 개발 후기에도 기꺼이 받아들인다.
  • 동작 가능한 소프트웨어를 몇 달 주기가 아닌 몇 주 주기로 배포한다.
  • 업무 담당자와 개발자 간의 긴밀한 소통을 지향한다.
  • 믿을 수 있는 동기부여된 개인들로 구성된 팀이 소프트웨어를 개발한다.
  • 직접 만나 이야기하는 것이 최선의 의사소통이다.
  • 동작하는 소프트웨어가 가장 중요한 진척의 척도이다.
  • 일정한 속도를 유지함으로써 지속 가능한 개발을 추구한다.
  • 좋은 기술과 설계를 향해 지속적으로 관심을 기울인다.
  • 단순함을 중요시한다.
  • 새로운 환경에 지속적으로 적응한다.

동작 방식

애자일 방법론에서는 소프트웨어 애플리케이션이 여러 가지의 기능과 모듈로 분류된다. 그리고 이런 기능이 이터레이션을 반복하며 배포된다. 결과적으로 특정 기간에 할 일이 없어 놀고 있는 팀원이 생기지 않는다.

장점

  • 기능의 빠른 구현과 데모

    애자일 방법론에서는 소프트웨어 프로젝트가 기능으로 구분되는데, 모든 기능의 집합을 백로그라고 한다. 하나 혹은 그 이상의 기능을 한 주 혹은 한 달 동안 구체화하고 배포하는 것이 주요한 개념이다.

  • 적은 리소스 소요

    애자일 방식에서는 개발 팀과 테스트 팀이 구분되지 않는다. 또 한 빌드나 릴리스, 배포 팀이 따로 구분되지 않는다. 대신 하나의 팀이 약 여덟 명으로 구성되며 각각의 구성원은 모든 역할을 감당할 수 있다.

  • 팀워크 향상과 상호 교육

  • 요구 사항이 자주 변경되는 프로젝트에 적합

  • 최소한의 문서

  • 계획이 없거나 최소한의 계획

    기능이 하나씩 구현되기 때문에 방대한 계획은 존재하지 않는다.

  • 동시 개발


AWS 클라우드 용어 정리

aws를 학습하는데 많이 등장하고 중요한 네트워킹/클라우딩 용어들을 추려 정리해보는 시간을 가져보겠습니다.

고가용성 (High Availability, HA)

전체 시스템에 대하여, 사람이 개입하지 않아도 시스템이 항상 작동하고 자동으로 오류를 복구해 가동 중지를 최소화하도록 보장하는 것을 말한다. (장애가 발생하더라도 아주 짧은 시간이며, 자동으로 복구)

즉, 서버와 네트워크, 프로그램 등의 시스템이 오랜 기간동안 지속적으로 정상 운영이 가능한 성질을 말하며, 고장나도 바로 복구해서 서비스를 지속할수 있는 능력을 말한다. 단, 복구를 위한 약간의 장애시간도 포함한다.

시스템을 1분이라도 사용할 수 없으면 비즈니스에 중대한 손상이기 때문에 중요한 개념이며 aws서비스에 자주 등장하는 용어다.

  • ELB : 지연 시간이 길거나 서버가 과다 사용되는 경우 이를 알리는 트리거로 동작
  • EIP : 인스턴스가 실패하더라도 클라이언트가 애플리케이션에 액세스할 수 있도록 고정 IP
  • Route 53 : 단순 라우팅, 지연 시간에 따른 라우팅, 상태확인, DNS 장애 조치, 지리 위치 라우팅 지원
  • Auto Scaling
  • CloudWatch
  • 여러 AZ

내결함성/장애내구성

하드웨어 오류가 발생 했을 때 데이터 무결성을 유지하는 컴퓨터 하드웨어나 소프트웨어의 기능. 즉, 시스템의 일부 구성요소에 장애 상황에도 서비스를 지속할수 있는 능력을 말한다.

여기서 조심할게 있는데 장애를 떠안은채 서비스를 지속한다는 개념이 아니다. 서비스에 장애가 있으면 누가 이용하겠는가?

장애가 있어도 다른 가용영역(AZ)로 연결을 시킴으로서 해결하는 즉, 어찌보면 간접적으로 우회해서 해결할수 있는 능력을 말하는 것이다. 그래서 장애 상황에 영향을 받지 않는 아키텍쳐가 필요하다.

  • SQS : 내결함성 애플리케이션의 백본으로 사용, 안정적인 분산 메시징 시스템, 대기열 항시 사용 가능
  • S3 : 내구성과 결함성이 뛰어난 데이터 스토리지. 리전 내 여러 시설에서 각 디바이스의 모든 데이터를 중복 저장
  • RDS : 자동 백업, 스냅샷, 여러 가용 역역 지점

장애허용

고가용성과 다르게 장애가 발생하더라도 서비스의 중단없이 장애를 가진채 계속 서비스되는 시스템을 의미한다.

확장성

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

    예를들어, 유저가 한명일때는 서버 하나, 유저가 어러명으로 늘어날때는 자동으로 서버 증설

탄력성(Elastic)

용량 요구사항에 대해 신경쓰지 않고 확장 및 축소가 자동으로 동작하는걸 말한다.

AWS에서 정말정말 자주 등장하는 용어이다.

  • 수요에 따라 컴퓨팅파워 또는 용량을 확장하거나 축소 할 수 있는 능력 (확장성은 말 그대로 확장만)

  • 불필요한 자원을 사용하지 않고 비용 최적화에 필수적인 능력

  • 트래픽 급증 시 웹 서버 수 자동으로 증가시키거나, 트래픽이 줄어들 때 데이터베이스 쓰기 용량 감소 (IOPS : Input/Output Opereations Per Second)

  • 아키텍쳐 전반에 걸친 일상적인 수요 변동 처리

  • 시간 기반 탄력성 : 리소스가 사용되지 않을 때 리소스 끄기

  • 볼륨 기반 탄력성 : 수용 강도에 맞게 규모 조정

온프레미스 (On-premise)

클라우드 같은 환경이 아닌 자체 회사 전산실에 직접 설치하여 운영하는 환경을 의미한다. 한마디로 클라우딩 컴퓨터의 반대 개념이라고 보면 된다. On-premise는 클라우드 컴퓨팅 기술이 나오기 전까지 기업 인프라 구축의 일반적인 방식이었기 때문에 이전 또는 전통적인 이라는 단어와 함께 사용되는 편이다.

오프프레미스 (Off-premises)

On-premise의 반대버젼으로, 클라우드 같은 환경을 말한다.

온디멘드 (On-Demand)

이용자의 요구에 따라 상품이나 서비스가 바로 제공되는 것.

인스턴스

클라우드에서 사용하는 가상 서버로 CPU, 메인보드, 그래픽 카드등 연산을 위한 하드웨어 부분을 담당. 그냥 가상 컴퓨터 본체라고 보면 된다.

AMI (Amazon Machine Image)

EC2 인스턴스를 실행하기 위한 정보를 담고 있는 이미지(템플릿)

ARN (Amazon Resource Name)

추후에 버킷 정책의 JSON을 살펴볼때 나오는 개념이다.
여러 정보들을 표현하는 일종의 아이디 형식이라고 이해하면 된다.

프로비저닝(provisioning)

사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것

간단히 말해서 빌리는것 → EC2 한대를 프로비전하여 웹서버를 구성한다.

보안 그룹

가상의 방화벽

오토 스케일링

정책에 따라서 시스템을 자동으로 늘리고 줄여주는 서비스.

스냅샷

읽기만 가능한 특정 시간의 가상 복제 파일시스템. 특정 시간에 파일시스템을 복사해서 보관하다가 나중에 원본에 문제가 생겼을 때 복원 해주는 기능.

노드

트리 구조에서 데이터의 상하위 계층을 나타내는 위치의 항목

컨테이너

응용프로그램(어플리케이션)의 종속성과 함께 응용프로그램 자체를 캡슐화 함. 일반적인 VM과 같이, 운영체제의 격리된 인스턴스 형태.

클라우드

이용자와 기업/기관들이 인터넷을 통해 접속할 수 있는 회사의 데이터센터 서버 네트워크. 아마존, 애플, 구글 등등 자체 클라우드가 있다. 클라우드는 사용자가 접속하는 기업의 서버 네트워크를 설명하는 일반적인 용어(매우 큰의미)

DR(Disaster Recovery)

재해(재앙) 복구 시스템. IDC별, 전산신별, 지점별 등 지역적으로 분리된 서버들에 대해 무정지 서비스 가능. 갑작스런 네트워크의 단절, 네트워크 노드의 불안정, 장비의 다운,정전 등으로 인한 문제 해결

IDC(Internet Data Center)

기가급 랜을 구축한 초고속 인터넷 환경에 인터넷 사업자의 서버 시스템을 설치, 운영할 수 있는 설비를 제공하는 곳.

AWS 트래픽 용어

트래픽

인터넷 상에서 송수신 되는 모든 통신의 양

인바운드 트래픽

서버로 들어오는 트래픽 (클라이언트의 요청)

아웃바운드 트래픽

서버에서 나가는 트래픽 (서버의 응답)

로드밸런서

여러 대의 Server에 트래픽을 균등하게 분산.

AWS 스토리지 용어

EBS (Elastic Block Storage)

클라우드에서 사용하는 가상 하드디스크를 지칭

오브젝트 스토리지

클라우드에서 일반적으로 사용되는 계층 없는 데이터 저장법. 디렉토리 트리를 사용하지 않음.

블록 스토리지

파일이 균일한 블록에 저장되는 데이터 스토리지를 의미. 액세스와 편집이 빈번하게 일어나는 데이터에 적합.

메타데이터

어떤 목적을 가지고 만들어진 데이터

NAS(Network Attached Storage

네트워크와 연결된 저장소. 네트워크로 연결되어 있다면 언제 어디서나 PC, 모바일기기에서 NAS에 저장된 파일에 접근 가능

SAN(Storage Area Network)

블록 수준 스토리지에 접속할 수 있도록 지원하는 특정 시스템 전용의 고속 네트워크

DAS(Direct Attached Storage)

서버와 직접 케이블로 연결한 외장형 저장 장치.

RAID(Redundant Array of Inexpensive Disks)

여러 드라이브의 집합을 하나의 저장 장치처럼 사용하는 것을 말함. 값싼 드라이브들을 연결하여 크고 비싼 드라이브 하나를 대체

AWS 네트워크 용어

DNS(Domain Name System)

사람이 읽을 수 있는 도메인이름을 머신이 읽을 수 있는 IP주소(예:192.0.2.11)로 변환하는 시스템

IP(Internet Protocol)

네트워크 상에서 컴퓨터는 다른 컴퓨터와 구별 될 수 있도록 고유번호를 가지는데, 이 번호는 인터넷에 접속할 때 컴퓨터 각각에 부여받은 주소 혹은 전화번호 같은 개념. IP를 만들어서 상호 충돌을 방지.

스마트폰이나 노트북부터 대규모 소매 웹 사이트의 콘텐츠를 서비스하는 서버에 이르기까지 인터넷상의 모든 컴퓨터는 숫자를 사용하여 서로를 찾고 통신합니다. 이러한 숫자를 IP 주소라고 합니다.

Private IP

네트워크 안에서 사용되는 주소. 인터넷상에서 확인할 수 없고, 내부 네트워크에서만 사용 가능한 IP. 홈 LAN이나 회사 내부에서 마음대로 사용 가능.

Public IP

인터넷상에서 하나 밖에 없는 IP로 그 번호밖에 없는 유일한 IP. 각 나라의 관할 기관에서 할당을 받아야 사용 가능.

VIP(Virtual IP)

하나의 호스트에 여러 개의 IP주소를 할당하는 기술. 이 기술을 이용하면, 하나의 네트워크 인터페이스에 여러 개의 IP 주소를 줄 수 있다. 바깥에서는 마치 하나 이상의 네트워크 인터페이스가 있는 것으로 보일 것이다.

CDN(Contents Delivery Network)

지리적 물리적으로 떨어져 있는 사용자에게 콘텐츠 제공자의 콘텐츠를 더 빠르게 제공할 수 있는 기술.

사용자가 원격지에 있는 서버로부터 Contents를 다운로드 받을 때 가까이 있는 서버에서 받는것보다 시간이 오래 걸리므로, 사용자와 가까운 곳에 위치한 Cache Server에 해당 Content를 저장(캐싱)하고 Content 요청시에 Cache Server가 응답을 주는 기술. 원격지 서버에서 받는것보다 빠르게 페이지나 콘텐츠를 이용할 수 있다.

서브넷

IP블록을 더 작은 그룹으로 분할하는 프로세스. 네트워크 수에 따라 효율적으로 사용할 수 있도록 서브넷 등장

서브넷 마스크

IP주소에는 반드시 서브넷 마스크가 있다. 255는 네트워크 부분이며 0은 호스트 부분이다. 255로 된 부분은 무시, 0으로 된 부분에서 IP를 쪼갠다. 왜 쪼개냐면 IP주소가 모자라기 때문이다.

NAT(Network Address Translation)

네트워크 주소 변환. IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술. 사용하는 이유는 대개 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP주소를 사용하여 인터넷에 접속하기 위함

방화벽

미리 정의된 보안 규칙에 기반한, 들어오고 나가는 네트워크 트래픽을 모니터링하고 제어하는 네트워크 보안 시스템. 방화벽은 일반적으로 신뢰할 수 있는 내부 네트워크, 신뢰할 수 없는 외부 네트워크 간의 장벽을 구성한다. 서로 다른 네트워크를 지나는 데이터를 허용하거나 거부하거나 검열, 수정하는 하드웨어나 소프트웨어 장치이다.

라우터

네트워크 장비의 일종으로 패킷(네트워크 전송 데이터의 최소 단위)을 다른 네트워크로 보내주는(forward) 역할을 한다.

VPN(Virtual Private Network)

인터넷 트래픽을 암호화 하고, 온라인 상의 신원을 보호 함. 일반적으로, 인터넷에서 웹사이트에 액세스 하려고 하면 ISP(인터넷 서비스 공급자)가 요청을 수신하고 목적지로 리다이렉션 합니다. 인터넷 트래픽이 ISP를 통과하면 ISP는 온라인에서 사용자가 하는 모든 것을 볼 수 있습니다. 또한 ISP는 사용자의 행동을 추적하고 때로는 광고주, 정부 기관 및 기타 제 3자에게 검색기록을 넘겨줄 수도 있다. 이를 방지하기 위해 VPN이 사용됩니다. VPN은 특별히 구성된 VPN 서버를 통해, 사용자의 인터넷 트래픽을 리다이렉션 하고, IP 주소를 숨기고, 또한 보내거나 받는 모든 데이터를 암호화 합니다. 암호화된 데이터는 그것을 가로채는 자에게 무의미 하게 나타나기 때문에 읽을 수 없습니다.

게이트웨이

컴퓨터 네트워크에서 서로 다른 통신망, 프로토콜을 사용하는 네트워크 간의 통신을 가능하게 하는 컴퓨터나 소프트웨어를 두루 일컫는 용어. 즉, 다른 네트워크로 들어가는 입구 역할을 하는 네트워크 포인트이다.

프록시(proxy)

클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터나 응용 프로그래밍. 서버와 클라이언트 사이에서 중계기로서 대리로 통신을 수행하는 기능을 가리켜 ‘프록시’, 그 중계 기능을 하는 것을 프록시 서버 라고 한다. 프록시 서버는 프록시 서버에 요청된 내용들을 캐시를 이용해 저장한다. 캐시 안에 있는 정보를 요구하는 요청에 대해서는 원격 서버에 접속하여 데이터를 가져올 필요가 없게 됨으로써 전송 시간을 절약할 수 있다.

ISP(Information Strategy Planning)

경영 전략 달성과 환경 변화에 대응 하기 위해 최상의 업무 운영을 가능케 하는 바람직한 미래 업무를 설계한 후, 이의 효과적 지원을 위한 IT 측면에서의 정보전략 실행 계획을 수립하는 경영 활동을 말한다..

MAC Adress

인터넷 가능한 장비(TCP/IP통신을 하는)가 가지고 있는 물리적인 주소.

DdoS(Distributed Denial of Service)

일반적으로 공격자는 대량의 패킷 또는 요청을 생성하여 궁극적으로 목표 시스템을 마비시켜버림.

APT(Advanced Persistent Threat)

지능형지속공격은 잠행적이고 지속적인 컴퓨터 해킹 프로세스들의 집합으로, 특정 실체를 목표로 하는 사람이나 사람들에 의해 종종 지휘된다.

API(Application Programing Interface)

응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다.

CLI(Commend Line Interface)

터미널을 통해 사용자와 컴퓨터가 상호 작용함. 즉, 작업 명령은 사용자가 컴퓨터 키보드 등을 통해 문자열의 형태로 입력하며, 컴퓨터로부터의 출력 역시 문자열의 형태로 주어진다.

AWS 보안 용어

인증(Authentication)

클라이언트가 서버에 접속하기 위해선 인증을 해야하는데 그때 나는 ‘누구’이며 ‘증거’를 제시해야한다. 가장 쉬운 예는 아이디와 비밀번호 입니다. 한국장학재단 사이트 같이 보안이 중요한 웹 사이트는 아이디-비밀번호 로그인 후 공인인증서 로그인을 또 해야 합니다. 이와 같이 이중으로 하는 인증을 two-factor authentication, 줄여서 2FA 라 하고 세번 인증하면 multi factor authentication 이라 합니다. 이외에도 지문 인식, 안면 인식 등 신체일부분을 활용한 물리적인 인증 방식도 있습니다.

인가(Authorization)

사용자 인증을 성공적으로 마쳤다면, 이제 클라이언트는 권한을 가지게 됩니다. 이를 인가라 합니다(권한부여). 예를 들어 같은 웹사이트에 로그인을 해도 admin 계정으로 로그인을 하면, 일반 사용자 들에게는 보이지 않던 관리 메뉴가 하나 더 생깁니다. 이런 경우에 일반 사용자는 일반 권한을, admin은 관리자 + 일반 권한을 가지게 됩니다.

암호화

컴퓨터/통신 분야에서의 암호화는 누구든 읽어볼 수 있는 평문으로 저장된 정보를 알고리즘을 이용하여 암호 인증 키를 가진 사람만이 정보를 볼 수 있도록 암호문으로 변환하는 것을 말합니다. 암호화된 형태로 정보를 저장하거나 전송할 경우 제 3자의 공격에 의해 데이터가 손실/변조 되는 것을 막을 수 있습니다. 또한 인증 키를 가진 사람만이 데이터에 접근할 수 있기 때문에 일종의 사용자 인증 기법으로서 데이터를 안전하게 보호할 수 있습니다.

복호화

암호화의 반대로 복호 키를 이용하여 데이터를 원래대로 복원하는 것. 암호화 체계는 복호화 키와 암호화 키가 일치하는지 여부에 따라 크게 대칭형 비밀키 암호화기법, 비대칭형 공개 키 암호화 기법으로 나뉘어 집니다.

SSO(Single Sign On)

통합인증. 한 번의 인증(로그인)을 통해 여러 어플리케이션을 이용할 수 있게 하는 기능. 최초 인증에 성공하면 다른 시스템에 대한 접근 권한도 얻을 수 있다.

VPC

  • 가상의 데이터센터
  • 외부에 격리된 네트워크 컨테이너 구성 가능

    원하는 대로 사설망 구축 가능

    부여된 IP 대역을 분할하여 사용 가능

  • 리전 단위

사용 사례

  • EC2, RDS, Lambda 등의 AWS의 컴퓨팅 서비스 실행
  • 다양한 서브넷 구성

VPC 구성요소

  • 서브넷
  • 인터넷 게이트웨이
  • NACL/보안그룹
  • 라우트 테이블
  • NAT Instance/NAT Gateway
  • Bastion Host
  • VPC Endpoint

Subnet

서브넷이란?

  • VPC의 하위 단위로 VPC에 할당된 IP를 더 작은 단위로 분할한 개념
  • 하나의 서브넷은 하나의 가용영역(AZ)안에 위치
  • CIDR block range로 IP 주소 지정

Proxy 인스턴스

Proxy는 일종의 대리자로 클라이언트와 서버 중간에 통신을 대신 처리해주는 역할을 합니다. Proxy가 클라이언트의 통신을 대신 처리하기 때문에 서버의 입장에서는 마치 Proxy와 통신을 하는 것처럼 보인다. 클라이언트는 기존 애플리케이션 통신을 proxy로 보내기 위한 설정이 필요합니다.

Proxy 인스턴스를 통한 외부 접속

프라이빗 서브넷 내부의 인스턴스는 HTTP 통신을 위해서 목적지 IP는 Proxy 인스턴스로 향하게 됩니다. 이후 Proxy 인스턴스는 대신 외부 구간과 통신을 하고 결과를 다시 내부 인스턴스로 보냅니다.

배치 그룹(Placement Group)

배치 그룹이란?

새로운 인스턴스가 시작되면 AWS에서는 하드웨어에 최대한 분산하여 배치합니다. 이유는 물리 호스트의 장애에 대한 상호 간 영향도를 최소화하고 장애를 줄이는 데 도움이 되기 때문입니다. 물론 인스턴스의 배치가 분산되는 상황이 모두 좋은것은 아닙니다. 워크로드에 따라 인스턴스의 배치 위치를 조정하는 것이 유리한 경우가 있습니다. 이러한 필요에 따라 배치 그룹은 그룹 내 인스턴스의 배치를 조정하는 기능입니다.

배치 그룹 종류

클러스터 배치 그룹

클러스터 배치 그룹은 인스턴스의 하드웨어 배치를 서로 근접하게 위치합니다. 일반적으로 고성능 컴퓨팅 환경에서는 수 많은 애플리케이션이 서로 긴밀히 통신을 요구하여 낮은 지연 시간과 높은 네트워크 성능이 필요합니다.이와 같은 환경에서 클러스터 배치 그룹으로 서로 인접하게 배치하여 지연과 성능을 보장합니다. 클러스터 배치 그룹은 하나의 가용 영역에 종속되는 제약이 있으며, 그룹 내 인스턴스는 동일한 인스턴스 유형을 사용하는 것을 권고합니다.

파티션 배치 그룹

파티션 배치 그룹은 인스턴스를 논리적인 세그먼트로 분산하며, 하나의 파티션에 존재하는 인스턴스는 다른 파티션의 인스턴스와 하드웨어를 공유하지 않아 상호 영향을 미치지 않습니다. 파티션 배치 그룹은 가용 영역당 파티션을 최대 7개 까지 가질 수 있고 파티션 배치 그룹에서 실행할 수 있는 인스턴스 숫자는 계정 제한의 적용을 받습니다.

분산형 배치 그룹

분산형 인스턴스 그룹은 서로 서로 다른 하드웨어로 분산하여 배치하여 인스턴스 간의 상호 장애 영향도를 최소화하는 방법입니다. 보통 중요한 애플리케이션의 고가용성을 보장 받기 위해 사용합니다.

메타데이터(Metadata)

메타데이터는 객체 대한 키와 값에 대한 집합 데이터입니다. 메타데이터에서 정의한 키에 대한 값을 가지고 있어 필요한 정보를 호출하여 정보를 파악할 수 있습니다.

AWS의 인터넷 연결

인터넷 게이트웨이

외부 인터넷과 연결을 해주는 장비

네트워크 라우팅 테이블 정보

일종의 목적지를 가기 위한 지도 정보로, 모든 네트워크 대역 통신은 인터넷 게이트웨이로 전달하기 위한 경로로 지정합니다.

공인 IP

일종의 집 주소와 같이 전 세계에서 유일한 주소의 개념입니다. AWS에 사용 가능한 공인 IP는 퍼블릭 IP나 탄력적 IP가 있습니다.

Nat 동작

내부의 단말들이 외부 인터넷 사용 시 IP 공유기의 NAT를 통하여 인터넷을 연결하는 과정을 소개합니다. IP를 변환하는 것을 NAT(Network Address Translation)라고 부르며, IP와 포트 번호를 동시에 변화하는 것을 PAT(Port Address Translation)라고 부릅니다.

클라우드 서비스란?

집에서 서버를 구축하는 것이 아니라 외부에서 빌려서 하는 환경
대표적으로는 AWS가 있다.

클라우드

컴퓨터 통신망이 구름과 같은 것에 싸여 안이 보이지 않고, 일반 사용자는 이 복잡한 내부를 굳이 알 필요도 없이 어디에서나 구름 속으로 손을 집어넣어(통신망에 접근해서) 자기가 원하는 작업을 할 수 있다는 것이다. 이른바 동일한 체험을, 인터넷이 연결된 어디에서나 보장해주는 것이다.

클라우드 컴퓨팅은 클라우드 속에서 클라우드에 연결된 다른 컴퓨터로 정보를 처리하는 기술을 의미한다.

클라우드 컴퓨팅이란?

클라우드 컴퓨팅이란 인터넷으로 가상화된 IT 리소스를 서비스로 제공하는 것을 의미한다.

예를들어 개인이나 기업이 서버를 하나 구축하고 싶다면, 기본적으로 우선 컴퓨터를 구매해야하고 cpu, 메모리 카드 ..등 하드웨어를 구매해야 하고 그리고 네트워크 통신망도 연결해야되고.. 즉, 필요할 것이 많다.

이러한 필요품들을 대신에 데이터를 보관하고 인프라스트럭처(서비스 유지를 위한 IT 장비 모음)와 IT 기술을 빌려주는 서비스가 바로 클라우드 이다.

쉽게 말해 돈 대신 데이터를 취급하는 은행이라고 봐도 무방하다. 아니면 IT자원의 렌탈샵 이라고 말할 수 있다.

클라우드가 인기있는 이유

기업 같은경우, 예전에는 기업이 직접 데이터를 보관, 정리, 분석하거나 인프라를 구축하고 IT 기술을 개발하였다. 네트워킹 장비, 전원 공급 장치, 전기 시스템, 백업 잘전기, 환경 제어장치, 운영 인력 ..등 준비물만 해도 엄청나며, 또한 이들을 유지할 건물 유지비용, 유지보수 비용, 한번 구매하면 수요에 상관없이 계속 보유해야하고 그러면 안쓰는 것들도 생겨서 부품 낭비도 되고.. 이처럼 너무나도 신경쓰고 비효율적인 면이 있는 게 사실이다.

모든 기업은 집중해야 할 주력 자체 비즈니스가 있다.

수 많은 경쟁자를 제치고 험난한 비즈니스 세계에서 생존하려면 주력 비즈니스에 관련된 연구와 개발에 집중해야 한다. 따라서 주력 비즈니스가 아닌 인프라와 IT 기술 개발에 신경 쓸 틈이 없기 때문에 많은 기업이 데이터 보관, 인프라와 IT 기술 개발 등을 클라우드에 넘기고 주력 비즈니스에만 신경 쓰는 방향으로 가고 있다. 돈만 내면 클라우드를 관리하는 회사에서 모든 인프라와 유지보수를 대신 꼼꼼하게 관리 해주기 때문이다.

또 하나의 특징은 사용할 만큼의 공간과 용량을 유동적으로 할당 받을 수 있다. 온디맨드 의 뜻은 수요에 반응한다는 말이다. 이는 굉장한 최적화이기도 한데, 실무를 예로 들면 평소엔 접속량이 고만고만한데 세일 시즌이나 이벤트 기간에 유난히 접속량이 폭주하는 어플의 서비스일 경우, 이 접속유저들을 모두 포용할 서버 용량이 필요하기에 평소에 접속량이 고만고만해서 서버를 모두 사용하지 않더라도 만일을 대비해서 서버를 미리 왕창 사놓아야 한다. 하지만 이런 비용적 낭비 방법보다는 클라우드에서 그때그때 필요한 만큼 용량을 할당받아 사용하고 다시 반납하는것이 훨씬 효율적일 것이다. 즉, 클라우드 서비스는 시간과 접속량에 따른 종량제로 운영되어 필요한 만큼 잠시 뽑아 쓸 수 있는 것이다.

클라우드 서비스를 제공하는 기업이 있고, 이 기업의 클라우드를 사용하는 A사, B사.. 등은 필요할때마다 일부 리소스를 사용하고 더이상 필요없으면 반납하는 사이클을 돌게 된다. 이러한 특징 때문에 많은 중소기업부터 대기업까지 점점 클라우드 서비스를 이용하는 추세이다. 고객기업들은 서버 비용을 절약할수 있어서 좋고, 클라우드 제공 기업은 고객이 많아지니까 돈을 벌 수 있으니까 좋고.. 서로 win & win 시스템인 것이다.

클라우드 장단점

클라우드가 제공하는 자원

클라우드 배포 방식 모델

클라우드는 기업의 활용 방법에 따라 배포 방식 모델은 여러가지 형태로 나눌 수 있다.

인프라 전체를 클라우드에서 받는 퍼블릭 클라우드(Public Cloud)

기업 자체 인프라와 클라우드 인프라를 혼용하는 하이브리드 클라우드(Hybrid Cloud)

기업이 직접 클라우드 서비스를 구축하고 계열사와 고객에게만 공개하는 프라이빗 클라우드(Private Cloud) 등이 있다.

  • private cloud : 특정 기업의 사람들만 사용할 수 있도록 설정. 해당 조직또는 서드파티에 의해 관리됨
  • community cloud : 같은 업종의 사람들이 같이 쓴다.
    • 특정 커뮤니티나 조직에 의해 공유되는 클라우드 환경
    • 보안, 정책, 복잡도 등 걱정거리도 공유한다.
  • public cloud : 비용은 적게 들지만 보안이 취약하다. 일반 사용자들이 사용할 수 있다.
  • hybrid cloud : public + private

클라우드 컴퓨팅 관련 기술

클러스터링 기술

  • 고속의 네트워크로 동기화되어 단일 시스템인 것처럼 동작하는 독립적인 IT리소스 그룹
  • 이중화와 장애복구 기능이 내장되어 가용성과 신뢰성을 갖춘 클러스터 컴퓨터를 구성하는데 사용
  • 전통적으로 동일한 H/W와 OS 기반에서 구성

그리드 컴퓨팅

  • 컴퓨팅 리소스가 플랫폼 상에서 논리적 리소스풀로 등록되어 풀에 포함된 리소스가 집합적으로 고성능의 컴퓨팅 환경을 제공하는 기술
  • 리소스의 결합성이 매우 작고, 서로 다른 기종의 리소스들이 물리적으로 분산되어 있음

가상화 (virtualization)

  • 물리적 컴퓨터 환경상에 가상 인스턴스(또는 가상머신)를 만드는데 사용되는 기술
  • 각각의 사용자에게 실제 IT 리소스인 것처럼 CPU, 메모리, 저장장치를 할당이 가능

[가상화 방식의 종류]

  • 호스트 가상화
  • 하이퍼바이저
  • 컨테이너 가상화

서버리스 컴퓨팅 기술

  • 서버를 생성, 구성 또는 유지관리 하지 않고도 애플리케이션코드를 실행할 수 있는 환경
  • 사용자 요청을 처리하고 결과를 제공하는데 서버가 할당
  • 사용자 요청이 없을 때는 유휴상태로 전환
  • 애플리케이션이 일부 작업에 의해 트리거 될 때 실행되는 별도의 기능으로 분리

클라우드 서비스 사용시 유의사항

대규모데이터, 대규모이용자가 자원공유및 사용하는 클라우드 특성상 서비스제공업체, 이용기업, 이용자 모두 보안의식 을 가질 필요가 있다.

  • 이용기업 : 위험요소 사전분석, 데이터접근제한명시, 서비스해지시 단계별로 보안고려사항 수립및 이행

  • 이용자 : 서비스 가입, 이용, 해지 단계별로 주의사항숙지, 서비스제공자의 데이터처리방침및약관확인, 개인정보암호화.

  • 서비스제공자 : 정보공개, 안전확보, 이용제한 등 원칙준용. 제3자로부터 주기적점검, 해지고객 데이터의 완전삭제 등 포함

온프레미스

온프레미스는 자사가 서버 등을 구축하는 것을 말한다.

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

가상화와 분산처리

가상화란

클라우드를 지탱하는 데 가장 중요한 기술이 가상화다.

가상화라고 하면 홀로그램과 같이 어떤 실체가 없는 것을 만든다고 생각할지도 모른다. 하지만 클라우드 컴퓨팅에서 가상화란 다르다. 컴퓨터가 어떤 작업을 하려면 물리적인 메모리와 하드 디스크, OS 등 다양한 부품이 필요하다. 이를 소프트웨어로 대체하는 것이 가상화 기술이다.

가상화를 통한 복제

가상 서버에 할당된 메모리와 스토리지는 자유롭게 늘리거나 줄일 수 있다. 그렇기 때문에 나중에 필요할 때 용량을 늘리거나 줄여 메모리와 스토리지의 성능을 조절할 수 있다. 하지만 가상 서버의 성능을 올리는 것은 한계가 있다. 이럴 때 가상화가 유리하다. 소프트웨어 처럼 구축하기 때문에 서버 복제가 쉽고 대수를 늘리거나 줄이기도 쉽다.

분산 처리와 로드 밸런서

클라우드를 지탱하는 중요한 기술을 한 가지 더 들면 분산 처리다. 분산 처리란 기기 여러 대에 분산하여 처리하는 방법을 말한다.

이 기술이 많이 사용하고 있는 것이 웹 사이트이고, 서버 여러대에 분산하여 처리한다. 개인이나 일반적인 회사의 웹 사이트에서는 접속이 크게 집중될 일이 적지만, 어떤 캠페인을 한다든가 거대한 쇼핑몰일 경우 서버 한 대로는 처리할 수 없을 만큼 많은 접속이 발생한다.

이럴 때 같은 기능이나 정보를 가진 서버 여러 대에 분배하여 처리하면 서버 1대의 부담을 줄이고 서버가 응답할 수 없거나 다운되는 사태를 막을 수 있다.

서버 여러 대에 분배하는 장치를 로드 밸런서(LB)라고 한다. 로드 밸런서는 각 서버를 확인하여 부하를 분산한다. 경우에 따라서 부하가 너무 높아진 서버를 분리하기도 한다. AWS는 로드 밸런서로 ELB(Elastic Load Balancing)를 제공한다.

이중화

이중화란 시스템이나 서버에 문제가 생겨도 계속 가동할 수 있도록 조치하는 것을 말한다. 백업하거나 여러 대를 운영하는 것이 일반적이다.

SaaS, PaaS, IaaS : 클라우드의 서비스 제공 형태

어느 수준까지 서비스가 제공되는지에 따라서 클라우드 서비스는 SaaS, PaaS, IaaS 3가지로 구분된다.

SaaS, PaaS, IaaS, Serverless

클라우드를 말할 때 자주 사용되는 용어가 SaaS, PaaS, IaaS이다.
이는 서비스를 어느 수준까지 제공하는가를 분류해 놓은 것이다.

가장 익숙한 것은 SaaS(Software as a Service)일 것이다. 인프라나 플랫폼(OS)뿐만 아니라 애플리케이션까지 제공한다. 구체적으로 SNS나 블로그 서비스, 웹 메일 서비스 등을 들 수 있다. 구글의 G Suite나 파일 스토리지 서비스인 드롭박스도 SaaS에 해당한다.

PaaS(Platform as a Service)는 플랫폼까지만 제공한다. OS가 설치된 서버에 사용자가 애플리케이션 등을 설치해서 사용해야 한다. 이른바 임대 서버가 이에 해당한다.

IaaS(Infrastructure as a Service)는 인프라만 제공한다. 즉, 네트워크나 서버 머신등을 제공한다.

Serverless 플랫폼은 애플리케이션 개발에 필요한 대부분을 클라우드 사업자가 제공하고 운영 관리를 합니다. 사용자는 개발에만 집중해서 사용할 수 있습니다.

서버용 OS

OS(Operating System)란 컴퓨터를 움직이기 위한 소프트웨어로, 하드웨어와 OS 위에서 동작하는 소프트웨어 사이에서 중간 역할을 한다. 대표적인 서버용 OS는 유닉스(UNIX) 계열과 윈도 계열이 있고 서버용 OS로 유명한 리눅스와 BSD는 유닉스 계열이다.

서버용 OS는 클라이언트용 OS에 비해 종류가 많고 특히 유닉스 계열은 원래 오픈 소스로 개발되었기 때문에 종류가 다양하다. 더구나 리눅스에는 다양한 배포판이 있다. 배포판이란 커널(OS의 핵심)의 주변 기능을 추가한 패키지를 말한다. 리눅스 배포판에는 레드햇, 센트OS, 우분투, 데비안 등 다양하다.

한편 윈도 계열은 윈도 서버만 있다. 파일 서버의 OS로 많이 사용된다. 웹 서버나 메일 서버 등 인터넷에 사용되는 서버의 OS에는 리눅스 계열이나 BSD 계열이 사용되는 경우가 대부분이다.

아마존 웹 서비스란

AWS는 클라우드 컴퓨팅 서비스의 하나이다. AWS의 장점은 여러 사업자에게 각각 빌려야 했던 인프라를 일괄로 빌릴 수 있다는 것과 운영 체제나 웹 서버, 데이터베이스 서버(DB 서버) 등에 필요한 소프트웨어까지 통째로 사용할 수 있다는 것이다. 그리고 사용할 만큼 빌릴 수 있다.

요금
EC2 : 인스턴스 사용량(가동한 시간 x 단가) + EBS 요금(용량 x 단가) + 통신료 + 그외 옵션

S3 : 보존 용량 + 전송량

RDS : 스토리지 요금 + DB인스턴스 요금 + 백업 스토리지 요금 + 통신량

데이터 센터

AWS 데이터센터는 3가지 영역으로 분류하여 볼 수 있습니다.

  1. 물리 영역
    보안 요원, 울타리, 출입 통제 등 물리적인 보안과 전역, 냉난방 등 건물을 운영하는 설비와 시스템을 말합니다.

  2. IT 인프라 영역
    서버, 네트워크, 스토리지, 로드 밸런서, 라우터 등 일반적인 IT 인프라 디바이스를 말합니다.

  3. 운영 영역
    데이터센터를 운영 및 유지 관리하는 인원을 말합니다.

가용 영역

가용 영역은 한 개 이상의 데이터 센터들의 모음을 말합니다. 각 데이터 센터는 분산되어 있으며, 초고속 광통신 전용망으로 연결되어 있습니다.

리전

리전(Region)은 해당 지리적인 영역 내에서 격리되고 물리적으로 분리된 여러 개의 가용 영역의 모음을 말합니다. 리전은 최소 2개의 가용 영역으로 구성되고 최대 6개의 가용 영역으로 구성된 리전도 있습니다.

엣지

엣지는 외부 인터넷과 AWS 글로벌 네트워크망을 연결하는 별도의 센터입니다. 엣지는 엣지 로케이션과 리전별 엣지 캐시로 구성되며, CloudFront와 같은 CDN 서비스의 데이터 캐시 기능을 제공합니다.

※참고

CloudFront(CDN서비스), Direct Connect, Route 53(DNS 서비스), AWS Shield(DDoS Protection), AWS Global Accelerator가 엣지에서 동작합니다.

컴퓨팅 서비스

EC2(Elastic Compute Cloud)

물리 환경의 서버 컴퓨터와 유사하게 컴퓨팅 리소스를 제공하는 서비스입니다. 가상 머신으로 제공되며 인스턴스라고 부릅니다. 사용 목적에 따른 다양한 인스턴스 타입과 스펙(CPU, 메모리, 디스크 등)으로 구분되며, 사용한 만큼 비용을 지불합니다.

EC2(Elastic Compute Cloud)는 아마존 웹 서비스에서 제공하는 서비스로 안전하고 크기 조정이 가능한 컴퓨팅 파워를 클라우드에서 제공하는 웹 서비스이다. 독립된 컴퓨터를 임대해주는 서비스로서 AWS의 대표적인 서비스, 대표적인 상품이다. 개발자가 더 쉽게 웹 규모의 클라우드 컴퓨팅 작업을 할 수 있도록 설계되었다. Amazon EC2를 사용하면 하드웨어에 선투자할 필요가 없어 더 빠르게 애플리케이션을 개발하고 배포할 수 있습니다. Amazon EC2를 사용하여 원하는 수의 가상 서버를 구축하고 보안 및 네트워킹을 구성하며 스토리지를 관리할 수 있습니다. Amazon EC2에서는 확장 또는 축소를 통해 요구 사항 변경 또는 사용량 스파이크를 처리할 수 있으므로 트래픽을 예측할 필요성이 줄어듭니다.

EC2는 가상의 컴퓨터를 빌려주는 서비스라고 생각하면 이해하기가 쉽다. 비록 가상이지만 실제 컴퓨터와 동일하게 사용할 수 있다. 가상 컴퓨터에 운영체제를 설치하고 프로그램들을 설치하여 서버를 구축할 수 있다. EC2에서 말하는 인스턴스라는 것은 생성된 1대의 가상 컴퓨터를 의미한다.

EC2는 물리적이 아니라 아마존에서 세계 각 지역에 만들어놓은 인프라(데이터 센터)에 만들어지는 것이기 때문에 네트워크를 통해 제어를 해야한다. 웹 서버를 설치하고 이 웹서버를 통해서 사용자가 웹브라우저를 통해 요청하는 웹페이지나 이미지, 동영상 등을 제공한다.

EC2는 컴퓨터를 주문하면 바로 1분 안에 생성되고, 삭제 역시 즉시 제거된다. 초기 구입비, 세팅비가 전혀 없고, 그냥 사용한 만큼 비용을 지불하면 된다. 내가 만일 10GB의 용량만 필요하다면, 120GB 삼성 SSD를 구입해서 장착하는게 아니라 딱 10GB용량 만큼만 지불하고 뽑아 사용 할 수 있으니 융통적으로 비용을 아낄수 있는 원리이다. 또한 EC2는 복잡한 공유기 세팅없이 인터넷을 통해서 자유롭게 접속할 수 있고, 이미지(AMI) 기능도 사용할 수 있다. 컴퓨터를 사용하면 프로그램도 설치하고, 파일도 저장하고, 설정도 변경하게 되는데, 이 OS 상태 그대로 저장하는 기능을 이미지(AMI) 라고 한다. 윈도우 백업 설정 이라고 봐도 무방하다. 이미지를 이용해서 새로운 컴퓨터를 만들면 이미지에 저장된 상태와 똑같은 컴퓨터를 빠르게 생성할 수 있다. 즉, 컴퓨터를 하나 장만할 때마다 반복되는 설치 작업을 하지 않게 되는 것이다. 이를 통해 하드웨어 구매없이 더 빠르게 애플리케이션을 개발하고 배포할 수 있다.

EC2의 기능

  • 인스턴스: 가상 컴퓨팅 환경

  • Amazon 머신 이미지(AMI): 서버에 필요한 운영체제와 여러 소프트웨어들이 적절히 구성된 상태로 제공되는 템플릿으로 인스턴스를 쉽게 만들 수 있습니다.

  • 인스턴스 유형: 인스턴스를 위한 CPU, 메모리, 스토리지, 네트워킹 용량의 여러 가지 구성 제공

  • 키 페어를 사용하여 인스턴스 로그인 정보 보호(AWS는 퍼블릭 키를 저장하고 사용자는 개인 키를 안전한 장소에 보관하는 방식)

  • 인스턴스 스토어 볼륨: 임시 데이터를 저장하는 스토리지 볼륨으로 인스턴스 중단, 최대 절전 모드로 전환 또는 종료 시 삭제됨

  • Amazon Elastic Block Store(Amazon EBS), 즉 Amazon EBS 볼륨을 사용해 영구 스토리지 볼륨에 데이터 저장

  • 인스턴스와 Amazon EBS 볼륨 등의 리소스를 다른 물리적 장소에서 액세스할 수 있는 리전 및 가용 영역

  • 보안 그룹을 사용해 인스턴스에 연결할 수 있는 프로토콜, 포트, 소스 IP 범위를 지정하는 방화벽 기능

  • 탄력적 IP 주소(EIP): 동적 클라우드 컴퓨팅을 위한 고정 IPv4 주소

  • 태그: 사용자가 생성하여 Amazon EC2 리소스에 할당할 수 있는 메타데이터

  • AWS 클라우드에서는 논리적으로 격리되어 있지만 원할 때마다 고객의 네트워크와 간편히 연결할 수 있는 가상 네트워크인 Virtual Private Clouds(VPC)

  • Amazon EC2를 사용하면 호환 가능한 모든 Windows 기반 솔루션을 비용 효율성이 높은 안정적인 고성능 클라우드 컴퓨팅 플랫폼에서 실행할 수 있습니다.

특징

  • 인터넷을 통해서만 접속을 할 수 있다.
  • 컴퓨터 주문 후 1분안에 생성이 가능하며 삭제 역시 즉시 제거가 가능하다.
  • 하드웨어 및 소프트웨어를 구입하고 온사이트 데이터 센터를 설치 및 운영하면서 발생하는 지출을 줄일 수 있다.
  • EC2를 통해 원하는 만큼 가상 서버를 구축하고 보안 및 네트워크 구성과 스토리지 관리가 가능
  • 요구 사항이나 갑작스러운 트래픽 증가 등 변동 사항에 따라 신속하게 규모를 확장하거나 축소할 수 있어 서버 트래픽 예측 필요성이 줄어든다는 장점이 있다.
  • Linux / Windows 중 OS 선택이 쉽게 가능하다.
  • 몇 분이면 전세계에 컴퓨터 수백여대를 생성할 수 있다. (실제로 미국에 가서 건물 임대하고 컴퓨터 구입하고 네트워크 구축하는 비용과 시간에 서비스 신청만 하면 바로 이용)
  • 머신러닝, 웹서버, 게임서버, 이미지 처리 등 다양한 용도에 최적화된 서버를 쉽게 구성 가능
  • 여러 다른 AWS 서비스와의 유기적인 연동이 가능

EC2의 구성

일반적인 서버를 보면 보통 컴퓨팅(CPU/RAM), 하드디스크, 랜카드 로 나누어진다.
이것을 EC2에 대입해보면 다음과 같이 된다.

  • 컴퓨팅에 해당하는 인스턴스
  • 하드디스크에 해당하는 EBS
  • 랜카드에 해당하는 ENI 가 있다.

EC2 인스턴스 이해하기

인스턴스란, 어렵게 접근할 필요없고 단순하게 aws 클라우드에서 사용하는 가상 컴퓨터 라고 이해하면 된다. 가상의 컴퓨터에의 CPU, 메모리, 그래픽카드 등 연산을 위한 하드웨어 부분을 담당한다. 그리고 Amazon EC2는 각 사용 사례에 맞게 최적화된 다양한 인스턴스 유형을 제공한다. 컴퓨터라고 해서 모두 같은 컴퓨터다 아니다. 컴퓨터도 컴퓨터 마다 쓰임새가 다양하다. 고사양 게임용, 서버용, 대량의 데이터 저장소, 영상용, 로봇 등 컴퓨터 하드웨어 구성에 따라 여러 사용 목적을 정할 수 있다. 이것이 바로 인스턴스 유형이다. 즉, 애플리케이션 종류와 목적에 따라 적합한 리소스 조합을 선택할 수 있는 유연성을 제공하는 서비스이다.

EC2 인스턴스 사이즈

인스터스의 크기라 함은, 인스턴스 cpu 갯수, 메모리 크기, 성능 등으로 사이즈가 결정됨을 말한다. 즉, 인스턴스 사이즈가 클수록 더 많은 메모리, 더많은 cpu, 더많은 네트워크 대역폭을 가질 수 있다는 것을 의미한다. 다음 표를 보면, 같은 t2. 이라는 인스턴스 타입에 영단어로 nano, micro, small, ...large 로 크기가 나뉘어져 있음을 볼 수 있다. CPU나 메모리를 보니 사이즈가 클 수록 늘어나고 성능도 빨라진다.

즉 아래로 갈수록 점점 커지는 것이고 성능이 좋아지는 지표이다.

EC2 타입 종류

EC2 인스턴스 타입 읽는 법

오토 스케일링(Auto Scaling)

EC2 인스턴스의 조건에 따라 자동으로 서버를 추가 혹은 제거해주는 서비스입니다.

람다(AWS Lambda) - 서버리스 컴퓨팅

람다는 프로그램을 실행하는 컴퓨팅 엔진입니다. AWS가 컴퓨팅 엔진 전반을 관리하기 때문에 사용자는 코드만으로 서비스를 실행할 수 있습니다.

스토리지 서비스

EBS(Elastic Block Store)

가용 영역 내의 EC2 인스턴스에 연결되어서 사용될 수 있는 블록 스토리지 입니다. 필요 시 블록 스토리지를 생성하고 연결할 수 있으며, 용량 증가도 할 수 있습니다.

S3(Simple Storage Service)

객체 기반의 무제한 파일을 저장할 수 있는 스토리지입니다. 사용자는 URL을 통해 손쉽게 파일을 사용이 가능하며, 여러 가용 영역에 걸쳐 뛰어난 내구성을 제공합니다.

데이터베이스 서비스

RDS

RDS는 관계형 데이터베이스를 이용할 수 있는 서비스입니다. 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업의 같은 시간 소모적인 관리 작업을 AWS에서 처리를 해줍니다. 데이터베이스 인스턴스 유형을 제공하여, 5개의 데이터베이스 엔진을 선택하여 사용할 수 있습니다.

RDS와 EC2 연동이유

EC2에 DB를 설치해서 사용해도 되는데 왜 RDS와 연동해서 사용하는 걸까요? 물론 EC2에 DB를 설치해서 사용해도 당장에 문제는 없지만 서비스를 운영하다 서버에 문제가 생긴다면 서비스를 중단해야 되는 경우도 생길 수 있습니다. 하지만 RDS를 사용하면 하나의 서버가 제대로 작동하지 않을 경우 즉시 다른 서버로 교체하여 서비스가 중단되는 일이 없고 접속자의 수에 따라 서버를 늘리고 줄이는 과정에서도 서버와 DB가 분리되어 있기 때문에 DB에 손상이 일어나지 않습니다.

RDS의 특징

  • 관계형 데이터베이스를 제공하는 서비스
  • 가상 머신 위에서 동작

    단, 직접 시스템에 로그인이 불가능하고 OS 패치, 관리 등은 AWS의 역할

  • RDS는 Serverless 서비스가 아님
  • CloudWatch와 연동
    • DB 인스턴스의 모니터링(EC2와 동일)
    • DB에서 발생하는 여러 로그을 CloudWatch와 연동하여 확인 가능
  • 내부에서는 EC2를 활용
    • VPC안에서 동작
    • 서브넷과 보안그룹 지정 필요
    • EC2 타입의 지정 필요
    • 스토리지는 EBS를 활용, EBS 타입의 선택이 필요하고 생성 시 EBS의 용량을 지정해서 생성
  • Parameter Group : Root 유저만 설정 가능한 DB의 설정 값들을 모아 그룹화한 개념

    DB클러스터에 파라메터 그룹을 적용시켜 설정 값을 적용

  • 업데이트
    • 마이너 버전 엔진 업데이트는 자동으로 업데이트 설정 가능
    • 기타 업데이트의 경우 점검 시간를 설정하여 특정 시간에 업데이트가 이루어질 수 있도록 설정 가능

RDS의 인증 방법

  • 전통적인 유저/패스워드 방식

    AWS Secret Manager와 연동하여 자동 로테이션 가능

  • IAM DB 인증

    데이터베이스를 IAM 유저 크레덴셜/Role을 통해 관리 가능

  • Kerberos 인증

RDS의 암호화

  • 암호화 지원
    • SQL 서버 혹은 Oracle에서는 TDE(Transparent Data Encryption) 지원
    • 모든 엔진에서 EBS 볼륨 암호화 지원

      Default Master Key 혹은 생성한 Master Key 선택 가능

    • 자동 백업, 스냅샷, Read Replica 등에 적용됨

Read Replica

AWS VPC - 리소스 격리

VPC는 Virtual Private Cloud의 약자러 AWS 클라우드 내 논리적으로 독립된 섹션을 제공하여, 사용자가 정의한 가상 네트워크상에서 다양한 AWS 리소스를 실행할 수 있게 지원합니다. 한마디로 독립된 가상의 클라우드 네트워크라 볼 수 있습니다.

VPC 엔드포인트

사용자가 생성한 VPC에서 AWS 퍼블릭 서비스와 통신을 하거나 다른 VPC로 통신이 필요할 경우 일반적으로 외부 인터넷 구간인 퍼블릭 네트워크를 통해 통신이 이루어집니다.

AWS에서 제공하는 대부분의 서비스에 접근하기 위해서는 퍼블릭 네트워크 통신이 필요합니다. 하지만 금융 서비스처럼 강력한 보안 요건을 만족하기 위해서 격리된 프라이빗 서브넷에 자원이 생성되어야 하며 이 경우 퍼블릭 네트워크 통신으로 안전한 통신을 제공하는 것이 VPC 엔드포인트 기능입니다.

VPC 엔드포인트는 AWS의 퍼블릭 서비스나 직접적으로 생성한 AWS 서비스에 대해 외부 인터넷 구간을 통한 접근이 아닌 직접적으로 접근할 수 있는 프라이빗 엑세스 기능입니다.

VPC 엔드포인트 유형

VPC 엔드포인트는 연결 대상 서비스에 따라 엔드포인트와 엔드포인트 서비스로 구분 지을 수 있습니다. 엔드포인트는 AWS 퍼블릭 서비스에 대상으로 연결을 하고, 엔드포인트 서비스는 사용자가 직접 생성한 서비스에 대해 연결을 한다는 차이입니다. 이 중에 엔드포인트는 연결 대상 서비스 종류에 따라 게이트웨이 엔드포인트와 인터페이스 엔드포인트 유형으로 나뉘어 집니다.

VPC 엔드포인트 종류

  • 엔드포인트 : AWS 퍼블릭 서비스 대상에 대한 프라이빗 연결
    • 게이트웨이 엔드포인트 : AWS 퍼블릭 서비스 중 S3와 DynamoDB에 대한 연결
    • 인테페이스 엔드포인트 : 위 대상 외에 나머지 AWS 퍼블릭 서비스에 대한 연결
  • 엔드포인트 서비스 : 사용자가 지정한 서비스 대상에 대한 프라이빗 연결

AWS VPN - 가상 사설망

VPN (virtual private Network)은 공용 인터넷을 통해 가상의 사설 네트워크를 구성하여 프라이빗 통신을 제공합니다. 이를 통해 데이터 암호화, 전용 연결 등 여러 보안 요구사항들을 충족할 수 있습니다. VPN 서비스에는 Site-to-Site VPN과 클라이언트 VPN을 제공합니다.

ELB - 로드 밸런서

ELB(Elastic Load Balancing)은 AWS에서 제공하는 로드 밸런싱입니다. 로드 밸런서는 서비스 대상 시스템(예_EC2 인스턴스)에 데이터를 분산하여 전달하는 역할을 수행합니다.

AWS PrivateLink는 퍼블릭 인터넷에 데이터가 노출되지 않도록 하고 내부 네트워크를 통해 AWS 서비스와 온프레미스 간에 안전한 비공개 연결을 제공합니다.

Route 53 - 도메인 네임 시스템

Route 53은 AWS에서 제공하는 관리형 DNS 서비스입니다. Route 53을 통하여 도메인 이름 구매를 대행하고, 구매한 도메인 주소에 대한 호스팅 영역 설정을 통해서 도메인 질의에 대한 응답을 처리할 수 있습니다. 추가로 Route 53 Resolver 기능을 통하여 하이브리드 클라우드 환경에서 온프레미스와 AWS 간 도메인 질의가 가능하게 됩니다.

AWS 전송 게이트웨이 - 네트워크 확장

AWS 전송 게이트웨이는 VPC나 온프레미스등의 네트워크를 단일 지점으로 연결할 수 있는 라우팅 서비스입니다.

AWS Direct Connect - AWS 전용 연결

데이터 센터, 본사 사무실 또는 코로케이션 환경과 같은 장소에서 AWS와의 전용 네트워크 연결을 제공하는 전용선 서비스입니다.

AWS CloudFront - CDN(콘텐츠 전송/캐시)

AWS에서 제공하는 CDN 서비스입니다. CloudFront는 전 세계 42개국 84개 도시에서 216개의 엣지 POP을 두고 AWS 글로벌 네트워크를 통하여 콘텐츠를 캐싱하여 서비스를 제공합니다.

AWS Global Accelerator - 글로벌 전송

로컬 또는 글로벌 사용자를 대상으로 애플리케이션의 가용성과 성능을 개선할 수 있는 서비스입니다. AWS의 글로벌 네트워크를 통해 사용자에서 애플리케이션으로 이어진 경로를 최적화하여 트래픽의 성능을 개선합니다.

EBS(Elastic Block Storage) 이해하기

위에서 배운 인스턴스가 연산에 관한 (CPU,메모리 등) 처리를 한다고 하면, 데이터를 저장하는 역할은 바로 EBS가 한다고 보면 된다. 즉, 클라우드에서 사용하는 가상 하드디스크(HDD) 인 셈이다. EBS는 AWS 클라우드의 Amazone EC2 인스턴스에 사용할 영구 블록 스토리지 볼륨을 제공한다. 그리고 단 몇분 내에 사용량을 많게 또는 적게 확장할 수 있으며, 프로비저닝(빌리는 행위)한 부분에 대해서만 저렴한 비용을 지불 할 수 있다.

EBS 볼륨 유형 타입

EBS 타입이란 시중에서도 같은 하드 저장 디스크라도 SSD와 HDD, 느브메로 나뉘고 용량에 따라 성능과 가격이 차이나는 것처럼, EBS도 각각 타입으로 나눠놓은 것이다.

EBS는 총 5가지 타입을 제공하는데, 다음과 같다.

  • 범용(General Purpose of GP3) : SSD
  • 프로비저닝 된 IOPS(Provisioned IOPS or io2) : SSD
  • 쓰루풋 최적화(Throughput Optimized HDD or st1)
  • 콜드 HDD(SC1)
  • 마그네틱(Standard)

EBS란?

컴퓨터 본체를 보면, cpu와 램카드, 그래픽카드, SSD, HDD가 다같이 장착되어 컴퓨터가 돌아가게 된다. EC2 인스턴스가 연산에 관한 (CPU,메모리 등) 처리를 한다고 하면, 데이터를 저장하는 역할(SSD, HDD)은 바로 EBS가 한다고 보면 된다. 즉, EBS는 클라우드에서 사용하는 가상 하드디스크(HDD)라고 말할 수 있다. EBS는 AWS 클라우드의 Amazone EC2 인스턴스에 사용할 영구 블록 스토리지 볼륨을 제공한다. 그리고 단 몇분 내에 사용량을 많게 또는 적게 확장할 수 있으며, 프로비저닝(빌리는 행위)한 부분에 대해서만 저렴한 비용을 지불 할 수 있다.

EBS ↔ EC2 연결 특징

EBS의 가장 큰 특징은 EC2 인스턴스가 종료되어도 별개로 작동하여 유지가 가능하다는 점이다. 보통 컴퓨터 본체가 꺼지면 하드도 꺼져 당연히 이용을 못하겠지만 EBS는 네트워크로 별개로 연결된 서비스 이기 때문에 가능한 것이다. 그래서 만일 잠시 인스턴스의 처리 기능이 필요하지않고 저장 장치 기능만 필요할떄는, 인스턴스를 정지시켜도 EBS는 독립적으로 살아있기 때문에 스토리지 기능만 이용하는데 인스턴스의 추가 요금을 내지 않아도 된다.

집 컴퓨터 같은 경우 CPU를 i9으로 업그레이드 한다고 하면 컴퓨터를 끄고 본체를 뜯어서 교체해줘야 하지만, 네트워크로 연결된(묶여있는) 인스턴스와 EBS는 단순히 인스턴스만 다른걸로 EBS와 재연결만 시키면 되기 떄문이다.

또 다른 특징은 인스턴스 입장에서도 여러가지 EBS를 붙일 수 있다는 점이다. 하나의 컴퓨터에 HDD, SSD를 여러개 부착할수 있는 것처럼 인스턴스도 같은 원리이다. 거꾸로 하나의 EBS를 여러 EC2 장착(EBS Multi Attach) 가능하기도 하다. 여러 컴퓨터가 있으면 하나의 하드를 공용 저장소로 사용하는 원리이다. 이것은 당연히 물리적인 컴퓨터에서는 불가능하지만 네트워크(클라우드)에서만 가능한 특징인 셈이다.

EBS는 EC2와 같은 가용영역(AZ)에 존재한다. AZ가 같아야 연길 및 통신이 빠르기 떄문이다. 만일 다른 AZ로 생성해서 EC2에 붙이려고 한다면 에러가 나게 된다.

EC2 데이터 백업

백업 및 복원을 서버를 사용하는 사람들에게는 필수적으로 알아야할 내용이며 백업하는 습관은 의무적으로라도 해야할한만큼 중요한 습관이다. EC2는 기본적으로 사용을 하면 할 수록 요금이 많이 발생하게 된다. 따라서 절약하기 위해서는 주기적으로 사용하지 않는 EC2를 중지하거나 종료를 해햐한다. 하지만 해당 EC2에 중요한 데이터나 다시 사용할 수도 있는 데이터들이 담겨져 있는 경우가 많다. 이러한 백업 및 복원에 대한 유지관리를 편리하게 할 수 있는 방법이 AMI 이미지를 통해 EC2의 정보를 저장하고 EBS Snapshot을 통해 데이터를 저장하는 방법이 있다.

스냅샷(Snapshot)

스냅샷(Snapshot)은 EBS를 저장하는 효율적인 방법으로서, 특정 시간에 EBS 볼륨 상태의 저장본을 뜻한다. EBS의 데이터 저장 상태에 대해 사진(백업본)을 찍어둔 개념이라고 이해하면 된다. 그래서 필요시 스냅샷을 통해 특정시간의 저장 데이터에 대한 EBS의 복구가 가능하다.

스냅샷은 OS 와 별개로 데이터만 백업하고 싶은 경우, 생성된 스냅샷을 기반으로 여러 종류의 AMI 를 생성하고 싶은 경우, Amazon DLM 을 활용하여 백업을 자동화하고 스토리지 비용 최적화를 원하는 경우(동일한 볼륨에 대한 스냅샷을 여러번 생성하면 변경된 부분에 대한 데이터만 추가적으로 백업 + 오래된 스냅샷은 자동으로 삭제)에 주로 애용된다.

AMI(Amazon Machine Image) 이해하기

AMI는 EC2 인스턴스를 실행하기 위한 정보를 모은 단위 이다.
EC2(가상 컴퓨터)를 실행하기 위해서는 CPU 프로세서 타입이라던지 저장공간 용량은 몇인지, 32비트인지 64비트인지, OS는 윈도우인지 리눅스인지, 소프트웨어는 어떤게 설치되었는지 등 정보가 필요한데 이러한 세팅 정보(템플릿)를 저장한 단위라고 생각하면 된다. 즉 AMI란 서버에 필요한 운영체제와 다양한 소프트웨어로 구성된 탬플릿이며, 보통 이러한 템플릿을 aws에서는 이미지라고 불린다. 템플릿에는 컴퓨터 OS 환경설정 정보 뿐만 아니라 인스턴스의 EBS에 대한 정보도 모두 포함되어있다. EBS에 대한 정보라는 것은 EC2 인스턴스가 어떤 EBS 스냅샷과 연결되어있는지에 대한 정보를 말한다.

AMI 백업 방식은, 긴급하게 백업된 인스턴스를 복구해야하는 경우, 인스턴스 설정 등이 복잡해서 설정이 완료된 인스턴스 이미지를 만들고 싶은 경우, Auto Scaling Group 에서 새 인스턴스를 자동으로 생성하기 위해 만드는 경우에 애용된다. 그리고 AMI를 사용하여 현재 상태의 EC2 세팅(템플릿)을 복제해서 다른 계정이나 다른 리전에게 전달도 가능하다. 또한 프로그램 형태로 AMI 배포가 가능해 다른사람이 받아 내 EC2 상태 그대로를 사용할 수 있다.

예를들어 나는 리눅스가 깔린 EC2사용 할 것이다! 라면, 인스턴스를 생성하고 OS를 일일히 설치해서 구성해야 하는게 아니라, 리눅스 환경 세팅이 된 리눅스 템플릿 AMI를 EC2에 적용시켜 아주 간편하게 리눅스 컴퓨터를 장만 하는 원리이다. 앞서 배운 스냅샷을 기반으로 AMI 구성이 가능하기 떄문에, AMI를 사용하여 현재 상태의 EC2 세팅(템플릿)을 복제해서 다른 계정이나 다른 리전에게 전달도 가능하다. 또한 exe처럼 프로그램 형태로 AMI 배포가 가능해 다른사람이 받아 내 EC2 상태 그대로를 사용할 수 있다.

AMI 와 Snapshot 의 차이점

기본적으로 EBS 를 백업한다는 점에서는 AMI 와 Snapshot 은 동일하다.

하지만, AMI 는 EC2 인스턴스에 연결되어 있는 모든 EBS Volume 을 동시에 백업하는 것이라면, Snapshot 기능은 사용자가 선택한 EBS Volume 하나를 백업한다는 점에서 차이점이 있다. 쉽게 말하면, AMI 이미지 방식은 컴퓨터 하나를 통째로 백업한다고 생각하면 되고, 스냅샷은 하드디스크 내용물만 백업하는 것으로 이해하면 된다. 물론 EC2와 관련된 EBS 여러개를 백업할수도 있다. 또한 AMI 와 Snapshot 을 이용하여 새로운 EC2 인스턴스를 생성할 수 있는데, AMI 인 경우에는 바로 EC2 인스턴스를 생성할 수 있고, Snapshot 인 경우는 Snapshot 을 이용해 AMI 를 생성하는 단계를 거쳐야한다는 차이점이 있다. 스냅샷은 EBS의 내용을 백업한 데이터라 직접 바로 인스턴스를 만드는게 불가능 하다.

S3

S3는 데이터를 저장하거나 추출하게 해주는 온라인 스토리지 웹 서비스이다. 즉, 파일의 서버의 역할을 하는 서비스이다. 하나의 저장 공간을 구성하고 그 공간에 데이터를 자유롭게 업로드, 다운로드 할 수 있다. HTTP 프로토콜로 파일에 접근할 수 있다. 일반적인 시스템과는 다르게 파일(또는 데이터) 이름인 key 와 파일 자체인 value 로 구분되는 객체 형태로 파일을 저장한다.

S3의 기본 개념

객체(Object) : S3에 데이터가 저장되는 최소 단위. 1) 파일 2) 메타데이터로 구성된다.

  • 기본적으로 객체의 Key가 데이터의 이름이고, Value가 데이터 파일입니다.
  • 객체 하나의 크기는 최소 1Byte부터 4TB까지임.
  • 메타데이터는 HTTP Content-Type 형식이다. 파일의 확장자에 따라 자동으로 설정되며 임의로 설정할 수도 있다. Key-Value 형식으로 저장됨.
  • 버킷(bucket) : S3에서 생성할 수 있는 최상위 디렉토리로 버킷은 각 Region 별로 생성이 가능하고, 버킷의 모든 이름은 모든 S3 Region에서 유일해야 한다. 계정별로 100개까지 생성할 수 있습니다.

특징

  • 많은 사용자가 접속을 해도 이를 감당하기 위해서 시스템적인 작업을 하지 않아도 된다.

  • 저장할 수 있는 파일 수 및 용량의 제한이 없다.

  • 저속 제어 및 권한 관리가 가능하다.

profile
발전하기 위한 공부

0개의 댓글