-
Notifications
You must be signed in to change notification settings - Fork 0
KR_클라우드
클라우드 컴퓨팅은 사용자가 인터넷을 통해 컴퓨팅 리소스(예: 서버, 스토리지, 데이터베이스, 네트워킹, 소프트웨어 등)에 액세스하고 사용할 수 있도록 하는 기술이다.
기업과 개인은 물리적 서버와 데이터 센터를 소유하고 유지 관리하는 대신 클라우드 서비스 공급자로부터 이러한 리소스에 대한 액세스를 임대할 수 있다.
이 접근 방식은 다음과 같은 몇 가지 이점을 제공한다.
- 확장성(Scalability): 수요에 따라 쉽게 확장하거나 축소할 수 있다.
- 비용 효율성(Cost-Efficiency): 사용한 리소스에 대해서만 비용을 지불하여 초기 투자를 줄인다.
- 접근성(Accessibility): 인터넷 연결만 있으면 어디서나 서비스에 액세스할 수 있다.
- 유연성(Flexibility): 특정 요구 사항을 충족하기 위해 다양한 서비스 중에서 선택할 수 있다.
- 유지관리(Maintenance): 클라우드 제공업체는 하드웨어 유지관리 및 업데이트를 담당한다.
퍼블릭 클라우드와 프라이빗 클라우드 모두 클라우드 컴퓨팅 기능을 제공하지만 주요 차이점은 접근성과 테넌시에 있다.
퍼블릭 클라우드는 다양한 사용자가 공유하고 인터넷을 통해 액세스할 수 있는 반면, 프라이빗 클라우드는 단일 조직 전용으로 더 많은 제어와 개인 정보 보호를 제공한다.
퍼블릭 클라우드는 서비스가 퍼블릭 인터넷을 통해 제공되고 여러 고객 간에 공유되는 클라우드 컴퓨팅 모델이다.
이러한 서비스는 타사 공급자가 제공하며 확장성과 유연성이 뛰어나다.
퍼블릭 클라우드 예는 다음과 같다:
- Amazon 웹 서비스(AWS): 컴퓨팅 성능(EC2), 스토리지(S3), 데이터베이스(RDS)와 같은 광범위한 클라우드 서비스를 제공한다.
- Microsoft Azure: 가상 머신, 앱 서비스, Azure SQL 데이터베이스 등 다양한 서비스를 제공한다.
- Google Cloud Platform(GCP): Google Compute Engine, Google Cloud Storage, BigQuery와 같은 서비스로 잘 알려져 있다.
프라이빗 클라우드는 하나의 기업이나 조직이 독점적으로 사용하는 클라우드 컴퓨팅 리소스를 의미한다.
서비스와 인프라는 사설 네트워크에서 유지관리되며, 하드웨어와 소프트웨어는 조직 전용이다. 이 모델은 더 강력한 제어와 보안을 제공한다.
프라이빗 클라우드 예는 다음과 같다:
- VMware vSphere: 엔터프라이즈 환경에서 프라이빗 클라우드를 생성하고 관리하는 데 자주 사용된다.
- OpenStack: 프라이빗 클라우드에서 컴퓨팅, 스토리지, 네트워킹 리소스 풀을 제어하는 데 사용되는 오픈 소스 플랫폼이다.
- Microsoft Azure Stack: 회사는 자체 데이터 센터에서 Azure 클라우드 서비스를 실행하여 Azure의 비공개 버전을 만들 수 있다.
클라우드 서비스는 일반적으로 IaaS(Infrastructure as a Service), PaaS(Platform as a Service), SaaS(Software as a Service)라는 세 가지 기본 서비스 모델로 분류된다.
이러한 각 모델은 사용자와 기업에 클라우드 서비스를 제공하는 다양한 방법을 나타낸다.
IaaS는 인터넷을 통해 가상화된 컴퓨팅 리소스를 제공한다. 이 모델에서 클라우드 공급자는 운영 체제가 포함된 소프트웨어 번들과 함께 서버, 스토리지, 네트워킹 하드웨어와 같은 인프라를 제공한다.
- 수요에 따라 확장 가능한 리소스.
- 클라이언트는 기본 하드웨어를 관리하지 않고도 인프라를 제어할 수 있다.
- 물리적 하드웨어 투자가 필요하지 않으므로 유연하고 비용 효율적이다.
- 아마존 웹 서비스(AWS) EC2
- 마이크로소프트 Azure 가상 머신
- 구글 컴퓨트 엔진(GCE)
PaaS는 일반적으로 앱 개발 및 출시와 관련된 인프라를 유지 관리하는 복잡성 없이 개발자가 애플리케이션을 구축, 테스트, 배포 및 관리할 수 있는 프레임워크를 제공한다.
- 동일한 환경에서 애플리케이션을 테스트, 개발 및 호스팅할 수 있는 도구를 갖춘 플랫폼을 제공한다.
- 개발자가 운영 체제, 소프트웨어 업데이트, 스토리지 또는 인프라에 대해 걱정하지 않고 소프트웨어 개발에 집중할 수 있다.
- PaaS 솔루션에는 개발 도구, 데이터베이스 관리 시스템 및 비즈니스 분석이 포함될 수 있다.
- 구글 앱 엔진(Google App Engine)
- 마이크로소프트 애저 앱 서비스(Microsoft Azure App Services)
- 헤로쿠(Heroku)
SaaS는 주문형 및 일반적으로 구독 기반으로 인터넷을 통해 소프트웨어 애플리케이션을 제공하는 방법이다.
SaaS를 통해 클라우드 제공업체는 소프트웨어 애플리케이션과 기본 인프라를 호스팅하고 관리한다.
- 인터넷이 가능한 모든 기기에서 접속 가능하다.
- 사용자는 하드웨어나 소프트웨어 업데이트에 대해 책임을 지지 않는다. 공급자가 이를 관리한다.
- 중소기업 및 대기업 수준의 비즈니스에 맞게 다양한 계층으로 확장 가능하다.
- Google Workspace(구 G Suite)
- 마이크로소프트 오피스 365
- 세일즈포스
클라우드 네이티브 애플리케이션은 처음부터 클라우드 컴퓨팅 아키텍처의 확장성, 탄력성, 유연성을 활용하도록 설계되었다. 이는 퍼블릭, 프라이빗, 하이브리드 클라우드와 같은 역동적인 환경에서 확장 가능한 애플리케이션을 구축하고 실행하는 데 초점을 맞춘 기술 모음을 활용한다. 클라우드 네이티브 애플리케이션은 애플리케이션이 실행되는 위치뿐만 아니라 애플리케이션이 구축, 배포 및 운영되는 방식에 관한 것이다. 마이크로서비스, 컨테이너, DevOps 및 탄력성을 강조하는 클라우드 네이티브 개발은 클라우드 컴퓨팅의 이점을 극대화하여 보다 민첩하고 확장 가능하며 안정적인 소프트웨어를 달성하는 것을 목표로 한다.
- Designed for the Cloud
- Microservices Architecture
- Containers
- DevOps and Continuous Delivery
- Scalability
- Resilience and Fault Tolerance
- API-based Communication
- Infrastructure as Code (IaC)
서버리스 컴퓨팅은 클라우드 제공 업체가 서버의 할당 및 프로비저닝을 동적으로 관리하는 클라우드 컴퓨팅 실행 모델이. 서버리스 아키텍처를 사용하면 사용자는 기본 인프라에 대해 걱정하지 않고 코드를 작성하고 배포할 수 있다. "서버리스"라는 이름은 다소 오해의 소지가 있지만, 서버는 여전히 사용되지만 개발자가 이러한 서버의 관리에 대해 걱정할 필요가 없다는 뜻이다.
- 이벤트 주도: 서버리스 애플리케이션은 종종 이벤트 주도적이며, 다양한 클라우드 서비스(예: HTTP 요청, 파일 업로드, 데이터베이스 이벤트)에서 이벤트 또는 트리거에 응답하여 실행된다.
- 확장성: 애플리케이션 수요에 따라 자동으로 확장되며, 하루에 몇 번의 요청에서 초당 수천 번의 요청까지 처리할 수 있다.
- 사용량 기반 비용: 애플리케이션에 의해 실제로 소비된 자원의 양에 기반한 비용이 청구되며, 용량의 사전 구매 단위에 대한 비용이 아니다.
- 서버 관리 불필요: 개발자는 서버를 프로비저닝하거나 유지 관리할 필요가 없다. 클라우드 제공 업체가 모든 서버 관리 작업을 처리한다.
- 비용 효율적: 코드가 실행되지 않을 때는 비용이 청구되지 않으므로, 실제 계산 시간에 대해서만 비용을 지불한다.
- 확장성: 애플리케이션의 필요에 따라 인프라가 자동으로 확장되거나 축소된다.
- 웹 애플리케이션: API 요청 또는 웹 애플리케이션의 백엔드 서비스 제공.
- 데이터 처리: 데이터베이스 변경 이벤트 처리, 데이터 스트림 처리, 파일 업로드 처리.
- 통합: 제3자 서비스 및 API와의 연결 및 확장.
주요 서버리스 컴퓨팅 제공업체로는 다음이 있다.
- AWS Lambda
- Azure Functions
- Google Cloud Functions
- IBM Cloud Functions
현재 시간을 반환하는 간단한 서버리스 함수(AWS Lambda in Python) 예시:
import json
import datetime
def lambda_handler(event, context):
current_time = datetime.datetime.now().isoformat()
return {
'statusCode': 200,
'body': json.dumps({'current_time': current_time})
}