현대 웹개발은 모노리틱(Monolithic) 방식을 넘어 마이크로서비스(Microservice)를 지향하는 방식으로 넘어가고 있습니다.
단일 웹 어플리케이션이 아닌 여러가지의 서비스가 조합된, 어떻게 보면 더 복잡한 아키텍처일 수 있지만 이러한 문제점을 단순화하여 해결하려는 노력들이 있습니다.
다수의 장비 및 다수의 솔루션들이 복잡하고 다양한 커뮤니케이션에 의해 서비스되는 웹서비스의 아키텍처는 기존의 시스템 아키텍처로 커버하기는 어려운 점이 많은 상황입니다. 일반적인 서비스에서 사용되는 모노리틱 어플리케이션의 특징을 우선 알아보도록 하겠습니다.
모노리틱 어플리케이션 특징
- 하나의 ear 또는 war안에 모든 내용이 들어가 있음.
- 재사용 가능한 부분은 sharing.jar와 같이 jar영역에 대해서만 재사용 가능
- 일년에 한두번 대규모 push 를 통한 업데이트 (못하는 경우도 많음)
- 500k 라인 이상의 코드
- heavyweight infrastructure
- 수없이 많은 테스트 케이스
- 대규모의 팀 규모
- 많은 버그 목록
이러한 모노리틱 어플리케이션을 H/W 장비마다 서비스를 구성하고 여러 사용자를 대응하기 위하여, 다수의 장비를 구성해야 하는 경우 보통 3~4대 정도까지는 힘들겠지만 어느정도 서버 설정 및 구성을 하겠지만, 그 이상의 서버를 설정하는 것은 매우 노동집약적 힘든 중노동이 될 수 있습니다. 또한 이러한 환경의 가용성(HA)을 높이기 위하여 수많은 안정성 테스트 및 소스 개발.배포 등도 매우 복잡해 질 수 있습니다.
[ 빅데이터 처리를 위한 장비 아키텍처 발전사]
이러한 문제점을 해결하며, Amazon이나 Google Cloud와 같은 인프라를 이용하거나, 관리 용이성을 위하여 Docker와 같은 container 기반의 인프라를 통한 Modern Web Application 을 개발하는 시대가 다가오고 있습니다.
수많은 서버장비에 자신이 원하는 서비스 및 기능을 손쉽게 설치하고, 관리하고, 특정 서버가 죽으면, 자동으로 해당 서비스를 다른 서버로 이동해주고, 마치 스마트폰의 앱처럼 기업용 솔루션을 클라우드 환경처럼 손쉽게 관리할 수 있는 솔루션이 있다면 얼마나 편리할까요?
이러한 편리한 기능을 제공하며 새로운 마이크로서비스 아키텍처로 이동하기 위한 인프라를 제공하는 Container 관리 솔루션들이 이미 몇가지 있습니다.
그중에서 Apache 오픈소스 진영에서 개발되어 가장 많은 사용자 지원을 받고 있는 Mesos 및 DCOS에 대해서 설명하도록 하겠습니다.
STATIC PARTITIONING to ELASTIC SHARING
DC/OS는 Data Center OS 즉 Data Center와 같이 대규모 서버 환경을 하나의 OS처럼 관리하고 하는 목적으로 개발되었습니다. 여러 서버 환경을 하나의 자원처럼 관리하기 위해서는 기존의 정적 파티션 개념에 의한 고정된 자원 분배개념이 아닌 유연한 공유(Elastic sharing)에 의한 각 서버 자원의 자유로 효율적인 사용이 주요 이슈이며 이를 OS처럼 손쉽게 처리하기 위한 목적이 DCOS의 목적입니다.
일반적으로 대부분 기업 인프라는 정해진 하드웨어 장비에 정해진 솔루션만 설치하여 이용하는 방법을 많이 사용했습니다.
정적파티션 방법은 다음의 큰 단점을 가지고 있습니다.
-
장애대응
-
자원낭비
즉 하나의 하드웨어나 솔루션에 문제가 생기면 전체시스템의 문제로 발생되고 시스템 장원이 효과적으로 이용하기 어렵기 때문에 자원낭비가 발생합니다.
이러한 문제점을 해결하기 위하여 동적 공유를 통해 자원을 자동적으로 분배하는 기술이 필요합니다.
즉 여러 물리적 하드웨어 장비를 커널 레벨에서 하나의 자원처럼 관리하는 클러스터링 관리자가 필요했고 이러한 역할을 하는 것이 Apache Mesos 로 개발 및 발전되고 있습니다.
[아키텍처별 자원 파티셔닝 구조도]
Apache Mesos 특징
l 어플리케이션 리소스 관리 및 스케줄링
l분산시스템 커널
l10000개 노드까지 확장가능
l기본 Docker 지원
l multi-tenancy
l fault-tolerance, HA
l 확장성
DCOS는 커널레벨에서 분산환경을 지원하는 mesos를 좀더 매끄럽고 유연하게 마치 하나의 컴퓨터를 다루듯이
분산 Datacenter의 자원을 손쉽게 관리하고kafka 및 spark 등 여러 데이터 서비스를 손쉽게 설치 및 관리가 가능하도록 도와주어 마이크로 서비스 환경에 최적화된 운영체계입니다.
DCOS를 쓰면 기존 장비 효율성을 4배로 향상시켜줄 수 있으며, 자동화된 스케쥴러 및 워크로드 다중 처리는 손쉽게 데이터센터 를 다룰 수 있습니다.
DC/OS 특징
다양한 실행환경
사내 서버들에 적용할 수 있으며, Amazon,Azure등 클라우드 환경에도 적용할 수 있습니다. 심지어 개인 PC에서 테스트 목적으로 설치할 수 있습니다.
강력한 리소스 관리
메모리,CPU,네트워크 자원을 각 서버마다 작업부하를 조정하고 리소스 공유를 통해 자원 활용도를 높입니다.
가상 네트워크 오버레이
가상 IP를 컨테이너 마다 부여하고 동적으로 할당 및 조정이 가능하여 완벽한 가용성을 제공합니다.
동적분산 로드밸런싱
트래픽 과부하 상태에 따라 자동 로드 밸런싱
자가 치유 인프라스트럭처
부하 장애시 자동 감지 자동복구
무중단 업그래이드
전체적 서비스 중단없이 서비스 배포 및 업그래이드가 가능합니다.
UNIVERSE
DCOS의 강력한 기능으로 스마트폰의 google play는 앱스토어 처럼 DCOS환경용 어플리케이션을 손쉽게 설치하고 업그레이드 할 수 있다.
[DCOS 환경에서 손쉽게 설치할 수 있는 각종 어플리케이션]
활용범위
-
개인화 서비스 기계학습, IoT 신속한 서비스 개발 및 배포
-
마이크로 서비스 아키텍처 웹 개발
-
대규모 사용자 서비스 지원
-
Private/Public Cloud 혼용을 위한 Hybrid Cloud 환경
-
손쉬운 GPU 기반의 AI 환경 구성
-
빅데이터 처리
다음에는 DCOS를 설치하는 방법 및 다양한 최신 분산 어플리케이션을 설치해보며 이용하는 것에 대해 계속 연재해 보도록 하겠습니다.
'빅데이터' 카테고리의 다른 글
간략하게 알아보는 추천시스템 (0) | 2017.12.29 |
---|---|
[Spark] Streaming에서 DataFrame Tip (0) | 2017.11.30 |
Apache Phoenix 활용 (0) | 2017.11.28 |
NoSQL 데이터 모델링 (0) | 2017.10.30 |
HBase 개념 정리 (0) | 2017.09.21 |