클라우드 컴퓨팅

클라우드 구축 유형2018-05-18T17:33:40+00:00

클라우드 컴퓨팅

인터넷(“클라우드“)를 통해 서버, 저장소, 데이터베이스, 네트워킹, 소프트웨어, 분석 등의 컴퓨팅 서비스를 제공하는 것입니다.
이러한 컴퓨팅 서비스를 제공하는 회사를 클라우드 공급자라고 하며, 클라우드 공급자는 일반적으로 가정에서 수도나 전기에 대한 요금이 청구되는 방식과 유사하게 사용량에 따라 클라우드 컴퓨팅 서비스 요금을 청구합니다.

클라우드 컴퓨팅을 통해 온라인 서비스를 사용하여 메일을 보내고, 문서를 편집하며, 영화, TV를 보고 음악을 들으며 게임을 플레이하거나 사진 및 기타 파일을 저장하는 일 등이 가능해졌습니다. 클라우드 컴퓨팅의 발전은 비즈니스 규모에 관계없이 새로운 앱 및 서비스 만들기 데이터 저장, 백업 및 복수 웹사이트 및 블로그 호스트, 오디오 및 비디오 스트리밍, 주문형 소프트웨어 제작, 데이터 패턴 분석하여 예측 등의 프로젝트를 소규모부터 초대형 규모까지 유연하게 실행할 수 있게 만들었습니다.

클라우드 구조 살펴보기

클라우드 컴퓨팅의 이해를 돕기 위한 분류 구조적 분류입니다.

공용클라우드, 사설클라우드, 하이브리드클라우드

사용 목적에 따라 주로 사용되는 아키텍쳐 스타일

클라우드 구축 유형

클라우드는 응용 프로그램의 설계 방식을 변화시키고 있습니다. 단일형 응용 프로그램 대신, 분산된 작은 서비스들로 분해된 응용 프로그램이 설계되고 있습니다. 이러한 서비스는 API를 통해 또는 비동기식 메시지나 이벤트를 사용하여 통신하고, 응용 프로그램은 수요에 따라서 수평적으로 확장되어 새로운 인스턴스를 추가할 수 있습니다.
아키텍처 가이드를 통해 확장성, 복원력 및 고가용성을 제공하는 Azure 기반 응용 프로그램의 설계에 대한 구조화된 접근 방식을 설명합니다.

N계층

엔터프라이즈 응용프로그램에 사용되는 전통적인 아키텍쳐로 응용 프로그램을 논리 레이어와 물리적 계층으로 나눕니다.

적합성

단순 웹 응용프로그램
최소 리팩터링으로 온-프레미스 응용 프로그램을 Azure로 마이그레이션
온-프레미스 및 클라우드 응용 프로그램의 통합 개발

장점 (Windows/Linux)

클라우드와 온-프레미스 간, 클라우드 플랫폼 간의 이식성
대부분의 개발자가 쉽게 학습 가능
일반 응용프로그램 모델에서 자연스러운 발전
이기종 환경(Windows/Linux)에 대한 개방성

모범적용

자동확장(auto scaling)을 통한 부하 변경 처리
비동기식 메시징을 사용한 계층 분리
반정적(semi-static) 데이터 캐싱
고가용성을 위한 데이터베이스 계층 구성
프런트 앤드와 인터넷 사이에 WAF 배치
각 계층을 서브넷에 배치하고, 서브넷을 보안 경계로 사용 등

VM에서 실행되는 권장 N 계층 아키텍처

더 알아보기 >

N 계층 응용프로그램에 대해 Windows VM 실행

더 알아보기 >

N 계층 응용프로그램에 대해 Windows VM 실행

더 알아보기 >

웹 큐 작업자

클라이언트 요청을 처리하는 웹 프런트 엔드와 리소스 집약적 작업, 장기 실행 워크플로 또는 일괄 처리 작업을 수행하는 작업자가 핵심 구성 요소입니다.

적합성

비교적 간단한 도메일이 있는 응용 프로그램
장기 실행되는 워크플로, 일괄처리작업이 일부 포함된 응용프로그램
IaaS 대신 관리 서비스를 사용하기 원하는 경우

장점

비교적 간단한 아키텍쳐
쉬운 배포 및 관리
관심 사항들의 명확한 분리
비동기식 메시지를 통해 작업자와 분리된 프런트 앤드
프런트 앤드와 작업자크기를 독립적으로 조정

모범적용

클라이언트에 잘 설계된 API를 노출
부하 변경을 처리하도록 크기 자동 조정
CDN을 사용한 정적콘텐츠를 호스팅
적절한 경우 다중저장소지속성(Polyglot) 사용
데이터를 분할하여 확장성을 높이고, 경합을 줄여 성능 최적화

Azure App Service의 웹 큐 작업자

더 알아보기 >

웹 응용프로그램의 확장성 향상

더 알아보기 >

기본 웹앱 응용프로그램

더 알아보기 >

마이크로서비스

마이크로 서비스는 복원력이 있고, 확장성이 뛰어나며, 독립적으로 배포할 수 있고,
신속하게 진화할 수 있는 클라우드 응용프로그램을 구축하는 데 널리 사용되는 아키텍처 스타일입니다.

적합성

높은 릴리스 개발속도가 필요한 대규모 응용 프로그램
고확장성이 필요한 복합 응용 프로그램
풍부한 도메인이나 많은 하위 도메인이 있는 응용 프로그램
소규모 개발팀으로 구성된 조직

장점

독립 배포

버그수정 및 기능 릴리스 관리의 효율성이 증가하고 위험감소

독립 개발

연속적인 혁신과 더 빠른 릴리스 주기 가능

집중화된 소규모

하나의 서비스에 집중가능.
새로운 팀원들의 작업속도 향상

장애 격리

한개의 서비스 중단시,
타 응용 프로그램에 영향 없음. 
복원가능한 Azure 용 응용프로그램 참조

혼합 기술 스택

해당서비스에 가장 적합한 기술 선택 가능

세분화된 확장

독립적 서비스 확장 가능

모범적용

비즈니스 도메인을 중심으로 서비스 모델링
코드 또는 데이터 스키마 공유하지 않음
각 서비스 및 데이터 형식에 가장 적합한 저장소 사용
API는 서비스 내부 구현이 아닌 도메인 모델링을 해야함
서비스 간의 결합을 피함
인증, SSL 종료 등의 교차 문제를 게이트 웨이에 오프로드함

Azure Container Service를 사용하는 마이크로 서비스

더 알아보기 >

Azure Service Fabric을 사용하는 마이크로 서비스

더 알아보기 >

CQRS(Command and Query Responsibility Segregation – 명령 및 쿼리 책임 분리)

쓰기 작업에서 읽기 작업을 구분하는 아키텍쳐 스타일입니다.

적합성

여러 사용자가 동일한 데이터에 액세스하는 협업 도메인
특히, 읽기 워크로드와 쓰기 워크로드가 비대칭적인 경우
시스템 전체에 적용되는 최상위 수준의 아키텍처는 아님
읽기와 쓰기를 구분하는 명확한 값이 있는 해당 하위 시스템에만 적용

장점

독립적 확장

읽기 워크로드와 쓰기 워크로드를 독립적으로 확장

데이터 스키마 최적화

읽기 : 쿼리에 최적화된 스키마 사용
쓰기 : 업데이트에 최적화된 스키마 사용 연속적인
혁신과 더 빠른 릴리스 가능

보안

올바른 도메인 엔터티만 데이터에서 쓰기를 수행할 수 있는지 쉽게 확인

문제 구분

읽기, 쓰기를 분리하면 더 유연한 모델을 더 쉽게 유지 관리 가능

단순한 쿼리

읽기 데이터베이스에서 구체화된 뷰를 저장하여 쿼리할 때 응용프로그램은 복잡한 조인을 방지

모범적용

이벤트 소싱 패턴을 사용하여 업데이트 충돌 방지
쿼리의 스키마 최적화를 위해, 읽기 모델에 구체화된 뷰 패턴 사용

작업논리 : CQRS(명령 및 쿼리 책임 분리)는 쓰기 작업에서 읽기 작업을 구분

더 알아보기 >

마이크로 서비스의 CQRS

더 알아보기 >

이벤트 기반 아키텍처 – 게시-구독(pub-sub)모델 사용

쓰기 작업에서 읽기 작업을 구분하는 아키텍쳐 스타일입니다.

적합성

여러 하위 시스템에서 동일한 이벤트를 처리해야 하는 경우
최소 시간 지연의 실시간 처리
패턴 일치 또는 일정 기간의 집계와 같은 복합 이벤트 처리
높은 볼륨 및 높은 데이터 개발속도(예: IoT)

장점

공급자와 소비자 분리
지점간 통합이 없어, 새 소비자 추가 용이
이벤트가 도착하는 즉시 응답가능
높은 수준으로 확장, 배포 가능
하위 시스템에서 이벤트 스트림을 독립적으로 확인

모범적용

이벤트 기반 아키텍처는 IoT솔루션의 핵심
보관 또는 배치 분석을 위해 콜드 스토리지에 이벤트 데이터 기록
알림, 경보 등 장치에서 수신된 특수 유형의 비원격 분석 메시지 처리
기계 학습

IoT 아키텍처

더 알아보기 >

Figure 1 IoT solution architecture

더 알아보기 >

빅데이터

기본의 데이터베이스 시스템에 비해 너무 크거나 복잡한 데이터의 수집, 처리 및 분석을 수행하도록 디자인되었습니다.

적합성

기존 데이터베이스에 비해 너무 큰 볼륨의 데이터 저장 및 처리
분석 및 보고를 위해 구조화되지 않은 데이터 변환
제한되지 않은 데이터 스트림을 실시간 또는 짧은 대기 시간으로 수집, 처리 및 분석
Maching Learning, Cognitive Service에 사용

장점

기술 선택 – HDInsight 클러스터에서 Azure 관리 서비스와 Apache기술을 적절히 조합하여 기존 기술 또는 기술 투자를 최대한 활용
병렬 처리를 통한 성능 – 대용량 데이터로 확장할 수 있는 고성능 솔루션 구현 가능
탄력적 확장
기존 솔루션과의 효율적인 상호 운용성

모범적용

병렬 처리 활용
데이터 분할
스키마 온 리드(schema-on -read) 의미 체계 적용
적소에서 데이터 처리
사용률과 시간 비용의 균형 조정
클러스터 리로스 분리
데이터 수집 오케스트레이션
중요한 데이터의 초기 스크럽

빅데이터 아키텍쳐 구성요소

데이터 소스

응용프로그램 데이터 저장소
응용프로그램이 공급하는 정적 파일
실시간 데이터 소스

데이터 저장소

Data Lake : 대용량 분산 파일 저장소 지원서비스
Blob 컨테이너
Azure Data Lake Storage

일괄처리

Azure Data Lake Analytics : U-SQL작업 실행
HDInsight Hadoop : Hive, Pig, Map/Reduce 작업
HDInsight Spark : Java, Scala, Python 실행

실시간 메시지 수집

메시지 수집 저장소를 통해 스케일 아웃 처리
안정적 전달 및 기타 메시지 큐 의미 체계를 지원
Azure 이벤트 허브
Azure IoT Hub Kafka

스트림 처리

SQL쿼리 기반 스트림 처리 서비스
Storm, Spark Streaming 등 오픈소스 스트리밍 기술 사용 가능
Azure Stream Analytics

분석 데이터 저장소

Azure SQL Data Warehouse : 대규모의 클라우드 기반 데이터 웨어하우징을 위한 관리서비스
HDInsight : Interactive Hive, Hbase, Spark SQL 지원, 분석용 데이터 처리 가능

분석 및 보고

Jupyter등의 분석 지원 : Python, R기술 등
Microsoft R Server, Spark 등 사용가능
Azure Analysis Services : 다차원 OLAP 큐브, 테이블 형식 데이터 모델 등의 모델링 계층 포함 가능
Power BI : 모델링 및 시각화된 셀프서비스 BI

 

 

오케스트레이션

워크플로우 자동화

  • Azure Data Factory
  • Apache Oozie
  • Sqoop

고성능 컴퓨팅

수백 또는 수천 개의 번호 매기기 등 코어 수를 많이 요구하는 대규모 워크로드를 말합니다. 이미지 렌러딩, 유체 역학, 재무 위험 모델링, 석유 탐색, 약 디자인 및 스트레스 분석 엔지니어링 등이 포함됩니다.

적합성

시뮬레이션, 대량 고속처리등 계산 집약적인 작업
대량의 컴퓨터 CPU에 분산처리되는 연산 작업
한 대의 컴퓨터에서는 너무 오래 걸리는 계산 작업
수백 또는 수천 번 실행되는 소규모 계산 작업

장점

“병렬”처리가 적합한 고성능 실현
수백 또는 수천 개의 컴퓨터 코어를 활용하여 대규모 문제를 신속하게 처리
전용 고속 InfiniBand 네트워크를 통해 특수한 고성능 하드웨어에 액세스
작업을 수행하고 종료하는 데 필요한 만큼 가상 컴퓨터(VM) 구독 가능

모범적용

Azure Batch
대규모 HPC(고성능 컴퓨팅) 응용 프로그램을 실행하기 위한 관리 서비스
Azure Batch를 사용하여 VM 풀을 구성하고, 응용 프로그램 및 데이터 파일을 업로드

Azure에 배포된 HPC Pack
HPC 클러스터를 Azure 내에서 완전 생성
헤드 노드는 클러스터에 대한 관리 및 작업 예약 서비스 제공

HPC 클러스터를 Azure로 버스트
HPC Pack 온-프레미스 실행, 버스트 용량에 대해 Azure VM 사용
클러스터 헤드 노드는 온-프레미스
ExpressRoute 또는 VPN Gateway로 온-프레미스와 Azure V-Net 연결

Azure Batch 적용

더 알아보기 >

Azure에 배포된 HPC Pack

더 알아보기 >

HPC 클러스터를 Azure로 버스트

더 알아보기 >