요즘 SaaS(Software as a Service) 클라우드 서비스가 대중화 되어 있는 가운데 Microsoft사의 정책은 솔루션 보다 클라우드 서비스에 초점을 더 맞추고 있습니다.
MS의 선택이 틀리지 않았는지 그 결과로 MS Azure 서비스는 2018년 기준으로 매출이 98%나 성장하였고 오피스 365도 41% 매출이 상승하였다는 기사를 찾을 수 있었습니다.
그런 의미에서 서비스 기반의 소프트웨어인 클라우드 서비스와 MS의 클라우드 서비스 인 Azure를 간략하게(수박 겉핡기 식..) 살펴보는 포스팅을 해보려 합니다.
SaaS 애플리케이션
SaaS를 이해하기 위해서는 테넌트(Tenant)의 개념 부터 짚고 넘어가야 될 것 같습니다.
테넌트는 어떤 서비스을 사용하기 위해 접근 할 수 있는 권한 또는 사용자들의 집합이라 할 수 있으며 이런 테넌트가 다수의 애플리케이션 권한을 가지고 있다면 멑리테넌트(Multi tenant), 하나의 동일한 애플리케이션을 동작시켜 멀티테넌트에게 서비스를 제공하는 멀티테넌시(Multi tenancy) 등이 있습니다.
SaaS 애플리케이션은 멀티테넌트가 애플리케이션의 구성을 변경하여 맞춤 온라인 서비스를 생성하는 구성변경성을 제공해야 합니다.
즉, SaaS 플랫폼은 테넌트들에게 테넌트별로 구성 변경된 서로 다른 서비스와 독립된 서비스 개발 환경을 제공해야 한다는 의미 입니다.
SaaS 플랫폼 아키텍처
SaaS의 플랫폼 아키택처는 다음과 같습니다.
공유프로세스 기반은 다수 테넌트의 트랜잭션이 하나의 특정 애플리케이션에서 수행하고 데이터 플랫폼이 물리적으로 분리되어 있습니다.
플랫폼 공유 기반은 테넌트별로 논리적으로 하나의 DB 사용하며 범용 플랫폼 공유 기반은 멀티테넌트들에게 애플리케이션 구성변경성을 지원하는 맞춤형 테넌시를 지원하고 있습니다.
테넌트 데이터 관리
테넌트 데이터 관리 기법에는 다음과 같은 방식들이 존재합니다.
1.공유서버 기법
테넌트별 데이터를 공유서버에 개별 가상 머신을 설치하여 테넌트 데이터를 저장 및 관리하는 기법으로 각 테넌별로 자신의 테이터베이스 소유합니다.
2. 공유 프로세스 기법
테넌트들이 하나의 데이터베이스를 공유하고 메모리와 데이터베이스 연결 풀을 공유하는 기법입니다.
각 테넌트는 하나의 데이터베이스 공간을 할당 받아서 지역 데이터베이스 사용과 같이 접근 할 수 있습니다.
3. 공유 스키마 기법
테넌트별 테이블을 확장시키기 위해 각 테이블은 추가적인 테이블 칼럼이 있고 모든 테넌트의 데이터는 하나의 스키마에 저장,모든 리소스를 공유할 수 있는 고급 기법입니다.
Windows Azure
사용자가 전세계의 마이크로소프트 데이터 센터에 어플리케이션을 빌드, 배포하거나 관리할 수 있게 하는 유연한 개방형 클라우드 플랫폼입니다.
Paas형태의 클라우드 서비스로 .NET 기반의 플랫폼과 Microsoft 기반의 미들웨어는 물론이고, PHP, JAVA와 같은 다른 기술을 지원할 수 있는 플랫폼 서비스를 제공하고 있습니다.
<IaaS와 PaaS의 차이>
주요 특징으로는
- 클라우드 환경에서의 개발을 위한 통합 SDK 제공.
- 다양한 개발 언어 지원. (PHP, JAVA, C# 등 여러 언어로 개발이 가능)
- Blob 스토리지 , Table 서비스 및 관련 REST API 제공.
- 클라우드 문제진단 및 관리를 위한 서비스 API 제공.
- 다양한 형태의 서비스 모델 (Role) 지원.
서비스 모델(Role)에는 다음과 같은 종류가 있습니다.
- WebRole: ASP.NET 응용프로그램 / ASP.NET 기반으로 개발된 프로그램을 실행.
- WCF Service Role: WCF 서비스 실행 / WCF 서비스를 독립적으로 실행이 가능.
- Worker Role: 백그라운드 실행/원도우서비스 같은 백그라운드 형태의 프로그램을 실행.
- CGI Role: FastCGI 실행 / PHP같은 CGI 기반 프로그램을 실행.
- VM Role: 가상화 하드디스크 실행 / Windows 2008 R2 Hyper-V의 VHD를 올려서 실행.
ARR( Application Request Routing)
Window Server에서 IIS의 확장기능으로 제공되는 HTTP 프로토콜에 특화된 부하분산 기능을 담당하여 고성능의 로드밸런서(HTTP 전용 L7 스위치, 소프트웨어 기반의 Rever Proxy 솔루션)를 구축가능하게 하는 기능입니다.
구성조건으로는 Window2008 이상 버전의 IIS7.0 이상과 최소 2개 이상의 응용프로그램의 서버 존재하여야 합니다.
ARR을 이용한 로드 밸런싱
주요기능에는 다음과 같은 것들이 있습니다.
- ARR서버에 캐시를 둠으로써 정적리소스(HTML, 그림파일 등) 요청을 제공하는 프로시서버 역할 가능.
- 다중계층의 ARR서버를 이용한 전세계 각지에 걸친 부하분산 가능.(CDN 서비스 구축 가능)
- HTTP 요청 정보를 규칙을 사용하여 구축 된 HTTP 기반 라우팅 결정.
- HTTP 요청에 서비스를 제공하기 위해 적절한 서버를 결정 하는 알고리즘 의 균형을 고급 로드.
- 실시간 교통 및 기준선 서버의 상태를 교정 하기 위해 제공 되는 구성 매개 변수 세트 에서 서버 의 상태를 확인하기 위해 특정 URL 에 대한 상태 모니터링.
- 쿠키를 사용하여 특정 클라이언트 에서 서버 에 대한 모든 요청을 지시하는 클라이언트 선호도 .
- Web 서버 의 관리를 합리화 하기 위해 추가 사업 기회를 창출 하기 위해 이름 선호도를 개최.
- 여러 서버 관리는 파일럿 관리 및 A / B 테스트 시나리오를 사용 하려면 농장 .
- 관리 및 IIS 관리자 인터페이스를 통해 모든 구성 설정과 통합 런타임 통계를 모니터링 한다.
- 실패한 요청 추적 규칙 지원.
- 디스크 기반 캐시.
- 캐시 계층 관리.
- CDN / 전자 증권 거래 네트워크 환경 의 캐싱 프록시 노드.
- 캐싱 압축 된 개체.
- IIS 관리자를 사용하여 캐시 된 콘텐츠를 볼수 있음.
- URL 패턴을 일치시켜 캐시 된 내용을 삭제.
- 최우선 캐시 제어 지시문.
- 지능형 바이트 범위를 지원.
- 지능형 실시간 지원 요청.
- 간편하게 웹사이트 부하분산 가능
☞ 자료 참고
- SaaS 애플리케이션 : SaaS플랫폼 기술 및 개발 동향 [한국전자통신연구원]
- 윈도우 애저 서비스 : 마이크로스프트 (http://www.azure.microsoft.com)
- ARR : 마이크로스프트 (http://iis.net/downloads/microsoft/application-request-routing)