클라우드: 인터넷을 통해 연결된 서버, 스토리지, 네트워크, 소프트웨어, 서비스 등의 IT 자원들.
클라우드 컴퓨팅: 클라우드를 기반으로 하는 IT 서비스의 개발과, 제공과, 이용.
- 1960년대 – 메인 프레임 (Main Frame)
• 대용량 데이터 처리의 필요성, 대규모 컴퓨팅 시스템의 필요성, 중앙 집중적인 컴퓨팅 모델의 필요성,
안정성과 신뢰성의 요구
• 고성능 대형 컴퓨터 시스템
• 각 역할
- 메인프레임은 컴퓨팅(연산, 저장)만 수행
- 단말기(터미널)은 입/출력만 수행
• 단점
• 비용(고가)
• 확장성 및 유연성 부족
-> 분산 컴퓨팅 기술(여러 대의 컴퓨터가 네트워크를 통해 연결되어 작업을 분산 처리하는 기술)의 발전
- . 1980~90년대 – 클라이언트-서버 구조
• 메인 프레임 기반의 시스템 환경이 PC 기반(with 운영체제)의 클라이언트-서버 환경으로 전환됨.
• 메인 프레임의 기능 일부를 클라이언트 단말에서 처리
• 분산 처리(distributed computing)
• 확장성: 서버와 클라이언트 간의 연결을 쉽게 추가하거나 제거
• 호환성: 표준화된 다양한 인터넷 프로토콜과 호환성이 뛰어남
• 자원 공유: 다수의 클라이언트가 서버에서 제공하는 리소스를 공유
• 사용자가 로컬에 데이터를 저장하지 않고, 서버에서 데이터를 관리함으로써 데이터 일관성이 보장
-> 서버 측에서는 사용자 수가 늘어날수록 리소스 부족 현상 발생
-> 서버 자원을 추가로 구매? -> 리소스를 적극적으로 관리하고 분배하는 작업이 필요
- 2000년대 초 – 가상화 기술
• 이전에는 한 대의 서버에서 하나의 운영체제(OS)와 하나의 응용프로그램만 실행할 수 있었음.
• 서버 가상화, 네트워크 가상화 등의 등장
• 서버 가상화: 하나의 물리적인 서버를 여러 대의 가상 서버로 분할하는 기술
• 하이퍼바이저(hypervisor): 물리적인 서버와 가상 서버 간의 인터페이스 역할
• 네트워크 가상화: 가상 네트워크를 생성하여 하나의 물리적인 네트워크를 여러 개의 논리적인 가상
네트워크로 분할하는 기술
• VLAN, VXLAN 등
- 2006년 –Amazon Web Services (AWS)의 등장
• 인프라 확장과 비용 절감의 필요성: 아마존은 기존의 전자상거래 사이트 운영에 있어서, 서버 용량이 부
족하거나 트래픽이 급증할 경우 즉각 대응할 수 있는 유연한 인프라 구축이 필요함
• 아마존닷컴의 자회사인 아마존 웹 서비스(Amazon Web Services LLC)가 AWS를 시작함
• 클라우드 컴퓨팅이 대중화되기 시작
• 사용자가 필요한 만큼 컴퓨팅 리소스를 빌리는 것이 가능
• 2008년 – 구글의 Google Cloud Platform(GCP), 2009년 – 마이크로소프트의 Azure 등
- . 향후 – 엣지 컴퓨팅 (Edge Computing)
• 클라우드와 가까운 지역에 컴퓨팅 자원을 배치
• 배치된 자원들은 기존 클라우드와 함께 데이터 처리를 수행
• 데이터가 전송되고 처리되는 시간을 단축
• 빠른 응답성과 최적화된 데이터 처리
• E.g. IoT 센서에서 수집한 데이터를 실시간으로 분석
이 클라우드 모델은 다섯 가지의 필수 특성과 세 개의 서비스 모델 그리고 네 가지 배포 모델로 구성됩니다.
[다섯 가지의 필수 특성]
On-demand self-service
Broad network access
Resource pooling
Rapid elasticity
Measured service
[세 개의 서비스 모델 ]
Software as a Service (SaaS)
Platform as a Service (PaaS)
Infrastructure as a Service (IaaS)
[네 가지 배포 모델]
Private cloud
Community cloud
Public cloud
Hybrid cloud
• ‘언제 어디서나 존재한다’는 뜻의 라틴어 ‘유비크(Ubique)’에서 나온 신조어.
• “도처에 있다.“, “언제 어디서나 존재 한다.”
• 클라우드 컴퓨팅에서는 언제 어디서나 접근 가능하도록 하는 것을 의미함.
• 사용자는 인터넷에 연결되어 있는 어떤 장소이든지 클라우드 컴퓨팅을 이용할 수 있음.
• 클라우드 컴퓨팅은 언제 어디서든 사용자가 필요로 하는 컴퓨팅 자원에 접근할 수 있음.
• 필요한 컴퓨팅 자원을 빠르게 요청하고 사용할 수 있으며, 복잡한 설정이나 관리 없이 쉽게 이용할 수 있음.
• 사용자는 인터넷을 통해 클라우드 서비스에 접근할 수 있어, 별도의 설치나 다운로드 없이 웹 브라우저만
있으면 언제든지 이용 가능함. -> 다양한 기기에서 접근 가능을 의미
• 필요에 따라 자동으로 스케일링되어 자원을 확장 또는 축소할 수 있음. -> 자원 낭비 최소화 및 비용절감
• 사용자가 별도의 시스템 구축, 유지보수, 업그레이드 등의 작업을 수행하지 않아도 됨.
온프라미스(on-premise) : 회사나 조직 내부에 IT 인프라를 직접 구축하고 운영하는 방식
클라우드 이전의 일반적인 방식 = 전산실
• 장점
• 보안과 프라이버시 관리를 용이
• 특정한 요구사항에 따라 맞춤형 시스템을 만들 수 있음
한계점
온프라미스 방식은 보안과 커스터마이징 측면에서 장점이 있지만..
• 초기 비용 및 유지보수 비용이 높음
• 자원 할당 및 확장의 어려움
• 대처(자연재해, 장애, 보안) 능력의 한계
• 유지보수와 업그레이드의 복잡성
서비스 구축을 위해서
- 서버 구매 및 서리
- 데이터 센터 구축
- 운영 및 유지 보수
- 유지 보수
클라우드에서 서버 구축
1. 클라우드 서비스 제공자(CSP)와 클라우드 서비스 선택
2. 계정 생성 및 인증: 웹브라우저 콘솔을 이용
3. 서비스 구성 및 배포
4. 유지보수
클라우드 단점
1. 비용: 클라우드 서비스는 초기 비용이 저렴하지만, 사용량이 늘어날수록 비용이 증가할 수 있음.
2. 의존성 문제: 클라우드 제공업체가 제공하는 서비스에 의존하게 되므로, 서비스 업그레이드, 변경, 중단 등의 이유로 인해 비즈니스에 영향을 줄 수 있음.
3. 데이터 처리 속도 지연 가능성: 클라우드 서비스를 이용할 때 데이터 처리 속도가 지연될 수 있음. (클라우드 서비스 제공업체에서 가용한 자원을 다른 고객과 공유하기 때문)
4. 데이터 이전 문제: 클라우드 제공업체를 변경하거나, 자체적으로 서비스를 구축할 때 기존 데이터를 이전하는 것이 어려울 수 있음.
테넌트와 멀티 테넌트
테넌트(Tenant)와 멀티 테넌트(Multi-tenant)
• 테넌트(Tenant)
• 클라우드 컴퓨팅에서 독립된 고객이나 사용자 그룹을 의미
• 각 테넌트는 가상 자원을 할당받아 사용
• 각 테넌트는 다른 테넌트와 격리 및 자신만의 자원을 보유함.
• 멀티 테넌트(Multi-tenant)/멀티 테넌시(Multi-tenancy)
• 하나의 물리적 클라우드 시스템에서 다수의 테넌트가 동시에 사용할 수 있는 구조
• 다수의 테넌트가 하나의 클라우드 시스템을 공유함.
멀티 테넌시(Multi-tenancy)의 장점
• 고객마다 새로운 시스템을 만들 필요가 없기 때문에 소프트웨어 개발과 유지보수 비용을 공유할 수 있어서 경제적
• 같은 소프트웨어를 사용해도 사용자 혹은 기업 고객별로 메뉴 구성과 디자인 등을 완전히 다른 형태로 구성할 수 있음.
멀티 테넌시(Multi-tenancy) 구현 시 유의사항
• 개인화를 지원하기 위해서는 더 정교한 멀티테넌시 아키텍처를 적용해야 함. -> 상당한 비용과 인력이 필요
• 업데이트 과정에서 자칫 버그나 장애가 발생하면 모든 사용자가 공통으로 장애를 겪을 수 있는 위험성 존재
• 일부 사용자에게 유용한 업데이트가 다른 사용자에게는 오히려 불편함을 유발할 수도 있음.
• 각 테넌트별로 서비스에 영향이 없도록 해야함.
멀티 테넌트(Multi-tenant)의 요건
1. 격리성(isolation): 각각의 테넌트는 서로 독립적인 공간에서 서비스를 받아야 함. 데이터 및 서비스에 대한 접근 제어 및 격리가 필요.
2. 확장성(scalability): 다수의 테넌트를 지원하고, 새로운 테넌트의 추가나 기존 테넌트의 서비스 이용량 증가에 대해 빠르게 대응해야 함.
3. 커스터마이징(customization): 각각의 테넌트는 서로 다른 요구사항을 갖을 수 있음. 테넌트마다 서로 다른 설정이 가능하도록 하는 기능이나 API를 제공 필요
4. 보안성(security): 각각의 테넌트가 서로 다른 보안 요구사항을 가질 수 있음. 테넌트 간의 보안 분리 및 접근 제어, 암호화 등이 필요
5. 성능(performance): 다수의 테넌트가 동시에 사용하기 때문에 발생하는 성능저하(자원 공유, 다수 요청에
의한 부하)를 해결해야함.
6. 모니터링 및 로깅(monitoring and logging): 각각의 테넌트의 상태를 모니터링하고 로깅
7. 유지보수(maintenance): 테넌트별 자동화된 유지보수 기능이나 웹 인터페이스를 제공 필요
• 가상화: 하나의 물리적인 리소스(서버, 네트워크 등)를 여러 개의 논리적인 리소스로 분할하여, 하나의 리소스를 여러 명의 사용자나 서비스가 동시에 사용할 수 있도록 하는 기술
어떤 가상화들이 필요할까
1. 서버 가상화
• 하이퍼바이저 기반 가상화: 하드웨어 자원(CPU, Memory 등)을 가상화
• 컨테이너 기반 가상화: 운영체제를 가상화
2. 네트워크 가상화
• 하나의 물리적인 네트워크를 여러 개의 가상 네트워크로 분할
• 각 가상 네트워크가 독립된 네트워크인 것처럼 사용할 수 있도록 하는 기술
3. 스토리지 가상화
• 여러 대의 물리적인 스토리지 장치를 하나의 가상 스토리지 풀로 통합
• 스토리지 가상화를 통해 데이터 복제와 백업, 복구 등의 작업을 더욱 쉽고 빠르게 수행
• 이와 함께, 데이터의 가용성과 안정성을 보장
• 등등