[비즈니스 인텔리전]


수많은 기업인들이 기업경영을 위해 노력하고 있습니다. 그들은 많은 거래를 위해서 정보를 수집해야 함은 물론  그 정보를 토대로 매출 상승, 신제품 개발, 투자금 확보 등 수많은 의사결정을 해야 합니다. 의사결정을 돕기 위해  세상의 정보들을 모으고 분석하는 도구들이 나날이 발전해오고 있습니다. 정밀한 정보도구들을 통하여 의사결정을  함으로써 성공의 확률을 높이고 있죠. 




1. BI 개념


‘비즈니스 인텔리전스의 개념’에 대해서 학습하겠습니다. 비즈니스 인텔리전스의 개념에 대해서  알아보고 비즈니스 인텔리전스 기술의 발전에 대하여 살펴보겠습니다. 비즈니스 인텔리전스란 줄여서 BI라고도  하는데요. 사용자들의 의사결정을 돕기 위하여 방대한 양의 데이터를 통합하고 분석 및 접근할 수 있도록 해주는  도구를 지칭합니다. 비즈니스 인텔리전스는 기업이 보유하고 있는 수많은 정보를 정리하고 분석하여 기업의 생산성을  향상시키거나, 원가를 절감하거나, 고객만족을 높일 수 있는 등의 전략적 의사결정에 활용하게 합니다.  그리고 비즈니스 인텔리전스는 업무 각 분야의 데이터로부터 현재까지의 데이터를 분석하는데요. 이를 통해 미래의  계획을 세울 수 있는 통찰력을 얻게 하는 일련의 기능을 제공합니다. 또한 기업의 마케팅, 영업, 고객서비스 업무에  필요한 각종 의사결정 정보를 제공하여 합리적으로 의사결정을 할 수 있도록 도와줍니다.  


전통적인 비즈니스  인텔리전스 란 기업 경영에서 내비게이션 역할을 수행하는 것입니다. 기업에서 구성원에게 적시에 의사결정을 할 수  있도록 지원하는 기술이라고 정의할 수 있는데요. 기업의 비전을 달성하기 위하여 비즈니스 전략을 효율적이고  효과적으로 지원합니다. 기업의 구성원에는 각 조직의 종업원, 중간 관리자, 의사결정자 등이 있습니다. 비즈니스  인텔리전스 역할은 다음과 같은데요. 먼저 경영인이 전략을 세우는데 필요한 데이터를 수집하고, 이 데이터를  가장 효과적이고 효율적인 방법으로 이용하여 적절한 의사결정을 하도록 도와줍니다. 즉, 경영상의 다양한 위협이나  위험을 자동적으로 알려주는 시스템이라고 할 수 있습니다. 그리고 비즈니스 인텔리전스는 데이터를 가공하여 특정한  의미가 내포된 데이터인 지식과 정보를 추출합니다. 이를 통해  비즈니스 인텔리전스는 올바른 의사결정을 내릴 수  있도록 지원하는 역할을 수행하는 것입니다.




전통적인 비지니스 인텔리전스의 구성

비즈니스 인텔리전스는 전략 인텔리전스 , 분석 인텔리전스 , 확장  인텔리전스 , 인텔리전스 인프라 , 인텔리전스 정보전달 로 크게 다섯 부분으로 구성되어 있습니다. 


전략 인텔리전스는  경영전략을 효과적으로 수립하고 실행하기 위해 필요한 가치동인 관리, 경영성과 관리, 전략 실행 모니터링, 원가 및  수익성 등에 관한 분석정보를 제공하고, 분석 인텔리전스는 특정 이슈의 해결을 위한 전문적인 의사결정 모델부터  업무 기능의 영역별 보고서 및 조회를 위한 기능까지해서 분석을 위한 다양한 정보를 생성하여 제공합니다.  확장 인텔리전스는 기업 내부뿐만 아니라 고객, 공급자 등 외부 이해관계자와의 거래 및 운영 프로세스에서  생성 되는 데이터를 분석하여 정보를 제공하고, 인텔리전스 인프라는 비즈니스 인텔리전스를 구현하기 위한  다양한 기술 및 데이터 통합기반을 제공합니다. 마지막으로 인텔리전스 정보 전달은 비즈니스 인텔리전스에서  생성된 정보를 사용자의 요구에 맞도록 제공하는 것을 목적으로 합니다. 최근에는 비즈니스 인텔리전스 구성에  전사적 성과관리(CPM)나 비즈니스 성과관리(BPM)와 같은 신개념이 등장하고 있으나, 비즈니스 인텔리전스의 프레임워크에서  크게 벗어나지 않습니다.




전통적인 비지니스 인텔리전스의 영역

전통적인 비즈니스 인텔리전스 영역은 이미 성숙된 분야이기에 이미 오랜 기간 동안 많은 용어들이 통용되고 있으며  어떤 용어는 이미 사장되었고 어떤 용어는 그 의미가 새로운 의미로 진화되었습니다. 예를 들어, ‘비즈니스  인텔리전스’라는 용어 자체도 쿼리, 리포팅 및 분석이라는 협의의 기술적인 의미로 사용되고 있는 경우도 있지만  때로는 그 단계를 넘어 IDC에서 정의하듯이, 프런트-엔드 툴 및 데이터 웨어하우징, 분석 애플리케이션을 포함한  광의적 의미로 사용되기도 합니다. 비즈니스 인텔리전스 정의에 포함되는 것들에 대하여 좀 더 자세히 알아볼까요?


쿼리, 리포팅 및 분석이라는 것은 데이터 베이스에 저장되어 있는 데이터 중에서 사용자가 원하는 데이터를 찾아  적절한 형태로 요약하여 간단한 요약 분석의 내용을 리포팅하는 것을 말합니다. 프런트-엔드 툴 이란 클라이언트에  설치되어 서버의 데이터베이스에 접속하여 데이터 작업을 하는 프로그램을 말합니다. 데이터 웨어어하우징 이란  사용자의 의사 결정에 도움을 주기 위하여, 정보시스템의 데이터베이스에 축적된 데이터를 공통의 형식으로 변환해서  관리하는 데이터베이스인 데이터 웨어하우스를 구성하는 기술입니다. 방대한 조직 내에서 분산 운영되는 각각의  데이터베이스 관리시스템들을 효율적으로 통합하여 조정 ∙ 관리하기 때문에 효율적인 의사 결정 시스템을 위한  기초를 제공하는 기술이라고 말할 수 있습니다. 분석 애플리케이션 이란 통계적 분석 등과 같은 다양한 유형의  분석 작업에 필요한 기능이 들어있는 응용 프로그램을 의미합니다. 




전통적인 비지니스 인텔리전스와 빅데이터 분석

전통적인 비즈니스 인텔리전스는 빅데이터 분석과는 데이터 측면과 프로그래밍 측면에서 차이를 보이는데 데이터  측면 부터 살펴보겠습니다. 먼저 데이터가 어디서 발생되는지부터가 다릅니다. 전통적인 비즈니스 인텔리전스는  기업 내부의 정보시스템에서 데이터가 발생하여 이를 기반으로 데이터의 정제과정을 거쳐 의사결정에 활용하게 되는  반면 빅데이터는 기업의 내부와 외부에서 발생하는 다양한 데이터를 처리합니다. 따라서, 전통적인 비즈니스  인텔리전스 기술이 관계형 데이터를 다루는데 반하여 데이터는 관계형 데이터에서 벗어나게 됩니다. 그리고 데이터  발생에 따라 데이터의 양도 달라지는데요. 전통적인 비즈니스 인텔리전스에서는 기업 내의 정제된 데이터만을  저장하므로 기가 바이트 급의 관계형 데이터베이스가 주류이나, 빅데이터 분석 기술은 비정형 데이터를 포함하는  테라 바이트나 페타 바이트 이상의 데이터가 발생하게 됩니다.


빅데이터 분석은 기업 내부뿐만 아니라 외부에서도 데이터가 발생된다고 하였는데요. 외부 데이터는 크게 트위터와  같은 외부 시스템, 스마트폰 사용자의 위치기반 데이터, 비디오, 소비자의 불만사항 같은 텍스트 정보 등이  있습니다. 






전통적인 비즈니스 인텔리전스와 빅데이터 분석을 프로그래밍 측면 에서 살펴보겠습니다. 먼저 데이터 처리  부분입니다. 전통적인 비즈니스 인텔리전스의 경우, 패키지 기반의 상업용 데이터 추출, 정제, 탑재 등 데이터를  처리하는 제품들이 존재하며, 이기종 데이터베이스와의 자동 연결 기능 등이 지원됩니다. 하지만 빅데이터는 비정형  데이터가 많은 데이터의 속성상 비즈니스 인텔리전스와 같은 자동화가 어렵습니다. 그래서 자바 기반의 맵 리듀스  프로세스로 비정형 데이터 정제를 합니다. 프로그래밍 기술에서도 둘은 차이를 보이는데요. 전통적인 비즈니스  인텔리전스는 SQL 기반의 선언문, 중급수준의 함수 및 통계 알고리즘 등을 사용하여 프로그래밍을 합니다. 반면에  빅데이터 분석에서는 고급수준의 함수 및 알고리즘을 프로그래밍하는 기술이 필요합니다. 또한, 전통적인 비즈니스  인텔리전스는 일반적으로 클러스터 컴퓨팅 환경에서 실행되는 것을 고려하지 않는데 빅데이터 분석에서는  대용량 데이터 처리를 위해 대부분의 작업들은 클러스터 또는 클라우드 시스템을 기반으로 합니다. 






2. BI 기술의 발전



모바일 비지니스 인텔리전스

 비즈니스 인텔리전스 기술은 최근 여러 방향으로 발전하고 있습니다. 먼저 모바일 비즈니스 인텔리전스 방향으로  발전하는 것에 대해서 살펴보겠습니다. 모바일 비즈니스 인텔리전스는 휴대성상호작용성 을 모두 가졌습니다.  경영자들이 출장이나 이동 중에도 실시간 경영 상태를 분석해 의사결정을 할 수 있도록 지원하고, 직원들은 때와  장소에 관계없이 각자의 핵심성과지표 KPI의 달성 상태를 파악하며, 개인 및 팀의 실적을 모바일 상에서 실시간으로  확인할 수 있도록 지원해줍니다. 이처럼 모바일 비즈니스 인텔리전스는 모바일 기기에 최적화된 응용 프로그램을  사용하여 정보 분석을 통해 비즈니스 통찰력을 얻는 기술입니다. 비즈니스 인텔리전스 기술의 최근 발전 방향 중  클라우드 비즈니스 인텔리전스 가 있습니다. 클라우드 컴퓨팅과 비즈니스 인텔리전스 기술을 조합한 것인데요. 클라우드 컴퓨팅 기술은 비즈니스 인텔리전스 애플리케이션에 액세스할 수 있는 가볍고 민첩한 방법을 제공하며  비즈니스 인텔리전스는 적절한 시기에 적당한 사람에게 올바른 정보를 제공에 할 수 있습니다.



시각화

비즈니스 인텔리전스 기술은 최근 발전 방향 중 시각화는 빼놓을 수 없는데요. 비즈니스 인텔리전스는 데이터 분석을 통해 비즈니스에  도움을 주는 서비스이죠. 하지만 이제는 분석만이 아니라 분석한 데이터를 어떻게 효과적으로 보여줄 것인지에 대한,  즉 시각화가 중요한 요소가 되었습니다. 활용 영역도 단순히 분석 결과를 이해하기 쉽게 보여주고 공유하는 것 외에  빅데이터 관련 작업 전반으로 확대 될 것입니다. 







[비지니스 인텔리전스 어플리케이션]


1. BI 애플리케이션 개념


일반적으로 비즈니스  인텔리전스 애플리케이션은 데이터베이스 쿼리 , 리포팅 소프트웨어 , 온라인분석처리 올랩 , 데이터 마이닝, 대시보드 데이터 시각화 기술 등의 도구를 포함합니다. 즉, 기업들이 신속하고 정확한 비즈니스 의사 결정을 위해 사용하는  데이터의 접근, 수집, 보관, 분석 등의 애플리케이션과 기술의 집합을 비즈니스 인텔리전스 애플리케이션이라고  합니다. 



BI 애플리케이션 기능

비즈니스 인텔리전스 애플리케이션은 의사결정자가 핵심 정보를 쉽게 검토할 수 있게 합니다. 의사결정자가  필요로 하는 데이터의 현황을 그래프나 표로 시각적으로  파악할 수 있게 표현함으로써 핵심정보를 쉽게 파악할 수  있게 해줍니다. 또한 기업의 상태를 신속하게 확인할 수 있게 해줍니다. 기업에서 발생하는 중요한 사항에 대한  정보를 빠르게 정리하여 보여주기에 기업의 상태를 신속하게 확인할 수 있습니다. 또한 현재의 상황에 대한 적절하고  정확한 정보를 제공합니다. 기업의 현재 상황과 관련한 데이터를 정리하여 보여주기에 정확한 현재의 정보를  제공합니다. 





2. BI 애플리케이션 도구


쿼리와 리포팅 소프트웨어

 비즈니스 인텔리전스 애플리케이션에 포함되어 있는 도구들에 대하여 알아보고자 합니다. 먼저 데이터베이스 쿼리  도구입니다. 쿼리란 데이터베이스에 정보를 요청하는 것으로 특별한 쿼리 언어로 쓰여진 정형화된 쿼리 문장의  형태로 정보를 요청하도록 하고 있습니다. 비즈니스 인텔리전스 애플리케이션들은 이러한 데이터 베이스 쿼리 기능을  가지는 도구를 포함하고 있습니다. 그리고 리포팅 소프트웨어란 데이터베이스와 연계하여 다양한 보고서를 미리 보기  하거나 출력하는 리포트 제작 기능을 의미합니다. 비즈니스 인텔리전스 애플리케이션들은 이러한 리포팅 기능을  가지는 도구를 포함하여 현황 관련한 다양한 리포트를 제공합니다.



온라인 분석처리(OLAP, OnLine Analytical Processing)

온라인 분석처리는 올랩이라고 하는데 OnLine Analytical Processing의 줄임말입니다. 온라인 분석처리 올랩은  사용자가 다차원 정보에 직접 접근하여 대화 형태로 정보를 분석하고 의사결정에 활용하는 과정입니다. 온라인 분석  처리의 특성은 다음과 같습니다. 먼저 다차원의 데이터 분석을 지원합니다. 정보에 대한 각 측면을 의미하는 차원을  여러 개로 구성하여 데이터를 다차원 형태로 보여주는 것입니다. 그리고 중간 매개자 없이 사용자가 직접 데이터에  접근하는데요. 홈뱅킹, TV 쇼핑 등을 생각하면 좀 더 쉽게 이해가 되실 겁니다. 온라인 분석처리는 대화식으로  정보가 분석되기 때문에 사용자가 명령을 하고 오래 기다리지 않습니다. 그래서 특별한 질문들에 대해  데이터베이스에 해당 데이터들을 구성해놓고 사용자가 신속하게 답변을 얻을 수 있도록 해야 합니다.  



데이터 마이닝

데이터 마이닝은 대규모로 저장된 데이터 안에서 체계적이고 자동 및 반자동화된 과정으로 통계적 규칙이나 패턴을  찾아 내는 것입니다. 즉, 대형 데이터베이스, 데이터 웨어하우스 또는 데이터 마트와 같이 대규모로 저장된  데이터 안에서 자동 및 반자동화된 과정으로 통계적 규칙이나 패턴을 찾아냅니다. 이 패턴 속에서 중요한 비즈니스  정보를 찾아내어 미래를 예측하고자 하는 것입니다. 데이터 마이닝은 대량의 데이터에 숨겨진 의미있는 패턴을  찾아내는 데 촛점을 맞추는 반면, 온라인 분석처리는 데이터에 관해 현황 보고서를 작성하는데 중점을 둡니다.


예를 들면, 온라인 분석처리는 비즈니스의 형태에 따라 판매 보고서와 같은 보고서를 작성하는 반면,  데이터 마이닝은 이런 판매에 영향을 미치는 원인이 무엇인가를 발견하는데 중점을 둡니다. 온라인 분석처리는  다수의 데이터베이스를 복잡한 테이블들로 요약하기 위해 현황 및 사실 정보를 가지는 숫자 값들의 더하기와 합산에  관련되어 있기 때문입니다. 또한 데이터 마이닝이 알고리즘을 사용하여 데이터를 자동적으로 조사하는데 반하여  온라인 분석처리은 사용자가 질의할 것을 구성하여 수행합니다. 정리하자면 데이터 마이닝은 온라인 분석처리보다  데이터베이스내에 숨겨진 지식 및 정보를 발견하는 것에 중점을 둡니다.




정보유형

데이터마이닝으로부터 얻을 수 있는 정보들의 유형은 예측 정보, 분류 정보, 군집화 정보, 연관 정보, 순차 정보  등이 있습니다. 먼저 예측 정보는 대용량 데이터 집합 내의 패턴을 기반으로 미래를 예측하는 것으로 예로 수요를  예측하는 것을 들 수 있습니다. 분류 정보는 일정한 집단에 대한 특정 정의를 통해 분류 및 구분을 추론합니다.  예로는 이탈한 고객을 분류하는 것을 들 수 있습니다. 군집화 정보는 동일한 특성을 가지는  자료들을 찾아  그룹핑하는 정보인데 예로 비슷한 행동 집단을 구분해 내는 것을 들 수 있습니다. 연관정보는 동시에 발생한  사건간의 상호연관성을 탐색하는 것으로 예로는 장바구니의 상품들의 관계를 알아보는 것을 들 수 있습니다.  마지막으로 순차 정보는 연관 규칙에 시간의 개념을 반영하여 시계열에 따른 패턴들의 상호연관성을 탐색하는  정보입니다. 예로 매일 주식의 값을 저장하는 시계열 데이터를 들 수 있습니다.



데이터 마이닝은 대형 데이터베이스,  데이터 웨어하우스 또는 데이터 마트와 같이 대규모로 저장된 데이터 안에서 자동 및 반자동화된 과정으로 통계적  규칙이나 패턴을 찾아낸다고 했습니다. 그럼 이 대규모로 저장된 데이터들이 무엇인지 각각 알아볼까요?


대형 데이터베이스 란 일반적으로 테라바이트급 저장 장치를 가진 초대형 데이터베이스를 의미합니다. 일반적으로 다수의  사용자가 사용하는 의사 결정 지원 시스템이나 트랜잭션 처리 애플리케이션들이 이러한 대형 데이터베이스를  구축하고 있습니다. 데이터 웨어하우스 는 기업 내 업무수행 관련 다수의 핵심적인 거래처리시스템들로부터 현재 및 과거 데이터들을 저장합니다. 그리고 전사적인 사용을 위해 데이터를 통합하고 표준화하지만, 변경은 할 수 없다는  특징이 있습니다. 데이터마트 는 데이터 웨어하우스의 일부분으로, 특정 사용자 집단이 사용할 수 있도록 특정 업무  영역의 데이터를 요약하여 구성하였습니다.



대시보드

대시보드는 프레젠팅을 위한 비즈니스 인텔리전스 애플리케이션입니다. 대시보드는 최고 경영진의 정보 요구에  맞추어 특별하게 설계된 정보시스템인데요. 4가지 특징이 있습니다. 대시보드는 적절한 정보에 쉽게 접근하게 해주며  관리 보고서에도 직접 접근하게 해줍니다. 사용자 친화적이며 그래픽에 의해 지원됩니다. 그리고 관리자들이 예외  보고서를 검토하고 상세 데이터로 드릴 다운할 수 있도록 하는 애플리케이션입니다. 드릴 다운이란 단어가 낯설을 수  있는데요. 드릴 다운이란 각종 요약된 레벨로부터 가장 상세한 레벨까지 차원의 계층에 따라 분석에 필요한 요약  수준을 바꿀 수 있는 기능을 의미합니다. 



데이터 시각화 기술

문자와 그래프, 표 등으로 데이터를 알기 쉽게 표현할 수 있는 데이터  시각화 기술도 비즈니스 인텔리전스 애플리케이션에 있어서 유용한 도구입니다. 즉, 데이터 시각화 기술은 데이터가  처리된 후 결과를 문자, 그래픽, 표 등의 시각적 형식으로 사용자들에게 제공합니다. 일전에 시각화를 위한 도구에는  마이크로소프트 엑셀, 구글 스프레드시트, IBM의 매니아이즈 등의 소프트웨어 도구가 있다고 학습했던 적이   있습니다. 그러한 소프트웨어를 사용하지는 않지만 유사한 기능을 가지는 시각화 도구를 비즈니스 인텔리전스  애플리케이션이 포함하고 있습니다. 






'빅데이터분석개론' 카테고리의 다른 글

데이터마이닝 (Data Mining)  (0) 2015.12.15
비즈니스 분석 (Business Analytics)  (0) 2015.12.13
빅데이터 분석 방법론  (0) 2015.12.13
HDFS와 MapReduce  (0) 2015.12.13
Hadoop 설치  (0) 2015.12.09


[빅데이터 분석 방법론의 개요] 


분석은 얽혀 있거나 복잡한 것을 풀어서 개별적인 요소나 성질로 나누는 것입니다. 분석이란 새로운 개념이 아니며  이미 오래 전부터 여러 영역에서 효과적으로 활용해왔죠. 여러가지 의사결정이나 비즈니스 성과 향상에 도움을  줄 수 있는 정보나 지식을 추출하기 위해서는 빅데이터 안에 숨겨져 있는 정보를 효과적으로 분석할 방법을  선택해야 합니다. 특히나 비즈니스에서는 다양하고 많은 분석을 선택하고 수행합니다. 최고의 이익을 낼 수 있는  의사결정을 위함인데요. 정보가 많아질수록 선택의 폭은 무궁무진해지고 있어 점점 다양한 분야에서 빅데이터를  분석하고 있습니다. 목적과 상황에 맞게 적절한 분석방법을 선택하는 것이 매우 중요한데요. 정형 및 비정형의  다양한 형태를 가지는 빅데이터를 분석할 수 있는 방법론은 많지만, 전체적으로 빅데이터를 어떻게 분석할 것인가를  잘 결정해서 분석할 필요가 있습니다.





1. 빅데이터분석


빅데이터 분석이란 대량의 데이터로부터 숨겨진 패턴과  알려지지 않은 정보를 찾아내기 위한 과정입니다. 빅데이터 분석의 목적은 데이터 과학자들에 의해 분석된 정보를  토대로 각 분야의 의사결정을 수행하는 것입니다. 빅데이터 분석은 개인이나 기업 등에서 자료를 토대로 어떠한  의사결정을 할 때에 중요한 정보로써 사용되기 때문에 최선의 대안을 선택할 수 있도록 근거를 제시하는 중요한  역할을 합니다. 그래서 불확실성이 높고 의사결정이 초래하는 파급효과가 큰 의사결정일수록 실제 데이터 분석을  바탕으로 의사결정을 해야 합니다. 실제로 비즈니스 전략으로써 많은 기업에서 본능적인 비즈니스 감각보다는  빅데이터를 활용하여 주요 의사결정을 내리고 있습니다. 효과적인 빅데이터 분석을 위해서 일반적으로 빅데이터 분석 플 랫폼을 구축하는 경우가 많습니다. 빅데이터 분석은 더 짧은 시간 안에 보다 많은 정보를 빅데이터로부터 추출하는  것을 목표로 합니다. 빅데이터 분석을 위해 크게 데이터 마이닝과 예측 분석 등등이 고려되며, 관련기술로는 NoSQL,  데이터베이스, 하둡과 맵리듀스 등이 있습니다. 데이터 마이닝이란 대용량의 데이터베이스에 저장된 데이터에 숨겨진  중요한 정보와 지식을 추출하는 기술입니다. 예측 분석이란 현황 정보 대신 예측 정보를 제공할 수 있는 분석을  의미합니다.  빅데이터 분석이 가능하려면 기본적으로 NoSQL과 데이터베이스와 같은 빅데이터 저장기술과 하둡 및  맵리듀스와 같은 빅데이터를 분석하기 위해  필요한 처리를 수행하는 기술들이 필요한데 이러한 기술들을  빅데이터 분석 관련 기술이라 부르겠습니다.


 

빅데이터분석진행

 빅데이터 시대에 접어들며 데이터를 보다 효율적으로 정확하게 분석하고 비즈니스 등의 영역에 적용하려는 노력이  꾸준히 진행되고 있습니다. 분석은 새로운 개념이 아니며 이미 오래 전부터 여러 영역에서 효과적으로 활용해온  기술입니다. 일반적으로 분석은 단계적으로 진행되는데, 예를 들어, 마케팅 조사에서의 분석은 마케팅 조사 연구의  목적, 조사 연구 설계, 표본 설계, 자료 수집, 자료 분석, 결과 제시 등의 일반적인 단계로 진행됩니다.  마케팅 조사 연구의 목적이 시장 조사인지 아니면 고객의 요구사항 파악인지 분명히 하고 목적에 맞게 어떻게 조사를  하고 어떤 데이터를 확보하고 어떻게 분석할지를 연구설계를 해야 합니다. 조사 데이터 수집 방법과 관련하여  데이터 샘플을 어떻게 취할 것인지 표본을 설계한 후 자료 수집을 합니다. 자료 수집후 통계적 분석 방법이나  과학적인 분석방법을 사용하여 자료를 분석하고 이후 결과를 제시합니다. 





2. 비지니스에서의 분석 수행 과정


 

분석 수행단계(Forrester)

시장 조사기관인 포레스터 리서치는 비즈니스에서의 분석을 수행하는 과정이 다음과 같은 단계를 거친다고  하였습니다. 첫 번째는 문제인식입니다. 문제가 무엇인지, 왜 이 문제를 해결해야 하는지, 문제 해결을 통해 무엇을  달성할 것인지를 명확히 하는 단계이고, 두 번째는 관련 연구 조사 단계입니다. 관련 연구 조사 단계에서는 문제와  직간접적으로 관련된 지식을 잡지나 책, 보고서, 논문 등과 같은 각종 문헌을 조사하면 문제를 더욱 명확히 할 수  있을 뿐 만 아니라 문제와 관련된 주요 요소 즉, 변수들을 파악할 수 있는 단계입니다. 세 번째는 모형화단계입니다.  변수 선정 단계라고도 하는데요. 모형은 문제 즉 연구 대상를 의도적으로 단순화한 것을 말하며, 모형화는 문제와  본질적으로 관련된 변수만을 추려서 재구성하는 단계입니다. 네 번째는 자료 수집 단계입니다. 변수 측정 단계라고도  합니다. 이 단계에서는 인식된 문제가 모형화를 통하여 주요 변수로 재구성되고 측정이라는 과정을 거치면서 자료가  됩니다. 1차 자료는 조사자가 관찰, 설문조사, 실험을 통하여 직접 자료를 수집하는 것이며, 2차 자료는 다른 사람에  의해 이미 수집, 정리되어 있는 자료입니다. 다섯 번째는 자료분석단계입니다. 자료 분석 단계에서는 나열된  숫자에서 변수 간의 규칙적인 패턴, 즉 변수간의 관련성을 파악합니다. 마지막으로 결과 제시 단계에서는 자료 분석   결과가 의미하는 바를 해석하여 의사결정자에게 구체적인 조언을 하는 단계입니다. 이와 같이, 비즈니스에서의  분석은 단계적 과정을 거쳐 수행되는 것으로, 단계적인 과정 수행을 충실하게 함으로써 좋은 분석을 할 수  있습니다. 



빅데이터 분석 분류

빅데이터 분석은 비즈니스 분석과 고급 분석으로 분류할 수 있습니다. 비즈니스 분석은 현재의 현상과 결과적인  관점을 제시하는데 초점을 두는 것으로 기업의 품질부서에서 현재의 품질수준 실적에 대해 집중적으로 분석할 경우가  이에 해당합니다. 고급 분석은 대용량의 데이터로부터 숨겨진 패턴을 발견하고 상황을 예측하는 것입니다.  그리고 비즈니스 혹은 그 밖의 상황을 예측하고 효율적인 의사결정을 지원하기 위해 구조화 및 비구조화된 복잡한  형태의 데이터 요인들 간의 상관관계 확인과 의미 있는 데이터의 패턴을 식별하고 예측하기 위한 모든 기법과  기술들을 포괄합니다. 더불어 미래의 품질 수준이 어떻게 될지 예측할 수 있는 모델에 근거하여 예측하는 것도 이에  해당합니다. 




3. 빅데이터분석 도구


 

R 프로그래밍언어

빅데이터 분석 도구로서 R 프로그래밍 언어, 빅쿼리, 프레스토 등이 활용되는데요. 먼저 R 프로그래밍 언어에 대하여  알아보겠습니다. R 프로그래밍 언어는 오픈소스 프로젝트로 통계 계산 및 시각화를 위한 언어 및 개발 환경을  제공합니다. 이를 통해 기본적인 통계 기법부터 모델링, 최신 데이터 마이닝 기법까지 구현이 가능합니다.  그리고 R 프로그래밍 언어는 통계적 컴퓨팅 언어로 다양한 통계 분석에 용이합니다. 현재 R 프로그래밍 언어를  이용하여 다양한 빅데이터 분석 및 예측 분석 등을 포함한 고급 분석 기술들이 연구 및 개발되고 있습니다.  R 프로그래밍 언어의 장점 중에 하나는 사용자가 제작한 패키지를 추가하여 기능을 확장할 수 있다는 것입니다.  핵심적인 패키지는 R 프로그래밍 언어와 함께 설치되며, CRAN을 통해 700개 이상의 다양한 기능을 가지는 패키지를  내려 받을 수 있습니다.

 CRAN은 the Comprehensive R Archive Network의 줄인말입니다. R 프로그래밍 언어의 또다른  강점은 그래픽 기능으로 수학 기호를 포함할 수 있는 출판물 수준의 그래프를 제공한다는 것입니다



빅쿼리(BigQuery)

빅쿼리는 구글의 대용량 데이터를 처리할 수 있도록 개발된 쌍방향 서비스입니다. 사용자 혹은 개발자 등은 SQL과  같은 익숙한 쿼리문 등을 이용해 인사이트를 전달할 수 있습니다. 일반적으로 SQL문 이라고도 불리는 쿼리문이  작성됩니다. 여기서, 쿼리문이란 데이터베이스에 저장된 값을 불러내기 위한 것입니다. 절차적 언어로 작성  프로그램 문장을 말하는 거죠. SQL은 Structured Query Language 의 약자로서 구조화된 절차적인 데이터베이스  언어입니다. 빅쿼리는 어떻게 이용할까요? 빅쿼리는 먼저 이용자가 데이터 세트를 구글 시스템에 업로드 하고,  빅쿼리 API를 이용하여 이에 대한 쿼리를 던지는 방식으로 이용할 수 있습니다. 그리고 빅쿼리는 구글이 자체  데이터센터가 없는 기업도 쉽게 데이터를 분석할 수 있는 환경을 만들기 위해 출시한 것이었습니다. 빅쿼리를  이용하면 웹 광고나 실시간 관리 시스템, 온라인 게임의 데이터 현황을 쉽게 관리할 수 있게 되는데요. 예를 들어  제약회사는 빅쿼리를 이용하면 전세계 판매량과 광고 데이터를 바탕으로 일일 마케팅 최적화 전략을 세울 수 있게  되고, 사용자 클릭을 바탕으로 제품 권고 사항을 만드는 일도 쉬워진다고 합니다. 




프레스토(presto)

마지막으로 프레스토는 페이스북에서 개발한 빅데이터 분석 도구로써 하둡을 위한 SQL 처리 엔진입니다. 페이스북은 300페타바이트에 달하는  엄청난 내부 데이터를 분석하려고 프레스토를 만들었습니다. 이는 데이터 분석가가 기존의 SQL 언어로 대용량의  데이터를 대화형 분석을 수행할 수 있도록 해줍니다. 페이스북은 이 도구가 기존에 많이 쓰는 하이브/맵리듀스보다  CPU 효율성과 대기 시간이 10배나 빠르다고 설명했습니다.






[플랫폼을 활용한 빅데이터 분석방법론]


빅데이터 분석 플랫폼을 활용하여 수집 및 저장 된 데이터를  분석하여 서비스를 개발하고 통찰력을 끌어내는 작업을 수행하는데요. 여기서 말하는 통찰력이란 주어진  데이터 분석을 통해 전체적인 상황을 한번에 파악할 수 있는 능력을 의미합니다. 이를 위해, 우선 분석 계획을  수립하고, 분석 환경을 구축한 후 분석 서비스를 운영하는 단계로 진행합니다. 그럼 각 단계별로 살펴보겠습니다. 




1. 빅데이터 분석 플랫폼 활용


먼저 분석 계획 수립 단계입니다. 이 단계에서는 빅데이터를 분석하기 전에 분석결과를 통해 해결하고자 하는 문제를  명확히 정의하고 분석절차, 기법 등을 포함한 세부 시나리오를 마련해야 합니다. 그리고 분석에 필요한 인프라 구축  조건 등 분석환경을 조사하여 자체 구축 및 외부 인프라 활용여부를 결정해야 합니다. 자체구축의 경우에는  빅데이터 분석과 활용을 위해 분석 시스템과 운영환경을 기관 내에 구축하는 방식인데요. 내부 데이터의 관리 정책과  보안문제로 외부 서비스를 활용하기 어려운 경우나 분석 요구사항을 외부 서비스 기관에서 지원하지 못하는 경우에  대해 적절한 대응책이 필요합니다. 외부활용의 경우는 외부 분석업체의 분석 서비스를 활용하는 방식으로 외부 분석  시스템의 기능과 분석 품질이 활용 목표 수준에 부합할 경우에 대한 대응책이 필요합니다. 세부 추진 계획을 위해  분석 목적, 분석 방법론, 분석 시나리오 작성, 분석 인프라 구축 방식 및 운영예산 등을 수립해야 합니다.  분석 환경구축 단계에서는 하드웨어와 소프트웨어를 구축해야 합니다. 즉, 빅데이터 수용 용량 및 분석작업에 대한  부하 등을 감안하여 하드웨어 인프라를 구축해야 하고, 분석에 필요한 수집, 관리, 분석, 이용자 환경 등 관련한  소프트웨어를 구축해야 합니다





2. 데이터 분석에 활용되는 기법


분석용도에 따른 데이터 분석기법


(1) 통계적분석

데이터 분석에 활용되는 기법은 분석용도에 따라서 여러 가지가 활용 되고 있습니다. 먼저 통계적 분석 은 전통적인  분석 방법으로 주로 수치형 데이터에 대하여 확률을 기반으로 어떤 현상의 추정, 예측을 검정하는 기법으로  기술통계량, 상관분석, 회귀분석, 분산분석, 주성분분석 등이 대표적인 통계적 분석 기법입니다. 각 분석을 좀 더  자세히 알아보겠습니다. 


기술통계량 은 대표적으로 산술평균, 중앙값, 최빈값을 포함하는 평균, 분산, 표준편차 등을  구하는 것입니다. 이러한 값들을 통해 전체 데이터 그룹이 주로 어디에 위치하고 있으며 이를 중심으로 얼마나  산포를 가지는지를 확인할 수 있습니다. 평균이란  데이터 집합의 중심적인 경향을 표현하는 값으로 전체 데이터의  합을 전체 데이터 개수로 나누어 산출합니다. 분산은 평균을 중심으로 각각의 데이터 들의 편차를 구하고 편차의  제곱을 모두 더한 후 전체 데이터 개수에서 하나를 뺀 값으로 나눈 값입니다. 표준편차는 분산 값의 제곱근으로  산포를 의미합니다. 


상관분석 은 두 변수간에 어떤 선형적 관계를 갖고 있는지를 분석하는 방법입니다. 즉, 하나의  변수가 증가할 때 비례 또는 반비례적으로 다른 한 변수가 증가 또는 감소하는 정도를 규명하는 것입니다.  이 방법으로 분석하면 서로 관계를 가지는 변수들을 찾아 낼 수 있습니다. 


회귀분석 은 연속형 변수들에 대해 독립변수와 종속변수 사이의 상관관계에 따른 수학적 관계식을 구하여 어떤  독립변수가 주어졌을 때 이에 따른 종속변수를 예측하는 방법입니다. 회귀분석을 통해 종속변수 값을 예측할 수 있는  수학적 모델식을 구성하고 이를 통해 특정한 독립변수의 값을 가지는 경우에 종속변수의 값을 예측할 수 있습니다.   여기서 독립변수는 종속변수에 영향을 주는 요인을 가지는 변수이고 종속변수는 독립변수의 값에 의해  종속적으로  영향을 받는 변수입니다. 연속형 변수는 독립변수와 종속변수가 일반적으로 연속형의 값을 가지는 경우입니다. 


분산분석은 3개 이상의 집단에 있어서 평균치 차이가 존재하는지를 통계적으로 검정하고자 할 때 사용할 수 있는  분석방법입니다. 분산분석 은 통계분포 중 F분포를 이용하여 집단간 평균치 차이가 있는지를 가설검정 합니다.  F분포란 두 개 이상 다수의 집단을 비교하고자 할 때 집단 내의 분산, 총평균과 각 집단의 평균의 차이에 의해 생긴  집단 간 분산의 비교를 통해 만들어진 것입니다. 분산분석을 통해 다수의 집단에 있어서 평균치가 차이가 있는지  유의성을 판정할 수 있습니다.


주성분분석 은 다양한 변수들에 대해 분석하는 다변량(Multivariate)  분석으로 많은 변수들로부터 몇 개의 주성분들을 추출하는 방법입니다. 따라서 주성분 관리를 통해 많은 변수들을  관리할 수 있는 관리의 로드가 줄어들 수 있습니다. 



(2) 데이터마이닝

데이터 마이닝은 대용량 데이터로부터 패턴인식, 인공지능, 고급 통계분석 기법 등을 이용하여 숨겨져 있는  데이터간의 상호 관련성 및 유용한 정보를 추출하는 기술입니다. 데이터 마이닝은 기존 데이터베이스에  마이닝 기술을 적용하여 이들 데이터 간에 숨은 의미 있는 관계성을 다양한 방법으로 발견한 후 이를 현실에  효과적으로 적용하는 방법론으로 사용됩니다.  



(3) 텍스트 마이닝

텍스트 마이닝은 텍스트 기반의 데이터로부터 새로운 정보를 발견할 수 있도록 정보 검색, 추출, 체계화, 분석을 모두 포함하는 Text-processing 기술 및 처리 과정입니다. 텍스트 내에 존재하는 단어의 등장횟수 등을 평가하여 문서간의 유사성을 수치화 하는 텍스트 데이터를 분석하는 방법입니다. 다시 말해 유사 문서 분류 및 문서 내 정보 추출과 같은 결과를 산출할 수 있는 것입니다.



(4) 소셜 네트워크 분석

마지막으로 소셜 네트워크 분석은 대용량 소셜 미디어를 언어분석 기반 정보 추출로 탐지하고, 시간의 경과에 따라 유통되는 이슈의 전체  과정을 모니터링하고 향후 추이를 분석하는 기술입니다. 소셜 네트워크 연결 구조 및 연결 강도 등을 바탕으로  사용자의 명성 및 영향력을 분석하는 기술로써, 주로 마케팅을 위하여 소셜 네트워크 상에서 입소문의 중심이나  허브 역할을 하는 사용자를 찾는데 활용됩니다. 또한 수학의 그래프 이론을 이용하여 소셜 네트워크의 연결 구조와  연결 강도 등을 바탕으로 사용자의 영향력을 측정합니다. 텍스트 마이닝 기법에 의해 주로 이루어지고 있으며  확산된 내용과 함께 연결의 맥락을 파악하여 분석하는 기법입니다. 



(5) 평판 분석

텍스트 마이닝의 관련 분야로는 평판 분석(Sentiment Analysis)  혹은 오피니언 마이닝이라고 불리는 기술이  있습니다. 이러한 오피니언 마이닝은 소셜미디어 등의 정형/비정형 텍스트의 긍정(Positive), 부정(Negative),  중립(Neutral)의 선호도를 판별하는 기술로 특정 서비스 및 상품에 대한 시장규모 예측, 소비자의 반응, 입소문 분석  (Viral Analysis) 등에 활용되고 있습니다. 정확한 오피니언 마이닝을 위해서는 전문가에 의한 선호도를 나타내는  표현/단어 자원의 축적이 필요합니다. 



(6) 군집 분석

군집 분석(Cluster Analysis)은 비슷한 특성을 가진 개체를 합쳐가면서  최종적으로 유사 특성의 군(Group)을 발굴하는데 사용됩니다. 예를 들어 트위터 상에서 주로 사진/카메라에 대해  이야기하는 사용자 군이 있을 수 있고, 자동차에 대해 관심 있는 사용자 군이 이에 해당합니다. 이러한 관심사나  취미에 따른 사용자 군을 군집 분석을 통해 분류할 수 있습니다. 






'빅데이터분석개론' 카테고리의 다른 글

비즈니스 분석 (Business Analytics)  (0) 2015.12.13
비즈니스 인텔리전스 (Business Intelligence)  (0) 2015.12.13
HDFS와 MapReduce  (0) 2015.12.13
Hadoop 설치  (0) 2015.12.09
Hadoop 이해  (0) 2015.12.09



[하둡 분산파일시스템]

하둡 분산파일시스템은 빅데이터의 안정적인 저장 및 검색을 위해 설계된 하둡의 분산 파일 시스템으로서, 하나의  마스터와 여러 개의 슬레이브로 클러스터를 구성합니다. 마스터 노드를 하둡 분산파일시스템에서는 네임노드라고  하고, 슬레이브 노드를 데이터노드라고 합니다. 대용량 파일은 분산되어 여러 데이터노드에 저장되고 네임노드는  데이터노드들을 관리하는 메타데이터와 모니터링 시스템으로 그것을 관리합니다. 

이와 같은 방식을 사용하면 분산 저장으로 인해 데이터의 안정성을 갖게 되고, 혹시라도 데이터노드 한 두대가  고장나더라도 데이터를 잃지 않기 때문에 고장에 대한 감내성이 확보됩니다.  




하둡분산파일시스템의 구조와 동작






네임노드 할은 하둡 분산파일시스템을 구성하는 파일, 디렉토리 등의 메타데이터를 메인 메모리에 유지함으로써  HDFS를 전반적으로 관리하는 것입니다. 따라서 이 노드에 문제가 생겨 동작하지 않을 경우 하둡 분산파일시스템  전체를 사용할 수 없기 때문에 3개의 보조 노드를 같이 운용하는데,이를 통해 시스템의 안정성을 높일 수 있습니다.  체크포인트 노드와 세컨더리 노드는 네임노드의 데이터를 자체 저장장치에 파일로 백업하며, 백업 노드는 네임노드의  메타 데이터 정보를 자신의 메인 메모리에 백업합니다.  세 노드는 하둡 버전마다지원 여부가 상이하고, 역할이 일부 겹쳐서 동시에 사용할 수 없도록 제한되는 경우가  있으므로, 상황에 따라 탄력적으로 사용합니다.


데이터노드는 분산 처리할 정보가 실제로 저장되는 노드로써, 여러 데이터노드가 하나의 Rack으로 묶여있는데, 이러한 Rack은 하둡의 분산파일시스템에 여러 개가 존재합니다.  여기서의 Rack은 데이터 센터 등에서 서버 등의 다양한 장비들을 물리적으로, 효율적으로 장착하기 위한 프레임을  의미하는데요. 또한, 이는 하둡의 분산파일시스템에서 데이터의 복사본을 배치할 때 고려하는 요소이기도 합니다. 

즉 하둡 분산파일시스템에서는 데이터를 저장할 때 기본적으로 블록 단위로 분할한 뒤 각 블록마다 두 개의 복사본을  만들어 총 세 개의 같은 블록을 유지합니다. 그럼 이 복사본들은 어떻게 배치될까요? 

분홍색 블록으로 예를 들어 설명하겠습니다. 첫 번째 블록이 저장되지 않은 Rack을 찾아 그 Rack에 포함된  데이터노드 두 개를 선정하여 두 번째와 세 번째 블록을 저장합니다. 이를 통해 어떤 Rack 전체가 문제가 생기더라도  다른 Rack에서 해당 데이터를 구성하는 블록을 가져올 수 있게 되어 하둡 분산파일시스템에서의 데이터의 신뢰성을  높이게 됩니다.



클라이언트 는 하둡 분산파일시스템의 데이터를 사용하거나, 기록하는 애플리케이션으로 하둡의 맵리듀스  모듈이 이에 해당합니다. 하둡 분산파일시스템에서 데이터를 읽거나 작성할 때 우선적으로 네임노드에 해당 요청을  보낸 뒤, 네임노드에서 반환해 준 데이터노드와 직접 통신하여 연산을 수행합니다.  하둡 분산파일시스템은 수십 페타바이트에 이르는 대용량 데이터를 수천 대의 서버를 이용하여 빠르게 처리할 수  있도록 설계되었습니다. 하둡 분산파일시스템은 비용 문제로 저가의 서버를 이용하는 것을 전제로 하고 있는데  이럴 경우 디스크나 서버의 고장이 자주 발생할 수 있기 때문에 고장 감내성이 중요한 고려 요소가 됩니다.  그리고 스토리지 용량이 부족해지면 저가의 데이터노드를 네임노드에 추가 등록하는데, 이를 통해 시스템의 중단  없이 용량을 확장시킬 수 있습니다.


하둡 분산파일시스템은 여타의 분산 파일 시스템에 비해 메타데이터에 접근하거나 데이터를 변경하는 작업의  대기시간을 희생하는 대신 데이터를 읽어오는 작업의 처리량을 높여 큰 데이터를 한 번에 빠르게 가져올 수 있도록  설계되었습니다. 예를 들어 설명하자면 일반적인 파일 시스템의 블록사이즈가 수십 킬로바이트인 것에 비해  하둡 분산파일시스템의 한 블록의 크기는 기본적으로 64메가바이트로 설정되어 큰 차이를 보입니다. 


그리고 하둡 분산파일시스템은 한번 쓰기 완료된 데이터는 수정이 불가능하고 오직 덮어쓰기만 가능하도록   설계되었습니다. 왜냐하면 하둡 분산파일시스템은 데이터의 배치 처리를 위해서는 수집된 데이터를 수정할 필요가   없기 때문입니다. 이처럼 데이터 저장 방식이 간단해지면 전체 시스템의 관리가 간편해져 수천 대의 서버로 구성된  클러스터도 무리 없이 운영 가능해집니다. 




[맵리듀스](#09c181)


맵리듀스 는 저렴한 머신들을 이용하여 빅 데이터를 병렬로 분산 처리하기 위한 프로그래밍 모델인데요.  대용량 데이터를 신뢰할 수 없는 컴퓨터로 구성된 분산 클러스터 환경에서 대규모 데이터를 병렬로 처리하기 위해 개발되었습니다. 맵리듀스의 혁신적인 부분은 데이터 집합에 대한 쿼리를 입력 받아, 분할 한 후, 여러 개의  노드에서 병렬로 처리하는데 있으며 이러한 분산 처리는 단일 장비에서 처리하기에는 부적합한 대규모 데이터 처리  문제를 해결한다는 특징이 있습니다.


맵리듀스는 맵 단계와 리듀스 단계로 처리 과정을 나누어 작업합니다. 맵은 맵퍼라는 데이터 처리 함수를 통해  흩어져 있는 데이터를 관련 있는 데이터끼리 묶는 작업을 통해서 임시 데이터 집합으로 변형됩니다. 그리고 리듀스는  리듀서라는 데이터 처리 함수를 통해 맵 작업에서 생성된 임시 데이터 집합에서 중복 데이터를 제거하고 원하는  데이터를 추출하는 작업을 진행합니다. 즉, 맵리듀스에서는 파일을 맵 작업에 의해서 생성된 중간의 (키, 값) 쌍으로  변환하고 다음 스텝인 셔플 과정에서 정렬과 파티셔닝 작업을 동시에 수행하여 리듀스 작업의 입력값으로 사용하기  위해서 맵 작업에서 나온 결과물을 나눠주는 역할을 합니다. 


다음으로 리듀스 작업에서는 맵 작업의 결과물로 받은 입력값 중 중복 데이터를 제거하며, 마지막 생산에서 최종  결과파일을 생성합니다.  맵 작업과 리듀스 작업들은 전체 맵리듀스 구조에서 살펴봤을 때, 태스크 트래커가 관리합니다.  태스크 트래커는 각각의 슬레이브 노드들에서 실행하는 태스크들을 관리하는 것입니다. 잡 트래커는 태스크들의  스케줄링을 담당하며, 하나의 마스터 노드는 여러 슬레이브 노드들의 실행을 관리하는 것입니다. 





문서 집합에 등장하는 단어의 개수를 세는 작업을 생각해봅시다. 
 



그림에서처럼 3개의 문서가 하둡 분산파일시스템에서 입력으로 주어졌다고 가정해 보겠습니다.   그러면 3개의 맵 태스크 (task)가 발생합니다. 각 맵 태스크는 동일한 맵 함수를 실행하는데, 입력으로 문서의 ID가  키, 문서 텍스트가 값인 [키, 값] 쌍이 주어지면, 이 맵 함수는 문서 텍스트를 단어 단위로 쪼개어 각 단어가 키가  되고 값은 1로 고정된 새로운 [키, 값] 쌍의 집합을 출력합니다. 

맵리듀스 시스템은 이 집합의 원소들에 대해 섞기 및 정렬과정을 통해 동일한 키를 가지는 값들을 하나로 묶습니다.  이렇게 묶여진 [키, 값] 쌍들은 적절한 기준에 의해 2개의 리듀스 태스크로 분배됩니다.  각 리듀스 태스크는 역시 동일한 리듀스 함수를 실행하는데, 이 함수는 묶여진 값들을 모두 더하여 입력과 동일한  키의 새로운 값으로 만듭니다. 그 결과가 하둡 분산파일시스템에 저장되며 이는 3개의 문서 집합에서 나타나는  단어의 빈도수가 됩니다. 여기서, 맵 태스크 및 리듀스 태스크의 갯수는 임의로 잡은 것이며, 실제로는 맵리듀스  시스템에서 자동적으로 생성합니다.










'빅데이터분석개론' 카테고리의 다른 글

비즈니스 인텔리전스 (Business Intelligence)  (0) 2015.12.13
빅데이터 분석 방법론  (0) 2015.12.13
Hadoop 설치  (0) 2015.12.09
Hadoop 이해  (0) 2015.12.09
[강의] 빅데이터분석개론  (0) 2015.11.24



[하둡설치]


하둡은 여러 컴퓨터로 구성된 클러스터를 이용하여 방대한 양의 데이터를 처리하는 분산 처리  프레임워크입니다. 그래서 대용량의 스팸 메일을 처리하거나, 아주 빠른 속도로 비디오 트랜스코딩을 하거나,  생명과학에서 다중 염기 서열 정렬을 돕거나, 검색을 쉽게 도와줄 대량의 디지털 음원 자료들을 저장하고  관리할 수 있도록 내용 기반 음악 검색을 설계하는 등 다양한 분야에서의 하둡 활용을 생각해 볼 수 있습니다.


 이 같은 활용을 위해 이번 회차에서는 하둡 패키지를 설치하는 방법을 알아보겠습니다. 

 



1. 설치


하둡 설치 모드에는 완전분산모드, 독립실행모드, 가상분산모드라는 총 3가지 설치 모드가 존재합니다.

완전분산모드는 단일컴퓨터로는 설치가 불가능하기 때문에 독립실행모드 설치 과정과 가상분산모드를 통한  설치 과정을 살펴보도록 하겠습니다.  모드별로 설치해보기 전에 각 하둡 설치 모드에 대해서 좀 더 자세히 살펴보겠습니다. 완전분산모드란 모든 기능이  갖추어진 컴퓨터 클러스터를 구성할 수 있는 모드이며, 설치를 통해 분산 저장과 분산 연산의 장점을 누릴 수  있습니다. 독립실행모드란 다른 노드와 통신할 필요 없이 독립적으로 맵리듀스 프로그램의 로직을 개발하고 오류를  수정하고자 할 때의 모드입니다. 가상분산모드란 컴퓨터 클러스터가 한 대로 구성되어 있고,  이 한 대의 컴퓨터에서 실행되는 모드입니다. 이 모드는 코드 오류 수정 시 독립실행 모드에서의 기능을 보완할 수  있는데 메모리 사용 정도, 하둡 분산파일시스템 입출력 관련 문제 등을 검사할 수 있습니다.  각 모드에 대해 이해가 되셨나요? 독립실행모드와 가상분산모드는 모두 개발이나 오류 수정 목적으로 사용됩니다.   그리고 실제 하둡 클러스터는 완전분산 모드에서 실행되지만 완전분산모드는 단일컴퓨터로는 설치가 불가능합니다.   따라서 독립실행모드 설치 과정과 가상분산모드를 통한 설치 과정을 살펴보도록 하겠습니다. 



독립실행모드 설치

우분투내에 하둡을 설치해 보도록 하겠습니다. 파일접속화면의 왼쪽에 나열된  아이콘들 중 세번째에 위치한 파이어폭스는 모질라 재단에서 만든 웹브라우저로서, 빠르고 안정적이지만  액티브 X 지원이 부족하다는 단점이 있습니다. 이를 클릭하면 다음과 같은 화면이 나오는데, hadoop-2.7.1.tar.gz  파일을 다운받고 설치합니다.  그 다음 터미널(Terminal)을 실행해주고 cd Downloads 명령어를 이용하여 하둡설치 파일이 다운로드 된 폴더로  이동합니다. 그 후 cp hadoop-2.7.1.tar.gz /usr/local 명령어를 이용하여 하둡파일을 설정된 경로로 복사합니다.  그리고 tar zxvf hadoop-2.7.1.tar.gz 명령어를 이용해 압축을 풀어 하둡을 설치합니다. [이때 권한이 없다고 나오는데 루트계정으로 로그인한 후 설치하거나, 권한설청후 진행]


  



그 다음 경로를 설정해 주기 위해, apt-get install vim이란 명령어를 입력해 vim을 설치합니다.  이번에는 명령어를 이용해 profile을 열어보도록 하겠습니다. cd ~을 치고 엔터 후  다음 줄에 vim .profile 명령어를 입력하면 profile이 열립니다.  열린 profile에 다음의 명령어를 입력한 후 저장합니다. 


그 후 터미널(Terminal)을 이용해 source .profile 명령을 통해 profile을 등록합니다.  그리고 터미널(Terminal)에서 hadoop을 입력하여 다음의 결과가 출력된다면 정상적으로 수행된 것입니다.


마지막으로 터미널(Terminal)에서 vim /usr/local/hadoop-2.7.1/etc/hadoop/hadoop-env.sh 파일을 엽니다. 그리고 제일 하단에 제시된 명령어를 추가한 다음 저장하면 독립실행모드 설치가 마무리 됩니다.




가상분산모드 설치

하둡의 가상분산모드의 설치 과정을 알아보겠습니다. 이는 기본적으로 독립실행모드 설치 과정이 완료되어  있어야 하는데, 그 이유는 가상분산모드의 경우 독립실행모드에서의 기능을 보완할 수 있기 때문입니다.  가상분산모드를 설치하기 위해서는 먼저 ssh를 설치해야 합니다. ssh란 원격지 시스템에 접근하여 암호화된  메시지를 전송할 수 있는 프로그램으로 하둡은 ssh프로토콜을 사용해 클러스터간에 내부통신을 하기 때문에  ssh서버를 설치해주어야 합니다.  독립실행모드와 마찬가지로 터미널(Terminal)과 다음의 명령어를 이용해 ssh를 설치해줍니다.  /etc/init.d/ssh restart 명령어를 이용해 ssh를 실행시킵니다. netstat -ntl 명령어를 입력해서 결과가 출력되면 성공적으로 설치된 것입니다.


ssh는 키를 생성하고 생성키를 접속할때 사용하도록 복사하는 것입니다.  즉, ssh는 rsa 공개키 암호를 사용하기 때문에 로그인할 때 별도의 키가 필요한 것입니다.  키를 생성하는 명령어는 다음과 같습니다.  그리고 ssh localhost를 입력하여 localhost로 접속하면 다음과 같은 화면이 제시됩니다.  ssh서버로 접속 후 xml설정 및 마스터 슬레이브 설정을 해 주면 설치가 끝납니다. 


 

▼ SSH 설치시 에러 


E: Could not get lock /var/lib/dpkg/lock - open (11 Resource temporarily unavailable)

E: Unable to lock the administration directory (/var/lib/dpkg/) is another process using it?




'빅데이터분석개론' 카테고리의 다른 글

비즈니스 인텔리전스 (Business Intelligence)  (0) 2015.12.13
빅데이터 분석 방법론  (0) 2015.12.13
HDFS와 MapReduce  (0) 2015.12.13
Hadoop 이해  (0) 2015.12.09
[강의] 빅데이터분석개론  (0) 2015.11.24



[하둡의 이해]


1. 하둡의 발전과정


하둡이 어떻게 개발되고 발전해왔는지에 대해서 알아보겠습니다. 하둡은 더그 커팅이란 개발자가 처음  개발했습니다. 더그 커팅은 2002년에 웹 검색엔진인 너치를 개발한 뒤 전 세계에 오픈소스로 공개할 검색엔진을  개발하기 시작하였고, 지금의 하둡을 탄생시킬 수 있었습니다. 즉, 하둡은 너치 프로젝트로부터 시작된 것입니다.  너치를 개발할 당시에는 웹이 규모가 폭발적으로 늘어나고 있었기 때문에 늘어나는 웹 페이지를 쉽게 색인 할 수  있는 기술이 필요했습니다. 더그 커팅은 여기에 착안하여 크롤링과 빨리 찾아줄 수 있는 기술을 개발하여  너치 프로젝트를 만들고 오픈소스화 하였습니다.  웹 페이지를 쉽게 색인 할 수 있는 너치가 오픈소스화 되었지만 한계가 있었습니다. 너치는 10억 페이지 규모의  색인을 유지할 수 있었지만, 그 이상의 확장을 관리하기에는 구조적인 한계를 가지고 있었기 때문인데요.  이 당시 전체 웹 페이지 규모를 보면 10억 페이지를 관리할 수 있는 너치만으로는 인터넷 상에 존재하는 모든  페이지를 가져와서 저장할 수 없었고, 여기서 텍스트 기반의 탐색을 한다는 것은 기술적으로 불가능하였습니다.


이런 한계가 있는 상황에서 구글이 2003년에 구글 파일 시스템이라는 논문을 발표하였는데요. 구글 파일  시스템이란 급속히 늘어나는 구글의 데이터 처리를 위하여 설계된 대용량 분산 파일 시스템입니다. 더그 커팅은  이 논문으로부터 대부분의 아이디어를 가져와 너치를 위한 분산파일시스템인 너치 분산파일시스템을  개발했습니다. 구글 파일 시스템과 같은 구조를 가지고 있는 이 파일 시스템은 웹 크롤링과 색인 과정에서  생성되는 굉장히 큰 파일들을 처리하기에 알맞은 구조를 가지고 있는 파일 시스템이었습니다. 


그리고 구글은 2004년에 맵 리듀스를 발표했는데요. 이는 구글 분산파일시스템 위에서 동작시켜 대용량 데이터를  간단하게 처리할 수 있는 소프트웨어입니다. 너치 프로젝트는 맵 리듀스까지 프로젝트에 포함시켰습니다.   이로써 너치 프로젝트 안에 너치 분산파일시스템과 맵 리듀스가 포함되었고 이를 이용하여 굉장히 많은 데이터를  저장할 수 있었습니다. 그리고 많은 데이터를 분산 처리 환경에서 크롤링하여 가져오고, 처리할 수 있는 기반을  구축할 수 있었습니다.


더그 커팅은 이 너치 분산파일시스템과 맵 리듀스가 단순히 크롤링과 인덱스 생성을 위한 구조뿐만 아니라  다양한 용도로 사용될 수 있음을 알아챘습니다. 그래서 2006년 2월 너치 프로젝트로부터 너치 분산파일시스템과  맵 리듀스를 독립시켜 대용량의 데이터를 처리할 수 있는 프로젝트를 새롭게 생성하였습니다. 이 프로젝트가   바로 하둡 프로젝트의 시작이었습니다.


하둡 프로젝트가 생겨날 시기와 비슷한 무렵인 2006년도에 더그 커팅은 야후에 본격적으로 합류했고, 이후  하둡은 야후 안에서 엄청난 속도로 발전하고 성장하기 시작했습니다. 2008년 2월에 야후에서는 만 개의  하둡 코어를 이용하여 야후 서비스의 색인 제품들이 생성되고 있다고 발표하였습니다. 동일한 시기인 2008년   2월에 하둡은 오픈소스의 절대강자인 아파치 소프트웨어 재단에서 최고의 프로젝트에 등극하여 확실히 이름을   알리기 시작했습니다.



2. 하둡의 구성요소


(1) 분산파일 시스템(HDFS)

분산파일시스템인 HDFS, 맵리듀스, 하둡 에코시스템에 대하여  알아보겠습니다.  하둡은 빅데이터를 저장하는 분산파일시스템인 HDFS과 분산병렬을 처리하는 맵리듀스(MapReduce)로 구성된다고  말씀드렸는데요. 각각에 대하여 자세히 알아보도록 하겠습니다.  


하둡 분산파일시스템이란 하둡이 사용하는 분산 저장소라고 생각하시면 됩니다. 분산된 환경에서 다양한 형태,   초대용량의 데이터를 안전하게 저장할 수 있을 뿐만 아니라 저장되어 있는 데이터를 빠르게 처리할 수 있도록 설계되었습니다. 즉, 분산된 환경에서 우수한 저장력과 데이터 처리 능력을 보여줍니다. 

이런 하둡 분산파일시스템은 전체 성능이나 용량을 늘리기 위해 많은 서버를 이용하여 구축한다는 특징이  있는데요. 수를 늘리기 위해 값싼 서버들을 이용해 구축하고, 서버의 수가 많기 때문에 높은 수준의  고장방지기능을 이용합니다.


특징

분산파일시스템은 마스터 노드가 동작하는 서버와 슬레이브 노드가 동작하는 서버로 구성되어 있다고 하였습니다.  노드는 네트워크에서 사용되는 용어로, 일반적으로 네트워크에 연결되어 있고 전송 채널을 통해 자료를  주고 받을 수 있는 장비를 의미합니다. 하둡에서는 모든 서버들이 네트워크에 의해 연결되어 있고 통신  가능하도록 구성되는데 이때 노드는 각 구성요소들이 동작하는 서버라고 이해하면 쉽습니다.

하둡 분산파일시스템은 다수 컴퓨터들의 그룹으로서, 마스터 노드와 슬레이브 노드를 가집니다. 마스터 노드는  하둡 분산 파일 시스템에서 크게 두가지 역할을 담당하는데요 첫 번째 역할은 현재 분산 파일 시스템에서   사용하고 있는 모든 슬레이브 노드들을 관리하는 것입니다.


마스터노드 역할과 슬레이브노드 역할





(2) 맵리듀스

맵 리듀스는 저렴한 머신들을 이용하여 빅 데이터를 병렬로 분산 처리하기 위한 프로그래밍 모델로 맵  리듀스 기법을 제공합니다. 맵 리듀스 기법이란 시스템의 분산 구조를 감추면서 범용 프로그래밍 언어를 이용해  병렬처리 프로그래밍이 가능한 기법으로 맵 함수와 리듀스 함수를 기반으로 합니다.  맵 리듀스는 실행할 때 처리 성능에 영향을 주는 몇 가지 사항들을 고려해야 하는데요.  맵 리듀스는 병렬 및 분산 처리되기 때문에 여러 서버 중에서 하나의 서버가 제대로 동작하지 않거나 멈추는  문제나 동시 처리를 위해 각 프로세스 간의 스케줄링을 고려해야 합니다. 또한 장치 간의 네트워크 구성도  고려해야 합니다.





(3) 하둡 에코시스템
하둡은 빅데이터 저장과 처리의 기본적인 기능만 제공하기 때문에, 이의 부족함을 보완하는 다양한 오픈소스  소프트웨어들이 필요합니다. 이를 하둡 에코시스템이라고 하는데요. 즉, 하둡 에코시스템이란 하둡의 기능을  보완하는 서브 오픈소스 소프트웨어들입니다. 이를 통해 빅데이터를 보다 원활하고 효율적으로 분석할 수  있습니다. 표를 자세히 살펴볼까요? 빅데이터 활용 단계별로 기술을 구분해 놓았는데요. 빅데이터 수집에는  플럼과 스쿱 기술을 사용하여 비정형 데이터를 수집하고 관계형 데이터베이스로부터 데이터를 가져옵니다.  그리고 빅데이터 저장, 활용에서는 Hbase 기술을 통해 분산되어 있는 전체 데이터 컬럼 단위의 NoSQL  데이터베이스를 처리합니다. 빅데이터 처리에는 하이브, 피그, 마후트 기술이 있는데요. 이를 통해  유사 SQL  기반 빅데이터, 스크리브 언어 기반 빅데이터, 기계학습 알고리즘 기반 빅데이터들을 처리합니다. 그리고  마지막으로 빅데이터 관리에서는 우지, H카탈로그, 주키퍼 기술을 통해 빅데이터 처리 과정, 빅데이터 메타  정보, 빅데이터 서버 시스템을 관리합니다. 

눈치 채셨는지 모르겠지만 특히 하둡 에코시스템의 주요 기술은 대부분은 동물 이름과 관련 있습니다.
Hadoop은 창시자 더그 컷팅의 아들이 노란 코끼리 장난감을 ‘하둡’이라 부르는 것을 보고 이름을 지었고  Hive는 벌떼, Pig는 돼지 그리고 이들을 관리하는 주키퍼는 동물 사육사라는 뜻이지요. 이 외에도 하둡 생태계를  구성하고 있는 주요 솔루션은 플럼, 스쿱, HBase, 마후트 등이 있습니다. 하둡 관련 오픈소스 프로젝트는  해마다 이어지고 있는데 이들 솔루션은 대부분 오픈소스화 되어 있습니다.






에코시스템지도




구성
다음은 하둡 에코시스템 구성에 대한 이미지입니다. 하둡 에코시스템에는 기본 요소인 하둡 분산파일시스템과  맵 리듀스, 분산 데이터베이스인 H베이스, 관계형 대수 쿼리 언어 인터페이스인 피그(Pig), 데이터웨어하우징  솔루션인 하이브, 테이블 및 스토리지 관리 서비스인 H카탈로그, 그리고 매니지먼트인 암바리와  코디네이션인 주키퍼 등이 포함됩니다. 

하둡 에코시스템에 대해 더그 커팅은 “하둡을 중심으로 성장한 프로젝트들의 전체 생태계가 있으며,  이는 계속해서 성장하고 있습니다. 하둡은 분산된 운영체제의 커널이며, 커널 주변의 다른 모든 구성요소들은  현재 개발 중에 있는데 피그와 하이브는 그런 것들의 좋은 예라 할 수 있습니다. 단순히 하둡만을 사용하는  사람은 없습니다. 따라서 그들은 “여러 개의 다른 툴들도 사용하고 있습니다.” 라고 설명했습니다.





피그와 하이브
그럼 이제 하둡 에코시스템의 기술 중 피그와 하이브에 대해서 알아보고자 합니다. 먼저 피그는 고급수준의  데이터 처리 언어로, 하둡 프로그래밍을 간단하게 해주고 하둡의 확장성과 안정성을 유지시켜줍니다.  그리고 고급 수준의 언어들에서 클래스 연산들로 여겨져야 하는 어떤 기능들은 맵 리듀스 기능을 수행하기가  어려운데 이것은 이러한 점을 개선해 줍니다. 피그는 대용량 데이터 집합을 좀 더 고차원적으로 처리할 수  있도록 해주며 다중 값과 중첩된 형태를 보이는 좀 더 다양한 데이터 구조를 지원하고 데이터에 적용할 수 있는  변환 종류도 훨씬 더 강력합니다.

하이브는 하둡의 최상위층에 있는 데이터 웨어하우징 패키지로 다수의 사용자 및 대용량 로그 데이터 처리를  위해 페이스북에서 개발한 정보 플랫폼 중 가장 중요한 구성 요소입니다. 페이스북의 급증하는 소셜네트워킹에서  매일같이 생산되는 대량의 데이터를 관리하고 학습하기 위해 개발되었는데요. 페이스북은 하둡 분산파일시스템에  대량의 데이터를 저장해 두고 하이브가 제공하는 믿을만한 SQL 기법을 이용하여 데이터를 분석합니다.  이제 하이브는 많은 조직들이 일반적인 목적의 확장 가능한 데이터 처리 플랫폼으로 채택하는 성공적인 아파치  프로젝트로 성장했습니다.






'빅데이터분석개론' 카테고리의 다른 글

비즈니스 인텔리전스 (Business Intelligence)  (0) 2015.12.13
빅데이터 분석 방법론  (0) 2015.12.13
HDFS와 MapReduce  (0) 2015.12.13
Hadoop 설치  (0) 2015.12.09
[강의] 빅데이터분석개론  (0) 2015.11.24

마크 저커버그(Mark Elliot Zuckerberg) 명언 16가지





1가장 큰 위험(Risk)은 위험을 피해 가는 것이다. 모든 것이 급변하는 시대에서 위험을 피해가는 전략으로는 반드시 실패한다” Y 콤비네이터 스타트업 스쿨(Y Combinator’s Startup School) 강연




2지금 사람들은 아프리카에서 죽어가는 난민보다 집 앞 잔디밭에서 죽어가고 있는 다람쥐에 더 관심이 있을지 모른다” 뉴욕타임스(The New York Times) 인터뷰



3빠르게 움직이고 주변의 틀을 깨부숴라. 주변의 틀을 부숴버리지 않는다면 빠르게 움직이고 있는 것이 아니다.” 비즈니스 인사이더(Business Insider) 인터뷰



4내가 자신에게 매일 묻는 말은 ‘나는 내가 할 수 있는 일 중에서 가장 중요한 일을 하고 있는가? 이다. 가장 중요한 문제에 나의 시간을 쓰고 있다는 생각이 들지 않으면 내가 시간을 보내는 방식에 만족하지 않는다.” 도서 ‘마크 저커버그: 페이스북 창업자(Mark Zuckerberg: Facebook Creator)’


5람들은 매우 똑똑하거나 실무에 적용할 수 있는 응용력이 있을 수 있지만, 그들 스스로가 이를 믿지 않으면 일을 열심히 하지 않는다.” 스탠포드 대학(Stanford University), 올바른 직원을 채용하는 방법에 대한 강연




6아침마다 어떤 옷을 입고 출근할지, 뭘 먹을지 고민하는 시간이 아깝다. 내 인생에서 사소한 것들에 내 에너지를 소비하면 나는 내가 할 일을 하지 않는 것처럼 느낀다 나는 최고의 제품과 서비스를 구축하고, 지역사회에 봉사하기 위한 최고의 방법을 찾기 위해 내 모든 에너지를 바치고 싶다.” 페이스북 본사 공개 Q&A 세션




7비즈니스의 기본원칙은 쉬운 것부터 먼저 시작하면 큰 성과를 이룰 수 있다는 점이다.” 도서 ‘마크 저커버그: 리더십을 위한 10가지 조건(Mark Zuckerberg: Ten Lessons in Leadership)’




8세상에는 큰 조직을 이끌 수 있는 능력 있는 관리자 같은 사람들이 있는 반면, 아주 분석적이고 전략에 집중하는 사람이 있다. 이 두 가지 특징은 보통 한 사람에게서는 발견할 수 없다. 나는 나 자신을 후자에 가깝다고 말하고 싶다.” 쉐릴 샌드버그(Sheryl Sandberg) COO 취임연설




9 “‘나의 목표는 절대 회사를 설립하는 것이 아니었다’고 말하면 많은 사람들이 내가 돈벌이에 관심이 없다고 잘못 이해한다. 하지만 나는 단순히 회사를 설립하는 것이 목표가 아닌 세상에 아주 큰 변화를 가져올 다른 무언가를 만들겠다는 의미이다.” 포브스(Forbes) 인터뷰




10가장 열정적으로 할 수 있는 것이 무엇인지 찾아라.” 도서 ‘저커버그처럼 생각하라 페이스북의 창업자 마크 저커버그의 성공 원칙(Think Like Zuck: The Five Business Secrets of Facebook’s Improbably Brilliant CEO Mark Zuckerberg)’




11많은 기업체들이 실수하지 않을까 두려워한다. 위험을 감수하는 것을 두려워한다. 기업은 실패를 통해 사람들이 서로를 평가하게 하려고 만들어졌다.” 도서 ‘저커버그처럼 생각하라 : 페이스북의 창업자 마크 저커버그의 성공 원칙(Think Like Zuck: The Five Business Secrets of Facebook’s Improbably Brilliant CEO Mark Zuckerberg)’




12단순하게 말하면 우리는 돈을 벌기 위해 서비스를 만드는 것이 나이라 더 좋은 서비스를 만들기 위해 돈을 번다.” 페이스북 투자자에게 보내는 편지




13나는 항상 몇 가지에 집중해왔다. 하나는 회사와 우리가 설립하는 것들에 대한 분명한 방향성을 갖는 것. 그리고 하나는 이를 이루기 위한 최고의 팀을 만드는 것이다. 만약 기업으로서 이 두 가지(뚜렷한 방향성과, 이를 실행하기 위한 좋은 사람들)가 있다면 기업은 잘 운영될 수 있다.” D8 컨퍼런스




14우리는 무엇인가에 열정을 가진 사람을 찾는다. 어떤 것에 열정을 가졌는지는 상관이 없다.” BYU 강연




15사람들은 ‘혁신’이 창의적인 아이디어를 갖는 것으로 생각한다. 그러나 혁신은 빨리 움직이고, 많은 것을 시도해보는 것이다. 패스트컴퍼니(Fastcompany) 30초 MBA ‘HOW DO YOU GENERATE INNOVATION?’



16시도해보고 실패를 통해서 학습하는 것이 아무것도 시도하지 않는 것보다 낫다.” 오프라 윈프리 쇼(Oprah Winfrey Show)







출처 

http://blog.newswire.co.kr/?p=4271

1. 인프라 아키텍처

1.1 개념

인프라(infra)는 말 그대로 ‘기반 시설’을, 아키텍처는 ‘구조’를 의미한다.

즉, IT 인프라 아키텍처는 서버, 네트워크 등 하드웨어부터 소프트웨어까지 IT 운영에 필요한 제반 사항들을 말한다.

IT 업계에서 사용되는 인프라 아키텍처는 크게 구성 방식에 따라 ‘집약형’과 ‘분할형’으로 나뉘며,

‘분할형’은 다시 ‘수직 분할’, ‘수평 분할’, ‘지리 분할’로 나뉜다.

1.2 집약형과 분할형 아키텍처

1.2.1 집약형 아키텍처

하나의 대형 컴퓨터로 모든 처리를 하는 방식.

‘범용 장비’, ‘호스트’, ‘메인 프레임’ 등으로 불린다.

장점
  • 한 대의 대형 컴퓨터만 있으면 되므로 구성이 간단하다.
  • 대형 컴퓨터의 리소스 관리나 이중화에 의해 안정성이 높고 고성능이다.
단점
  • 대형 컴퓨터의 도입 비용과 유지 비용이 크다.
  • 확장성에 한계가 있다.

1.2.2 분할형 아키텍처

여러 대의 소형 컴퓨터를 조합해서 하나의 시스템을 구축하는 구조이다.

‘오픈 시스템’, ‘분산 시스템’ 등으로 불리며, 분할형 아키텍처에서 이용되는 컴퓨터를 ‘서버’라고 한다.

장점
  • 낮은 비용으로 시스템을 구축할 수 있다.
  • 서버 대수를 늘릴 수 있어서 확장성이 높다.
단점
  • 대수가 늘어나면 관리 구조가 복잡해진다.
  • 한 대가 망가지면 영향 범위를 최소화하기 위한 구조를 검토해야 한다.

1.3 수직 분할형 아키텍처

분할형에서는 서버 분할 방식으로 고려해야 한다.

서버별로 다른 역할을 담당하는 방식이 ‘수직 분햘형 아키텍처’이다.

1.3.1 클라이언트-서버형(C/S) 아키텍처

업무 애플리케이션, 미들웨어, 데이터베이스 등의 소프트웨어를 ‘물리 서버’ 상에서 운영하고, 이들 소프트웨어에 ‘클라이언트’ 또는 ‘단말’이라 불리는 소형 컴퓨터가 접속해서 이용하는 형태.

장점
  • 클라이언트 측에서 많은 처리를 할 수 있어서 소수의 서버로 다수의 클라이언트를 처리할 수 있다.
단점
  • 클라이언트 측의 소프트웨어 정기 업데이트가 필요하다.
  • 서버 확장성에 한계가 발생할 수 있다.

1.3.2 3계층형 아키텍처

클라이언트-서버형을 발전시킨 것으로, ‘프레젠테이션 계층’, ‘애플리케이션 계층’, ‘데이터 계층’의 3층 구조로 분할되어 있다. 대부분의 인터넷/모바일 등 대부분의 시스템에서 3계층 구조를 채용하고 있다.

프레젠테이션 계층
  • 사용자 입력을 받는다.
  • 웹 브라우저 화면을 표시한다.
애플리케이션 계층
  • 사용자 요청(request)에 따라 업무 처리를 한다.
데이터 계층
  • 애플리케이션 계층의 요청에 따라 데이터 입출력을 한다.
장점
  • 서버 부하 집중 개선
  • 클라이언트 단말의 정기 업데이트가 불필요
  • ‘처리 반환’에 의한 서버 부하 저감
단점
  • 구조가 클라이언트-서버 구성보다 복잡하다.

1.4 수평 분할형 아키텍처

수직 분할형 아키텍처가 서버별로 다른 역할을 하도록 구성한 것이라면, 수평 분할형 아키텍처는 용도가 같은 서버를 늘려 안정성 및 성능을 향상시키기 위한 구조이다.

대부분의 시스템에서는 수직 분할형과 수평 분할형을 함께 사용한다.

1.4.1 단순 수평 분할형 아키텍처

‘sharding(샤딩)’, ‘partitioning(파티셔닝)‘등으로 불린다.

같은 기능을 가진 복수의(독립된) 시스템으로 단순히 분할한 구조이다.

장점
  • 수평으로 서버를 늘리기 때문에 확장성이 향상된다.
  • 분할한 시스템이 독립적으로 운영되므로 서로 영향을 주지 않는다.
단점
  • 데이터를 일원화해서 볼 수 없다.
  • 애플리케이션 업데이트는 양쪽을 동시에 해 주어야 한다.
  • 처리량이 균등하게 분할돼 있지 않으면 서버별 처리량에 치우침이 생긴다.

1.4.2 공유형 아키텍처

단순 수평 분할형과는 달리, 3계층 중 ‘데이터 계층’이 서로 동기화가 되어 어느 쪽에서든 데이터를 참조할 수 있다.

장점
  • 수평으로 서버를 늘리기 때문에 확장성이 향상된다.
  • 분할한 시스템이 서로 다른 시스템의 데이터를 참조할 수 있다.
단점
  • 분할한 시스템 간 독립성이 낮아진다.
  • 공유한 계층의 확장성이 낮아진다.

1.5 지리 분할형 아키텍처

업무 연속성 및 시스템 가용성을 높이기 위해 지리적으로 분할한 아키텍처를 말한다.

1.5.1 스탠바이형 아키텍처

‘HA(High Availability, 고가용성) 구성’, ‘액티브-스탠바이 구성’ 등으로 불린다.

물리 서버를 최소 두 대를 준비하여 한 대에 장애가 발생하면 그 즉시 가동중인 소프트웨어를 다른 한 대로 옮겨서 운영하는 방식이다.

이때 소프트웨어 재시작을 자동으로 하는 구조를 ‘페일오버(failover)‘라고 한다. 단, 페일오버 대상 서버가 놀고 있는 상태가 되기 때문에 리소스 측면에서 낭비가 발생한다.

1.5.2 재해 대책형 아키텍처

특정 데이터 센터(사이트)에 있는 상용 환경에 고장이 발생하면 다른 사이트에 있는 재해 대책 환경에서 업무 처리를 재개하는 것을 말한다. 단, 애플리케이션 최신화와 데이터 최신화가 문제가 될 수 있다.

1.5.3 클라우드형 아키텍처

3계층형 시스템의 일부 또는 전부가 클라우드 서비스 제공자가 보유하고 있는 물리 서버에서 동작한다.

SaaS(Software as s Service) 모델
  • 서버, 애플리케이션을 포함한 업무 시스템을 클라우드 서비스 회사에서 제공.
PaaS(Platform as a Service), IaaS(Infrastructure as a Service), DBaaS(Database as a Service) 모델
  • 일반적인 3계층형 시스템을 구성하는 서버의 일부 혹은 전부를 클라우드 상의 리소스로 대체.

2. 서버를 열어 보자

(생략)


3. 3계층형 시스템

3.1 3계층형 시스템의 구성도

3계층 시스템은 웹 서버 <-> AP 서버 <-> DB 서버로 구성되어 있고, 세 대의 서버는 스위치를 경유해서 연결되어 있다.

3계층형 시스템에 대한 보다 자세한 사항은 ‘제이펍’ 사이트에서 다운로드 가능. http://jpub.tistory.com/503

3.2 주요 개념 설명

3.2.1 프로세스와 스레드

프로세스 및 스레드는 프로그램 실행 파일 자체가 아니라 OS 상에서 실행돼서 어느 정도 독립성을 가지고 동작하는 것이다.

프로세스
  • 전용 메모리 공간을 이용해서 동작한다.
장점
  • 개별 처리 독립성이 높다.
단점
  • 생성 시 CPU 부하가 높다.
스레드
  • 다른 스레드와 메모리 공간을 공유한다.
장점
  • 생성 시 부하가 낮다.
단점
  • 메모리 공간을 공유하기 때문에, 의도하지 않는 데이터 읽기/쓰기가 발생할 수 있다.

3.2.2 OS 커널

OS의 본질은 커널이다. 커널의 역할은 크게 여섯 가지로 나눌 수 있다.

  1. 시스템 콜 인터페이스
  2. 프로세스 관리
  3. 메모리 관리
  4. 네트워크 스택
  5. 파일 시스템 관리
  6. 장치 드라이버
시스템 콜 인터페이스

AP가 OS를 통해서 어떤 처리를 하고 싶을 때 시스템 콜(디스크 I/O, 네트워크 I/O 등)을 이용하여 커널에 명령을 내린다. 이때 명령이 인터페이스를 통해서 전달된다.

프로세스 관리

프로세스의 처리 우선순위를 결정하는 등 CPU 코어를 고려하여 프로세스를 관리한다.

메모리 관리

물리 메모리 공간의 최대치를 고려하여, 프로세스가 이용하는 독립 메모리 공간을 확보하는 등 메모리 영역을 관리한다.

네트워크 스택

차후 네트워크 부분에서 설명.

파일 시스템 관리

파일 시스템용 인터페이스를 제공한다. 파일 시스템은 OS 기능의 하나로서 물리 디스크에 제공된 데이터를 관리하는 기능이다.

장치 드라이버

디스크나 NIC 등의 물리 장치용 인터페이스를 제공한다.

3.2 웹 데이터 흐름

웹 데이터 흐름의 본질은 ‘요청 기반으로 어떠한 처리를 하고 필요에 따라 해당 요청을 삼자에게 할당하는 것’이다.

3.3.1 클라이언트 PC부터 웹 서버까지

  1. 웹 브라우저가 요청을 보낸다.
  2. 이름 해석 후 해당 웹 서버에 요청을 보낸다.
  3. 웹 서버가 요청을 접수한다.
  4. 웹 서버가 정적 콘텐츠인지 동적 콘텐츠인지 판단한다.
  5. 전자일때는 물리 디스크에서 내용을 취득하고, 후자일때는 AP 서버에 요청을 보낸다.

3.3.2 웹 서버부터 AP 서버까지

  1. 웹 서버로부터 요청이 도착한다.
  2. 스레드가 요청을 받으면 자신이 계산할 수 있는지, 아니면 DB 접속이 필요한지를 판단한다.
  3. DB 접속이 필요하면 연결 풀(connection pool)에 액세스한다.
  4. DB 서버에 요청을 보낸다.

3.3.3 AP 서버부터 DB 서버까지

  1. AP 서버로부터 요청이 도착한다.
  2. 프로세스가 요청을 접수하고 캐시가 존재하는지 확인한다.
  3. 캐시에 없으면 디스크에 액세스한다.
  4. 디스크가 데이터를 반환한다.
  5. 데이터를 캐시 형태로 저장한다.
  6. 결과를 AP 서버에 반환한다.

3.3.4 AP 서버부터 웹 서버까지

  1. DB 서버로부터 데이터가 도착한다.
  2. 스레드가 데이터를 가지고 계산 등을 한 후에 파일 데이터를 생성한다.
  3. 결과를 웹 서버로 반환한다.

3.3.5 웹 서버부터 클라이언트 PC까지

  1. AP 서버로부터 데이터가 도착한다.
  2. 프로세스는 받은 데이터를 그대로 반환한다.
  3. 결과가 웹 브라우저로 반환되고 화면에 표시된다.

4. 인프라 기본 이론

4.1 직렬/병렬

직렬 처리로 속도를 올리는 데는 한계가 있다.

병렬화를 통해 속도는 빨라지지 않지만, 단위 시간당 처리량을 늘릴 수 있다.

  • 병렬 처리에는 합류점, 직렬화 구간, 분기점이 병목 지점이 되기 쉽다.
  • 병렬화할 때는 일을 분담해서 처리를 한 후 다시 집약할 때 오버헤드가 걸린다. 그러므로 이 오버헤드를 감안하더라도 효과가 있을 경우에 병렬화를 한다.

직렬 장점

  • 구조가 간단해서 설계나 구현 난이도가 낮다.

직렬 단점

  • 복수의 리소스(컴퓨터나 프로세서 등)를 유용하게 이용할 수 없다.

병렬 장점

  • 복수의 리소스를 유용하게 이용할 수 있으며, 직렬에 비해 동일 시간당 처리할 수 있는 양이 증가한다. 또한, 일부가 고장 나더라도 처리를 계속할 수 있다.

병렬 단점

  • 처리 분기나 합류를 위한 오버헤드가 발생한다. 배타 제어 등을 고려해야 하고 구조가 복잡해서 설계나 구현 난이도가 높다.

4.2 동기/비동기

동기

다른 사람에게 일을 부탁한 후 끝날 때까지 아무것도 하지 않고 기다리기 때문에 그 사이에 다른 것을 할 수 없다. 하지만 의뢰한 것이 끝났는지 여부를 확실하게 확인할 수 있다.

장점
  • 의뢰한 처리가 끝났는지 여부를 쉽게 확인할 수 있어서 구조가 간단하다.
  • 구현 난이도가 낮다.
단점
  • 의뢰한 처리가 끝나기까지 기다려야 하기 때문에 대기 시간을 활용할 수 없다.

비동기

끝날 때까지 기다리지 않기 때문에 병렬로 다른 일을 할 수 있다. 하지만 의뢰한 일이 끝났는지 여부를 확인하고 싶으면 별도의 방법을 이용해야 한다.

장점
  • 의뢰한 처리가 진행되고 있는 동안 시간을 효율적으로 사용해서 병렬 처리를 할 수 있다.
비동기 단점
  • 의뢰한 처리가 끝났는지 확인하지 않으면 모르기 때문에 불필요한 확인 처리가 늘어난다. - 구조가 복잡해서 구현 난이도가 높다.

4.3 큐(queue)

큐(대기 행렬)에서는 줄을 설 때는 가장 마지막에 서고, 처리는 선두부터 순서대로 된다. 먼저 들어온 데이터가 먼저 나가는 큐 동작을 FIFO(First In First Out) 방식이라고 한다.

사용되는 곳

  • CPU 처리를 기다리고 있는 프로세스나 스레드 행렬(런큐, run-queue)
  • 하드 디스크 등의 저장소 읽기 처리를 기다리고 있는 I/O 요구 행렬
  • 네트워크 접속 성립을 기다리고 있는 접속 요구 행렬

4.4 배타적 제어

복수의 처리가 공유 자원(CPU, 메모리, 디스크 등)에 동시에 액세스(주로 갱신)하면 불일치가 발생할 수 있기 때문에 배타적 제어로 보호해 주어야 한다.

배타적 제어에서는 특정 처리가 공유 자원을 이용하고 있는 동안 다른 처리가 이용할 수 없계 해서 불일치가 발생하지 않도록 한다.

배타적 제어를 사용하는 경우 장점

  • 공유 데이터의 일관성을 유지할 수 있다.

배타적 제어를 사용하는 경우 단점

  • 병렬 처리가 안 된다.

배타적 제어를 사용하지 않는 경우 장점

  • 병렬로 빠르게 처리할 수 있다.

배타적 제어를 사용하지 않는 경우 단점

  • 데이터 불일치가 발생할 가능성이 있다.

4.5 상태 저장/상태 비저장

상태 저장(stateful)

상태를 고려하기 때문에 복잡한 처리가 가능하지만, 시스템 복잡성이 커진다.

장점
  • 자신의 상태를 이해하기 때문에 요청 내용을 최소화할 수 있다

상태 비저장(stateless)

상태를 고려하지 않기 때문에 간단하며, 성능이나 안정성 측면에서 우수하다.

장점
  • 요청과 그에 대한 응답 구조가 간단하다는 것이다.

프로세스 상태 전이(프로세스 처리는 상태 저장 방식)

  1. 애플리케이션을 실행하면 프로세스가 생성된다. (프로세스 실행 개시)
  2. 실행 큐라 불리는 순서 대기 행렬에 줄을 선다. (실행 가능 상태)
  3. 차례가 돌아오면 ‘실행 상태’로 전이하고 애플리케이션이 처리한다.
  4. 디스크 액세스 등 I/O 대기가 발생하는 처리를 실행한 경우 ‘대기 상태’로 전이한다.
  5. 이 세 가지 상태를 전이하면서 처리가 전부 끝나면 ‘종료 상태’가 된다.

4.6 가변 길이/고정 길이

가변 길이(variable-length)

공간을 유용하게 활용할 수 있지만 성능 면에서 불안정하다.

고정 길이(fixed-length)

쓸데없는 공간이 생기지만 성능 면에서는 안정적이다.

4.7 데이터 구조(배열과 연결 리스트)

배열

데이터를 빈틈없이 순서대로 나열한 데이터 구조.

장점
  • N번째 요소 탐색이 빠르다.
단점
  • 데이터 추가, 삭제가 느리다.

연결 리스트

  • 데이터를 선으로 연결한 데이터 구조.
장점
  • 데이터 추가, 삭제가 빠르다.
단점
  • N번째 요소 탐색이 느리다.

해시 테이블

배열과 연결 리스트의 상호 장점만 조합해서 약점을 보완한 데이터 구조. 큐(queue)나 스택(stack) 등의 데이터 구조도 배열이나 연결 리스트로 구현돼 있다.

4.8 탐색 알고리즘(해시/트리 등)

필요한 때에 필요한 데이터를 빠르게 찾기 위해서 데이터를 정리해 둘 필요가 있다.

데이터를 찾을 때의 데이터 구조와 데이터 저장 방식(메모리, HDD, SSD 등) 특성에 따라 적합한 데이터 정리 방법이 달라진다.

데이터 정리 방법을 ‘데이터 구조’, 처리 순서를 ‘알고리즘’이라고 한다.

처리 상대에 맞추어 데이터 구조를 정리할 필요가 있기 때문에 ‘알고리즘과 데이터 구조’는 자주 함께 다루어진다.


5. 인프라 응용 이론

5.1 캐시(cache)

5.1.1 캐시란?

일부 데이터를 데이터 출력 위치와 가까운 지점에 일시적으로 저장한다.

데이터 재사용을 전제로 한다.

데이터가 실제 데이터와 캐시라는 이중 구조로 저장되기 때문에 리소스 소비가 늘어난다.

설계 시에는 어떤 데이터를 캐시하는 것이 효과적인지를 검토해야 한다.

시스템 가동 직후 등에는 캐시에 데이터가 없기 때문에 원하는 성능이 나오지 않을 수 있다. 캐시의 데이터가 손실되는 경우를 대비해서 복구 순서를 설계 시에 확립해야 한다.

쓰기 데이터를 캐시할 때 캐시가 여러 개 있으면 갱신된 최신 데이터를 서로 뺏으려는 상태가 발생하지 않도록 주의해야 한다.

적합한 시스템
  • 참조 빈도가 높은 데이터
  • 캐시의 데이터가 손실돼도 문제가 없는 시스템
부적합한 시스템
  • 데이터 갱신 빈도가 높은 시스템
  • 대량의 데이터에 액세스하는 시스템

5.2 끼어들기(interrupt)

키보드 입력 등의 특정 이벤트가 발생했을 때 CPU에 이것을 알려서 해당 이벤트에 대응하는 처리를 끝낸 후 원래 하던 처리를 계속하는 것.

5.3 폴링(polling)

질의 방향이 단방향이다.

질의는 일정 간격을 따라 정기적으로 발생한다.

반복(루프)만 하면 되기에 프로그래밍이 쉽다.

상대가 응답하는지 확인할 수 있다.

모아서 일괄적으로 처리할 수 있다.

네트워크를 경유한 폴링일 때는 처리 지연 시간을 줄이기 위해 폴링 간격을 너무 짧게 잡으면 트래픽 양이 증가하므로 주의가 필요하다. 또한, 서버의 리소스 소비도 늘어난다.

적합한 처리

  • 일정 간격으로 처리를 실행하는 좋은 처리
  • 감시

부적합한 처리

  • 상태가 아닌 입력 내용에 따라 실행 내용을 변경하는 처리
  • 처리 우선순위를 정해야 하는 처리

5.4 핑퐁(pingpong)

예를 들어, 물건을 상자에 넣어서 나를 때 적절한 크기의 상자를 사용하면 쉽게 나를 수 있다. 그런데 상자가 너무 작아서 짐을 운반하기 위해 몇 번이고 왕복해야 하는 상황을 ‘핑퐁’이라 한다.

처리량 중시

큰 상자는 대량의 데이터를 빠르게 운반할 수 있다.(오라클의 ‘db file scattered read’)

지연 시간 중시

작은 상자는 소량의 데이터를 빠르게 운반할 수 있다.(오라클의 ‘db file sequential read’)

5.5 저널링(journal)

저널은 트랜잭션이나 매일 갱신되는 데이터의 변경 이력을 가리킨다. 저널을 남겨두는 것을 저널링이라 한다.(오라클의 Redo Log Buffer)

데이터 자체가 아닌 처리(트랜잭션) 내용을 기록한다.

데이터 일관성이나 일치성이 확보되면 필요 없어진다.

데이터 복구 시 롤백(rollback), 롤포워드(rollforward)에 이용된다.

저널 데이터는 메모리의 버퍼에 일단 저장된다. 이 정보가 디스크에 기록되지 않으면 장애 시에 잃을 수 있다. 이 때문에 시스템 요건에 따라 버퍼의 디스크 기록 시점을 검토, 조정해야 한다. 하지만 기록 빈도가 많으면 오버헤드가 높아지기 때문에 절충해서 검토해야 한다.

저널은 트랜잭션 단위로 일치성을 보증하기 때문에 트랜잭션 도중에 장애가 발생하면 종료되지 않은 트랜잭션은 파괴된다. 하나의 트랜잭션 단위가 크면 트랜잭션 도중에 장애가 발생할 가능성이 높다. 따라서 트랜잭션이 길어지지 않도록 설계해야 한다.

적합한 시스템

  • 데이터 갱신이 발생하는 시스템

부적합한 시스템

  • 데이터 안정성보다 성능을 요구하는 시스템

5.6 복제(replication)

장애시 데이터 손시을 예방할 수 있다.

복제를 이용한 부하분산이 가능하다.

사용자가 데이터에 액세스할 때 복제한 것이라는 것을 의식할 필요가 없다.

백업과 달리 실제 데이터가 복제 데이터와 실시간으로 동기화된다.

복제 위치가 많으면 갱신이 많은 시스템과 같이 복제 오버헤드가 높아진다.

실제 데이터와 복제 데이터를 완전히 일치시키고 싶으면 복제 데이터의 쓰기 완료 처리를 보장해야 한다. 이 경우 시스템 응답이 악화될 수 있다.

시스템 유지관리나 장애 시에는 복제 데이터도 고려해야 하기 때문에 설계나 운용 난이도가 높아질 수 있다.

복제 데이터와 실제 데이터의 차이가 커지면 그 차이를 채우기 위한 시간이나 성능도 고려해야 한다.

적합한 시스템

  • 데이터 손실을 허용하지 않고 장애 시 복구 속도가 빨라야 하는 시스템.
  • 데이터 참조와 갱신 부분이 나뉘어져 있으며 참조가 많은 시스템.

부적합한 시스템

  • 데이터 갱신이 많은 시스템

5.7 마스터-슬레이브(master-slave)

마스터-슬레이브는 상호 접속 관계의 일종으로, 한 사람이 관리자가 돼서 모든 것을 제어한다.

마스터-슬레이브의 반대가 피어 투 피어(peer-to-peer)

마스터-슬레이브와 피어 투 피어의 장점만 조합해서 이용하는 경우가 오라클의 RAC이다.

장점

  • 관리자가 한 명이기 때문에 구현이 쉽다.
  • 슬레이브 간 처리를 동기화할 필요가 없기 때문에 통신량이 줄어든다.

단점

  • 마스터가 없어지면 관리를 할 수 없다(작업 인계 구조가 필요).
  • 마스터의 부하가 높아진다.

5.8 압축

압축의 기본은 ‘중복 패턴 인식’과 그것을 ‘변경’하는 것

압축의 장점은 크기를 줄이는 것. 단점은 처리 시간이 걸린다는 것

압축한 데이터를 원래대로 복원할 수 있는 가역 압축과 이미지나 음성 데이터 등에 있는 사람이 인식할 수 없는 부분을 생략하는 비가역 압축이 있다.

5.9 오류 체크/오류 수정

오류 체크: 디지털 데이터의 오류를 스스로 확인하고, 파손되었을 때 이를 감지하는 것을 의미한다.

오류 수정: 자동으로 복구하는 것을 가리킨다.

오류 검출은 주로 패리티 비트(parity bit)를 사용한다.

장점

  • 상위 계층에서의 오류 관리 없이 데이터 일치성을 일정 수준 보장할 수 있다.

단점

  • 체크 기능에 의한 리소스 부하 상승, 알고리즘의 복잡화 등.

6. 시스템을 연결하는 네트워크 구조

6.2 계층 구조(계층 모델)

데이터나 기능 호출 흐름에 따라 계층 간 역할이 나누어진다.

계층 모델의 대표적인 예가 ‘OSI 7계층 모델’이다. OSI 자체는 현재 사용되고 있지 않지만, 이 계층 구조 개념은 다양한 분야에서 공통적으로 참조할 수 있는 ‘참조 모델’로 현재도 사용되고 있다.

  • 애플리케이션 계층(application layer): 애플리케이션 처리
  • 프레젠테이션 계층(presentation layer): 데이터 표현 방법
  • 세션 계층(session layer): 통신 시작과 종료 순서
  • 전송 계층(transport layer): 네트워크의 통신관리
  • 네트워크 계층(network layer): 네트워크 통신 경로 선택
  • 데이터 링크 계층(data link layer): 직접 좁속돼 있는 기기 간 처리
  • 물리 계층(physical layer); 전기적인 접속

시스템을 구성하는 서버 역시 계층 구조로 되어 있다.

  • 자바 애플리케이션
  • 애플리케이션 서버
  • Java VM
  • 커널
  • 하드웨어

6.3 프로토콜(protocol)

컴퓨터가 서로 소통하기 위해 정한 규약을 가리킨다.

‘통신 매체가 되는 통신 프로토콜’과 ‘의미를 전달하는 통신 프로토콜’로 나눌 수 있다.

6.4 TCP/IP를 이용하고 있는 현재의 네트워크

인터넷을 포함해서 현재 네트워크를 지탱하는 것은 TCP/IP 및 관련 프로토콜(TCP/IP protocl suite)이다.

OSI 참조 모델에서는 7계층으로 분할했지만, TCP/IP에서는 반드시 이 7계층이 분명하게 나누어지는 것은 아니다. TCP/IP 4계층 모델 등으로 불리며, OSI 7계층의 1~2계층을 모아서 링크 계층, 5~7계층을 모아서 애플리케이션으로 취급하기도 한다.

HTTP 통신의 경우

  • HTTP(애플리케이션 계층)
  • TCP(전송 계층)
  • IP(IP 계층)
  • 이너넷(링크 계층)

TCP/IP는 4계층을 숫자로 부를 때는 OSI 참조 모델의 7계층 방식으로 부르는 경우가 많다.

  • 링크 계층(이더넷 계층): 레이어2, L2
  • IP계층: 레이어3, L3
  • 전송 계층(TCP 계층): 레리어4, L4
  • 애플리케이션 계층: 애플리케이션 레이어, L7

6.5 [레이어7] 애플리케이션 계층의 프로토콜 HTTP

애플리케이션이 없으면 통신이 시작되지 않는다.

애플리케이션이 사용하는 프로토콜을 모두 애플리케이션 계층 프로토콜이라 부른다.

애플리케이션 계층 프로토콜은 자신이 통신을 하는 것이 아니라 통신 자체는 모두 OS, 즉 TCP/IP에 맡긴다.

브라우저에 URL을 입력해서 요청이 웹 서버에 도달하면 응답으로 HTML 파일이 반환된다. 브라우저는 이 파일을 해석해서 파일 내에 추가 이미지나 스크립트 등이 포함돼 있으면 다시 웹 서버에 이들을 요청한다.

6.5.1 요청(request)과 응답(response)

요청: 서버에 던지는 명령. 헤더 부분에는 다양한 부가 정보가 들어가며 세밀한 제어를 위해 사용(GET, POST).

응답: 요청에 대한 결과와 그에 대한 상태 정보를 가지고 있다. 또한, 메시지 바디에 실제 데이터를 저장한다.

6.6 [레이어4] 전송 계층 프로토콜 TCP

TCP의 역할은 애플리케이션이 보낸 데이터를 그 형태 그대로 상대방에게 확실하게 전달하는 것이다.

TCP가 담당하는 것은 어디까지나 서버가 송신할 때와 서버가 수신할 후 애플리케이션에게 전달할 때로, 상대 서버까지 전송하는 부분은 하위 계층인 IP에 모두 위임한다.

6.6.1 TCP의 기능(서비스)

  • 포트 번호를 이용해서 데이터 전송
  • 연결 생성
  • 데이터 보증과 재전송 제어
  • 흐름 제어와 폭주 제어.

6.6.2 커널 공간의 TCP 처리 흐름

  1. 소켓에 기록된 데이터는 큐를 경유해서 커널 내 네트워크 처리 부분에 전달된다.
  2. 커널에 전달된 데이터는 ‘소켓 버퍼’라는 메모리 영역에서 처리된다.
  3. 데이터에 TCP 헤더를 붙여서 TCP 세그먼트를 생성한다. TCP 헤더에는 목적 애플리케이션 포트 번호 신호를 포함해 TCP 기능에 필요한 다양한 정보가 기록된다.
  4. 하나의 TCP 세그먼트로 전송할 수 있는 최대 크기를 MSS라고 한다. MSS를 초과한 데이터는 자동적으로 분할돼서 복수의 TCP 세그먼트가 생성된다.

6.6.4 TCP 연결 생성(TCP/IP의 3-way handshaking)

  1. 클라이언트는 서버 측 OS에게 가상 경로를 열도록 의뢰한다.
  2. 서버 측에서 리슨하고 있는 포트 번호로 통신 요구가 온다. 서버는 문제가 없으면 열어도 된다는 응답을 한다.
  3. 클라이언트 측도 확인했다는 메시지를 보내며, 이때 처음으로 통신용 가상 경로가 열린다.

6.6.5 데이터 보증과 재전송 제어

연결이 생성된 후에야 데이터 송수신이 시작되는데, TCP에는 데이터가 확실히 전달되도록 보증하는 기능이 있다.

데이터 손실 방지: 확인 응답과 재전송에 의해 구현된다(ACK).

데이터 순서 보증: 각 TCP 세그먼트에 시퀀스(sequence) 번호를 붙여서 구현한다.

6.6.6 흐름 제어와 폭주

데이터를 보내고 ACK를 기다리는 처리를 반복(동기 처리)하다 보면 시간이 많이 걸린다.

TCP는 어느 정도의 세그먼트 수라면 ACK를 기라디지 않고 전송하는 윈도우라는 개념을 가지고 있으며, ACK를 기다리지 않고 전송가능한 데이터 크기를 윈도우 크기라고 한다.

6.7 [레이어3] 네트워크 계층의 프로토콜 IP

TCP 세그먼트가 만들어지면 다음은 IP 처리가 시작된다.

6.7.1 IP의 역할

-IP 주소를 이용해서 최종 목적지에 데이터 전송 -라우팅(routing)

6.7.2 커널 공간의 IP 처리 흐름

TCP 세그먼트에 IP 헤더를 붙여서 IP 패킷을 생성한다. 대상 서버까지는 이 IP 패킷 형태로 네트워크를 경유해서 도달한다. IP 헤더에는 최종 목적지 서버의 IP 주소가 기록된다.

6.7.3 IP 주소를 이용한 최종 목적지로의 데이터 전송

IP 주소는 32비트로 표현된 숫자 집합이다. 사람이 읽기 쉽도록 8비트 단위로 마침표를 찍어서 표현한다.

IP 주소는 네트워크부와 호스트부로 나뉜다. 네트워크부는 어떤 네트워크인지를 가리키고, 호스트부는 해당 네트워크 내에 있는 컴퓨터(소유자)를 가리킨다.

네트워크부를 구분하기 위해 ‘/24’와 같은 CIDR(사이더) 표기를 사용한다. 또는 서브넷 마스크(subnet mask)라고 해서 255.255.255.0과 같이 표현하기도 한다.

IP 주소 중 호스트부의 비트가 모두 0인 것을 네트워크 주소, 모두 1인 것을 브로드캐스트(broadcast) 주소라고 한다.

6.8 [레이어2] 데이터 링크 계층의 프로토콜 이너뎃

IP 패킷이 만들어지면 계속해서 링크 계층의 처리가 시작된다.

이더넷을 포함한 링크 계층 프로토콜의 역할은 ‘동일 네트워크 내(링크 내) 데이터 전송’이다.

이더넷은 동일 네트워크 내, 즉 자신이 포함된 링크 내에서만 데이터를 전송할 수 있다. 이때 사용되는 주소가 MAC(맥) 주소다.

6.8.2 커널 공간의 이더넷 처리 흐름

  1. IP 패킷에 이더넷 헤더와 푸터를 붙여서 이더넷 프레임을 만든다. 헤더에는 링크 계층 주소인 MAC 주소가 기록돼 있다. 목적지 IP 주소에 따라 라우팅 테이블을 이용해서 어떤 NIC에서 보내야 할지를 결정한다.
  2. 송신 큐에 넣은 후 장치 드라이버 경유로 NIC에 전달한다.
  3. 커널 처리를 끝낸 프레임은 버스를 통해서 NIC로 보낸다.
  4. NIC에 연결된 장비로 프레임이 전송된다.

7. 무정지를 위한 인프라 구조

7.1 안정성 및 이중화

안정성, 고가용성: 시스템 서비스가 가능한 한 멈추지 않도록 하는 것.

이중화: 하나의 기능을 병렬로 여러 개 나열해서 하나에 장애가 발생해도 다른 것을 이용해서 서비스를 계속 할 수 있는 것을 가리킨다.

7.2 서버 내 이중화

7.2.1 전원, 장치 등의 이중화

7.2.2 네트워크 인터페이스 이중화

PCI 카드 이중화 및 포트 이중화로 카드 장애 및 포트 장애에 대응.

네트워크 인터페이스 이중화는 하드웨어 또는 OS로 구현한다.

리눅스 OS의 본딩(bonding) 구조. 본딩의 액티브-스탠바이 구성은 ‘액티브-백업’이라고 한다.

본딩이 이중화된 네트워크 인터페이스를 감시하는 방버에는 두 가지가 있다.

  • MII 감시(Media Independent Interface, 대부분 선호)
  • ARP 감시

7.3 저장소 이중화

7.3.1 HDD 이중화

컨트롤러에는 CPU나 캐시가 있어서 HDD I/O 제어를 한다.

최근에는 서버와 저장소 사이를 파이버 채널(FC)로 연결한 SAN(Storage Area Network) 네트워크 구성이 사용된다. SAN에서는 IP대신 WWN(World Wide Name) 주소를 이용해서 데이터를 전송한다.

HDD를 서로 연결하는 내부 버스는 최근 SAS(Serial Attached SCSI) 방식을 사용한다.

HDD 자체 이중화는 RAID를 사용한다.

RAID의 장점
  • 안정성 확보
  • 성능 향상
  • 용량 확장
RAID 구성 패턴
  • RAID0: 이중화 없이 HDD에 기록
  • RAID1: 일반적으로 OS 디스크 이중화에 사용.
  • RAID1+0: 복수의 HDD에 병렬로 이중 기록. 안정성과 성능을 균형 있게 구성. 그러나 미러링을 하기 때문에 HDD 전체 용량의 ½ 용량밖에 사용할 수 없다.
  • RAID5: 이중화 확보를 위해 패리티 오류 수정 부호 기록. 패리티를 하나의 HDD에 집중시키지 않고 분산하는 것이 특징. 이중화 부분이 적고 (HDD 수 - 1) / HDD 수만큼의 용량을 사용할 수 있다. 그러나 패리티 연산이 이루어지기 때문에 I/O 성능이 RAID1+0에 비해 느리다.

7.4 웹 서버 이중화

7.4.1 웹 서버의 서버 이중화(소프트웨어 관점)

클라이언트 관점에서는 서버 측이 프로세스로 가동되고 있는지, 스레드로 가동되고 있는지를 의식할 필요는 없다.

아파치(Apache HTTP Server)에서는 어느 쪽이든 미리 여러 개를 가동시켜 두어서 클라이언트 요청에 빠르게 대응할 수 있는 구성을 가지고 있다. 프로세스/스레드 중 하나에 장애가 발생해도 다른 프로세스/스레드가 가동되고 있기 때문에 웹 서버의 서비스 전체가 정지되는 일은 없다.

7.4.2 서버 이중화(웹 서버 자체)

DNS를 이용해서 하나의 호스트명에 대해 복수의 IP 주소를 반환(DNS round robin).

부하분산 장치를 이용한 웹 서버 이중화.
  • 부하분산 장치가 이전에 어느 웹 서버에 요청을 할당했는지를 쿠키에 저장한다. 이 쿠키를 읽어서 같은 서버에 요청을 할당한다.
  • 이를 통해 세션 상태를 저장할 수 있는데, 부하분산 장치는 임시 대응 관리표로 세션 테이블을 만든다.
  • 세션 상태 저장을 실현하는 기능을 부하분산 장치에서는 ‘퍼시스턴스(persistence, 지속성)‘이라고 한다.
    • 소스 IP 주소: 클라이언트 IP 주소를 기반으로 요청을 할당할 웹 서버를 결정.
    • 쿠키: HTTP 헤더 내에 접속한 웹 서버 정보를 저장.
    • URL: URL구조 내에 접속한 웹 서버 정보를 저장.
  • 부하분산 장치의 할당 알고리즘
    • 라운드 로빈(round robin): 서버의 IP 주소에 순서대로 요청을 할당.
    • 최소 연결(least connection): 현재 활성 세션 수보다 세션 수가 가장 적은 서버의 IP 주소에 요청을 할당.
    • 응답 시간(response time): 서버의 CPU 사용률이나 응답 시간 등을 고려해서 가장 부하가 적은 서버의 IP 주소에 요청을 할당.

7.5 AP 서버 이중화

7.5.1 서버 이중화

웹 서버와 같이 부하분산 장치를 이용하거나, AP 서버가 가진 웹 서버 요청 이중화 기능을 이용해서 AP 서버 요청을 분산.

서버 내 이중화, 즉 하나의 AP 서버 내에 복수의 AP 서버가 존재하는 형태로, 복수의 JVM이 하나의 AP 서버에서 동작한다.

7.5.2 DB 연결 이중화

AP 서버가 DB 서버에 접속하는 경우의 이중화.

AP 서버에는 DB 서버에 접속 시에 사용할 연결(connection)을 사전에 여러 개 생성해 둔다(연결 풀링, connection pooling).

7.6 DB 서버 이중화

7.6.1 서버 이중화(액티브-스탠바이)

액티브-스탠바이형의 클러스터(cluster) 구성(HA 구성). 일반적으로 클러스터 소프트웨어로 구현한다.

클러스터의 노드나 서비스 관계는 마스터-슬레이브 개념을 기반으로 한다. 서버가 정상 동작하는지 확인하기 위한 구조로 ‘하트비트(heartbeat)‘나 ‘투표 장치(voting)’ 같은 기능이 존재한다.

액티브-스탠바이 구성은 서비스를 병렬로 실행할 수 없고 데이터 일관성을 중시하는 서비스/시스템에 적합하다.

장애 발생시
  • 클러스터 소프트웨어는 등록된 서비스가 정상 동작하고 있는지 정기적으로 확인한다. 이상이 발생하면 서비스를 정지하고 대기하고 있던 스탠바이 측 서비스를 시작해서 서비스를 유지시킨다(페일오버).
  • 클러스터 소프트웨어는 ‘하트비트’를 통해 상호 간의 상태를 확인한다. 하트비트를 통해 상태를 인식할 수 없게 되면, 페일 오버 실시 여부를 판단할 수 없다(스플릿 브레인, split-brain).
  • 스플릿 브레인 시, 투표 장치에 대한 투표 결과를 가지고 클러스터 소프트웨어가 살아 남을 노드를 선택한다(배타적 제어로 데이터 이중 기록 등의 문제 방지). 투표 장치는 하트비트 기능을 보완한다.

7.6.2 서버 이중화(액티브-액티브)

  • 쉐어드 에브리씽형(shared everything): Oracle RAC, IBM DB2 puerScale. 디스크, 데이터를 모든 노드가 공유한다. 장애가 발생해도 다른 노드로 쉽게 처리를 계속할 수 있다.
    • 캐시 퓨전(cache fusion): 캐시의 데이터를 네트워크 경유로 받아서 디스크 액세스를 줄이고 데이터 취득을 고속화한다.
  • 쉐어드 낫씽형(shared nothing): Oracle MySQLCluster 등. 각 노드별로 디스크를 가지고 잇어서 데이터가 분산된다. 노드를 배치하기 쉽다.

7.7 네트워크 장비 이중화

7.7.1 L2 스위치 이중화

L2 스위치 A와 L2 스위치 B를 서로 캐스케이드(cascade)해서 패킷이 흐르도록 한다.

최근에는 트렁크 포트를 사용하여 포트를 복수의 VLAN에 소속시켜 사용한다.

7.7.2 L3 스위치 이중화

기본적으로 액티브-스탠바이.

L3 스위치는 스위치 기능과 간이 라우터 기능을 동시에 갖추고 있는 장비이다.

L3 스위치의 액티브-스탠바이를 실현하는 프로토콜인 Virtual Router Redundancy Protocol(VRRP)가 있다.

VRRP
  • 어느 쪽 장비가 기본(마스터 라우터)인지를 정한다.
  • 정기적인 하트비트(advertisement)를 보내서 생존 감시를 한다.
  • 보조(백업 라우터) 장비가 애드버타이즈먼트를 일정 시간 수신하지 못하면 마스터 라우터 역할을 인계한다.

7.7.3 네트워크 토폴로지

L2 스위치와 L2 스위치를 조합하는 구성을 말한다.

복수의 경로가 존재하는 네트워크 구성을 ‘루프(loop)‘라고 하는데, 이는 안정성 측면에서 좋지 않다.

이를 해결하기 위한 수단으로 스패닝 트리 프로토콜(Spanning Tree Protocol, STP)를 사용한다.

STP를 이용하여 논리적으로 포트를 절단(블로킹 포트)할 수 있다.

장애 시에는 STP에 의한 재계산이 이루어지며, 논리적으로 절단돼 있는 포트를 개통해서 통신이 가능해진다.

STP의 단점은 계산에 걸리는 시간인데, 현재는 RSTP(Rapid-STP)가 사용돼서 페일오버 시간은 거의 제로에 가깝다.

7.8 사이트 이중화

7.8.2 웹사이트 이중화

글로벌 서버 부하분산(GSLB): 화재 등 재해에 대한 대책으로 원격지 데이터 센터와 연계하는 기술.

DNS가 반환하는 IP 주소를 동적으로 변경한다.

원격지에 데이터를 전송할 때 중요한 것은 동기/비동기 여부다.

7.9 감시

7.9.1 감시란?

시스템 컴포넌트가 정상 동작하는지 확인하는 것.

  • 생존 감시
  • 로그(에러) 감시
  • 성능 감시

7.9.2 생존 감시

예) ping 명령을 정기적으로 실행해서 서버 이터페이스에 대한 통신을 확인.

7.9.3 로그 감시

OS나 미들웨어가 출력하는 로그 파일에는 시스템 유지를 위한 중요 정보가 포함돼 있다.

로그 내용을 선별해서 중요한 로그 정보이면 감시 서버에 경고 메시지를 보낸다.

7.9.4 성능 감시

디스크 사용률, 메모리 사용 현황, 디스크 고갈 등의 리소스 상태 파악

네트워크 액세스 지연, 디스크 액세스 시간 등의 응답 상태 파악.

7.9.5 SNMP

SNMP는 네트워크 장비와 서버를 일괄 감시해서 관리할 수 있다.

  • 네트워크 장비나 서버 가동 상태
  • 서비스 가동 상태
  • 시스템 리소스(시스템 성능)
  • 네트워크 트래픽

7.9.6 콘텐츠 감시

웹 시스템 특유의 감시. 부하분산 장치가 담당한다.

부하분산 장치에 감시 대상 URL을 등록하고, HTTP의 GET 요청을 해서 정상 여부를 판단한다.

7.10 백업

7.10.1 백업이란?

이중화와 다른 점은 데이터를 복제해서 별도 장소에 보관한다는 점이다.

복구 지표를 정해서 백업을 설계한다.
  • RTO(Recovery Time Objective): 복구 목표 시간
  • RPO(Recovery Point Objective): 복구 기준 시점
시스템에서 백업해야 하는 대상.
  • 시스템 백업(OS나 미들웨어 등의 백업)
  • 데이터 백업(데이터베이스나 사용자 파일)

7.10.2 시스템 백업

다음과 같은 시점에 실시.
  • 초기 구축 후
  • 일괄 처리 적용 시
  • 대규모 구성 변경 시
취득 방법
  • OS 명령(tar, dump 등)
  • 백업 소프트웨어

7.10.3 데이터 백업

시스템 백업과 달리 매일 변경되는 데이터가 손실되지 않도록 하는 것으로, 취득 빈도가 높다.

데이터베이스 백업은 데이터 자체와 데이터 갱신 내역이 기록돼 있는 저널(journal)을 모두 취득하도록 하고 있다.

데이터는 기본적으로 서비스를 정지할 수 변경이 발생하지 않는 상태에서 취득한다.





작성자_Nyebo





강의목록

1 빅데이터 이해와 동향

2 빅데이터 활용요소와 데이터 사이언티스트

3 빅데이터 기술

4 빅데이터 활용 사례

5 빅데이터 발전 방향  

6 빅데이터 IT 이론

7 빅데이터 플랫폼 개요

8 하둡 이해

9 하둡 활용

10 빅데이터 분석 방법론

11 비즈니스 인텔리전스(Business Intelligence)

12 비즈니스 분석(Business Analytics)

13 데이터 마이닝 이해

14 데이터 마이닝 분석 유형

15 데이터 마이닝 분석 패키지 웨카(WEKA)

16 웨카(WEKA)를 활용한 데이터 마이닝 분석

17 데이터 마이닝 분석 패키지 R

18 R을 활용한 데이터 마이닝 분석

19 비정형 데이터 마이닝의 이해

20 텍스트 마이닝의 이해

21 오피니언 마이닝의 이해

22 소셜 네트워크 분석의 이해

23 제조업과 금융산업의 빅데이터 활용과 사례연구

24 의료 통신 산업과 공공부문의 빅데이터 활용과 사례연구

25 전략적 기업경영을 위한 빅데이터 분석과 사례연구

26 빅데이터 환경에서의 개인정보 보호와 보안


참고문헌

 


1. 빅데이터 컴퓨팅 기술(IT CookBook 164) - 한빛아카데미, 2014년

2. 한국정보화진흥원, 빅데이터로 진화하는 세상 - Big Data 글로벌 선진사례, 2012년

3. www.kbig.kr


 

 

 

'빅데이터분석개론' 카테고리의 다른 글

비즈니스 인텔리전스 (Business Intelligence)  (0) 2015.12.13
빅데이터 분석 방법론  (0) 2015.12.13
HDFS와 MapReduce  (0) 2015.12.13
Hadoop 설치  (0) 2015.12.09
Hadoop 이해  (0) 2015.12.09