배포( Deployment )
。기능구현이 완료된서버 어플리케이션을 다른 사용자들이인터넷을 통해 사용할 수 있도록 만드는 행위
。기존개발자의개발환경에서만 접근 가능한루프백 주소대신 고유의IP주소와도메인을 부여받아서 다른Host로부터 해당IP주소를 통해서버 어플리케이션에 접근하도록 설정
온 프레미스 방식(On-Premise)
。기업이어플리케이션 배포시 자체적으로서버구동에 필요한IT Infrastructure(데이터 센터등 )를 구축 및 관리
▶ 기업이 모든HW와SW를 소유하는 방식
온프레미스방식의 장 / 단점
- 장점
。물리적 보안 / 사용자 맞춤 시스템 / 저렴한 유지보수비용
- 단점
。높은 초기 비용/IT 인프라 유지보수필요.
。어플리케이션을 사용하는유저의 수요에 따라 필요한자원을 능동적으로 제공이 어렵다.
▶사설 데이터센터구축 시 다음처럼 특정 시간대에서만트래픽이 집중되고 나머지는 저조하여데이터센터가 제공하는자원중노란색 배경만큼잉여자원이 발생.
▶ 현재는 이러한 단점을 개선하고자어플리케이션의 배포 시클라우드 서비스 업체에서 제공하는가상화된IT Resource인가상머신( ex.EC2)을 대여하여배포를 수행.
클라우드 컴퓨팅( Cloud Computing = Edge Computing )
。Cloud Provider의데이터센터의가상머신을 통해인터넷을 통해Cient에게 가상화된IT Resource를On-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-DemandResource Provisioning :
。클라이언트가 원하는 시점에서서버 구축에 필요한자원을 즉시 할당.
▶On-Demand:사용자의 필요한수요에 반응하여자원을 제공
인프라 구축비용(자본지출=Capital expense) 대신가상머신 임대비용(운영지출=Operation Expense) 지불
。 초기인프라 구축 비용대비 매우 저렴한임대비용
클라우드 제공업체는 수백만개의서버를 다루므로,규모의 경제를 통해 저렴하게IT Resource를 제공이 가능
▶클라우드 업체의규모의 경제에 의한 혜택을클라이언트도 얻을 수 있다.
용량 추정불필요 :
。필요한 경우 추가로Resource를Provisioning하여 사용하므로클라이언트가 필요한자원에 대한수요예측을 수행할 필요가 없다.
▶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:
。Public과Private두가지 방식을 합친 방식
클라우드 컴퓨팅 모델유형
。On-Demand/IaaS/PaaS/SaaS가 존재.
보통의
어플리케이션 서버구성
。해당어플리케이션을배포하기위해서클라이언트는클라우드 서비스 업체에서 필요한 자원(Network/Storage/Computing/OS + SW/어플리케이션)에 적합한클라우드 컴퓨팅 모델(IaaS/PaaS/SaaS)을 임대.
IaaS(Infra as a Service)
。Cloud Provider가Server,Storage,Network를가상화처리하여인프라 자원만 제공하는클라우드 컴퓨팅 모델
▶Cloud Provider의Infrastructure만을 사용하는 방식으로서 제공되는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 Provider가Virtual 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 )
。클라우드 서비스 업체가 제공하는자원을클라이언트가 사용할 수 있도록 준비