클라우드

mingg·2023년 7월 19일
0

클라우드

목록 보기
1/4
post-thumbnail

클라우드 컴퓨팅이란?

인터넷을 통해 가상화 된 컴퓨터의 IT리소스를 제공하는 것.

(클라우드 컴퓨팅이 제공하는 IT 리소스의 예 : cpu, 메모리, storage, 네트워크 등등)

인터넷 기반 컴퓨팅의 일종으로 정보를 자신의 컴퓨더가 아닌 인터넷에 연결된 다른 컴퓨터로 처리하는 기술

클라우드의 가장 큰 특징

  • 컴퓨팅 자원을 원할 때, 원하는 만큼 사용 → 사용한 만큼 요금 지불

클라이언트가 요청하면 서버에서 응답

문제 : 고객이 많을 수록 서버가 매우 많이 필요

capacity > 실제사용량 = 자원낭비

capacity < 실제사용량 = 고객 불만족

→ 클라우드를 도입하면 computing resource에 대한 탄력적인 대응 가능

  • On Demand

computing resource on demand

컴퓨팅 자원을 원할 때, 원하는 만큼 사용 → 사용한 만큼 요금 지불

  • 대규모 확장성

클라우드를 사용하면 대규모 서버 확장 가능

이미 대기업 클라우드는 대규모 서버, 컴퓨칭 자원을 미리 구축

  • 종량제 과금

사용한 만큼만지불

초기비용이 낮음

  • 관리 편의성

서버를 직접 구매, 관리 → 해당 전문가 필수 (서버 , 네트워크 , 보안 등등)

클라우드 컴퓨팅의 종류

분류 기준

  1. service model
  2. deployment model
  • Service model

  1. On Premise

모든 과정을 다 알아서 해야하는 환경

자사가 알아서 서버 등을 구축하는 것

근데 데이터 센터에 서버를 두기만 해도 온프레미스이다. → 소유권이 자사에 있기 때문

장점 : 자사에서 자유롭게 설계 운영이 가능

단점 : 서버 구성을 빈번하게 변경해야할 수도 있고, 이를 대비해 숙련된 기술자도 필요, 비용이 많이 듬

  1. IaaS (Infra as a Service) - 컴퓨터를 제공

IT 기본 자원만 제공, 새로 os가 설치되지 않은 컴퓨터를 하나 구매한다고 생각하면 됨

infrastructure = server, storage, network 등등

  1. PaaS (Platform as a Service) - code만 개발해서 배포하면 서비스가 되는 환경 제공

→ 서비스 개발이 신속하고 용이!!!

Iaas + middleware(mysql이나 오라클 같은 RDBMS등) + runtime (자바를 쓰기위한 JDK, 파이썬 인터프리터등 프로그램이 작동하는 환경)

  • RDBMS : 관계형 데이터베이스를 생성하고 수정하고 관리할 수 있는 소프트웨어

개발자를 대상으로 함

개발자가 코드를 개발해서 올리면 다른거 신경 쓰지 않고 고객에게 서비스를 할 수 있는 형태

ex) AWS Elastic Beanstalk, 구글 클라우드의 Google app Engine

  • 미들웨어 : 공통 서비스 및 기능을 애플리케이션에 제공하는 소프트웨어

미들과 소프트웨어의 합성어 → 복잡한 분산 시스템에서 이기종간에 통신 및 데이터 관리 등 가능하게 통합 관리하는 역할

데이터 관리, 애플리케이션 서비스, 메시징, 인증 및 API 관리는 주로 미들웨어를 통해 처리됨

  • api : API는 Application Programing Interface라는 용어로써, 어떠한 응용프로그램에서 데이터를 주고 받기 위한 방법을 의미합니다. 어떤 특정 사이트에서 특정 데이터를 공유할 경우 어떠한 방식으로 정보를 요청해야 하는지, 그리고 어떠한 데이터를 제공 받을 수 있을지에 대한 규격들을 API라고 한다.

쉽게 말해, API는 프로그램들이 서로 상호작용하는 것을 도와주는 매개체

미들웨어가 클라우드 컴퓨팅에서 중요한 이유

  1. 고도로 분산된 플랫폼 전반에서 원활하고 일관되게 작동하는 애플리케이션 환경을 지원
  2. 한 곳에서 구축하고 다른 곳에 배포할 수 있으며, 다른곳에서도 동일하게 작용

근데 PaaS는 다른 Paas환경에서 만든 응용서비스들 사이에는 상호응용성이나 이식성이 매우 부족해서 벤더에 종속될 가능성이 큼.

  1. SaaS (SW as a Service) - 돈만 내면 뭐든 다 해주는 환경

모든 기능이 동작하는 sw 제공

ex) 네이버 클라우드, 구글 드라이브, 네이버 메일, dropbox

SaaS서비스를 제공받으면 하단의 PaaS또한 동일 제공자에게 서비스를 받는것임.

  1. 이 외 다른 것들

backend as a service, function as a service, serverless

  • deployment model

클라우드를 실제 어떤 형태로 구축하는지

  1. public cloud

    외부에 클라우드가 존재하고 불특정 다수의 사용자들이 그 클라우드를 사용

    기본적으로 분산 데이터 센터 인프라의 일부분을 임대

    cloud 서비스를 필요로 하는 사용자 누구든지 사용 가능

    사용한 만큼만 비용을 지불

  2. private cloud

특정 기관이나 기업 내부에서만 사용가능 = 전용 클라우드 인프라를 설정하는 경우

구축 난이도는 높은데 보안/법적 규제 이유로 사용 → 데이터와 애플리케이션이 방화벽 뒤에 유지하고 그 특정 기업에서만 액세스 가능

  1. hybrid cloud

public/private cloud를 조합해서 사용하는 형태

  • 보안이 중요한 시스템은 private, 그 외 시스템은 public
  • private을 주로 사용 하되 예상치 못한 트래픽이 몰리면 public으로 확장
  1. community cloud

온프레미스와 private cloud의 차이점..?

클라우드 용어

  • Data Center

서버와 네트워크 자원등을 제공하는 시설

랙 마운트형 서버로 랙 안의 층층마다 다 하나의 서버→ 공간 효율

클라우드의 토대

발열관리가 매우 중요

  • Region

데이터센터가 구축된 도시(또는 국가)

전세계 데이터 센터의 자원을 생성 가능

근데 Region이 최대한 고객과 가까워야함. 멀수록 서비스 성능이 낮아지는것

  • Availability Zone

고가용성을 위한 Region 내 분산된 데이터 센터

하나의 region은 두개이상의 Availability Zone으로 구성됨.

가용영역간의 연결은 매우 빠른 전용 네트워크로 연결

이 각각의 빌딩들이 AZ 이고 데이터 센터인것

availability(가용성) : 시스템이 정상적으로 가동되는 상태

단일 AZ를 사용하면 AZ에서 문제가 생기면 서비스는 복구 될때까지 접속 불가 → 가용성이 낮음

다순의 AZ에 분산 → 가용성이 높음

  • Virtualization

SW기술로 가상의 machine을 생성하는 기술

하나의 하드웨어를 각각의 가상머신으로 쪼갤 수 있음

os : 시스템 하드웨어아 자원과 소프트웨어 자원을 운영 관리하는 프로그램

ex) window, linux, macox …

특권명령 : 시스템 요소들과 소통 할 수 있는 명령 → os만 가능

os는 특권명령때문에 하나의 하드웨어 시스템당 하나밖에 안돌아감

일바프로그램은 특권 명령이 필요 없어서 많은 프로그램을 동시에 수행 가능

가상화의 역사

1세대 : 완전 가상화

CPU, 하드디스크 등 모든 시스템 요소가 에뮬레이터 안에서 돌아감

*에뮬레이터 : 한 컴퓨터의 시스템이 다른 시스템과 동일하게 작동하도록 모방하는 장치 또는 프로그램. 그 프로그램이 있는 것처럼

모든게 프로그램이라고 생각하면 됨

→ 엄청 느림

2세대 : Paravirtualization

Guest OS(메인 OS가 아닌애들)는 하이퍼바이저와 통신

*하이퍼바이저 : OS와 하드웨어 사이에 존재하는 일종의 가상화 매니저

근데 속도는 빨라졌는데 몇몇 요소들은 여전히 에뮬레이터 필요해

3세대 : HVM

하드웨어가 직접 가상화를 지원

  • 분산처리

분산처리란 기기 여러대에 분산하여 처리하는 방법

서버 한대로는 처리할 수 없을 만큼 접속이 많이 발생하는 경우 → 같은 기능이나 정보를 가진 서버 여러 대에 분배하여 처리하면 서버 1대의 부담을 줄이고 서버가 응답할 수 없거나 다운되는 사태를 마을 수 있다.

서버 여러대에 분배하는 장치를 로드 밸런서(LB)라고 한다.

로드 밸런서는 각 서버를 확인하여 부하를 분산.

ex) AWS는 로드밸런서로 ELB를 제공

*가상화나 분산처리는 이중화에도 사용된다.

이중화는 시스템이나 서버에 문제가 생겨도 계속 가동화 할 수 있도록 조치하는 것.

고려해야할 점

클라우드 환경으로부터 나중에 복귀해야하는 경우의 대비책

  1. 이식 받는 곳의 인프라 위에 동일한 개발 환경을 만드는 방법
  2. 가상머신의 시스템 이미지를 복사하여 이식할 곳의 인프라 위에 설치
profile
혼자 이것저것 해보는걸 즐깁니다..!

1개의 댓글

comment-user-thumbnail
2023년 7월 19일

이렇게 유익한 내용을 공유해주셔서 감사합니다.

답글 달기