IT 정보/기타 정보

[Cloud] 배포 기본 개념

개발하는 동그리 2022. 8. 2. 13:03
728x90
반응형

데이터 센터

  • 자체적으로 보유한 전산실 서버에 직접 설치해 운영하는 방식
  • 즉 서버의 자원과 공간, 및 네트워크 환경을 제공을 빌려 사용하는 클라우드 컴퓨팅이 시작된 순간입니다.
  • 데이터 센터의 유휴 자원을 대여하는 서비스 
  • 온프레미스라고 부름

현대 클라우드란!? 

  • 데이터 센터와 비슷하지만 가상 컴퓨터를 대여한다
  • 가상화 기술의 발전으로부터 비롯됨
  • 온프레미스 형식과는 다른 장점을 보유
    • 필요할 때마다 컴퓨터 능력을 유연하게 조절
    • 고정적인 비용이 들어가는 온프레미스와 달리 사용한 만큼의 요금만 지불
    • 컴퓨터의 스냅샷(이미지)를 이용해 다른 컴퓨터로 즉시 이주가 가능
  • 클라우드의 단점
    • 운영환경이 클라우드 제공자에게 종속되어 클라우드 서비스에 문제 발생 시 영향을 받음
    • 운영환경이 사업자(vendor)에 종속되므로, 백엔드 구성이 특정회사의 기술로만 구성됨
  • 대표적 클라우드 서비스 형태 
  • 서비스 범위 : 1. 네트워크 / 2. 하드웨어 / 3. 운영체제 / 4. 플랫폼&데이터베이스 / 5. 애플리케이션  
    • SaaS
      • 1 ~ 5 범위 
      • Software as a Service (당장 사용 가능한 소프트웨어를 제공받는 경우 대부분)
    • PaaS
      • 1 ~ 4 범위
      • Platform as a Service (클라우드 제공자가 데이터베이스, 개발 플랫폼까지 제공하는 경우 대부분)
    • IaaS
      • 1 ~ 2 범위
      • Infrastructure as a Service (클라우드 제공자가 가상 컴퓨터까지 제공하는 경우 대부분)
      • ex ) AWS

AWS 리소스가 설치되어 있는 장소

  • Regions
    • AWS 인프라를 지리적으로 나누어 배포
    • 사용자와 리전이 가까울 수록 네트워크 지연 최소화
  • Availability Zone
    • 각 리전 내(대략 3개~ 5개)에 물리적으로 격리되어 있는 개별 데이터 센터 (5만~ 8만대 서버)
    • 각 AZ는 고속 프라이빗 네트워크로 논리적인 연결되어 있음
  • Edge Location
    • CDN(Cloud Front) 캐싱 콘텐츠가 위치
    • 리전(20개정도)이랑 별개로 존재하고, 전세계에 2만개 정도 있음

EC2

  • 인스턴스
    • 가상 컴퓨팅 환경 (서버)
  • AMI (Amazon Machine Image)
    • OS, 애플리케이션 서버, 애플리케이션 등에 대한 세부 정보를 담고 있는 기본 설계도
  • 인스턴스 유형
    • 인스턴스를 시작할 때 인스턴스 유형에 따라 사용되는 호스트 컴퓨터의 하트웨어가 결정됨 ( T2, T3...?? )
  • SSH 프로토콜을 통한 연결
    • .PEM 파일을 사용
    • 키 페어 생성
  • 세션 매니저(Session Manager)를 통한 연결 (최신)

S3 (Simple Storage Service)

  • 스토리지
    • 객체 스토리지
      • 객체 = 문서, 이미지, 비디오 등 비교적 단순한 구조의 데이터
    • 블록 스토리지
      • 서버 인스턴스에 디스크 볼륨의 형태로 제공되는 데이터
    • 파일 스토리지
      • 파일 스토리지에서의 데이터
  • 버킷(Bucket) 
    • 객체를 저장하는 컨테이너, 폴더 역할
    • 버킷의 이름은 유일한 이름을 사용
  • 객체(Object)
    • 버킷에 저장한 모든 것
  • 그 외 특징
    • 정적 웹 사이트 호스팅으로 사용 가능
    • 강한 내구성, 확장성, 저렴

RDS

  • 다양한 RDBMS 엔진 사용 가능 ( MySQL / Oracle .. )
  • 확장성
    • 데이터베이스 인스턴스의 타입을 변경하여 스케일업, 스케일 다운 가능
  • RDS 장점
    • 비지니스 가치에 집중
    • 데이터 베이스 관리 업무를 원하지 않는 경우
    • 회사 내 데이터 베이스 관리 역량이 충분하지 않은 경우
    • 데이터 베이스에 여러 (AZ)가용 영역이 복제되어 있는 경우
  • EC2 장점
    • 데이터 베이스 인스턴스의 완전한 통제권을 원하는 경우
    • 백업, 복제, 클러스터링 등에 대한 통제권 포함
    • 기업의 RDBMS 엔진의 주요 기능이 RDS와 맞지 않는 경우

 

Cloud 배포 4단계 (Development / Intergrating / Staging / Product )

Development 1단계 

  • 각자의 컴퓨터에서 코드를 작성하고 테스트하는 과정
  • 더미테이터 사용

Intergrating 2단계

  • 각자의 컴퓨터에서 작성한 코드를 합치는 과정
  • 코드 간 오류나 충돌 여부 확인 

Staging 3단계

  • 실제 출시 단계 Production 단계와 가장 유사한 환경에서 테스트 진행
  • 모든 관계자에게 확인을 거치는 과정

Product 4단계

  • 개발된 서비스를 출시하는 단계
  • 서비스가 운영중으로 절대 문제가 발생하면 xx

 

Development와 Production 환경/ 개발자 간의 환경도 다를 수 있다. 그러므로 배포에서는 환경의 차이를 이해하고 환경 설정을 코드와 분리하는 것이 중요하다. 

  • 절대 경로 x / 상대 경로 o
    • .properties 등을 이용해 환경 변수 설정
  • 환경에 따라 포트를 분기할 수 있도록 환경변수 설정
  • (Advanced) Docker와 같은 개발 환경 자체를 통일시키는 솔루션 사용 
    • 가상화 도구로 환경을 메타 데이터로 담아 모든 개발환경을 통일
  • 어플리케이션의 설정이 코드 바깥으로 분리되어 있는지 확인
    • 인증정보 유출시키지 않고 오픈 소스가 될 수 있는지 확인

클라우드 서비스 벤더사(Vendor) 종류

  • heroku
  • DigitalOcean
  • Microsoft Azure
  • Firebase
  • AWS

Amazon EC2(Elastic Compute Cloud)

  • AWS에서 원격으로 제어할 수 있는 가상의 컴퓨터 한 대 빌리는 것
  • 클라우드를 통해 서버, 스토리지, 데이터베이스 등의 컴퓨팅 서비스를 제공하는 서비스
  • Elastic이란 단어가 사용된 이유는 비용, 성능, 용량을 사용자가 원하는 만큼 자유롭게 조절이 가능함
  • 구성하는데 필요한 시간이 짧다. 
  • AMI를 통해서 필요한 용도에 따라 운영체제 선택이 가능 ( + CPU, RAM, 용량 )
  • (기본적인 역할) 웹서버를 설치하고 웹서버를 통해 사용자의 요청에 대한 서비스를 제공
  • 인스턴스는 1대의 컴퓨터를 의미하는 단위이며, 1대를 빌린 상태 (컴퓨터를 1대 대여 = 인스턴스 생성)
  • AMI(Amazon Machine Image) 
    • 소프트웨어 구성이 기재된 템플릿으로 운영체제만 설치되어 있을 수 있고, 런타임이 설치되어있는 템플릿도 있음
  • Amazon EC2 -> AMI -> Instance

RDS (Relational Database Service)

  • AWS에서 제공하는 관계형 데이터 베이스 서비스
  • 데이터 베이스를 설치해서 사용할 경우 👎 
    • 설치, 버전관리, 데이터 백업 등 자원이 소모
    • 가용성과 내구성이 확보되지 않기 때문에 데이터의 유실, 또는 정상 작동하지 않을 확률 상승
    • 데이터베이스의 규모를 확장하기가 어려움
  • RDS를 사용할 경우 👍
    • 데이터 베이스의 유지 보수와 관련된 일을 RDS에서 전적으로 자동 관리
    • 사용자는 초기 설정과 데이터베이스 저장된 데이터 관리만 하면 끝!
  • RDS 사용시 다양한 데이터 베이스 엔진을 선택할 수 있다. 
    • ORACLE
    • Amazon Aurora
    • SQL Server
    • MySQL
    • MariaDB
    • PostgreSQL

클라우드 스토리지란!?

  • 인터넷 공간에 데이터를 저장하는 저장소 ex.) Onedrive, Google Drive
  • 뛰어난 접근성을 가짐

S3 (Simple Strorage Service)

  • AWS에서 제공하는 클라우드 스토리지 서비스
    • 데이터를 무한히 저장이 가능 (확장성) (사용한 만큼만 비용 지불)
    • 강력한 내구성 (파일 유실될 가능성 거의 희박)
    • 높은 가용성 보장 (99.99%)
  • 다양한 스토리지 클래스 제공
    • Standard 클래스
      • 범용적인 목적으로 데이터에 대한 빠른 접근과 액세스 처리 속도가 빠름
      • but 비용이 많이 발생하므로 오래 보관하기에는 비 효율적
    • Glacier 클래스 
      • 장기적 보관 목적에 효율적
      • 엑세스 속도는 느리지만 보관하는 비용이 저렴
  • 정적 웹 사이트 호스팅 가능
    • 정적 파일 : 서버의 개입 없이 클라이언트에 제공될 수 있는 파일
    • 웹 호스팅 : 서버의 한 공간을 빌려 웹 사이트 배포, 운영이 가능하게 만드는 서비스
    • S3에서는 버킷을 통해 웹 사이트 호스팅이 가능
      • 버킷!? 
        • 무수히 많은 파일 저장 가능
        • 버킷의 이름은 속해있는 리전에서 유일해야 함
        • 버킷 정책을 생성하여 다른 유저의 접근 권한을 수정할 수 있음
      • 객체!?
        • 버킷에 담기는 파일을 객체라 부름
        • S3에서 데이터를 저장할 때 Key + Value 페어 형식으로 저장하기 때문에 객체라 부름
        • 객체 = 파일 + 메타 데이터
          • 파일
            •  key + value 페어 형식
            • 데이터 최대 크기 5TB
            • 실제 데이터 저장
            • 객체를 고유하게 만들어주는 식별자 역할
            • 파일의 키를 이용해서 원하는 객체 검색 가능
          • 메타 데이터
            • 객체 생성일, 크기, 유형과 같은 정보를 담고 있는 데이터 (객체를 설명하는 데이터)
        • 모든 객체는 고유한 URL 주소를 가지고 있음
        • URL주소는 http://[버킷의 이름].S3.amazonaws.com/[객체의 키]
          • URL을 통해 데이터에 접근 가능

 


3 Tier-Architecture  ( Cient 배포 / Server Application 배포 / Database 배포 )

Client 배포

  • S3 서비스를 이용해서 이용자들에게 Client application을 제공
  • S3 서비스를 통해 클라이언트 앱을 정적파일로 빌드하여 제공
  • AWS에서 제공하는 CDN 서비스 CloudFront 이용
    • 각 데이터센터에 분산해서 저장해 두고, 가까운 지역에서 데이터를 전송하는 방법으로 빠른 서비스 제공 가능
  • 빌드란!? 
    • (일반적인 의미의 빌드) 소스코드를 실행 가능한 번들로 변환하는 컴파일 과정을 의미
    • 불필요한 데이터를 없애고, 통합/압축하여 배포에 최적화 상태로 구성
    • 데이터의 용량도 줄고, 로딩 속도가 빨라짐
    • 웹앱에서와 같이 HTML, CSS, JS의 형태로 배포하는 경우에는 정적 파일의 형태로 만들어 줘야 함
    • React의 경우 rpm run build와 같은 명령을 사용해서, 정적 파일 형태의 결과물을 만들어 낸 후 배포할 수 있음

 

Server Application 배포

  • AWS EC2를 통해 서버 코드를 구동

 

Database 배포

  • AWS에서 Database 특화 서비스 RDS 서비스 이용
  • EC2를 통해 배포된 Server Application의 데이터를 저장, 제공할 수 있는 데이터베이스를 배포

 

도메인 설정

AWS에서 제공하는 Route 53 서비스를 이용하면 직관적인 도메인 주소를 통해 서비스에 접근할 수 있음

728x90
반응형