본문 바로가기

CS지식

클라우드 ( AWS ) 지식

반응형

서버 간 네트워크 연결

  • 네트워크란?컴퓨터 간에 물리적으로 케이블을 통해 연결한다.
  • 컴퓨터와 컴퓨터를 연결하는 것을 의미한다.
  • 데이터센터 내에 위치한 서버들은 모두 서로간에 연결되어있으며, 외부와 연결할 수 있는 통로가 존재한다.

데이터센터(Internet Data Center)와 역할

  • IDC 회사
  • 데이터센터 내 공간을 임대해주는 역할을 한다. 즉 서버 일부분을 임대해준다. 그리고 서버가 외부적인 요인에 의해 손상되지 않도록 네트워크를 관리하고 항온,항습 및 전력관리 물리적인 손상이 없도록 보안관리를 한다**.**
  • IT 회사
  • IDC회사로부터 데이터센터의 서버를 임차한다. 임차한 서버컴퓨터에 서버를 구매, 설치, 관리한다. 또한 서버의 OS 및 소프트웨어를 관리한다.

온프레미스(On-premise) - 기존 자체 설비

기업의 서버를 자체적으로 보유한 전산실 서버에 직접 설치하여 운영하는 방식

  • AWS와 같은 클라우드 컴퓨팅 기술이 나오기 이전에 기업의 일반적인 인프라 구축 방식
  • 장점 및 단점
    • 장점 - 기업의 비지니스 정보를 보안성 높게 관리 가능
    • 단점 - 시스템을 구축하는데 있어서 많은 시간과 비용이 소모 됨
  • 온프레미스(On-premise) ↔ 오프프레미스(Off-premise): 클라우드 방식의 서비스

AWS(Amazon Web Server)

AWS의 역할

  • AWS
  • 물리 서버는 AWS가 구매 및 관리하고 가상화 기술을 통해서 웹상에서 고객에게 대여할 수 있는 서비스를 제공한다. 이와 관련된 물리적 환경과 가상화 계층은 모두 AWS가 관리한다.

 

  • IT 회사
  • AWS로부터 물리 서버에서 일정 리소스(CPU/Memory/Disk)를 가상화된 형태로 대여받으며, 대여한 가상화 서버에 설치된 OS에 대한 패치 및 설치 소프트웨어를 관리한다.

서버 가상화(Server Virtualization)

물리적 서버에 가상머신을 통해 사용자가 원하는 때에 원하는 만큼의 서버를 할당받을 수 있음

  • 사용자가 사용할 서버를 할당받으려고 할 때, 엔지니어가 직접 서버를 할당하는 것이 아니다.
  • 서버 가상화 기술을 통해 물리 서버에서 가상머신을 실행하여 사용자에게 제공한다.
  • 따라서 사용자는 물리 서버를 사용하는 것과 차이를 알 수 없다.

※ 하이퍼바이저 : 가상머신(VM)을 생성하고 실행하는 프로세스

 


컴퓨팅 서비스(Compute Services)

  • AWS 컴퓨팅 서비스란?
    • 내가 만든 프로그램을 실행시킬 수 있는 환경을 제공하는 서비스
      • 기존 자체설비 (On-Premise) 환경에서는 그것이 물리 서버를 의미
    • AWS에서는 가상 머신을 이용해 가상 서버 환경을 제공, 물리 서버와 사용상 차이가 없다
    • 가장 대표적인 것이 AWS EC2(Elastic Cloud Compute) 서비스이다

 


AWS EC2 (Elastic Cloud Compute)

  • 기존 서버에서 실행하는 것과 동일한 유형의 애플리케이션을 호스팅할 수 있는 가상 머신
  • 사용자가 할당 받은 가상 머신 한 대를 인스턴스(Instance)라고 함
  • 인스턴스 별로 사용자가 원하는 애플리케이션을 실행

EC2

  • 서버의 성능을 사용자가 선택하는 것이 가능하며, 성능이 높은 서버일수록 가격이 비싸다
  • 성능의 기준은 vCPU, Memory, Storage, Network로 구분이가능
  • 사용목적에 따라 미리 정해진 규격을 인스턴스 타입으로 제공
  • 사용자는 EC2 인스턴스 생성 과정에서 인스턴스 타입을 선택

AWS EC2 Instance Type

  • 규격(Specification)에 따른 성능 차이
    • vCPU(EC2 인스턴스에 할당된 가상 CPU 코어 개수)
      • 가상 CPU 코어 개수는 물리 CPU 코어의 쓰레드(Thread) 개수를 의미함
      • e.g.) 물리 CPU 코어가 3이고, 코어 당 2개의 쓰레드를 제공하면, vCPU는 6
      • 개수가 높을수록 동시 연산 처리 성능이 향상
    • Memory
      • RAM 용량을 나타내며, 클수록 연산 처리에 유리
    • Storage
      • EC2 인스턴스에서 사용할 수 있는 디스크 볼륨의 용량과 처리량(Throughput), IOPS(Input/Output Per Seconds)을 나타냄
      • 처리량: 초당 데이터 전송량
      • IOPS: 초당 I/O 연산 수행 횟수(I/O 연산이란 디스크에 대한 읽기/쓰기 작업을 나타냄)
      • 처리량 = IOPS X 연산당 데이터 전송 크기
      • ⇒ e.g.) 1,000 X 4 Kbytes = 4 Mbytes / Seconds
      • 스토리지 유형(SSD, HDD 등)에 따라 성능과 비용에 차이가 있으며, 기본적으로 최대 IOPS와 처리량 제한
        • 스토리지 중 EBS 범용 SSD 타입의 경우 기본적으로 3,000 IOPS 및 125Mbytes/s 성능을 보장
    • Network
      • 네트워크 대역폭(Bandwidth)을 결정
        • 초당 얼마의 데이터를 전송할 수 있는가를 결정하게 됨
        • Gbps(Giga bit per seconds) 단위로 나타냄
        • 더 빠른 네트워크 성능을 가진 인스턴스일수록 비용이 높아짐

EC2 스토리지 선택사항

EBS(Elastic Block Store)와 인스턴스 스토어(Instance Store)

  • 인스턴스 스토어는 EC2 인스턴스가 동작하는 물리 서버에 직접 연결된 물리 디스크
  • EBS는 초저지연 네트워크를 통해 연결된 네트워크 기반 가상 스토리지 서비스

EBS ( Elastic Block Store )

  • 데이터 영구 보관
  • EBS 볼륨에 문제 발생 시 복구 가능
  • 스냅샷(Snapshot) 기능과 특정 시점 복구 기능(Point-in-time Recovery)
  • EBS 볼륨 내 데이터 암호화 가능
  • 탄력적 볼륨 지원(크기조정, 성능 조정 가능)

Instance Store

  • 데이터 영구 보관 불가
    • 중지(Stop) 후 시작 시 데이터 삭제
    • 종료(Terminate) 시 모든 데이터 삭제
    • 물리 디스크 문제 발생 시 복구 불가
  • EBS에 비해 빠른 성능

ELB(Elastic Load Balancing)

로드밸런싱(Load Balancing)

  • 네트워크 트래픽을 하나 이상의 서버나 장비로 분산하기 위해 사용되는 기술
  • S/W나 H/W를 통해 로드밸런싱을 수행할 수 있음
  • 서비스 사용자의 요청을 서버로 분산해서 전달

ELB(Elastic Load Balancing) 유형

  • ALB(Application Load Balancer)
    1. OSI 7 Layer 중 Application Layer에 속하는 패킷을 처리할 수 있음
    2. HTTP/HTTPS 프로토콜
  • NLB(Network Load Balancer)
    1. OSI 7 Layer 중 Transport Layer에 속하는 패킷을 처리할 수 있음
    2. TCP 프로토콜
  • CLB(Classic Load Balancer)
    1. OSI 7 Layer 중 Network 및 Transport Layer에 속하는 패킷을 처리할 수 있음
    2. 과거에 사용되던 방식으로 호환성을 위해 유지되는 상태

ELB(Elastic Load Balancing) 옵션

  • 인터넷 트래픽용(Internet-Facing)
    • 인터넷을 통해 ELB에 접근하는 경우
    • → 즉, Public IP를 가진 클라이언트에서 접근하는 경우
    • 단, ELB가 Private IP:Public IP 쌍을 가지므로, Privarte IP 클라이언트에서도 사용 가능하다.
  • 내부 내트워크 트래픽용
    • 내부 네트워크에서 ELB에 접근하는 경우
    • → 즉, Private IP를 가진 클라이언트에서 접근하는경우
    • 이 경우는 주로 전용선을 통해 인터넷을 거치지 않고 VPC에 연결되는 경우나 혹은 VPN을 통해 Private IP를 이용해서 통신하는 경우에 활용된다.

ELB(Elastic Load Balancing) 동작 특징

  • 상태 확인(Health Check) 서비스
    • ELB에서 연결할 서버들의 상태를 상시 체크
    • 비정상 상태의 서버로 트래픽을 전달하지 않음
    • ELB에서 서버 측에 요청을 전달해서 응답을 받음으로써 처리되므로, 서버의 보안그룹에서 해당 요청을 받을 수 있도록 지정된 포트에 대해 접근을 허용해야 함
  • 고가용성(High Availability) 지원 - HA 환경
    • ELB를 서로 다른 가용 영역에 해당하는 서브넷에 생성
    • 특정 가용 영역에 문제가 발생하더라도 다른 가용 영역의 ELB가 트래픽을 처리

클라우드 개념 3가지

 

iaas : Infrastructure-as-a-Service

클라우드

💡 IaaS 서비스 제공 업체(CSP)는 인터넷을 통해 인프라 자원을 제공

* 인프라 자원: 네트워크, 스토리지(저장 공간), 서버(+가상화)

*CSP 란 Cloud Service Provider - 클라우드 서비스 공급자 ( 예 : AWS )

 

사용자

💡 IaaS 사용자는 클라우드 콘솔 또는 API를 통해 인프라를 제어하고, 애플리케이션, 데이터, 운영체제(O/S), 미들웨어 및 런타임을 직접 처리

 


paas : Platform-as-a-Service

클라우드

💡 iaas 서비스와 마찬가지로 핵심 인프라를 호스팅하고, 운영체제( O/S )와 미들웨어까지 제공

*미들웨어 : 운영 체제와 애플리케이션 사이에서 운영 체제가 제공하지 않는 기능을 제공하는 소프트웨어

예) WAS ( 웹 어플리케이션 서버 )

 

사용자

💡 사용자는 애플리케이션 개발/배포, 서비스 관리를 담당

 


saas : Software-as-a-Service

클라우드

💡 CSP가 인프라(IaaS)와 미들웨어(PaaS) 뿐 아니라 애플리케이션 형태로 완전한 소프트웨어를 제공

  • 애플리케이션: 응용 프로그램, 최종 사용자에게 제공되는 완전한 소프트웨어 솔루션

 

사용자

💡 사용자는 웹 브라우저 또는 앱을 통해 소프트웨어에 접속


로드벨런서 ( Elastic Load Balancer ) 언제 사용하는가?

웹 서비스에 과도한 부하로 정상적인 서비스가 어려울 수 있으므로,

이를 회피하기 위해 여 러 대의 서버에 동일한 서비스를 운영할 수 있도록 도와주는

ELB(Elastic Load Balancer) 를 이용해 부하를 분산해서 많은 사용자가 동시에 서비스를 사용할 수 있게 된다.

 

로드 밸런싱(Load Balancing)

1. 네트워크 트래픽을 하나 이상의 서버나 장비로 분산하기 위해 사용되는 기술

2. S/W나 H/W를 통해 로드밸런싱을 수행할 수 있음

3. 서비스 사용자의 요청을 서버로 분산해서 전달


웹트래픽 부하 발생 시 해결 방법

Scale Up ( 서버 자체의 성능을 확장 )

  • CPU, RAM, Disk 성능, Network 대역폭 등 증가
  • 비싸고 성능 좋은 서버로 변경

비유하자면 CPU가 i3인 컴퓨터를 i7으로 업그레이드하는 것과 같다.

 

 

Scale-out ( 로드 밸런싱과 함께 활용 ) → 자동 확장 ( Auto Scaling )

  • 부하를 처리할 서버 대수를 늘림
  • 저렴한 서버 여러 대를 이용해 더 많은 부하를 감당

CPU가 i3인 컴퓨터를 여러 대 추가 구입해 운영하는 것 에 비유할 수 있다.

=> 이 경우, 여러 대의 서버로 트래픽을 균등하게 분산해주는 로드밸런싱이 반드시 필요하다!!

 

 


aws에서 로드벨런싱 하는 방법 4가지

1. Round Robin

다음 순차적으로 서버를 선택하는 방법

 

2. Hash ( Sticky Session )

클라이언트가 서버와 한 번 연결되면, 그 이후에는 항상 같은 서버로 연결하는 방식

 

3. Least Connection

연결 수가 가장 적은 서버를 선택

 

4. 응답 시간

응답속도( ping , ms )가 가장 빠른 서버를 선택


RDS 서비스 ( Relational Database Service )

AWS에서 제공하는 완전 관리형 관계형 데이터베이스

  • 클라우드 환경에서 관계형 데이터베이스를 직접 설치 할 필요 없이 몇가지 설정만으로
  • 데이터베이스가 실행되는 서버를 생성할 수 있는 서비스
  • DB가 설치된 RDS 전용 가상서버 ( EC2와 동일 ) 를 생성

RDS 이용 시 고가용성(High Availability) 확보 방법

Multi-AZ RDS 인스턴스를 추가로 생성하여 원래 RDS 인스턴스에 문제 발생 시 대체해서 사용

과정

  1. 사용 중인 RDS 인스턴스에 문제 발생
  2. 정상적인 RDS 인스턴스로 연결
  3. 비정상 RDS 인스턴스는 문제 처리 후 보조 인스턴스로 전환

( 주 인스턴스를 Primary, 보조 인스턴스를 Standby 라고함 )

  1. 서로 다른 가용영역(AZ)에 RDS 인스턴스를 배치하여,
  2. 특정 가용영역에 문제 발생 시에도 서비스 정상 운영 가능 → Multi-AZ의 의미

자동 확장 그룹(Auto Scaling Group)

  • 확장/축소에 사용될 EC2 인스턴스의 논리적 집합
  • 자동 확장에 의해 늘어나거나 줄어든 대상들의 집합을 의미

자동 확장 그룹(Auto Scaling Group)

– 인스턴스 개수 조정 옵션

  1. 항상 지정된 수의 인스턴스 유지
  • 자동 확장 그룹에서 지정한 인스턴스 개수를 유지

• 2. 수동 조정

  • 사용자가 직접 그룹의 인스턴스 개수를 조정

• 3. 일정 기반 조정

  • 특정 시간대에 인스턴스를 확장하고, 그 시간대가 지나면 다시 인스턴스를 축소

• 4. 온디맨드 기반 조정

  • EC2 지표(Metric)을 기반으로 조정
  • 예시) 평균 CPU 사용률이 80% 이상일 때, EC2 인스턴스를 늘림

 

반응형

'CS지식' 카테고리의 다른 글

[Java] 가비지 컬렉션 ( Garbage Collection ) 개념 및 동작  (1) 2024.08.05
[Java] 디자인패턴  (2) 2024.08.04
운영체제와 WAS 정리  (1) 2024.08.02
네트워크 CS지식  (2) 2024.08.01
동시성 제어 - 뮤텍스와 세마포어  (3) 2024.07.31