클라우드

이태곤·2023년 10월 17일
0

CS

목록 보기
4/23

1. 가상머신

  1. 전통적 배포방식: 물리적인 컴퓨터 한 대에 하나의 OS를 깔고 컴퓨터 리소스들을 공유하면서 여러 가지 프로그램을 설치하는 방식이다.
    계정을 나누어 여러명의 사용자가 이용할 수 있도록 할 수 있지만 어떤 프로그램을 설치했을 때 다른 앱에 영향을 미친다.

  2. 가상화 배포방식: 컴퓨터의 하드웨어를 소프트웨어적으로 구현한 가상머신을 기반으로 배포한다.
    한대의 컴퓨터를 가지고 여러개의 OS를 구동할 수 있게 되며 CPU, RAM을 물리적으로 갈아끼는 것이 아니라 설정만으로 개별적으로 할당량을 조절할 수 있다.

    • 하이퍼바이저: 하나의 시스템 상에서 가상 컴퓨터를 여러 개 구동할 수 있도록 해 주는 중간 계층을 의미한다.
      하이퍼바이저 위에 여러개의 가상머신을 구축할 수 있고 가상머신 위에
      OS, 그리고 OS 위에 앱이 올라가는 형태로 가상머신을 독립적으로 수행할 수 있다.
    • 클라우드는 가상화 기술을 통해 한대의 하드웨어로 여러명의 사용자들에게 독립적인 클라우드 서비스를 제공 → 여러명의 사용자는 서로 독립된 환경에서 컴퓨팅 가능
    • 샌드박스: 독립적으로 가상머신이 구축되어 서로 전혀 상호작용하지 않으며 한 가상 머신위의 프로그램은 다른 가상머신위의 프로그램에서 볼 수 없는 형태
  • 한계: OS가 공유가 안되기 때문에 가상머신에 일일히 OS를 설치해야 하는 단점이 있다.

2. On-premise & Off-premise

  • 클라우드 서비스 (Off-premise): 기업이 자체 데이터 센터나 로컬 서버에서 소프트웨어와 데이터를 운영하고 관리하는 방식이 아닌, 외부 데이터 센터나 클라우드 컴퓨팅을 통해 서버, 소프트웨어, 인프라를 호스팅하고 관리하는 방식이다.

  • 온프레미스 (On-Premises): 기업이 자체 데이터 센터나 로컬 서버에서 소프트웨어와 데이터를 운영하고 유지 보수하는 방식으로, 데이터와 인프라를 직접 관리한다.

  • 클라우드를 통해 사용자에게 인프라, 플랫폼 또는 소프트웨어를 제공하며 사용자들은 자체 인프라나 하드웨어 설치 없이 애플리케이션과 리소스를 쉽고 비용 효율적으로 이용할 수 있다.

  • 클라우드의 확장성으로 인해 트래픽 증가 등의 예상치 못한 상황에 유연하게 대처할 수 있다.


3. Iaas & Saas & Pass

  1. Iaas(Infrastructure as a Service) : 인프라형 클라우드 서비스로, IT 인프라의 기본 요소인 Network, Storage, Server 등의 자원을 가상화하여 사용자에게 클라우드를 통해 서비스 한다.
    • IaaS는 사용자가 인프라 자원을 직접 관리하고 필요한 소프트웨어를 설치해야한다.
      → 운영비 효율이 낮을 수 있다
    • 특정 클라우드 제공 업체에 의존하지 않고, 서비스 및 인프라를 다른 환경으로 이전하거나 다른 제공 업체로 변경할 수 있다.
      → 높은 유연성 및 이식성을 가진다.
    • AWS의 EC2, NCP 등
  1. Paas(Platform as a Service) : 플랫폼형 클라우드 서비스로, Application을 사용자가 운영하기 위한 플랫폼(실행 환경, 데이터베이스, 서버, 보안 등)을 클라우드에서 제공한다.
    • 클릭을 통해 해당 서비스를 이용할 수 있습니다.
      → 플랫폼에 종속적이여서 유연하지 않으며, 이식성이 낮다.
      → 다양한 리소스가 이미 설치되어 있으므로, 운영비 효율이 좋다.
    • 모니터링, CI/CD가 제공된다.
    • AWS Beanstalk, Heroku
  1. Saas(Software as a Service) : 서비스형 클라우드 서비스로,
    완전한 서비스를 클라우드 서비스로부터 제공받아 사용할 수 있다.
    • 클라우드에서 해당 소프트웨어의 설치, 업데이트, 보안 등을 모두 관리하므로 사용자는 유지보수와 같은 복잡한 과정에 관여하지 않아도 된다.
    • Google Docs, Dropbox, Slack

4. 컨테이너와 도커

  • 컨테이너 : 애플리케이션이 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행되도록 코드와 모든 종속성을 패키징하는 소프트웨어의 표준 단위이다.
    컨테이너는 OS를 공유하기 때문에 빠르고 경량화되어있으며, 높은 격리성을 가지고 있다.

    • 가상 머신(VM)은 하이퍼바이저 위에서 동작하며, 하이퍼바이저는 하드웨어 가상화를 담당한다.
      각 VM은 독립적인 OS 환경을 가진다.
    • 컨테이너는 일반적으로 컨테이너 오케스트레이션 툴인 Docker와 같은 소프트웨어 위에서 동작하며, OS를 공유하는 운영 체제 수준에서 동작한다.
  • 도커 : 도커는 컨테이너화된 애플리케이션을 실행하기 위한 플랫폼이다.

    1. 도커파일: 패키지, 환경변수설정 등을 기록하고 빌드하여 도커이미지를 생성
    2. 도커이미지: 컨테이너 실행에 필요한 파일과 설정값, 데이터 등을 포함된 상태값으로 불변한다.
      하나의 이미지에서 여러개의 컨테이너를 생성할 수 있으며 컨테이너의 상태와는 무관하게 이미지는 그대로 존재한다.
    3. 도커컨테이너: 컨테이너가 실행시키면 도커이미지에 설정된 프로그램, 데이터 등이 실제 컴퓨팅자원과 연결되어 애플리케이션이 실행된다.
      → 특정 서버에 환경설정해야 한다면 미리 만들어진 도커이미지를 다운받아서 컨테이너만 만들면 되는 간단한 과정을 가진다.
  • 도커를 통해 Iaas와 Paas의 장점을 모두 가져갈 수 있다.


5. CI/CD (Continuous Integration/Delivery & Deployment)

  • CI/CD 파이프라인
    • Continuous Integration (CI): 코드를 빌드하고 테스트하여 변경 사항을 코드베이스에 통합한다.
      → 빌드 : webpack 등
      → 테스트 : Mocah JS, JUnit
      → 머지 : git, svn
    • Continuous Delivery (CD): 변경 사항을 스테이징 환경으로 자동 배포하고 테스트한 후, 릴리즈를 준비하는 단계로 이동합니다.
      → 프로덕션 배포는 수동으로 시작
      • 스테이징 환경 (Staging Environment): 개발이 완료된 코드 변경 사항을 실제 프로덕션 환경과 유사하게 설정한 환경에서 테스트하고 검증하는 목적으로 사용된다.
    • Continuous Deployment (CD): 변경 사항을 스테이징 환경을 거치지 않고 바로 프로덕션 환경으로 자동 배포
      → 배포는 사용자를 위한 서비스 배포뿐만아니라, QA 엔지니어, 관리자페이지를 위한, 데이터 웨어하우스로부터 데이터를 가공해서 백엔드개발자를 위한 배포 등을 포함한다.
  • 파이프라인이 주는 장점은 코드배포까지 좀 더 체계적으로 만드는 점과 테스트가 강제된다는 것이다.
    → 파이프라인 내에 테스트가 있기 때문에 테스트 코드가 없으면 merge가 불가능하다.

0개의 댓글