[Cloud] AWS

YuLim·2023년 1월 31일
1

💻 Cloud Computing

클라우드 서비스를 제공하는 벤더사(Vendor)는 여러 곳이 있습니다.
Google - GCP
MicroSoft - azure
Amazon - AWS

클라우드 서비스의 기본 장점은 합리적인 요금제와 신속하고 유연한 인프라 구축이 가능하다는 점입니다.
온디맨드(On-Demand) : 클라우드를 사용한 만큼 비용을 지불하는 방식의 요금제

온프레미스 : 데이터 센터에서 IT리소스(서버, 스토리지 등) 환경을 제공하는 것

클라우드 컴퓨팅 : IT리소스(서버, 스토리지 등)를 인터넷을 통해 빌려 사용하는 것으로 온프레미스와 같은 물리적인 컴퓨터가 아닌, 가상 컴퓨터를 대여한다는 점이 다릅니다.
장점

  • 컴퓨팅 능력의 유연한 조절
  • 온디맨드 방식의 요금 지불
  • 스냅샷을 이용해 다른 컴퓨터로 즉시 이주(miration) 가능

단점

  • 운영환경이 특정 클라우드 사업자(Vendeor)에게 종속

대표적인 클라우드 서비스의 형태
클라우드 제공자로부터 얼마만큼의 서비스를 제공받느냐에 따라 구분

  • SaaS(Software as a Service) : 서비스로 제공되는 소프트웨어, 클라우드 제공자가 당장 사용 가능한 소프트웨어를 가상화하여 제공하는 경우
  • PaaS(Platform as a Service) : 서비스로 제공되는 플랫폼, 클라우드 제공자가 데이터베이스, 개발 플랫폼까지 가상화하여 제공하는 경우
  • IaaS(Infrastructure as a Service) : 서비스로 제공되는 인프라스트럭처, 클라우드 제공자가 인프라를 가상화하여 제공하는 경우
    (AWS는 IaaS 형태)

✔ Deployment(배포)

4단계
1. Development : 로컬에서 개발 및 테스트
2. Integration : 코드 통합, 코드간 충돌(confilct) 확인
3. Staging : production과 과장 유사한 환경에서 테스트
4. Production : 서비스 출시(제공)

Development환경과 Production환경은 서로 다를 수가 있습니다.
따라서 배포(Deployment)에서 환경 설정을 코드와 분리하는 것이 중요합니다.

  • 절대 경로 'X', 상대 경로 사용
  • .properties, .yml 을 이용해 환경 변수 설정
  • 개발 환경 자체를 메타데이터로 담아서 통일 시키는 Docker와 같은 가상화 도구 사용

메타데이터

  • 생성일, 크기, 유형과 같은 정보가 담긴 데이터
  • 데이터를 설명하는 데이터

✔ EC2

Elastic Compute Cloud
AWS에서 제공하는 클라우드 컴퓨팅 서비스
AWS에서 원격으로 제어할 수 있는 가상의 컴퓨터를 한 대 빌리는 것

  • AWS에서 비용, 성능, 용량 면에서 탄력적인(Elastic) 클라우드 컴퓨터를 제공하는 것
  • AMI라는 다양한 템플릿을 제공하고 있어서 운영체제를 선택하고 구성할 수 있음

AWS에서 빌리는 컴퓨터를 Instance라고 합니다.

AMI(Amazon Machine Image)
소프트웨어 구성(운영체제, 애플리케이션 서버)이 기재된 템플릿
AWS에서 빌리는 인스턴스는 운영체제, 런타임 등이 구성된 설정을 선택할 수 있습니다.

즉, EC2 인스턴스를 생성한다는 것은 AMI를 토대로 운영체제, CPU, RAM 등이 세팅된 컴퓨터를 빌리는 것입니다.

✔ Security Group

보안 그룹
AWS EC2인스턴스의 트래픽에 대한 가상 방화벽입니다.
인바운드와 아웃바운드에 대한 규칙을 설정할 수 있습니다.

  • 인바운드(Inbound) : 인스턴스로 들어가는 트래픽 (요청)
    • 기본값 : SSH 접속 규칙만 생성
  • 아웃바운드(Outbound) : 인스턴스에서 나가는 트래픽 (응답)
    • 기본값 : 나가는 모든 트래픽 허용

✔ RDS

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

EC2에 관계형 테이터 베이스 엔진(ex. MySQL)을 설치하는 것 대신 RDS를 사용하는 이유는?

  • EC2 인스턴스에 데이터베이스 설치
    • 데이터베이스 엔진의 설치와 버전 관리, 데이터 백업등의 유지 보수를 사용자가 부담
    • 가용성과 내구성 확보 'X'
  • RDS 사용
    • 데이터 베이스 유지 보수와 관련된 일들을 RDS에서 자동 관리
    • 사용자는 초기 설정과 데이터 베이스에 저장된 데이터만 관리
    • 다양한 데이터 베이스 엔진 선택지 제공

✔ S3

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

Cloud Storage(클라우드 스토리지) : 데이터를 네트워크를 통해 타사에서 유지 관리하는 오프사이트 스토리지로 전송하여 저장할 수 있는 서비스
(ex. Google Drive, Naver MYBOX, MS Onedrive ...)

이점

  • 확장성
  • 강력한 내구성 (내구성 ↑ = 데이터 유실 가능성 ↓)
  • 강력한 가용성 (가용성 ↑ = 저장된 데이터를 정상적으로 사용할 수 있는 시간 ↑)

다양한 스토리지 클래스 제공

  • S3 Standard
    • 가장 일반적으로 사용
    • 데이터에 자주 액세스 해야할 경우 (액세스 속도 빠름, 보관 비용 높음)
  • S3 Glacier
    • 데이터 장기 보관 목적 (액세스 속도 느림, 보관 비용 저렴)

정적 웹 사이트 호스팅 가능

  • 정적 파일
    서버의 개입 없이 생성된 파일
  • 동적 파일
    클라이언트가 서버에 요청을 보내고 서버가 요청에 맞춰 생성한 파일
  • 호스팅
    서버의 한 공간을 빌려주어 웹사이트의 배포, 운영이 가능하게 하는 서비스

버킷

  • S3에서 버킷이 정적 웹 사이트를 배포할 수 있는 공간 제공
  • 파일을 저장하는 최상위 디렉토리
  • 버킷의 이름은 속한 리전에서 유일해야 합니다.

객체

  • S3 버킷에 담기는 파일을 객체라고 합니다.
  • 객체는 파일과 메타 데이터로 구성
  • 파일은 키(고유값, 식별자 역할)-값 페어 형식으로 데이터 저장
  • 모든 객체는 고유한 URL 주소를 가짐
    • http://[버킷이름].S3.amazonaws.com/[객체의키]

정적 웹 사이트 호스팅 과정

  • 정적 웹 페이지 빌드
  • 버킷 생성 및 정적 웹 사이트 호스팅 용으로 설정
  • 빌드된 정적 웹페이지 업로드
  • 퍼블릭 액세스 차단 해제 및 정책 생성

✔ Region

AWS에서 클라우드 서비스를 제공하기 위해서 운영하는 물리적인 서버의 위치

  • 가용 영역(Availavility Zone) : 각 리전 안에 존재하는 데이터 센터(IDC)
    • 각 가용 영역은 개별적인 위치에 떨어져서 존재
    • 다른 가용 영역에 서로 백업 (가용성 & 내구성 ↑↑↑)

✔ 3 Tier-Architecture 배포 전략

Client, Server, Database를 어떻게 배포할 것인가?

Client

  • S3를 이용해서 사용자에게 Client application을 배포
  • EC3 인스턴스 사용 'X', client app을 정적 파일로 빌드하여 배포(S3)
  • CDN서비스(CloudFront)를 통해 각 데이터 센터에 데이터를 분산시켜 저장해 뒀다가 가까운 지역에서 데이터를 주는 방식으로 더 빠른 배포 가능

Server

  • EC2서비스(가상의 PC)를 통해 서버를 구성하고 서비스를 배포

Database

  • RDS서비스를 통해 EC2를 통해 배포된 Server app의 데이터를 저장, 제공하는 DB 배포

✔ build

빌드란?
소스 코드를 실행 가능한 번들로 변환하는 컴파일 과정을 의미합니다.
코드의 불필요한 데이터를 없애고, 통합 및 압축하여 배포하기 최적화된 상태를 만드는 것으로 데이터의 용량이 줄어들고 웹 사이트의 로딩 속도가 빨라집니다.

수정사항이 있을 시 이전 빌드를 삭제하고 다시 빌드를 진행한 후에 서버를 다시 실행해야 합니다.

  • 이전 빌드 삭제
$ ./gradlew clean
  • 빌드 진행
$ ./gradlew build
  • 서버 실행
    • 빌드 완료 후, 생성된 jar파일을 이용해서 실행
    • 빌드를 통해 생성된 jar파일이 있는 디렉토리 경로로 이동
      • 디렉토리 이동 정도에 따라 [build/libs/]를 생략할 수도 있다.
$ java -jar [build/libs/]TestServer-0.0.1-SNAPSHOT.jar

✔ DNS

도메인을 통해 서비스에 접속
Route53 이용

profile
개인 공부 기록장

0개의 댓글