Cloud 이론

박채은·2023년 1월 31일
0

Spring

목록 보기
33/35

Cloud Computing

인터넷(클라우드)을 통해 서버, 스토리지, 데이터베이스 등의 컴퓨팅 서비스를 제공하는 서비스

우리는 물리적인 서버실을 통해서 서비스를 제공해 왔다.(온프레미스)
컴퓨팅 능력을 향상시키기 위해서는, 서버실의 컴퓨터의 갯수를 늘리거나 하나의 컴퓨터의 성능을 업그레이드해야 하는데 공간의 한계주기적인 유지 관리가 필요하다는 한계점이 있다.

✔️ 온프레미스란 기업의 서버를 클라우드 같은 원격 환경에서 운영하는 방식이 아닌, 자체적으로 보유한 전산실 서버에 직접 설치해 운영하는 방식이다.
클라우드 컴퓨팅 기술이 나오기 전까지 기업 인프라 구축의 일반적인 방식이었다.

물리적인 서버실을 계속해서 확장/증설하는 것이 어렵게 되자, 거대 기업(벤더)이 데이터 센터를 만들어 서버의 자원과 공간, 및 네트워크 환경을 대여해주기 시작했다.

✔️ 클라우드의 단점

  • 운영 환경 자체가 클라우드 제공자에게 종속되기 때문에, 클라우드에 문제가 생기면 서비스에게도 영향이 간다.
  • 운영 환경이 클라우드 제공자(벤더)에게 종속되기 때문에, 특정 회사의 기술만을 사용해야 한다.

✔️ 벤더(클라우드 빅3)

  • Google GCP
  • MS AZure
  • Amazon AWS

배포(Deploy)

사용자가 서비스를 사용할 수 있도록 해주는 과정

보통 4단계로 구성된다.

  1. Development
    각자 로컬 환경에서 개발하는 단계
    실제 데이터가 아닌 더미 데이터를 사용해서 테스트를 진행한다.

  2. Integration
    각각 로컬에서 개발한 코드를 합치는 단계
    코드 간 충돌이 발생하지 않는지 확인한다.

  3. Staging
    실제 출시 단계인 Production과 유사한 환경에서 테스트를 진행한다.
    출시 전에 마지막으로 여러 환경에서 문제가 발생하진 않는지 확인한다.

  4. Production
    서비스를 출시하는 단계

각자 로컬 환경에서 개발을 진행하다가, 하나의 서비스로 합치는 과정에서 여러 문제가 발생한다. Spring의 버전이 각 로컬마다 다를 수도 있고, 데이터베이스 비밀번호가 다를 수도 있기 때문이다.
즉, 이러한 환경 설정들을 환경 변수로 설정하여, 코드와 분리해야 한다.
(어떠한 환경에서도 코드를 실행할 수 있도록)


EC2(Elastic Compute Cloud)

아마존 웹 서비스(AWS)에서 제공하는 클라우드 컴퓨팅 서비스
= 아마존에서 가상의 컴퓨터를 한 대 빌리는 서비스

  • EC2 서비스는 사용한 만큼만 비용을 지불한다.
  • EC2 서비스는 운영체제, 성능(CPU), RAM, 용량 등을 자유롭게 선택할 수 있다.
    • Elastic = 탄력적인
    • AIM를 통해 다양한 운영체제를 선택할 수 있다.
  • Instance = 한 대의 컴퓨터
  • Instance를 생성한다. = AWS에서 컴퓨터를 빌린다.
  • Instance는 선택한 AIM, CPU, RAM 등에 따라 구성된다. = 내가 선택한 템플릿에 따라 한 대의 컴퓨터를 구성해서 빌린다.

AMI

소프트웨어 구성이 기재된 템플릿

  • 운영체제를 선택 가능
  • 특정 런타임이 설치되어 있는 템플릿도 있다.(node.js, JVM)

RDS

Relational Database Service
AWS에서 제공하는 관계형 데이터베이스 서비스

✔️ 왜 RDS를 사용하나요?
굳이 RDS를 사용하지 않아도, EC2 인스턴스에 따로 MySQL 같은 관계형 데이터베이스를 설치하면 된다.
하지만 RDS를 사용하면 데이터베이스에 대한 작업(설치, 버전 관리, 백업 등)을 AWS에서 해주기 때문에 매우 편리하다.


S3

Simple Storage Service
AWS에서 제공하는 클라우드 스토리지 서비스

Cloud Storage

인터넷 공간에 데이터를 저장하는 저장소

우리가 자주 쓰는 구글 드라이브, 네이버 MYBOX, 마이크로소프트의 Onedrive가 있다.
클라우드 스토리지를 통해서 언제 어디서나 저장소에 접근하여 데이터를 가져올 수 있다.

S3의 장점

  1. 뛰어난 접근성
    • 클라우드 스토리지이기 때문에 언제 어디서든 접근할 수 있다.
  2. 높은 확장성
    • 스토리지의 용량은 무한히 확장 가능하다.
    • 적은 시간과 노력으로 스토리지 규모를 확장할 수 있다.
  3. 비용이 효율적이다.
    • 사용한 만큼만 비용을 지불하면 된다.
  4. 높은 내구성
    • 파일을 유실할 가능성이 적다.
  5. 높은 가용성(가동률)
    • 가용성: 서버와 네트워크, 프로그램 등의 정보 시스템이 정상적으로 사용 가능한 정도
  6. 다양한 스토리지 클래스를 제공한다.
  7. 정적 웹 사이트 호스팅이 가능하다.

S3 용어

  • 버킷
    • S3에 저장되는 파일이 담기는 바구니
    • 최상위 디렉토리
    • 무한히 많은 파일을 저장할 수 있음
    • 버킷 정책을 통해서 접근 권한을 설정할 수 있다.
  • 객체
    • 버킷에 담는 파일
    • 키-값 형식으로 데이터를 저장
      • 키: 파일의 식별자 역할
    • 모든 객체는 고유한 URL 주소를 가진다.

3 Tier-Architecture 배포 전략

지금까지는 로컬 환경에서 클라이언트, 서버, 데이터베이스를 실행했었다.
하지만 다른 사람들에게도 이 서비스를 제공하고 싶다면 어떻게 해야할까?
=> 클라이언트, 서버, 데이터베이스를 배포해야 한다!

✔️ 빌드란?
불필요한 데이터를 없애고, 데이터들을 통합/압축해서 배포하기에 최적화된 상태로 만드는 과정
데이터 용량이 줄고, 웹 사이트 로딩 속도가 빨라진다.
웹 앱은 빌드를 통해서 정적 파일로 만들어 배포를 해야한다.

1. 클라이언트 배포 => AWS의 S3 사용
클라이언트 앱을 정적 파일로 빌드해서 S3을 통해서 배포한다.

2. 서버 배포 => AWS의 EC2 사용
또한, AWS Route 53 서비스를 사용하면 도메인 주소를 직관적으로 설정할 수 있다.

3. 데이터베이스 배포 => AWS의 RDS 사용


클라이언트 배포

서버 배포

  1. EC2 인스턴스 생성하기
  2. 인스턴스에 개발 환경 구축하기
    • 인스턴스는 하나의 PC를 빌린 것이다. 인스턴스에는 새 PC와 동일하므로 필요한 프로그램들을 설치해줘야 한다.
  3. 서버 코드 클론 받기
  4. EC2 인스턴스에서 서버 실행 -> java -jar 파일명.jar
    • jar 파일은 build/libs/ 에 존재한다.

background 실행


보안 그룹

EC2 인스턴스로 들어가고 나가는 트래픽에 대한 가상 방화벽
EC2 인스턴스에 들어오고, 나가는 네트워크를 관리한다.

  • 인바운드 규칙 : 인스턴스로 들어오는 트래픽에 대한 규칙
    • default로 SSH 접속을 위한 SSH 규칙만 설정되어 있다.
  • 아웃바운드 규칙 : 인스턴스로 나가는 트래픽에 대한 규칙
    • default로 모든 인바운드 트래픽을 허용한다.

0개의 댓글