배포 / 온프레미스 / 클라우드 서비스

TopOfTheHead·2025년 12월 11일

클라우드 / AWS

목록 보기
1/38

배포 ( Deployment )
。기능구현이 완료된 서버 어플리케이션을 다른 사용자들이 인터넷을 통해 사용할 수 있도록 만드는 행위

。기존 개발자개발환경에서만 접근 가능한 루프백 주소 대신 고유의 IP주소도메인을 부여받아서 다른 Host로부터 해당 IP주소를 통해 서버 어플리케이션에 접근하도록 설정

온 프레미스 방식 ( On-Premise )
。기업이 어플리케이션 배포 시 자체적으로 서버구동에 필요한 IT Infrastructure ( 데이터 센터 등 )를 구축 및 관리
▶ 기업이 모든 HWSW를 소유하는 방식


온프레미스 방식의 장 / 단점

  • 장점
    。물리적 보안 / 사용자 맞춤 시스템 / 저렴한 유지보수비용

  • 단점
    높은 초기 비용 / IT 인프라 유지보수 필요.

    어플리케이션을 사용하는 유저의 수요에 따라 필요한 자원을 능동적으로 제공이 어렵다.

    사설 데이터센터 구축 시 다음처럼 특정 시간대에서만 트래픽이 집중되고 나머지는 저조하여 데이터센터가 제공하는 자원노란색 배경만큼 잉여자원이 발생.

    ▶ 현재는 이러한 단점을 개선하고자 어플리케이션의 배포 시 클라우드 서비스 업체에서 제공하는 가상화IT Resource가상머신( ex. EC2 )을 대여하여 배포를 수행.

클라우드 컴퓨팅 ( Cloud Computing = Edge Computing )

Cloud Provider데이터센터가상머신을 통해 인터넷을 통해 Cient에게 가상화된 IT ResourceOn-Demand로 제공하는 서비스
▶ 인터넷을 통해 서버 , Storage , DB , 네트워크Computing Resource를 제공하는 기술

클라우드 컴퓨팅가상화 기반으로 구성되어 데이터센터를 구성하는 수만개의 Host에서 클라이언트가 필요로하는 IT Resource만큼 가상머신으로 가상화하여 제공
가상화, VM, VMM, HVM

Client는 서버 구축에 필요한 데이터센터 등의 Infrastructure를 구축할 필요없이 클라우드 서비스를 통해 가상화된 IT 인프라 ( = VM )를 임대하여 IT Resource를 제공받고 사용한 IT Resource 만큼 비용을 지불.

。대표적인 제공 서비스 :
Amazon AWS / Microsoft Azure / Google Cloud

  • Everything fails, all the time
    온프레미스가 아닌 클라우드 서비스는 반드시 Fail이 발생할 수 밖에없음.
    안정성을 위해 언제나 EC2 인스턴스는 예고없이 종료된다는 가정하에 아키텍처를 방어적으로 설계할 필요가 있음.

클라우드 컴퓨팅 특징

  • On-Demand Resource Provisioning :
    클라이언트가 원하는 시점에서 서버 구축에 필요한 자원을 즉시 할당.
    On-Demand : 사용자의 필요한 수요에 반응하여 자원을 제공

  • 인프라 구축비용( 자본지출 = Capital expense ) 대신 가상머신 임대비용( 운영지출 = Operation Expense ) 지불
    。 초기 인프라 구축 비용 대비 매우 저렴한 임대비용

    클라우드 제공업체는 수백만개의 서버를 다루므로, 규모의 경제를 통해 저렴하게 IT Resource를 제공이 가능
    클라우드 업체규모의 경제에 의한 혜택을 클라이언트도 얻을 수 있다.

  • 용량 추정 불필요 :
    。필요한 경우 추가로 ResourceProvisioning하여 사용하므로 클라이언트가 필요한 자원에 대한 수요예측을 수행할 필요가 없다.
    IT Resource의 용량에 구애받을 필요없음

    ex ) 운영 중인 서비스에 대해 저녁 8시에 트래픽이 급증할때와 새벽 1시에 트래픽이 저조할때 능동적으로 더 많거나 적은 IT Resource를 대여.

  • 여러 클라우드 서비스와 연동하여 사용이 가능
    AWS EC2의 경우 EBS, ELB, Auto Scailing 등의 AWS 서비스와 연동해서 사용이 가능한 장점이 존재.

데이터센터 (Data Center)
서버 컴퓨터로 구성된 Infrastructure를 관리하는 용도로 서버 어플리케이션호스팅하는 실제 시설
▶ 웹 페이지 저장 및 분배 뿐만 아닌 비디오를 스트리밍하며 전자메일을 릴레이하는 역할의 서버 컴퓨터( = Host )들로 구성된 커다란 센터

。내부적으로 데이터센터Host들을 상호연결하는 독립 네트워크를 구성

。 보통의 데이터센터는 약 10,000 ~ 100,000개의 서버 Host가 존재
▶ 초기구축비용이 높으므로 일반 업체는 On-Premise 방식으로 사설 데이터센터를 구축하여 인프라를 사용하기보다 클라우드 서비스 업체인프라를 임대해서 사용.

서비스대상에 따른 클라우드 구분

  • Private Cloud :
    。누구나 가입해서 사용 가능하며 무료 / 유료일 수 있는 서비스

  • Public Cloud :
    。특정그룹 내에서만 사용이 가능한 서비스

  • Hybrid Cloud :
    PublicPrivate 두가지 방식을 합친 방식

클라우드 컴퓨팅 모델 유형

On-Demand / IaaS / PaaS / SaaS가 존재.

보통의 어플리케이션 서버 구성

。해당 어플리케이션배포하기위해서 클라이언트클라우드 서비스 업체에서 필요한 자원( Network / Storage / Computing / OS + SW / 어플리케이션 )에 적합한 클라우드 컴퓨팅 모델 ( IaaS / PaaS / SaaS )을 임대.

IaaS (Infra as a Service)
Cloud ProviderServer, Storage, Network가상화처리하여 인프라 자원만 제공하는 클라우드 컴퓨팅 모델
Cloud ProviderInfrastructure만을 사용하는 방식으로서 제공되는 Virtual Machine을 활용하여 사용자가 직접 설정하여 Application 또는 DB를 배포.

。ex ) Amazon AWS EC2 , Microsoft Azure VM , Google Cloud Compute Engine

  • IaaS에서의 Client의 역할 :
    개발자가 직접 가상머신( ex. EC2 )에서 Linux OS , Python / Java 등의 SW를 직접 설치 및 Update를 수행.
    ▶ 자체적으로 시스템 환경을 구축하고 유연한 확장이 필요할 때 활용.

    Auto Scailing등의 부가기능을 개발자가 직접 설정.

PaaS (Platform as a Service)

Cloud Provider클라이언트에게 IT 인프라에 추가로 어플리케이션을 구동할 플랫폼 ( Application Runtime 환경 + OS )까지 포함하여 제공하는 클라우드 컴퓨팅 모델
▶ 보통 서비스 단위로 서비스를 제공하므로, Container (Docker , Kubernetes)를 활용하여 서비스환경을 구축.

ex ) AWS Elastic Beanstalk , Azure App Service , Google App Engine , Nginx (웹서버) , MariaDB (데이터베이스) , Django (웹프레임워크) 등의 개발플랫폼

  • PaaS에서의 Client의 역할 :
    어플리케이션소스코드 작성 및 데이터 관리
    IaaS와 달리, Cloud ProviderVirtual Machine에 필요한 적절한 SW를 전부 설치 및 Update가 관리되는 플랫폼을 제공.

    Application Runtime을 제공하여 사용자가 따로 python등의 SW를 설치 및 버전관리 할 필요가 없음.
    Auto Scailing 등의 작업도 사용자가 처리할 필요가 없다.

Saas ( Software as a Service )

Cloud Provider서비스 자체를 직접 제공하여Client가 별도의 설정없이 바로 사용할 수 있도록 제공하는 클라우드 컴퓨팅 모델
Client는 개발을 위한 플랫폼을 구축할 필요 없이 필요한 기능클라우드 서비스에서 빌려서 사용

ex ) Google Gmail , Google Drive

  • SaaS에서의 Client의 역할 :
    。 설치나 유지보수 없이 SW만 사용.

클라우드 용어

  • 고가용성 ( High Availability )
    장애상황을 해결하고 서비스를 지속할 수 있는 능력
    ▶ 장애상황에 대해 사전에 대비되어있는 아키텍처를 요구
    ex ) EC2 인스턴스 중 하나가 고장나도 자동으로 복구가능

  • 장애 내구성( Fault Tolerance )
    장애상황에도 서비스를 지속할 수 있는 Fail Safe 능력
    ▶ 장애상황에서도 크게 영향을 받지않는 아키텍처를 요구

    고가용성에 비해 장애내구성 확보가 더 큰 비용을 요구.
    장애내구성을 확보하기위해서는 한개 이상의 예비 인프라를 요구하므로 비용이 추가로 요구하므로 고가용성을 우선적으로 확보하는게 좋다.

  • 확장성 ( Scalable )
    。쉽고 빠르게 필요한 컴퓨팅자원을 확장시킬수 있는 능력.

  • 탄력성( Elastic )
    。수요에 따라 컴퓨팅자원을 확장하거나 축소할 수 있는 능력
    ▶ 불필요한 자원을 사용하지 않도록 비용 최적화를 수행 시 필수적인 능력.

  • 프로비전( Provision )
    클라우드 서비스 업체가 제공하는 자원클라이언트가 사용할 수 있도록 준비
profile
공부기록 블로그

0개의 댓글