인터넷을 통해 가상화 된 컴퓨터의 IT리소스를 제공하는 것.
(클라우드 컴퓨팅이 제공하는 IT 리소스의 예 : cpu, 메모리, storage, 네트워크 등등)
인터넷 기반 컴퓨팅의 일종으로 정보를 자신의 컴퓨더가 아닌 인터넷에 연결된 다른 컴퓨터로 처리하는 기술
클라이언트가 요청하면 서버에서 응답
문제 : 고객이 많을 수록 서버가 매우 많이 필요
capacity > 실제사용량 = 자원낭비
capacity < 실제사용량 = 고객 불만족
→ 클라우드를 도입하면 computing resource에 대한 탄력적인 대응 가능
computing resource on demand
컴퓨팅 자원을 원할 때, 원하는 만큼 사용 → 사용한 만큼 요금 지불
클라우드를 사용하면 대규모 서버 확장 가능
이미 대기업 클라우드는 대규모 서버, 컴퓨칭 자원을 미리 구축
사용한 만큼만지불
초기비용이 낮음
서버를 직접 구매, 관리 → 해당 전문가 필수 (서버 , 네트워크 , 보안 등등)
분류 기준
모든 과정을 다 알아서 해야하는 환경
자사가 알아서 서버 등을 구축하는 것
근데 데이터 센터에 서버를 두기만 해도 온프레미스이다. → 소유권이 자사에 있기 때문
장점 : 자사에서 자유롭게 설계 운영이 가능
단점 : 서버 구성을 빈번하게 변경해야할 수도 있고, 이를 대비해 숙련된 기술자도 필요, 비용이 많이 듬
IT 기본 자원만 제공, 새로 os가 설치되지 않은 컴퓨터를 하나 구매한다고 생각하면 됨
infrastructure = server, storage, network 등등
→ 서비스 개발이 신속하고 용이!!!
Iaas + middleware(mysql이나 오라클 같은 RDBMS등) + runtime (자바를 쓰기위한 JDK, 파이썬 인터프리터등 프로그램이 작동하는 환경)
개발자를 대상으로 함
개발자가 코드를 개발해서 올리면 다른거 신경 쓰지 않고 고객에게 서비스를 할 수 있는 형태
ex) AWS Elastic Beanstalk, 구글 클라우드의 Google app Engine
미들과 소프트웨어의 합성어 → 복잡한 분산 시스템에서 이기종간에 통신 및 데이터 관리 등 가능하게 통합 관리하는 역할
데이터 관리, 애플리케이션 서비스, 메시징, 인증 및 API 관리는 주로 미들웨어를 통해 처리됨
쉽게 말해, API는 프로그램들이 서로 상호작용하는 것을 도와주는 매개체
미들웨어가 클라우드 컴퓨팅에서 중요한 이유
근데 PaaS는 다른 Paas환경에서 만든 응용서비스들 사이에는 상호응용성이나 이식성이 매우 부족해서 벤더에 종속될 가능성이 큼.
모든 기능이 동작하는 sw 제공
ex) 네이버 클라우드, 구글 드라이브, 네이버 메일, dropbox
SaaS서비스를 제공받으면 하단의 PaaS또한 동일 제공자에게 서비스를 받는것임.
backend as a service, function as a service, serverless
클라우드를 실제 어떤 형태로 구축하는지
public cloud
외부에 클라우드가 존재하고 불특정 다수의 사용자들이 그 클라우드를 사용
기본적으로 분산 데이터 센터 인프라의 일부분을 임대
cloud 서비스를 필요로 하는 사용자 누구든지 사용 가능
사용한 만큼만 비용을 지불
private cloud
특정 기관이나 기업 내부에서만 사용가능 = 전용 클라우드 인프라를 설정하는 경우
구축 난이도는 높은데 보안/법적 규제 이유로 사용 → 데이터와 애플리케이션이 방화벽 뒤에 유지하고 그 특정 기업에서만 액세스 가능
public/private cloud를 조합해서 사용하는 형태
온프레미스와 private cloud의 차이점..?
서버와 네트워크 자원등을 제공하는 시설
랙 마운트형 서버로 랙 안의 층층마다 다 하나의 서버→ 공간 효율
클라우드의 토대
발열관리가 매우 중요
데이터센터가 구축된 도시(또는 국가)
전세계 데이터 센터의 자원을 생성 가능
근데 Region이 최대한 고객과 가까워야함. 멀수록 서비스 성능이 낮아지는것
고가용성을 위한 Region 내 분산된 데이터 센터
하나의 region은 두개이상의 Availability Zone으로 구성됨.
가용영역간의 연결은 매우 빠른 전용 네트워크로 연결
이 각각의 빌딩들이 AZ 이고 데이터 센터인것
availability(가용성) : 시스템이 정상적으로 가동되는 상태
단일 AZ를 사용하면 AZ에서 문제가 생기면 서비스는 복구 될때까지 접속 불가 → 가용성이 낮음
다순의 AZ에 분산 → 가용성이 높음
SW기술로 가상의 machine을 생성하는 기술
하나의 하드웨어를 각각의 가상머신으로 쪼갤 수 있음
os : 시스템 하드웨어아 자원과 소프트웨어 자원을 운영 관리하는 프로그램
ex) window, linux, macox …
특권명령 : 시스템 요소들과 소통 할 수 있는 명령 → os만 가능
os는 특권명령때문에 하나의 하드웨어 시스템당 하나밖에 안돌아감
일바프로그램은 특권 명령이 필요 없어서 많은 프로그램을 동시에 수행 가능
가상화의 역사
1세대 : 완전 가상화
CPU, 하드디스크 등 모든 시스템 요소가 에뮬레이터 안에서 돌아감
*에뮬레이터 : 한 컴퓨터의 시스템이 다른 시스템과 동일하게 작동하도록 모방하는 장치 또는 프로그램. 그 프로그램이 있는 것처럼
모든게 프로그램이라고 생각하면 됨
→ 엄청 느림
2세대 : Paravirtualization
Guest OS(메인 OS가 아닌애들)는 하이퍼바이저와 통신
*하이퍼바이저 : OS와 하드웨어 사이에 존재하는 일종의 가상화 매니저
근데 속도는 빨라졌는데 몇몇 요소들은 여전히 에뮬레이터 필요해
3세대 : HVM
하드웨어가 직접 가상화를 지원
분산처리란 기기 여러대에 분산하여 처리하는 방법
서버 한대로는 처리할 수 없을 만큼 접속이 많이 발생하는 경우 → 같은 기능이나 정보를 가진 서버 여러 대에 분배하여 처리하면 서버 1대의 부담을 줄이고 서버가 응답할 수 없거나 다운되는 사태를 마을 수 있다.
서버 여러대에 분배하는 장치를 로드 밸런서(LB)라고 한다.
로드 밸런서는 각 서버를 확인하여 부하를 분산.
ex) AWS는 로드밸런서로 ELB를 제공
*가상화나 분산처리는 이중화에도 사용된다.
이중화는 시스템이나 서버에 문제가 생겨도 계속 가동화 할 수 있도록 조치하는 것.
고려해야할 점
클라우드 환경으로부터 나중에 복귀해야하는 경우의 대비책
이렇게 유익한 내용을 공유해주셔서 감사합니다.