CLOUD 운영환경 구성 ☁️

DY_DEV·2023년 5월 25일
0

TIL

목록 보기
14/17

spring - webflux까지의 과정이 종료되고 이제 본격적으로 클라우드 서비스에 대한 내용을 학습했다. 아직 section3에서 배웠던 spring MVC 과정의 정리 끝나지 않았지만 매우 중요한 내용이기때문에 우선적으로 학습한 내용을 정리했다.


Cloud Computing☁️🌦️

서버가 요청에 대한 수용 능력이 한계에 도달한 경우 사용하는 기술

  • 기존방식: 같은 공간에 더 많은 컴퓨터를 제공한다.
    • 한계: 주기적인 유지 관리가 필요하다.
      • 데이터 센터의 등장
      • 유휴자원 대여
  • 클라우드: 서버의 자원과 공간 및 네트워크 환경 제공.
    • 필요할 때마다 컴퓨팅 능력을 유연하게 조절
    • 사용한 만큼의 요금만 지급
    • 다른 컴퓨터로 즉시 이주가 가능
    • 단점: 운영 환경 자체가 클라우드 제공자에게 종속됨
      • 클라우드 서비스에 문제가 생기면 내가 배포하고 관리하는 환경에도 영향이 미친다.

서비스 및 기본 제공 서비스 범위

SaaS: Software as a Service

  • 클라우드 제공자가 당장 사용 가능한 소프트웨어를 제공하는 경우 대부분 SaaS에 해당

PaaS : platform as a Service

  • 클라우드 제공자가 데이터베이스, 개발 플랫폼까지 제공하는 경우 대부분 PaaS에 해당

IaaS: Infrastructure as a Service

  • 클라우드 제공자가 컴퓨터까지 제공하는 경우 대부분 IaaS에 해당.

*AWS는 IaaS에 가깝다.


Deploy

총 4단계로 이뤄짐

Development 환경과 Production 환경이 서로 다른 경우

  • 로컬에 설치된 데이터베이스 비밀번호와 클라우드에 설치된 데이터베이스 비밀번호가 다른 경우

  • 배포에서는 환경의 차이를 이해하고 환경설정을 코드와 분리하는 것이 중요하다.

  • 작성한 코드가 다른 환경에서 정상 작동할 수 있게 하려면, 설정을 환경 변수(environment variable; envvars나 env라고도 불림)에 저장해야 합니다.

    • 배포시 코드 변경이 없어서 쉽게 변경 가능.
    • 설정 파일과 달리 실수로 코드 저장소에 올라갈 가능성도 낮다.
  • 그럼 애플리케이션의 모든 설정이 정상적으로 코드 바깥으로 분리되어 있는지 확인하는 방법은 뭘까?

    • 어떠한 인증정보도 유출시키지 않고 코드가 지금 당장 오픈 소스가 될 수 있는지 확인하는 것.
  • 코드 상의 모든 곳에 절대 경로가 아닌 상대 경로를 사용해야 하며, .properties 등을 이용해 환경 변수를 설정해야 한다.

  • docker와 같은 가상화 도구는 환경 자체를 메타데이터로 담아서 아예 모든 개발 환경을 통일 시킨다.

EC2🌐

Amazon EC2(Elastic Compute Cloud)
AWS에서 원격으로 제어할 수 있는 가상의 컴푸터를 한 대 빌리는 것

  • 클라우드 컴퓨팅은 인터넷(클라우드)을 통해 서버, 스토리지, 데이터베이스 등의 컴퓨팅 서비스를 제공하는 서비스입니다.
  • 아마존에서 가상의 컴퓨터 한 대를 빌리는 것
  • Elasic: 사용한 만큼비용을 지불하기 때문에 '탄력적인'이라는 의미의 Elastic이라는 단어가 붙어있습니다.
    • Elastic은 비용적인 부분뿐만이 아니라 필요에 따라 성능, 용량을 자유롭게 조절할 수 있다는 의미도 가지고 있습니다.
  • 따라서 EC2 서비스는 AWS에서 비용, 성능, 용량 면에서 탄력적인 클라우드 컴퓨터를 제공하는 서비스다.

장점

  • 구성하는 데 필요한 시간이 짧다
  • AMI(일종의 템플릿)를 통해 다양한 OS에 대한 선택이 가능하다
  • CPU와 RAM, 용량까지도 손쉽게 구성

인스턴스

AWS에서 빌리는 컴퓨터를 의미한다.

  • 전 세계에 만들어 놓은 데이터 센터(인프라)에 위치
  • 컴퓨터를 조작하기 위해 네트워크(인터넷)를 통해서 컴퓨터를 제어해야 한다는 차이점이 있을 뿐 일반적인 컴퓨터와 다른 점은 없습니다.
  • 가장 기본적인 일: 웹서버를 설치하고 웹 서버를 통해서 사용자가 웹 브라우저를 통해 요청하는 서비스를 제공하는 것
  • 인스턴스 생성: AWS에서 컴퓨터를 빌리는 것
  • 인스턴스: 1대의 컴퓨터

AMI(Amazon Machine Image)

  • 소프트웨어 구성이 기재된 템플릿
  • 이미지 종류로는 단순히 운영체제(윈도우, 우분투 리눅스 등)만 깔려있는 템플릿을 선택할 수도 있고, 아예 특정 런타임이 설치되어 있는 템플릿이 제공되는 경우도 있습니다. (우분투 + node.js, 윈도우 + JVM 등)
  • Instance는 선택한 AMI를 토대로 구성됩니다.
  • AWS에는 상당히 많은 양의 AMI 세팅이 준비되어 있기 때문에 손쉽게 인스턴스의 운영체제를 구성할 수 있습니다.
  • 세팅되어 있는 AMI 이외에도 필요에 따라 직접 AMI를 구성할 수도 있습니다.

AWS EC2 인스턴스를 생성한다는 것은 AMI를 토대로 운영체제, CPU, RAM 혹은 런타임 등이 구성된 컴퓨터를 빌리는 것.


RDS(Relational Database Service)

굳이 MYSQL같은 관계형 데이터베이스 엔진을 설치하면 굳이 RDS를 사용할 이유가 없는데도 따로 분리해서 서비스를 이용하는 이유는?

  • EC2 인스턴스에 MYSQL같은 관계형 데이터베이스 엔진을 설치해서 데이터를 관리하는 경우: 개인 소유 차량 이용
    • 유지보수가 온전히 개인의 몫이다.
    • 시간과 비용이 많이 듦
    • EC2 인스턴스를 사용하면 데이터베이스와 관련해서 자동으로 관리를 담당하는 부분이 매우 적기 때문에, 사용자가 일일이 시간을 투자하여 데이터베이스 엔진의 설치와 버전 관리, 데이터 백업을 해야된다.
    • 가용성과 내구성이 확보되지 않음
      • 데이터 유실 발생, 데이터베이스 규모 확장이 어렵다.
  • RDS를 통해 데이터를 관리할 경우: 렌터카 회사에서 대여한 차량 이용
    RDS를 이용하면 데이터베이스 유지 보수와 관련된 일들을 RDS에서 전적으로 자동 관리한다. 사용자가 해야 할 일은 초기 설정을 제외하고 데이터베이스에 저장된 데이터를 관리하는 일 밖에 없기에 큰 편의성을 느낄 수 있다.

S3(simple Storage Service)

장점

  • 뛰어난 접근성 - 웹 환경이라면 언제 어디서나 저장된 파일에 접근할 수 있다.
  • 컴퓨터뿐만 아니라 웹에 접속이 가능한 다른 전자기기를 활용해 클라우드 스토리지에 저장된 데이터에 접속할 수 있다.
  • 확장성이 높다 = 시간과 비용을 아낄 수 있다 = 스토리지 규모를 확장/ 축소할 수 있다.
  • S3에서는 스토리지 용량을 무한히 확장할 수 있다
  • 사용한 만큼의 비용만 지불하면 된다
  • 저장된 파일 유실 가능성이 적어진다.
  • 가용성이 높다 = 스토리지에 저장된 파일들을 정상적으로 사용할 수 있는 시간이 길어진다.
  • S3는 연간 99.99%의 스토리지 가용성을 보장하도록 설계 = 1년 동안 S3에 파일을 저장했을 시, 0.876 시간 동안만 스토리지를 이용하는 데 있어서 장애가 발생

어떤 원리로 가용성과 내구성을 보장하는가?

  • 리전(Region)이란? : AWS에서 클라우드 서비스를 제공하기 위해서 운영하는 물리적인 서버의 위치

  • 리전 동그라미 내부에 숫자 = 리전에 위치한 가용영역의 수

  • 가용 영역(Availability Zone): 각 리전 안에 존재하는 데이터 센터(IDC)

    • 각각 개별적인 위치에 떨어져서 존재
    • 백업역할을 하는 다양한 가용영역을 통해 가용성과 내구성 보장
    • 저장소를 어떤 목적으로 활용할지에 따라 효율적으로 선택할 수 있는 스토리지 클래스가 달라집니다.
  • 대표적으로 많이 사용하는 스토리지 클래스
    - Standard
    - 범용적인 목적
    - 데이터에 빠르게 접근 가능
    - 데이터 액세스 요청에 대한 처리 속도가 빠름
    - 데이터를 오래 보관하면 많은 비용 발생하는 단점
    - Glacier
    - 장기적인 목적일 때 사용한다.
    - 데이터 액세스 속도는 느린 편
    - 비용이 저렴함

  • 정적 파일이란?

    • 서버의 개입 없이 생성된 파일
    • 반대로 클라이언트가 서버에 요청을 보내면, 서버가 요청에 맞추어 그 자리에서 생성한 파일을 '동적' 파일이라고 함.
  • 웹 호스팅(Web Hosting)이란?

    • 서버의 한 공간을 임대해 주는 서비스
    • 웹 호스팅 업체들을 통해 개인 또는 단체가 웹 호스팅 업체가 제공하는 서버의 한 공간을 빌려서 원하는 서비스를 배포할 수 있다.
  • 버킷: 사용자들이 정적 웹 사이트를 배포할 수 있는 공간

    • 버킷이라는 저장 공간에 정적 파일을 업로드하고 버킷을 정적 웹 사이트 호스팅 용도로 구성하면 정적 웹 사이트를 배포할 수 있습니다.

객체: 버킷에 담기는 파일

  • 객체라고 부르는 이유
    • S3에서 저장소에 데이터를 저장할 때 키-값 페어 형식으로 데이터를 저장하기 때문
  • 파일의 값에는 실제 데이터를 저장
    • 최대 크기: 5TB
  • 파일의 키: 각각의 개체를 고유하게 만들어주는 식별자 역할
  • 메타데이터: 객체의 생성일, 크기, 유형과 같은 객체에 대한 정보가 담긴 데이터
  • 모든 객체는 고유한 URL 주소를 가진다.
    • URL 주소는 http://[버킷의 이름].S3.amazonaws.com/[객체의 키]의 형태를 띠고, URL 주소를 통해서도 원하는 데이터에 접근할 수 있습니다.****

0개의 댓글