Cloud(클라우드) 란?  인터넷을 통한 컴퓨팅 자원의 제공 ! * 엔드 유저가 중간 과정을 마치 구름처럼 모르는 것에서 유래

"클라우드" 또는 "클라우드 컴퓨팅"은 인터넷을 통해 데이터 저장, 서버, 데이터베이스, 네트워킹, 소프트웨어 등과 같은 컴퓨터 처리 자원을 제공하는 기술을 의미합니다. 이는 사용자가 개인적이거나 사업용으로 필요한 컴퓨팅 자원을 물리적인 컴퓨터나 서버에 직접 설치하거나 유지하지 않고도 이용할 수 있도록 하는 것입니다. 클라우드 컴퓨팅의 주요 장점은 다음과 같습니다:

  • 비용 절감: 클라우드 컴퓨팅은 사전에 많은 금액을 지불해 컴퓨터 하드웨어를 구매하고 유지 관리하는 비용을 절감할 수 있습니다.
  • 스케일링: 사용자는 자신의 비즈니스 요구에 따라 컴퓨팅 자원을 늘리거나 줄일 수 있습니다. 이를 '스케일 업' 또는 '스케일 다운'이라고 합니다.
  • 데이터 백업과 복구: 클라우드에서 데이터를 저장하면 데이터의 백업과 복구가 더 쉬워집니다. 이는 클라우드 서비스 제공자가 데이터 센터의 여러 위치에 데이터를 복제할 수 있기 때문입니다.
  • 어디서나 액세스: 인터넷이 연결된 모든 장소에서 데이터와 애플리케이션에 접근할 수 있습니다.

알려진 클라우드 서비스 제공자로는 Amazon Web Services (AWS), Google Cloud Platform (GCP), Microsoft Azure 등이 있습니다. 이러한 회사들은 다양한 클라우드 기반 솔루션을 제공하여 개인, 기업, 정부 등이 IT 리소스를 효율적으로 활용할  있도록 지원합니다.

 

* Cloud Computing model : Private(On-premise), Public(Off-premise), Hybrid Cloud(Private + Public) 

 

미들웨어(Middleware)는 운영 체제와 애플리케이션 사이에서 다양한 서비스를 제공하는 소프트웨어입니다. 운영체제와 응용프로그램 사이에 위치하며, 분산 환경에서 여러 다른 시스템과 애플리케이션 간의 통신과 데이터 관리를 돕는 소프트웨어입니다. 다른 애플리케이션, 데이터베이스, 사용자와의 통신을 돕고, 이러한 상호작용을 더 효과적이고 효율적으로 만들어주는 역할을 합니다.  예를 들어, 데이터베이스 시스템, 웹 서버, 메시지 큐 등이 미들웨어에 포함됩니다. 다음은 미들웨어의 주요 기능 및 예입니다:

  • 통신: 미들웨어는 종종 다른 애플리케이션, 서비스, 또는 사용자와의 통신을 촉진하는 데 사용됩니다. 이것은 종종 네트워크 프로토콜을 추상화하여 개발자가 직접 통신을 처리하는 것보다 더 쉽게 통신을 설정하고 관리할 수 있게 합니다. 예를 들어, 웹 서버 미들웨어는 HTTP 요청 및 응답을 처리합니다.
  • 인증 및 보안: 미들웨어는 종종 인증 및 보안 역할을 수행합니다. 예를 들어, 인증 미들웨어는 사용자가 애플리케이션에 액세스하는 데 필요한 자격 증명을 관리하고 검증합니다.
  • 데이터베이스 연결: 미들웨어는 데이터베이스와의 통신을 도와주는 역할도 합니다. 이를 통해 개발자는 데이터베이스 쿼리를 쉽게 작성하고, 결과를 해석하고, 에러를 처리할 수 있습니다.
  • 메시지 큐: 미들웨어는 메시지 지향 미들웨어(MOM) 형태로도 존재하며, 이는 비동기 메시지 전달을 위해 사용됩니다. 이러한 시스템에서, 메시지는 큐에 보관되며, 수신자가 준비될 때까지 기다립니다.

이런 방식으로, 미들웨어는 개발자가 서로 다른 시스템과의 상호작용에  신경 쓰고 애플리케이션 로직에 집중할  있게 도와줍니다. 이를 통해 애플리케이션의 효율성과 안정성을 향상시킬  있습니다.

 

IaaS(Infrastructure as a Service), PaaS(Platform as a Service), SaaS(Software as a Service)는 클라우드 컴퓨팅의 세 가지 주요 서비스 모델입니다.(Cloud Service Model) -> 클라우드가 어디까지 공급을 하는가 의 기준 

  • IaaS: 기본적인 컴퓨팅 자원을 제공합니다. 가상머신, 스토리지, 네트워크 등의 기본 인프라를 클라우드에서 직접 관리하고 사용할 수 있습니다. Amazon EC2, Google Compute Engine, Azure Virtual Machines 등이 이에 해당합니다.
    -> 가상 머신 제공, 직접 어플리케이션 설치 및 설정
  • PaaS: IaaS에 추가로, 개발, 테스트, 배포, 운영 등 소프트웨어 개발 및 운영에 필요한 플랫폼을 제공합니다. 사용자는 애플리케이션 코드에 집중하며, 하드웨어, 운영체제, 미들웨어 등에 대한 관리는 PaaS 제공자가 담당합니다. Google App Engine, Heroku, Azure App Service 등이 이에 해당합니다.
    -> 필요한 어플리케이션 선택 및 필수 설정 값 설정, 개발한 Code를 Cloud에서 제공받은 어플리케이션에 업로드
  • SaaS: 사용자가 인터넷을 통해 접속하여 사용하는 소프트웨어 서비스를 의미합니다. 소프트웨어와 그 관련 데이터는 클라우드에 호스팅되며, 웹 브라우저 등을 통해 서비스를 이용합니다. Gmail, Google Docs, Dropbox, Salesforce 등이 SaaS의 예입니다.
    -> 소프트웨어 자체를 돈내고 구매하는 것 

각각의 서비스 모델은 클라우드 환경에서 제공하는 서비스의 범위와 종류, 사용자의 관리 범위 등을 다르게 정의합니다.

미들웨어에서의 컨테이너 개념은 일반적으로 컨테이너 기반의 가상화 기술을 의미합니다. 컨테이너는 소프트웨어를 실행하는데 필요한 모든 요소(코드, 런타임, 시스템 도구, 시스템 라이브러리 등)를 패키지화하여 일관된 환경에서 소프트웨어를 실행하는 기술입니다.

컨테이너는 다음과 같은 특징을 가집니다:

  • 경량성: 컨테이너는 기본 운영체제의 커널을 공유하면서 독립적으로 실행됩니다. 따라서 전통적인 가상머신에 비해 매우 경량하고 빠르게 시작될 수 있습니다.
  • 이식성: 컨테이너에는 애플리케이션을 실행하는 데 필요한 모든 것이 포함되어 있으므로, 환경에 관계없이 일관된 동작을 보장합니다.
  • 높은 효율성: 컨테이너는 리소스를 효율적으로 공유하고 사용할 수 있으며, 대량의 애플리케이션을 동시에 실행할 수 있습니다.

미들웨어에서 컨테이너 기술을 이용하면, 애플리케이션과 그에 필요한 미들웨어 컴포넌트들(웹 서버, 메시지 큐, 데이터베이스 등)을 독립적으로 패키지화하고, 배포하며, 실행하고, 관리할 수 있습니다. 이는 개발, 테스트, 배포의 과정을 간소화하고, 환경에 따른 문제를 최소화하는 등의 이점을 제공합니다.

컨테이너 관리 플랫폼인 Docker Kubernetes 이러한 컨테이너 기술을 대중화시키는   역할을 하였습니다.

 

2023.06.28 - [Infra] - Kubernetes(k8s, kube), Docker

 

미들웨어와 IaaS(Infrastructure as a Service)는 서로 다른 개념입니다.

  • 미들웨어: 앞서 설명했듯이, 미들웨어는 운영 체제와 애플리케이션 사이에서 다양한 서비스를 제공하는 소프트웨어입니다. 이는 통신, 인증, 보안, 데이터베이스 연결 등의 역할을 수행합니다.
  • IaaS: IaaS는 클라우드 기반 서비스로, 사용자에게 가상화된 컴퓨팅 리소스를 제공하는 모델입니다. 이는 서버, 네트워크, 스토리지, 데이터 센터 공간 등의 기본적인 컴퓨팅 인프라를 필요에 따라 조정 가능한 서비스로 제공합니다.

미들웨어는 그 자체로 애플리케이션과 운영 체제 사이에서 중개자 역할을 하는 소프트웨어입니다.

그러나, 특정 IaaS나 PaaS 환경에서 미들웨어를 사용하거나 배포할 수 있습니다. 예를 들어, IaaS 제공자는 가상 서버, 스토리지 등의 기본적인 인프라를 제공하고, 사용자는 이런 인프라 위에 미들웨어를 설치하고 운영할 수 있습니다. 또한, PaaS 제공자는 플랫폼을 제공하는데, 이 플랫폼은 미들웨어를 포함할 수 있습니다.

 

웹 애플리케이션 서버(WAS, Web Application Server)는 미들웨어의 한 종류로, 웹 애플리케이션과 서버 환경을 연결하는 역할을 합니다. 따라서, 미들웨어가 IaaS나 PaaS를 "가지고 있다"고 표현하기보다는, 미들웨어는 IaaS나 PaaS 환경에서 사용될 수 있고, PaaS 환경은 미들웨어를 포함할 수 있다는 식으로 이해하는 것이 더 정확합니다.

 

미들웨어 자체는 소프트웨어의 한 부분으로서, 일반적으로 두 개의 애플리케이션, 혹은 애플리케이션과 데이터베이스 사이에서 정보를 주고 받는 역할을 합니다. 그러나 컨테이너 기술은 애플리케이션의 배포, 운영을 간편하게 만드는 도구로, 이 도구를 이용하면 미들웨어를 포함한 여러 소프트웨어를 보다 쉽게 배포하고 관리할 수 있습니다. 컨테이너는 어플리케이션과 그 어플리케이션이 동작하는데 필요한 모든 환경(라이브러리, 시스템 도구, 코드, 런타임 등)을 하나로 묶어서, 어느 환경에서도 동일하게 실행될 수 있도록 도와줍니다. 따라서 미들웨어를 컨테이너화 하면 개발, 테스트, 운영 환경에서 일관된 동작을 보장하고, 배포 및 확장을 쉽게 할 수 있습니다. 즉, 컨테이너는 미들웨어를 포함한 어플리케이션의 생명주기 전반에 걸쳐 사용될 수 있습니다. 이런 컨테이너를 관리하고 오케스트레이션하는데 쿠버네티스와 같은 플랫폼이 사용됩니다. 이러한 컨테이너화된 미들웨어는 마이크로서비스 아키텍처와 같은 환경에서 특히 유용합니다.

 

'Infra' 카테고리의 다른 글

가상화 환경 또는 가상 머신 (Virtual Machine, VM)  (0) 2023.06.29
Kubernetes(k8s, kube), Docker  (0) 2023.06.28
TCP/IP stack (4 Layers)  (0) 2023.06.15
OSI model (7 Layers)  (0) 2023.06.14
S3(Simple Storage Service), CloudFront  (0) 2023.05.24