Article 1. 데이터 적재 1321
Section 2. 데이터 적재 및 저장
Paragraph 1. 데이터 적재 아키텍처 수립
Subparagraph 1. 아키텍처 정의
- 아키텍처 정의란 요구사항을 구현하기 위한 기반 기술을 정의하는 과정이다.
- 요구사항을 반영하여 하드웨어와 소프트웨어 아키텍처를 정의하는데, 이는 정보시스템 개발, 테스트, 이관을 위한 기술적 기반이 된다.
Subparagraph 2. 빅데이터 적재 아키턱처 수립
Clause 1. 빅데이터 적재 아키텍처 요구 정의
-
장비 요구사항 정의
- 서버 장비 규격 정의
- 주요 서버는 분산 처리를 위한 네임 노드(Name Node), 데이터 노드(Data Node), 데이터 분석을 위한 분석 서버, 원천 데이터 획득을 위한 수집 서버 등이 있음
- 네트워크 장비 규격 정의
- 용도에 따라 라우터, 스위치 등으로 구성
- 스토리지나 백업 장비를 위한 망 구성의 경우 SAN 스위치 도입 고려
- 물리적 포트 수를 고려하여 가용 수량을 결정하며, 대역 폭에 따라 네트워크 장비 용량 도출
- 스토리지 장비 규격 정의
- 용도에 따라 SAN, NAS 등에 대한 도입 검토
- SAN 통합 스토리지를 구성하는 경우 볼륨 할당을 위해 RAID 구성을 고려해야 하며, 통합 스토리지를 할당하는 서버의 경우 별도의 HBA NIC가 필요
- 최근 스토리지의 빠른 I/O 처리를 위해 SAS 디스크에서 Flash 디스크로 전환하고 있는 추세이므로, I/O 처리 속도 또한 스토리지 규격을 결정하는 중요한 요인
- 서버 장비 규격 정의
-
소프트웨어 도입 요구사항 정의
- 빅데이터 적재를 위한 소프트웨어 구성 요구사항 도출
- 자체적으로 시스템을 구축하는
온프레미스
의 경우 상용 소프트웨어와 오픈 소스 소프트웨어 도입을 모두 고려 - 자체 구축이 아닌 경우 상용 클라우드 서비스를 고려할 수 있으며, 클라우드 서비스 이용 시 인프라 제공 수준에 따라 laaS, PasS, SaaS 유형 중 요구사항에 적합한 서비스 선택
-
성능 요구사항 정의
- 성능 요건 검토를 통해 도출한 성능 목표 지표를 활용하여 성능 검증 방안 수립
- 서버
- 성능 요구사항 내용
- 최적의 용량을 확보
- 성능 관련 이슈 예방 방안
- 세부 항목
- CPU, 메모리, 디스크, 프로세스, 커널, 파일 시스템, 네트워크 I/O
- 성능 요구사항 내용
- 네트워크
- 성능 요구사항 내용
- 네트워크에 연결된 장비와 호스트 간의 트래픽에 대한 예상치
- 세부 항목
- 대역폭, 전송 속도, 처리속도
- 성능 요구사항 내용
- DBMS
- 성능 요구사항 내용
- 데이터의 현황 데이터를 수집, 관리하고 경향을 분석한 용량 계획 반영
- 세부 항목
- 데이터 모델링, 응용프로그램/SQL, 파라미터 설정, 인덱스 구성 등
- 성능 요구사항 내용
- 응용 시스템
- 성능 요구사항 내용
- 사용자 업무 관점에서 목표했던 서비스 수준의 유지 여부 파악 및 개선
- 세부 항목
- 응용 프로그램, 응용 플랫폼(WEB, WAS, EAI 등)의 응답 속도
- 성능 요구사항 내용
-
인터페이스 요구사항 정의
- 내부 연계, 외부 연계 대상 시스템을 고려하여 인터페이스 요구사항 정의
- 데이터 수집 단계에서는 원천 데이터 대상이 외부(웹 사이트 페이지, SNS 등)에 위치하는지, 내부(접속 로그, CRM 등)에 위치하는지에 따라 인터페이스 방식이 상이
- 데이터 분석 및 활용 단계에서는 가공된 데이터를 사용자 시스템으로 전송하기 위한 ETL 시스템의 추가 도입 고려
Subparagraph 3. 빅데이터 적재 하드웨어 아키텍처 정의
Clause 1. 서버 노드 아키텍처 정의
- 서버 노드 아키텍처는 크게 관리를 위한 네임 노드(Name Node)와 데이터 처리를 위한 데이터 노드(Data Node)로 구분된다.
- 단일 네임 노드와 다수의 데이터 노드로 구성되는 것이 보통이지만, 네임 노드가 단일 장애 지점이 되므로, 보조 네임 노드를 구성하여 이중화로 구성할 수도 있다.
- 네임 노드 구성 정의
- 파일 시스템의 Metadata(디렉터리 구조, Access 권한 등)를 관리하는 서버로 실제 작업 대상 데이터를 블록 단위로 나누어 데이터 노드에 분배하는 역할 수행
- 데이터 노드 구성 방안 정의
- 실제 데이터 저장 및 처리가 수행되는 노드로 데이터 노드에 저장되는 정보(Chunk)는 기본 3개 노드에 복제되어 저장되며, 필요에 따라 복제되는 노드 수를 늘릴 수 있음
Clause 2. 데이터 아키텍처 정의
- 빅데이터 플랫폼에서는 기존 시스템에서 일반적으로 사용되는 RDB(관계형 데이터베이스) 외에도 NoSQL, 분산 파일 시스템 등의 다양한 데이터 기반 아키텍처를 구성한다.
- 데이터 아키텍처에서는 가장 핵심적인 요소로 처리하고자 하는 데이터의 유형과 성격을 검토한다.
- 정형화된 데이터 항목 혹은 엄격한 트랜잭션을 요구하는 데이터를 처리하기 위해서는 관계형 데이터베이스가 적합하며, 멀티미디어 콘텐츠나 문서 정보 같은 비구조적인 데이터를 처리하는 데는 NoSQL 적용을 고려해야 한다.
- 빅데이터 아키텍처 기술요소는 분산 파일 시스템, 데이터베이스 클러스터, NoSQL, 병렬 DBMS, 네트워크 구성 저장 시스템, 클라우드 파일 저장 시스템이 있다.
Clause 3. 네트워크아키텍처 정의
- 목표 시스템 네트워크 구성 정의
- 빅데이터 플랫폼의 전체 네트워크 구성 정의
- 수집 및 처리 대상이 되는 데이터양에 따라 네트워크 대역폭을 고려해야 하며, 시스템 용도에 따라 네트워크 대역을 구분
- 개별 장비 네트워크 환경 정의
- 네임 노드, 데이터 노드, 응용 시스템 서버 및 데이터베이스 서버 등 빅데이터 플랫폼을 구성하는 개별 장비에 대한 네트워크 환경 구성 정의
- 필요에 따라 각 서버는 1개 이상의 네트워크 인터페이스 카드(NIC)를 장착하며, 개별 NIC는 단일 포트 혹은 이중화 포트를 이용하여 가용성 확보
Subparagraph 4. 빅데이터 적재 소프트웨어 아키텍처 정의
Clause 1. 기반 소프트웨어 정의
빅데이터 플랫폼에서는 데이터 수집, 적재, 저장, 처리, 분석, 활용에 따른 단계를 구분하고, 전체 시스템 관리를 위한 자원 관리, 모니터링 등 관리 업무와 시스템 이용자를 위한 사용자 인터페이스를 정의한다.
- 하둡 도입 검토
- 빅데이터 플랫폼의 핵심인 분산 파일 시스템과 분산 병렬 처리를 하는 맵리듀스로 구성된 오픈 소스
- 빅데이터 기반 프레임워크로 가장 널리 사용
- 인 메모리(In-Memory) 데이터베이스 도입 검토
- 데이터를 저장하는 스토리지가 메인 메모리를 이용하는 방식의 데이터베이스 관리 시스템
- 인 메모리 데이터베이스는 상대적으로 접근 속도가 높은 성능을 보이며, 검색 및 조회 알고리즘은 더 단순함
- 데이터 분석 플랫폼 적용 검토
- 수치화된 정형 데이터를 활용한 전통적인 분석 방법에서 발전하여 대용량의 데이터로부터 패턴 인식, 텍스트 마이닝, 소셜 분석 등의 기법을 이용하여 표면적으로 드러나지 않는 데이터 간 관련성 분석 및 필요 정보 추출
- 데이터 시각화 적용 검토
- 데이터 시각화는 빅데이터 분석 결과를 사용자가 쉽게 이해할 수 있도록 시각적으로 표현하는 기법
- 데이터의 정확한 분석만큼 중요한 것이 데이터의 의미를 전달하는 과정인 만큼 다양한 데이터 시각화 기법을 통해 효과적인 정보 전달 가능
Clause 2. 빅데이터 적재 소프트웨어 아키텍처 정의
- 빅데이터 적재에 필요한 소프트웨어 아키텍처를 정의한다
- 데이터 수집 단계에서는 외부 데이터 획득을 위한 크롤러, 내부 데이터 획득을 위한 ETL 등을 고려할 수 있고, 데이터 적재를 위한 DBMS는 RDB, NoSQL 등을 정의할 수 있다.
Paragraph 2. 데이터 적재
Subparagraph 1. 데이터 적재 특징
- 빅데이터 분석에 필요한 데이터를 수집한 후에는 수집한 데이터를 빅데이터 시스템에 적재해야 한다.
- 적재할 빅데이터의 유형과 실시간 처리 여부에 따라 RDBMS, HDFS, NoSQL 저장 시스템에 데이터를 적재할 수 있다.
- 여러 데이터 소스에서 데이터를 수집해 오기 위해, 데이터 소스를 처리하고, 분산된 여러 서버에서 데이터를 수집하는 데이터 수집 플랫폼과 저장 방법의 중요성이 점점 더 확대되고 있다.
Subparagraph 2. 데이터 적재 도구
- 수집된 데이터는 NoSQL DBMS가 제공하는 적재 도구를 이용하여 직접 적재하거나, 플루언티드, 플럼, 스크라이브, 로그스태시와 같은 데이터 수집 도구를 이용하여 적재한다.
- 플루언티드(Fluentd)
- 트레저 데이터(Treasure Data)에서 개발된 크로스 플랫폼 오픈 소스 데이터 수집 소프트웨어
- 주로 루비 프로그래밍 언어로 작성
- 플럼(Flume)
- 많은 양의 로그 데이터를 효율적으로 수집, 집계 및 이동하기 위해 이벤트(Event)와 에이전트(Agent)를 활용하는 분산형 로그 수집 기술
- 스크라이브(Scribe)
- 다수의 서버로부터 실시간으로 스트리밍되는 로그 데이터를 수집하여 분산 시스템에 데이터를 저장하는 대용량 실시간 로그 수집 기술
- 로그스태시(Logstash)
- 모든 로그 정보를 수집하여 하나의 저장소(DB, Elasticsearch 등)에 출력해주는 시스템