안녕하세요. 코난 김대우입니다.

이번에 소개해 드릴 내용은 아래에서 소개해 드린 것처럼, On-premise vs IaaS vs PaaS vs SaaS라는 제목으로, 각 서비스의 장단점을 알아보는 시간으로 진행하도록 하겠습니다.

 

진행된 이전 포스트는 아래 내용을 참고 하시길 바랍니다.

사설(Private) 클라우드 vs 공용(public) 클라우드, SaaS vs ASP, IaaS vs PaaS vs SaaS의 대결! (1/3)
사설(Private) 클라우드 vs 공용(public) 클라우드, SaaS vs ASP, IaaS vs PaaS vs SaaS의 대결! (2/3)

사설(Private) 클라우드 vs 공용(public) 클라우드, SaaS vs ASP, IaaS vs PaaS vs SaaS의 대결! (3/3)


 

클라우드2.jpg

 

On-premise, IaaS, PaaS, SaaS 각 서비스의 장점과 단점

이전 포스트에서 한번 소개해 드렸습니다만, 위의 이미지를 명확히 이해하신다면, 각각의 장점과 단점을 유추하는 것도 사실 크게 어렵지 않으실 거에요. 위의 이미지에 대해서 상세한 내용을 참고하고 싶으실 경우에는 아래 내용을 참고 하시길 바랍니다.

IaaS, PaaS, SaaS - 누구나 클라우드를 말한다.


 

1) On-premise 방식의 장점과 단점
장점
: 인프라부터 개발, OS는 물론, 플랫폼과 애플리케이션 등 모든 것을 직접 조달할 경우는 당연히 클라우드 컴퓨팅 서비스에서 문제가 되기 쉬운 보안이나 가용성, 성능 등을 자사에서 모두 제어가 가능한 장점이 있습니다.  소견으로, 보안 제어에 대해서는 On-premise가 장점이기도, 단점으로 볼 수도 있을 겁니다.
단점: 문제는 언제나 비용이 아닐까 생각합니다. 인프라의 구축하고 유지하는데 인력과 시간이 소요되고 클라우드 서비스에 비해, 확장성이나 유연성 확보가 어려울 수 있습니다.

 

이미 익히 알고계신 내용일 것 같아요. 역시 핵심은 바로, IaaS와 PaaS겠지요. 바로 다음, IaaS로 넘어 가겠습니다.


2) IaaS 방식의 장점과 단점
위의 이미지처럼, 인프라 부분을 클라우드 사업자가 제공하는 클라우드 서비스가 바로 IaaS 입니다. 즉, 하드웨어나 네트워킹, 서버와 스토리지를 제공받는 환경이라면, 어떤 장점이 있을까요?

장점: 네트워크는 물론 서버와 스토리지를 클라우드 사업자를 통해 이용하는 IaaS의 경우, 인프라 구축과 유지에 시간을 뺏기지 않고 필요 시에 신속하게 이용할 수 있으며, 클라우드 서비스 제공자가 인프라 정비에 많은 금액을 투자하므로 일반적으로 사용자가 직접 운용하는 것보다 가용성이 높고. 확장성 확보도 신속하게 처리 가능합니다. 또한, 클라우드의 가장 큰 장점은 동적인 확장입니다. IaaS는 이런 인프라 부분을 신속하게 확장 가능한 장점이 있지요. 필요하다면, 클라우드 서비스 제공자가 미리 만들어둔 OS VM을 이용도 가능해 이를 활용하면 관리나 모니터링도 쉽게 처리 가능합니다.(여담으로, 인프라가 늘어난다고 해서 어플리케이션도 함께 확장성이 제공 될까요? 아래에서 상세히 논의합니다.)

단점: 인프라를 유지하고 있는지에 대해 캡슐화되어 있으므로, 자사에서 보안이나 가용성, 성능 등을 세밀하게 제어하고자 하는 기업에는 적합하지 않습니다. 아울러, 맨 뒤에서 상세히 논의 하겠습니다만, Scale-out으로 동적 확장할 경우, 어플리케이션에 대한 수정과 부하 분산(Load Balancing) 처리 등은 IaaS에서 기본으로 제공되지 않습니다. 서비스에 필요한 개발 코드 수정이 필요하거나 부하 분산 등을 위한 추가 비용이 발생할 수 있습니다.(일부 초기 단계의 IaaS 사업자는 이런 부하 분산 서비스가  기술상의 연유로, 제공되지 않는 사업자도 있습니다.)

 

3) PaaS를 이용할 경우
인프라는 물론 OS와 플랫폼까지 함께 제공되는 PaaS는 어떨까요?

장점: 개발자에게 가장 유용한 클라우드 서비스로 애플리케이션 로직과 개발이라는 핵심 업무에 집중할 수 있습니다. 또한 부하분산(Load Balancing)이나 확장성 확보도 PaaS는 클라우드 서비스 제공자 측에서 수행해주기 때문에 일단 애플리케이션 코드를 작성해서 서비스 제공자가 준비한 플랫폼에 올리기만 하면 동적 확장 기능등 모든 PaaS의 기능을 활용 가능합니다. 특히, 솔루션 개발사에게 큰 도전이자 비즈니스 기회가 될 수도 있습니다.(다음 포스트에서 상세히 풀어 보겠습니다.)
단점: PaaS 서비스의 구조상 어플리케이션 플랫폼이 함께 제공되는 구조. 즉, 플랫폼에 종속되는 구조로 어플리케이션이 개발되기 때문에 타 PaaS 플랫폼 등으로 이전이 어려울 수 있습니다. 기존 어플리케이션이 있을 경우, 같은 개발 언어나 프레임워크를 이용한다고 해도, 최소한의 개발 리소스를 투입해 PaaS 플랫폼에 맞도록 어플리케이션을 수정 하는 과정이 필요합니다. 예를 들어, ASP.NET으로 구축된 웹 어플리케이션이 있을 경우 이를 Azure로 올릴 경우, 최소한의 Azure에서 동작하기 위한 일부 코드 수정이 필요하며, 이는 어느 플랫폼이나 마찬가지 입니다.

 

4) SaaS를 이용할 경우 장점과 단점
SaaS의 개념인 Finished Service를 생각한다면, 마찬가지로 장단점이 쉽게 눈에 보입니다. 앞의 포스트에서 ASP와의 비교를 통해 말씀 드렸으니 짧게만 남겨 두지요.
장점: SaaS 서비스 제공자가 제시하는 조건에 만족한다면 서비스 사용성이 대단히 높음. 도입 기간이 압도적으로 짧습니다. 말 그대로, 구독 형태이기 때문에 가입 정도의 절차면 바로 서비스 이용이 가능합니다. 인프라는 물론, 어플리케이션의 버전업, 패치 등의 보안 대책도 제공자가 측에서 일괄 수행하므로 사용자는 이에 대해 고민할 필요가 없습니다.
단점: 커스터마이징이 사실상 불가능합니다. 경험적으로 볼 때, 자사의 로고 정도 수정만 제공하는 정도가 일반적인 SaaS의 커스터마이징 수준입니다.

 

 

IaaS와 PaaS는 어플리케이션 서비스 및 개발의 관점에 볼 때, 장단점이나 우열을 논의하기 어려운, 상호 보완적인 클라우드 서비스입니다.
IaaS는 On-premise 방식과 유사해 기존 인프라를 클라우드로 올릴 때 가장 저항이 적은 클라우드 서비스 방식이기도 합니다. 하지만, PaaS와 비교해보면 어떨까요? IaaS와 PaaS의 가장 큰 차이는 바로 우리 개발자에게 가장 중요한 - "어플리케이션"에 있습니다.

Scale-up과 달리 Scale-out으로 서버를 늘려갈 경우(클라우드의 장점이죠) 어플리케이션도 자동으로 동적 확장이 되어 운영 될까요?
- 절대 그렇지 않습니다.

 

예를 들어, 웹 어플리케이션이라면 - 세션 처리 하나만 하더라도 서버가 늘어날 경우, 신경써서 처리해 줘야만 합니다. 예를 들어, ASP.NET이라면, 기존 세션 상태 처리를 위해 in-memory 방식이 아니라, Session state 서비스 또는 SQL서버로 세션 상태를 관리해야 동작하지요. 요청에 대한 부하 분산(Load-Balancing)은 어떨까요? 당연히, 서버의 앞쪽에 L4나 부하 분산이 가능한 방식을 추가해야 합니다. 당연하지만, 클라우드 서비스 사업자에 따라 이런 서비스를 이용할 경우 추가적인 비용도 발생합니다.

 

PaaS와의 비교를 위해 말씀 드렸습니다. 누누히 말씀 드리지만, IaaS나 PaaS 중 어느 하나가 낫다는 말씀을 드리는 건 아닙니다. 포스팅을 통해 논의 드린 것처럼, 양쪽 모두 장점과 단점이 있으며 선택은 모두 어플리케이션 성격이나 비즈니스 구조를 고려한 “선택”의 이슈라는 것을 강조해 드립니다.

 

IaaS와 PaaS, 그리고 SaaS는 모두 개별적으로 제공될 수도 있으며, PaaS위에 SaaS를 구축해 서비스하는 사례 등 - 서로의 필요와 비즈니스 요구에 의해 얼마든지 상호 보완적으로 구축되어 업계에서 안착하게 될 것입니다. 궁극적으로는, 클라우드 기반 솔루션을 개발하는 솔루션 개발사(ISV)의 입장에서 볼때, IaaS와 PaaS 양쪽 모두가 고객의 요구에 의해 얼마든지 커스터마이징이 가능한 하이브리드 모델로 제공되는 선택이 분명 최선이 아닐까라고, 소심하게 확신해봅니다.


자 이렇게 해서On-premise vs IaaS vs PaaS vs SaaS 내용을 진행해 보았습니다.  감사 드리며, 개발시 많은 도움 되시길 바랍니다.
감사합니다.

 

 

참고자료 :

사설(Private) 클라우드 vs 공용(public) 클라우드, SaaS vs ASP, IaaS vs PaaS vs SaaS의 대결! (1/3)
사설(Private) 클라우드 vs 공용(public) 클라우드, SaaS vs ASP, IaaS vs PaaS vs SaaS의 대결! (2/3)

사설(Private) 클라우드 vs 공용(public) 클라우드, SaaS vs ASP, IaaS vs PaaS vs SaaS의 대결! (3/3)

SQL서버의 DB를 손쉽게 클라우드, SQL Azure로 전송하는 방법, SQL Azure Compatibility Assessment
클라우드 컴퓨팅 Azure를 개발자가 무료로 테스트 하는 방법
Azure 사용 가격 예측 계산기 - Full Pricing Calcurator
클라우드 컴퓨팅과 SLA(Service Level Agreements) - Azure가 제공하는 SLA
Azure 모니터링과 사용량 계측(Metering) 도구 총집합
Azure Connect - Azure를 회사망의 일부처럼 사용하는 하이브리드 클라우드(hybrid cloud) 구축
클라우드의 네트워크 응답속도(Latency) 한계 극복, SQL Azure Federation
클라우드와 CDN 비즈니스. 그리고, Azure
클라우드와 On-premise 전체 비용 비교에 대한 단상
IaaS, PaaS, SaaS - 누구나 클라우드를 말한다.


 

Azure - 클라우드 컴퓨팅 - 시리즈 강좌 리스트
[Azure강좌] 1. 클라우드와 원도우 애저 소개
[Azure강좌] 2. SDK 설치와 Azure 무료 신청
[Azure강좌] 3. ASP.NET(Web Role) Hello World
[Azure강좌] 4. 프로젝트 패키지 Azure 배포
[Azure강좌] 5. Windows Azure Storage 서비스와 계정 설정
[Azure강좌] 6. 테이블 서비스와 StorageClient 라이브러리 #1
[Azure강좌] 7. SQL Azure 소개와 서버 구성
[Azure강좌] 8. 데이터베이스 생성과 SSMS 사용
[Azure강좌] 9. SQL Azure 마이그레이션 위자드 사용하기
[Azure강좌] 10. SQL Azure 방화벽 설정
[Azure강좌] 11. SQL Azure Manage 툴 사용해 보기
[Azure강좌] 12. 테이블 서비스와 StorageClient 라이브러리 #2
[Azure강좌] 13. SQL Azure ASP.NET GridView 바인딩
[Azure강좌] 14. Blob 서비스와 Container
[Azure강좌] 15. Blob 리스트 조회, 업로드 다운로드 예제
[Azure강좌] 16. 웹사이트 콘텐트 Blob 스토리지 이용
[Azure강좌] 17. Windows Azure CDN 설정
[Azure강좌] 18. Queue 서비스와 생성, 삭제, 메타데이터 추가
[Azure강좌] 19. Queue 의 메시지 피킹 및 가져오기, 추가, 삭제
[Azure강좌] 20. [Tip] SQL Azure 방화벽 룰 설정 예제 애플리케이션


Azure - 클라우드 컴퓨팅 - 동영상 참고 자료

[Azure 동영상 강좌] 1. 클라우드와 원도우 애저 소개 (애저 포털 둘러보기)
[Azure 동영상 강좌] 2. SDK 설치와 Azure 무료 신청
[Azure 동영상 강좌] 3. ASP.NET(Web Role) Hello World
[Azure 동영상 강좌] 4. 프로젝트 패키지 Azure 배포
[Azure 동영상 강좌] 5. Windows Azure Storage 서비스와 계정 설정
[Azure 동영상 강좌] 6. 테이블 서비스와 StorageClient 라이브러리 #1
[Azure 동영상 강좌] 7. SQL Azure 소개와 서버 구성
[Azure 동영상 강좌] 8. 데이터베이스 생성과 SSMS 사용
[Azure 동영상 강좌] 9. SQL Azure 마이그레이션 위자드 사용하기
[Azure 동영상 강좌] 10. SQL Azure 방화벽 설정
[Azure 동영상 강좌] 11. SQL Azure Manage 툴 사용해 보기
[Azure 동영상 강좌] 12. 테이블 서비스와 StorageClient 라이브러리 #2
[Azure 동영상 강좌] 13. SQL Azure ASP.NET GridView 바인딩
[Azure 동영상 강좌] 14. Blob 서비스와 Container
[Azure 동영상 강좌] 15. Blob 리스트 조회, 업로드 다운로드 예제
[Azure 동영상 강좌] 16. 웹사이트 콘텐트 Blob 스토리지 이용
[Azure 동영상 강좌] 17. Windows Azure CDN 설정
[Azure 동영상 강좌] 18. Queue 서비스와 생성, 삭제, 메타데이터 추가
[Azure 동영상 강좌] 19. Queue 의 메시지 피킹 및 가져오기, 추가, 삭제
[Azure 동영상 강좌] 20. [Tip] SQL Azure 방화벽 룰 설정 예제 애플리케이션





profile

부족하지만, SQLER의 누군가와 함께한 나눔을 통해 제가 더 많이 즐거웠습니다.
SQLER와 함께 즐거워 할수록, 그 나눔을 통해 더 많은 기회와 가치를 발견하게 되었습니다.
나눔의 생각이 앞으로도 계속, SQLER를 움직일 것입니다.

코난, 김대우 / SQLER 운영자 / 골라먹는 SQLER RSS 정보 구독 / 실시간 SQLER 소식 uxkorea 트위터