세기의 대국 ‘이세돌 vs 알파고’ 신드롬으로 인공지능을 활용한 뇌 연구가 더욱 활발해질 전망이다. 인공지능 알파고는 인간 뇌의 신경망의 구조를 모방한 ‘딥러닝’이라는 알고리즘으로 탄생했는데, 이제 뇌를 연구하는 뇌과학의 조력자로 인공지능을 쓰는 시대가 온 것이다. 



 인간 뇌의 신경세포 연결을 형상화한 모식도/위키미디어 제공
 인간 뇌의 신경세포 연결을 형상화한 모식도/위키미디어 제공


◆ 뇌 연구 ‘조력자’로 나선 인공지능

지난 2010년 미국 콜로라도대학 과학자들은 인간의 뇌에 약물을 투입해 특정 기억을 활성화시키거나 제어하는 데 성공했다. 자기공명영상촬영(MRI)를 활용한 연구에서 과학자들은 인간 뇌에서 기억을 담당하는 해마의 어떤 부분을 제어하면 특정 기억을 조절할 수 있는지 알아낸 것이다.

 기능성 자기곰명영상촬영(fMRI)을 하면 인간 뇌의 특정 부분을 정밀하게 볼 수 있다./위키미디어 제공
 기능성 자기곰명영상촬영(fMRI)을 하면 인간 뇌의 특정 부분을 정밀하게 볼 수 있다./위키미디어 제공

최근 들어 이같은 기억과 관련된 연구에서 인공지능을 활용하는 사례가 늘어나고 있다. 손상된 해마의 시냅스 연결을 막은 뒤 인공지능 기계를 해마와 연결되는 부위에 물리적으로 연결하는 것이다. 연구가 진척되면 해마를 거쳐 가는 정보를 해마 대신 인공지능 기계가 저장하고 필요한 정보를 적시에 꺼내서 활용할 수 있다.

임창환 교수는 “뇌의 특정 부분이 망가진 사람에게 ‘브레인 임플란트’ 개념의 인공지능 기계를 연결해 망가진 기억 능력을 일부분 되살릴 수 있다”며 “이처럼 인간 지능을 보조하고 기능을 복원해 주는 인공지능 연구가 활발해질 것”이라고 말했다.

딥러닝 기술도 뇌공학에 영향을 미치고 있다. 과학자들은 뇌에서 발생하는 전기신호와 뇌 신경세포의 특정 연결을 들여다보는 ‘기능성 자기공명영상촬영(fMRI)’을 분석할 때 기계학습이나 딥러닝 등 인공지능 기술을 활용하고 있다.

임창환 교수는 이와 관련 “실제로 사람에게 유튜브의 수많은 영상을 보여줄 때 fMRI를 찍어 특정 영상을 볼 때 뇌의 어떤 부위가 활성화되는지 빅데이터를 모은 뒤 이를 딥러닝으로 분석하는 연구도 이뤄지고 있다”며 “개인 맞춤형 뇌질환 진단 시스템에 활용할 수 있다”고 말했다. 

◆ “인공지능 연구와 뇌 과학은 달라”


 인공지능 알파고와 세기의 대결을 벌인 이세돌 9단이 모든대국을 끝낸 뒤 데미스 하사비스 구글 딥마인드 CEO와 선물을 주고받고 있다. / 구글코리아 제공
 인공지능 알파고와 세기의 대결을 벌인 이세돌 9단이 모든대국을 끝낸 뒤 데미스 하사비스 구글 딥마인드 CEO와 선물을 주고받고 있다. / 구글코리아 제공

인공지능은 스스로 학습하기 위해 딥러닝과 강화학습 전략을 택했다. 컴퓨터가 지닌 월등한 연산 처리 능력으로 빠르게 최적의 판단을 한다. 인간 뇌가 축적한 경험과 지식을 바탕으로 최선의 판단을 내리는 과정을 따라한 것이다.

하지만 인공지능의 이런 학습 능력은 인간 뇌의 극히 일부 기능과 구조를 따라하는 데 그친다. 인간은 사진 한 장만으로 사람 얼굴이나 동물을 알아보지만 현재 인공지능 기술은 개와 고양이를 구별하기 어려운 수준이다. 또 인간은 자연스럽게 말을 알아듣고 의사 표현을 하지만 인공지능의 통번역 시스템은 아직 오류가 많다.

인간의 뇌가 수행하는 고차원적인 지적 능력은 1000억 개가 넘는 뇌 신경세포간 연결을 통해 가능하다. 뇌 과학은 이런 뇌 신경세포의 연결 구조를 밝히고 뉴런을 통해 전달되는 전기 신호가 어떻게 만들어져 시냅스로 연결되는지 메커니즘을 밝히는 학문이다. 뇌의 복합적인 기능과 구조를 규명해 인간의 인지 능력의 근원을 찾고 치매나 파킨슨 병 등 각종 뇌 질환의 원인을 밝히는 게 목적이다.

임창환 한양대 생체공학과 교수는 “알파고의 딥러닝은 인간 뇌에서 뉴런과 뉴런이 연결되는 신경망 구조를 따온 것일 뿐”이라며 “실제 인간 뇌의 신호 전달 메커니즘과 생리학적인 특성을 연구하는 뇌 과학과는 분명 다르다”고 밝혔다.

인공지능과 인간 뇌가 사용하는 에너지도 어마어마한 차이가 있다. 인간 뇌가 일상 생활에서 사용하는 전기 에너지는 하루에 20와트(W) 미만이다. 사람이 하루 3끼니를 먹었을 때 만들어내는 열량의 40%를 뇌가 사용하는데, 이를 전기에너지로 환산하면 약 20W에 불과하다. 반면 1000개가 넘는 CPU를 사용하는 인공지능 ‘알파고’는 엄청난 에너지를 쓴다. 정두석 한국과학기술연구원(KIST) 전자재료연구센터 선임연구원은 “인간의 뇌의 에너지 효율성은 어떤 인공지능도 따라하기 어려운 벽과 같은 것”이라고 말했다.


원문보기: 
http://biz.chosun.com/site/data/html_dir/2016/03/16/2016031602701.html#csidxc165a207ecda7e79fd73c0b0628104a 

본격적으로 빅데이터 분석을 위한 기계학습 알고리즘을 설명하기 전에 우선 기계학습과 데이터 마이닝에 대해 간단히 알아 보자. 이번 절에서 언급하는 이론적인 내용은 모두 한국데이터베이스진흥원에서 발간한 「데이터 분석 전문가 가이드」 에서 발췌한 내용이다. 알고리즘에 대한 자세한 내용이나 R을 이용한 구체적인 활용법을 알고싶다면 이 책을 참고하기 바란다.

기계학습

기계학습은 인공 지능의 한 분야로, 시스템이 데이터로부터 학습할 수 있도록 하는 알고리즘과 기술을 개발하는 분야를 말한다. 일찍이 1959년 아서 사무엘(Arthur Samuel)은 기계학습을 ‘컴퓨터에게 배울 수 있는 능력, 즉 코드로 정의하지 않은 동작을 실행하는 능력에 대한 연구 분야’라고 정의했다. 이후 톰 미첼(Tom M. Mitchell)이 좀 더 형식화한 정의를 하여 많이 인용되고 있다. 그는 기계학습을 ‘성능 척도 P에 의해 측정되는 태스크 T의 성능이 경험 E로부터 개선된다고 할 때, 컴퓨터 프로그램은 태스크 T에 대한 경험 E로부터 학습한다고 한다’라고 했다.
톰 미첼의 정의를 따르면 이메일 프로그램이 사용자가 어떤 이메일을 스팸으로 체크하는지에 대한 정보를 기반으로 스팸 필터링을 학습한다고 했을 때, 태스크 T는 이메일을 스팸 또는 일반 메일로 분류한다. 이메일을 스팸 또는 일반 메일로 라벨링하는 사용자의 행위를 관찰하는 것으로, 성능 척도 P는 스팸 또는 일반 메일로 정확하게 분류된 이메일의 비율이라고 말할 수 있다.

생각해 봅시다

기계학습과 데이터 마이닝, 데이터 분석의 차이점은 무엇일까? 일단은 서로 많은 부분에서 중첩되는 면이 있으므로 이 세 가지를 무 자르듯이 나누기는 힘들다. 하지만 기계학습은 데이터부터 학습한 알려진 특성(known properties)을 통해 어떤 ‘예측’을 하는 데 초점을 맞춘다. 반면 데이터 마이닝은 데이터로부터 알려지지 않은 특성(unknown properties)을 ‘발견’하는 데 집중한다. 기계학습에서는 알려진 특성을 재생산(reproduce)하는 능력으로 성능을 평가할 수 있으므로 성능을 개선하기 위해 예측 결과로부터 예측 모델을 개선하는 데 집중하는 과정도 포함된다고 할 수 있다. 데이터 마이닝에서는 종종 기계학습 방법론을 약간 다른 목적으로 차용하기도 하며, 기계학습에서는 데이터 마이닝 방법론을 무감독학습이나 데이터 전처리에서 많이 활용하고 있다. 반면 데이터 분석은 데이터를 다양한 형태로 가공해 데이터 자체에서는 쉽게 드러나지 않는 유용한 정보를 찾아내고, 이로부터 의사결정이나 결론을 도출하는데 도움을 주는 활동을 말한다.

기계학습의 분류

기계학습 알고리즘은 크게 감독학습(Supervised Learning)과 무감독학습(Unsupervised Learning)알고리즘으로 구분할 수 있다. 감독학습은 훈련 데이터(training data)로부터 어떤 모델을 추론하는 기계학습 태스크라고 할 수 있다. 여기서 사용하는 훈련 데이터가 입력으로 주어진 변수들과 그 입력에 대해 요구되는 결과 변수(또는 supervisory signal)의 쌍으로 이뤄져 있기 때문에 감독학습이라는 이름을 가진다.
감독학습은 입력 변수 X와 그 입력에 대한 올바른 결과 d(desired output)가 훈련 데이터 D={(X, d)}로 주어졌다고 하자. 이 훈련 데이터를 이용해 X로부터 d를 추론하는 모델을 생성하고, 이 모델을 이용해 올바른 해답 d'를 알 수 없는 새로운 문제 X'가 검사 데이터(test data)로 주어졌을 때 이로부터 d'를 추론하는 방식으로 동작한다. 분류(Classification)와 회귀(Regression)가 여기에 해당한다. 결과 변수 d가 범주형 변수일 때의 감독학습 알고리즘을 분류라고 하며, d가 숫자형 변수일 때는 회귀라고 한다.
무감독학습은 감독학습과 달리, 학습 데이터에 결과 변수가 주어지지 않은 입력 변수만으로 이뤄진 학습 데이터 D={(X)}를 입력으로 하여, 데이터가 어떻게 구성됐는지를 파악한다. 데이터에 대해 알려지지 않은 구조를 발견하려고 시도한다. 군집화(Clustering), 차원 축소(Dimension Reduction)등이 여기에 속한다. 이외에도 준지도학습(Semi-Supervised Learning), 강화학습(Reinforcement Learning) 등으로 분류되는 알고리즘들도 있다.

다양한 기계학습 알고리즘
  • 연관규칙(Association rule) - Apriori algorithm
  • 의사결정트리(Decision Trees)
  • 랜덤 포리스트(Random Forest)
  • 단순선형회귀분석(Simple Linear Regression)
  • 로지스틱회귀분석(Logistic Regression)
  • K-최근접 이웃(K-Nearest Neighbor) 알고리즘
  • 나이브 베이즈 분류기(Naive Bayes Classifier)
  • 지지벡터머신(Support Vector Machines)
  • 인공신경망(Artificial Neural Networks)
  • K-Means 군집화(K-Means Clustering)
  • 퍼지 K-Means 군집화(fuzzy K-Means Clustering)
  • 계층적 군집화(Hierarchical clustering)
  • 주성분분석(Principal Components Analysis)
  • 추천시스템(Recommender Systems)
기계학습 도구

앞서 살펴 본 여러 알고리즘을 활용하기 위해 사용할 수 있는 여러 가지 도구가 있다.

마이크로소프트 엑셀

엑셀을 단순히 문서 도구로 생각할 수 있지만, 엑셀에서도 데이터 분석 등을 위한 프로그래밍이 가능하도록 지원한다. 다양한 통계, 마이닝 기법들을 사용할 수 있는 방법을 제공하는데, 실제로 금융공학 분야에서는 엑셀을 주요 도구로 많이들 사용하고 있다.

SAS, SPSS, Oracle 솔루션

벤더들이 제공하는 각종 마이닝ㆍ분석 솔루션을 사용하면 어느 정도 대용량 데이터에 대해서도 신뢰성 있는 분석을 할 수 있다. 하지만 도입을 위해 많은 비용이 들기 때문에 규모가 작은 회사나 개인이 사용하기에는 무리가 있다.

R, Weka

무료로 사용할 수 있는 오픈소스 마이닝 도구도 많다. 그 중 자바 기반의 오픈소스 데이터 마이닝 프로그램인 Weka가 유명하다. 특히 R은 최근 빅데이터 분석 바람을 타고 데이터 분석 도구로서 각광받고 있다.

lens-kit, OpenCV

이외에도 추천 시스템을 위한 lens-kit 라이브러리나, 이미지 프로세싱 또는 패턴인식에 특화된 OpenCV 같은 라이브러리가 있다.
이런 도구들이 이미 다양한 알고리즘을 제공하지만, 대부분은 분석을 위해 모든 데이터를 메모리에 올려야 하는 등 분산ㆍ병렬 처리에 대한 지원이 미미하다. 따라서 적절한 비용으로 대용량 데이터에 대해 신뢰성 있는 기계학습, 데이터 마이닝 알고리즘을 수행하기에는 어려운 점이 많다. 바로 이런 이유 때문에 다음 절에서 배우게 될 머하웃이 주목을 받게 됐다.

데이터 마이닝의 분석기법

분류분석

분류분석(Classification Analysis)이란 데이터의 실체가 어떤 그룹에 속하는지 예측하는데 사용하는 데이터 마이닝 기법이다. 고객 기록을 특정한 등급으로 나눈다는 점에서 클러스터링과 유사하지만, 분류분석은 군집분석과 달리 각 계급이 어떻게 정의되는지 미리 알아야 한다. 분류(classification)는 어떤 객체가 불량인지 우량인지 또는 생존하느냐 못하느냐와 같이 0과 1로 구분하는데 활용되거나 AㆍBㆍCㆍD 중에서 어느 범주에 속하는지 또는 1ㆍ2ㆍ3ㆍ4ㆍ5등급 중에서 어느 등급에 속하는지 등과 같이 객체를 정해놓은 범주로 분류하는 데 목적이 있다.
분류를 위해 사용되는 데이터 마이닝 기법은 K-최근접 이웃(K-Nearest Neighborhood), 의사결정 나무(Decision Tree), 베이지안 정리(Bayesian Theorem)를 이용한 분류, 인공신경망(Artificial Neural Network), 지지벡터기계(Support Vector Machine) 등이 있다.

회귀분석

분류와 회귀는 각각 불연속적인 값과 연속적인 값을 목표 값으로 한다는 점에서 차이가 있다. 원인이 되는 변수(독립 변수)와 결과로 간주되는 변수(종속 변수) 관계가 성립될 때, 하나 또는 여러 개의 독립변수와 종속변수 간의 관계를 분석하는 통계 기법을 회귀분석(Regression Analysis)이라고 한다. 회귀분석은 입력 데이터에서 변수간의 관계를 가장 잘 설명할 수 있는 y = a + bx 형태의 선형방정식(linear equation)을 찾아내고, 이를 통해 주어진 독립변수에 대해 종속 변수의 값을 예측하는 분석 방법이다.
독립변수의 개수에 따라 단순선형회귀와 다중회귀모형으로 나눌 수 있다. 하지만 실세계에서는 어떤 변수가 단 하나의 요인에 의해 결정되는 일은 드물어 보통 다중회귀모형을 많이 사용한다.

군집분석

군집분석(Clustering Analysis)은 특성에 따라 객체를 여러 개의 배타적인 집단으로 나누는 것이다. 결과는 구체적인 군집분석 방법에 따라 차이가 나타날 수 있다. 군집의 개수나 구조에 대한 가정 없이, 데이터로부터 거리 기준에 의해 자발적인 군집화를 유도한다. 군집분석의 첫 번째 목적은 적절한 군집으로 나누는 것이고, 두 번째 목적은 각 군집의 특성과 군집간의 차이 등에 대해 분석하는 것이다.
군집분석 방법에는 계층적 군집(Hierarchical Clustering) 방법과 비계층적 군집(Nonhierarchical Clustering) 방법이 있다. 계층적 군집 방법은 n개의 군집으로 시작해 점차 군집의 개수를 줄여나가는 방법이다. 예를 들어, n개의 객체로 이루어진 데이터가 있을 때 거리가 가장 가까운 데이터가 p1과 p2라면 먼저 두 객체를 묶어서 군집(C1)을 형성한다. 다음 단계는 군집 C1과 나머지 (n-2)개의 다른 데이터 또는 군집과의 거리를 계산해 가장 가까운 데이터를 묶어주는 작업을 반복한다. 거리를 정의하는 방법에 따라 최단연결법, 최장연결법, 평균연결법, 중앙값연결법, 중심연결법, 와드연결법 등 여러가지로 나눌 수 있다.
계층적 군집 방법 외에 비계층적인 방법으로 군집을 형성할 수 있다. 그 원리는 n개의 개체를 g개의 군집으로 나눌 수 있는 모든 방법을 점검해 최적화한 군집을 형성하는 것이다. 대표적인 방법으로 K-Means 알고리즘이 있다. K-Means 군집화는 주어진 데이터의 내부구조에 대한 사전정보 없이 의미 있는 구조를 찾을 수 있으며, 객체간의 거리를 데이터 형태에 맞게 정의하면 모든 형태의 데이터에 대해 적용 가능하다는 장점이 있다. 반면, 가중치와 거리 정의가 어려우며 초기 군집수를 결정하기 어렵다는 단점이 있다.

연관분석

연관성분석(Association Analysis)은 흔히 장바구니분석(Market Basket Analysis), 서열분석(Sequence Analysis)이라 불린다. 예를 들어, 대형 할인점의 계산대에서 매일 수집되는 구매 트랜잭션 데이터는 유니크한 트랜잭션 ID로 구별되며, 주어진 고객이 구매한 아이템 항목의 집합으로 이루어진다. 이 거대한 데이터에서 유용한 정보를 얻기 위해 연관 분석을 활용할 수 있다.
연관 분석에서 주요하게 다루는 개념은 연관 규칙과 빈발 항목 집합 두 가지다. 빵을 구매하는 많은 고객이 버터를 동시에 구매하는 경우 {빵} → {버터}라는 연관 규칙을 얻을 수 있다. 이 규칙은 빵과 버터 구매 사이에 강한 관계가 있음을 말해준다. 빵과 버터가 빈발 항목 집합이고 {빵} → {버터} 연관 규칙이 발견되더라도 항상 {버터} → {빵} 연관 규칙을 도출하지는 않는다. 이는 지지도와 신뢰도에 따라서 결정된다.




출처 : http://www.dbguide.net/db.db?cmd=view2&boardUid=187388&boardConfigUid=9&boardStep=0&categoryUid=&boardIdx=161

패딩
아웃도어 추천 
http://todayhumor.com/?bestofbest_190553   (정보공유7탄. 패딩을 찾아서. BGM 사진겁나많음.)(우리헤어졌어요님 글)



블루종/스타장
프리즘웍스 http://www.frizm.co.kr/



코트
지오지아 https://www.ziozia.co.kr/   (백화점)
커스텀멜로우 http://www.customellow.com/


니트/가디건
지오다노 http://giordano.co.kr/  
포레스트캠프 http://www.forestcampshop.com/
더니트컴퍼니 http://theknitcompany.co.kr/
하우트옴므 http://hauthomme.com/
울오버 http://www.woolovers.com/     (해외 직구)


티셔츠/맨투맨
지오다노 http://giordano.co.kr/  
스파브랜드로 대부분이 기본맨투맨 
↓스트릿브랜드들로 디자인이 가미된 맨투맨
드리프트아웃 http://www.driftout.co.kr/



셔츠

청바지 



치노/슬랙스
지오다노 http://giordano.co.kr/  

무지티

양말


기타 인터넷 쇼핑몰
자비노 www.zavino.co.kr


이전 까지의 내용은 빅데이터 플랫폼 아키텍처에 대한 개요와 첫 걸음인 데이터 수집을 위한 다양한 오픈소스를 살펴보았습니다. 여러가지 오픈 소스 중에도 Apache Flume을 통한 정형,비정형 로그 수집, Apache Sqoop을 통한 DB 데이터 수집, 그리고, 데이터 저장을 위한 HDFS에 대해서도 간략히 알아봤습니다.
HDFS에 저장되어 있는 데이터를 효과적으로 처리하기 위한 오픈 소스 또한 여러가지가 있습니다. Map Reduce, Pig, Hive 그리고, 최근에 Hot 오픈 소스인 Spark 등이 있습니다.


Apache Pig와 Hive 비교

HDFS상의 데이터를 처리하기 위해 개발자가 개발언어(Java 등)로 직접 Mapreduce 코드를 작성하여 처리를 해왔다.
Pig가 나오면서 Pig Latin이라는 스크립트로 조금 더 쉽게 작성할 수 있었다. Mapreduce 코드보다 대략 1/20으로 코드량이 줄어들고, 개발속도 또한 1/16로 줄어든다는 통계도 있다. 하지만, Pig Latin 또한 스크립트이므로 개발자가 아니면 쉽게 접근하기 힘들 것이다.
이에 SQL 형태로 할 수 있게 된 것이 Hive이다. Database를 조작하는 SQL을 이해한다면, 쉽게 접근할 수 있게 되었다. 가장많이 선호하는 것이 Apache Hive라고 할 수 있겠다.

Pig와 Hive에 대한 요약과 차이를 간략히 정리된 내용을 소개하면 아래와 같다.


pigvshive


pigvshive2

[출처 : http://www.edureka.co/blog/pig-vs-hive/ ]


about Apache Hive

여기서는 널리, 가장많이 사용되는 Hive에 대해서만 알아보고자 한다.
The Apache Hive ™ data warehouse software facilitates querying and managing large datasets residing in distributed storage.
 Hive는 앞서 간단히 설명했듯이 HDFS 상의 오픈소스 DW 솔루션이다. DW(Data Warehouse)는 리포팅 및 분석을 위한 구조체라 보면 되겠다.
즉, Hadoop 클러스터에 저장된 데이터를 MapReduce 를 직접 구현하여 데이터를 분석 하기엔 개발 스킬과 경험이 필요하며, 이를 이해하고 구현 하는 시간과 노력을 줄이고자, 보다 편리하게 데이터 분석이 가능한 HIVE (SQL방식이며 facebook에서 개발) M/R 처리 기능을 도입되었다.쉽게 데이터를 ETL처리 할 수 있으며, HiveQL이라 부르는 ANSI-SQL을 지원하는 SQLike한 스크립트를 지원한다.

Hive Architecture는 아래와 같다.

hive_architecture

주요 구성요소를 보면,

  • JDBC/ODBC : SQL Query문을 MR로 변환해주는 Query Compiler 및 실행엔진
  • UDF/UDAF : 직접 필요한 함수를 만들어 사용할 수 있음
  • Metastore
    • HDFS상의 데이터를 DB Table 형식으로 관리하기 위한 메타 정보, table, patitions, column 정보를 저장.
    • 임베디드 되어 있는 Apache Derby를 사용하거나, Local 또는 Remote의 RDBMS(MySQL, Postgres 등)를 Metastore로 사용할 수 있음.

아래 보는 바와 같이 HiveQL은 SQL을 알면 이용에는 무리가 없을 것이다.

1
2
3
4
5
6
SELECT page_views.*
FROM page_views JOIN dim_users
 ON (
  page_views.user_id=dim_users.id
  AND page_views.date >= '2015-07-24'
)

Hive 이용

  • Hive 0.13.0 버전까지만 해도 Transactions이 지원되지 않았다. 즉, UPDATE, DELTE가 지원되지 않았음.
  • 0.14.0 버전부터는 제한적이긴 하지만 Transactions이 지원된다. 하지만, BEGIN, COMMIT, ROLLBACK 는 지원되지 않는다. 즉, 항상 auto-commit 이다.
  • Transcations 을 이용하기 위해서는 몇 가지 Configuration 조정이 필요하다. 해당 Configuration은 여기를 참조. – Hive Transactions


 앞서 언급했듯이, HiveQL로 분석, 데이터 작업은 용이하나, 내부적으로는 어차피 Mapreduce 로 변환되어 진행되기 때문에 빠른 처리는 불가능하다. 그래서 최근에 많이 언급되고 있는 Facebook Presto, Tajo, Apache Spark 등 메모리 기반을 통해 성능, 속도향상을 하고 있다. 그 중에서도 최근에 가장 Hot한 것은 Apache Spark라고 할 수 있다.


Apache Spark

Hive와 호환이 되기 때문에 많이들 사용하고 있다. 아래 Spark 개요에서와 같이 Spark SQL -예전에 Shark라 불렀던-을 활용하면 쉽게 사용이 가능하다.
또한, 추천에 많이 사용하는 Machine Learning 오픈소스인 Apache Mahout를 대신해 최근에 Spark MLlib를 활용하는 추세이다.
Query에 따라 다르겠지만, Hive 비해 40배 정도 빠른 속도를 자랑한다.
또한, Spark Streaming을 통해 실시간 처리도 가능하다.


apache_spark

Hive와 Spark의 개념은 아래를 비교해보면 좀 더 이해가 쉬울 것이다.


hive_architecture

Hive Architecture

spark_architecture

Spark Architecture

[출처 : http://www.slideshare.net/Hadoop_Summit/spark-and-shark]



Reference



출처 : http://hochul.net/blog/about-hive-pig-spark_data/

하둡과 아파치 스파크, 무엇이 어떻게 다른가? 5가지 궁금증

Katherine Noyes | IDG News Service


종종 하둡과 아파치 스파크가 빅데이터 영역에서 경쟁관계 있는 것처럼 보이기도 했지만 최근 들어 이 둘이 서로 조화를 이룬다는 생각이 점점 더 확산되고 있다.

빅데이터를 다루는 대화나 기사를 접하다 보면 하둡과 아파치 스파크라는 이름을 어렵잖게 들을 수 있다. 그렇다면 이들의 정체는 무엇이고, 둘 사이에는 어떤 차이점이 있을까?

1. 하둡과 아파치 스파크의 역할은 다르다.

 하둡과 아파치 스파크는 모두 빅데이터 프레임워크라는 점에서는 공통 분모를 가지지만, 그 용도에는 상당한 차이가 있다. 먼저 하둡은 기본적으로 분산형 데이터 인프라스트럭처로써, 대량의 데이터 컬랙션을 상용 서버 클러스터 내 복수의 노드들에 분산시키는 역할을 한다. 맞춤 제작한 하드웨어를 구매하고 유지하는데 들어가는 사용자의 비용 부담을 줄여준다는 점이 이 방식의 장점이다. 또 하둡은 데이터를 인덱싱하고 추적해 빅데이터 프로세싱 및 애널리틱스 활동의 효율성을 큰 폭으로 개선한다는 점에서도 많은 시장의 지지를 얻고 있다. 이와 달리 스파크는 이러한 분산형 데이터 컬랙션 상부에서 동작하는 데이터 프로세싱 툴이며, 분산형 스토리지로서의 역할은 수행하지 않는다.
 
2. 하둡과 아파치 스파크는 상호 독립적이다.

 하둡은 하둡 분산형 파일 시스템(HDFS, Hadoop Distributed File System)이라는 이름의 스토리지 컴포넌트와 더불어 프로세싱 컴포넌트인 맵리듀스도 제공한다. 즉 프로세싱 작업을 위해 스파크를 필수적으로 필요로 하지 않는 것이다. 반대로 스파크도 하둡 없이 이용할 수 있다. 스파크에 자체 파일 관리 시스템이 포함되진 않고 그것을 필요로 하는 것은 사실이지만, 굳이 HDFS가 아니더라도 여타 클라우드 기반 데이터 플랫폼과도 융합될 수 있기 때문이다. 그러나 스파크 자체가 본래 하둡용으로 설계된 솔루션인만큼 둘이 함께할 때 가장 좋은 궁합을 보여주긴 한다.

3. 스파크가 더 빠르다.

 일반적인 상황에서 스파크의 속도는 맵리듀스와 비교해 월등히 뛰어나다. 데이터 프로세싱 방법에 따른 차이다. 단계별 데이터 처리 방식을 취하는 맵리듀스와 달리 스파크는 전체 데이터셋을 한번에 다룬다. 부즈 알렌 헤밀튼(Booz Allen Hamilton)의 수석 데이터 과학자 커크 본은 “맵리듀스의 워크플로를 설명하자면, 먼저 클러스터에서 데이터를 읽어낸 뒤, 동작을 실행하고, 결과를 클러스터에 기록한 다음, 또 다시 업데이트된 데이터를 클러스터로부터 읽어내고 다음 동작을 실행한 후 결과를 클러스터에 입력하는 식이다. 반면 스파크는 모든 데이터 운영을 메모리 내에서 실시간에 가깝게 처리할 수 있다. 풀어 설명하자면 클러스터로부터 데이터를 읽어 들이고 필요한 모든 애널리틱스 운영을 수행하는, 그리고 결과물을 클러스터에 입력하는 전 과정이 동시적으로 진행되는 것이다”라고 이야기했다. 배치 프로세싱의 경우에는 스파크가 맵리듀스에 비해 10배 빠른 수행이 가능하며, 인 메모리 애널리틱스의 경우에는 속도 차이가 100배에 이른다고 본은 설명했다. 

4. 스파크의 속도가 꼭 필요한 것은 아니다.

 데이터 운영 및 리포팅 요구 대부분이 정적인 것이고 배치 모드 프로세싱을 기다릴 수 있다면, 맵리듀스의 프로세싱 방식이 문제가 되지는 않을 것이다. 스파크가 정말로 필요한 상황은 공장 내 센서 등이 발생시키는 스트리밍 데이터를 처리하거나, 머신러닝 알고리즘과 같이 애플리케이션이 복합적인 운영을 필요로 하는 경우다. 구체적으로 실시간 마케팅 캠페인, 온라인 상품 추천, 사이버 보안 분석, 기계 로그 모니터링 등의 애플리케이션 작업에 스파크가 많은 도움이 되는 것이다. 

5. 고장 회복 방식은 다르지만, 둘 다 준수하다.

 매 운영 이후 결과를 디스크에 기록하는 하둡의 방식은 시스템 사고나 고장 상황에서 매우 유용할 수 있다. 그리고 스파크의 경우에는 탄력적 분산형 데이터셋(RDD, Resilient Distributed Dataset)이라는 형태로 데이터 오브젝트들을 데이터 클러스터 전반에 분산시킴으로써 탄력성을 보장한다. 본은 “이 데이터 오브젝트들은 메모리 내에, 혹은 디스크에 저장할 수 있으며, 또 RDD는 사고나 고장이 나더라도 완벽하게 복구할 수 있게 하는 기술이다”라고 설명했다. ciokr@idg.co.kr



원문보기: 
http://www.ciokorea.com/news/27798#csidx3d1b346f5c23f7f9d114af42a2ac38e 

출처 : http://www.hellot.net/new_hellot/magazine/magazine_read.html?code=202&idx=29498



임베디드 시스템, 2023년까지 가파른 성장 전망...자동차 및 의료가 수요 견인

입력 : 2016.06.02 17:06

글자크게보기 글자작게 댓글달기 좋아요 즐겨찾기

페이스북 트위터 카카오스토리 블로그

보안 문제, 여전히 해결해야 할 과제


최근 다양한 산업의 기술 혁신으로 대표되는 사물인터넷의 출현과 함께 자동차(혹은 커넥티드카), 의료 분야에서의 수요 증가로 임베디드 시스템 시장이 폭발적으로 성장할 것으로 전망된다. 한 시장조사기관은 글로벌 임베디드 시스템 시장이 2023년까지 연간 5.6%씩 성장하면서 2,587억 달러 규모를 달성할 것으로 예측했다. 그러나 기술 혁신으로 임베디드 시스템 간 연계되면서 발생할 수 있는 보안 문제는 해결해야 할 과제로 나타났다.


글로벌 임베디드 시스템 시장이 가파르게 성장할 것으로 보인다. 시장조사기관인 Radiant Insights가 발표한 보고서에 따르면, 2013년 1,403.2억 달러였던 이 시장은 연간 5.6%씩 성장하면서 2023년에는 2,587.2억 달러에 이를 전망이다(그림 1). 이러한 성장 배경에는 최근 출현한 사물인터넷에 힘입어 자동차와 의료 분야에서 임베디드 시스템에 대한 수요가 급증할 것으로 전망되기 때문이다. 보고서는 이 두 산업이 향후 임베디드 시스템 시장의 성장을 견인할 것으로 내다봤다. 


▲ 그림 1. 산업별 임베디드 시스템 시스템 시장 규모 (자료 : Radiant Insights)


임베디드 시스템은 마이크로프로세서 혹은 마이크로컨트롤러를 내장해 원래 제작자가 지정한 기능만을 수행하는 장치를 의미한다. 임베디드 하드웨어와 소프트웨어(OS, 소프트웨어)로 구성되며, 하드웨어는 프로세서/컨트롤러, 메모리, I/O, 네트워크를 포함하고, 임베디드 소프트웨어는 커널, 시스템 SW, 응용SW로 나뉜다. 보고서에 따르면, 2014년 임베디드 하드웨어는 시장 규모는 1,440억 달러로 사상 최대를 기록했다. 이 시장은 앞으로 연간 5.5%씩 성장하면서 2023년에는 2,400억 달러에 이를 것으로 예상됐다(그림 2). 특히, 러시아, 대만, 브라질, 인도, 중국과 같은 신흥 국가들이 산업 성장을 주도하는 새로운 기술들을 도입함으로써 이 기간 동안 임베디드 하드웨어의 수요 증가를 이끌 것으로 분석됐다. 


▲ 그림 2. 임베디드 하드웨어 시장 규모 (자료 : VDC Research)


이와함께 2014년 임베디드 소프트웨어 시장 규모는 95억 달러로 잠정 집계됐다. 보고서는 이 시장이 2023년에는 180억 달러 규모로 성장할 것이며, 가까운 미래에 IoT에 대한 수요가 폭발하게 될 경우, 임베디드 소프트웨어 산업 성장에 긍정적인 영향을 미칠 것으로 내다봤다.


자동차와 헬스케어, 임베디드 시장 성장 견인


이러한 임베디드 시스템은 현재 정보 가전, 정보 단말, 통신 장비, 항공/군용, 물류/금융, 차량/교통, 사무, 산업/제어, 의료, 게임, 로봇 등의 분야에서 활발하게 활용되고 있다. 그야말로 모든 산업에서 임베디드 시스템은 필수적인 요소가 됐다. 다양한 애플리케이션 중에서도 차량과 의료 분야가 임베디드 시스템의 가장 커다란 수요처가 될 것이란 전망이다.


2014년 전체 임베디드 시스템 시장 중 자동차가 22%를 차지했으며, 2013년 292.3억 달러였던 시장은 연간 6.7%씩 성장해 2020년에는 459.8억 달러에 이를 것으로 예측됐다. 가파른 성장의 배경으로 자동차와 도로의 통신과 효과적인 탐색 기능을 제공하기 위해 스마트 차량에서의 임베디드 시스템 도입이 늘어나고 있다. 또 배기 가스 규제라는 규율 준수를 위한 전기자동차 및 하이브리드 차량의 증가 역시 임베디드 시스템의 시장 성장 요인으로 지목됐다. 지금까지 동향을 보면 무선 통신 기술, 무선 통신, 디지털 처리 기술의 진보와 차량 내 전자 콘텐츠를 효율적으로 작동시키는 임베디드 시스템과 소프트웨어가 자동차 산업에서 크게 증가하고 있다. 


자동차 한 대에는 A4 용지 400만장 분량의 임베디드SW가 내장된다고 한다. 전자제어장치(ECU)와 같은 40여대 컴퓨터가 1000여개의 반도체 칩을 작동 및 제어하며 최적의 주행이 이뤄지도록 자동적으로 조절한다. GSMA는 2018년 임베디드 시스템을 채택한 차량이 3,500만 대를 돌파해 전세계 자동차 판매량의 약 31%를 점유할 것으로 전망했다. 


헬스케어 분야는 자동차에 이어 두 번째로 큰 임베디드 시스템 시장이다. 2020년까지 연간 7.1%씩 성장할 것으로 전망되고 있다. 사회 전반적으로 수명이 연장되고, 고급 의료기기 및 휴대용 의료기기의 수요가 증가되면서 임베디드 시스템 수요 역시 자연스럽게 늘어날 것으로 분석됐다. 일례로, ECG 신호 모니터링 모바일 임베디드 시스템, 혈당 모니터, 심박수 모니터 등과 같은 의료 장비의 도입이 증가하면서 임베디드 시스템의 수요 역시 늘어나고 있다. 


북미, 점유율 1위 … 아태 지역 가파른 성장 


임베디드 시스템 시장 규모는 어느 지역이 가장 클까? 보고서에 따르면, 2013년 임베디드 시스템 시장 규모가 가장 큰 지역은 북미로 전체 시장의 34.56%를 차지하는 것으로 조사됐다. 이 지역의 2015년도 시장 규모는 490억 달러로 집계됐고, 앞으로 연간 5.7% 씩 성장해 가면서 2023년에는 840억 달러에 이를 것으로 전망됐다. 유럽의 경우, 같은 기간 동안 5.3% 씩 성장해 620억 달러를 초과할 가능성이 있다고 봤다.


임베디드 시스템 시장에서 아태 지역은 핫 플레이스다. 가장 빠르게 성장하고 있다. 2014년 460억 달러였던 임베디드 시스템 시장 규모가 2023년에는 북미 시장과 어깨를 나란히 할 수 있는 810억 달러로 성장할 것으로 예측됐다. 이러한 급성장 배경에 대해 보고서는 아태 지역에서는 임베디드 시스템 전문가를 쉽게 구할 수 있고, 제조 공장이 밀집돼 있어 제조 비용을 절감하는데 있어 임베디드 시스템의 활용이 증가할 것이기 때문으로 분석했다. 


복잡하긴 하지만 일반적으로 임베디드 시스템은 크게 마이크로컨트롤러/마이크로프로세서, 소프트웨어, 운영체제(OS)로 구분해 볼 수 있다. 


임베디드 소프트웨어 엔지니어링 팀의 가장 중요한 결정 사항 중 하나는 어떠한 프로세서를 활용하느냐다. 프로세서의 선택은 임베디드 시스템의 특정 용도에 따라 다르지만, 일반적으로 전력 소모, 속도, 소프트웨어 지원, 메모리 등을 고려한다.


임베디드 시스템이 다양한 산업 분야로 확대됨에 따라 프로세서는 더욱 중요해졌다. 이 시장에서 프로세서 공급업체 간의 경쟁도 치열하다. (그림 3)을 보면, 텍사스 인스트루먼트(TI), 프리스케일, 그리고 마이크로칩이 임베디드 시스템 프로세서 시장의 거의 50% 이상을 차지하는 것을 볼 수 있다. 왜냐하면 이들 기업들이 공급하고 있는 다양한 프로세서들 때문에 점유율이 높다는 분석이다. 일례로, TI는 약 230여 종의 프로세서를 판매하고 있는 반면, 10여종을 판매하고 있는 기업도 있다. 따라서 임베디드 프로세서 분야에서 경쟁 우위를 갖기 위해서는 구매자의 특정 요구를 충족시킬 수 있는 폭넓은 다양성을 갖춰야 한다.


▲ 그림 3. 임베디드 시스템 프로세서 시장 점유율 (자료 : Embedded Dragon

Consulting)


임베디드 시스템의 프로그래밍 언어 시장은 오픈소스 언어가 지배하고 있다. (그림 4)에서 보듯, C/C++ 언어가 여전히 임베디드 시스템 시장에서 78% 이상을 차지하고 있다. 오픈 소스가 아닌 LavBIEW, MATLAB, .NET은 임베디드 산업에서 차별화된 기능을 가지고 조금씩 영향력을 확대해 나가고 있는 언어들이다.


▲ 그림 4. 임베디드 시스템 언어 시장 (자료 : Embedded Dragon Consulting)


말할 필요도 없이 C/C++이 얼마 동안 임베디드 소프트웨어 개발자를 위한 프로그래밍 언어로써 가장 선호하는 경향이 지속될 것으로 전망되고 있다.


임베디드 시스템은 흔히 운영체제를 사용하지 않는 경우도 많으며, 사용한다 하더라도 윈도우 CE나 리눅스 등 임베디드에 맞춰진 운영체제나 실시간 운영체제(RTOS), 국방/항공용 실시간 운영체제(NEOS)를 사용해 자신의 새로운 시스템에 설정한다. 이는 대부분 임베디드 시스템의 경우 CPU나 메모리 자원 등의 구성이 일반 PC 등의 표준적인 플랫폼과는 달리 한계가 있는 시스템으로 일반 개인 컴퓨터용 운영체제를 사용할 수 없기 때문이다. 


임베디드 프로그래밍 언어 시장과 유사하게 임베디드 시스템의 운영체제 분야도 크게는 오픈 소스가 우위를 점하고 있다. (그림 5)에서 보는 바와 같이 임베디드 시스템을 구현하기 위해 기업에서 공급하고 있는 운영체제를 구매하는 경우는 아주 드물다. 그 중에서도 마이크로소프트, 윈드 리버, Micrium, TI가 상업용 시장을 선도하고 있다. 그러나 모든 상업용 운영체제는 전체 운영체제 시장의 약 35%를 차지하는 반면, 오픈 소스 실시간 운영체제가 65%를 점유하고 있다.


▲ 그림 5. 임베디드 운영체제 시장 점유율 (자료 : Embedded Dragon Consulting)


임베디드 성장 이면엔 보안 문제 도사려


모든 IT시장과 마찬가지로, 보안 문제가 임베디드 시스템 시장 성장의 발목을 잡을 수 있다는 시각이 많다. 우리 주변의 가전, 교통, 항공, 기계, 의료 장비, 자동차, 통신 장비 등이 대부분 임베디드 시스템에 의해 작동한다. 최근 모든 장비와 기계, 자동차 등은 OS, 웹서버, 리모트 콘트롤, 스마트 기기와 연결되는 추세다. 이러한 장비 중에서 의료 장비나 자동차 등은 보안 취약점을 통해 안전에 큰 영향을 미칠 수 있기 때문에 이에 대한 보안이 매우 중요하다.


허가받지 않은 소프트웨어 및 도난과 데이터 개인정보 보호와 같은 다른 취약점 문제에서 임베디드 시스템을 보호하는 것은 필수적이다. 이에 따라, 도난과 데이터 해커로부터 시스템을 보호하고, 이러한 문제들을 해결하기 위해 지속적인 노력이 이뤄지고 있다.


“초등학교 4학년부터 재미있고 쉬운 컴퓨터 코딩 교육을 받는다면 청년이 되어 코딩에 능숙한 전문가들이 늘어날 것이고, 그 중에는 스티브잡스와 같은 인재들이 나타날 수 있을 것이다.”

미래창조과학부에서 나온 말이다. 여기에 대해 “소프트웨어 개발에 대해서 알고나 하는 소리냐?”, “스트브잡스가 코딩 잘해서 성공했냐?”라고 따지고 싶은 생각은 없다. 예들 들다 보니 스티브잡스를 그냥 갖다 붙인 것이 아닌가 생각된다. 많은 사람들이 이 정책을 비난하고 있지만 나는 기본적으로 초등학생에게 코딩 교육의 기회를 주는 것을 찬성을 한다. 하지만 찬성하는 마음 못지 않게  어떤 식으로 왜곡돼서 진행될지 매우 걱정스럽다.

나는 초등학생 코딩 교육이 코딩 전문가를 늘리기 위한 것이 아니어야 한다고 생각한다. 선천적으로 뛰어난 논리력을 타고난 아이들을 찾아내고 컴퓨터와 소프트웨어에 대한 흥미를 유발하고 아이들의 창의력을 더욱 향상 시키는 것이 목적이 아닌가 생각한다. 김연아가 어렸을 때 스케이트를 타보지 않았다면 지금의 김연아가 없듯이 코딩 교육의 기회는 소질을 타고난 아이들을 찾는데 도움이 될 것이다.

정부에서 새로운 교육정책을 들고 나오면 먼저 불안감이 든다. 그 동안 신중하지 못하고 준비가 덜 된 교육 정책으로 여러 부작용을 야기해 왔기 때문에 이번에도 또 많은 문제가 생기지 않을까 우려하는 목소리가 크다.  이 정책을 통해서 아이들에게 컴퓨터와 소프트웨어에 대한 흥미를 유발하고 창의력이나 논리력을 키우는데 집중해야 하는데, 또 시험을 통과해야 하고 목표 점수를 얻고 등급을 높이는 방법으로 빠져들어 사교육만 배를 불리고 선행교육이 판을 칠 수 있다.

충분한 시간을 두고 우리나라 초등학생에게 알맞은 교육 도구가 개발된 후에 진행해야 하는데 또 날림공사 식으로 진행될까 걱정된다.

그럼 초등학생 코딩교육의 목적에 대해서 생각해보자.

초등학교 교육은 미래에 전문적인 교육을 받기 위한 기초가 된다. 그리고 기본적으로 사회를 건강하게 만드는 기반이기도 하다. 많은 사람들이 학교 다닐 때 과학과 수학을 어렵게 공부했는데 사회에 나와서는 하나도 써먹지 않아 시간 낭비 했다고 하는데 사실은 그렇지 않다. 어렸을 때의 교육은 지식을 익히는 것뿐만 아니라 논리적인 사고와 합리적인 생각을 하게 해준다.

미분, 적분은 직접 써먹을 기회가 없을 수도 있지만 자신에게 닥친 문제를 합리적이고 논리적으로 해결할 수 있도록 해준다. 비과학과 비논리의 오류에 빠져서 돈과 시간을 낭비하는 일을 줄여준다. 우리가 지금 너무 자연스럽게 생각하고 있는 것은 어렸을 때부터 받았던 교육과 경험의 결과이다.그럼 코딩교육은 어떨까?

100년 전에는 수학, 과학 교육이 거의 필요 없이 살 수 있는 세상이었다. 그럼 30년 후에는 어떨까? SF영화에도 종종 나오기도 하지만 상상하기는 쉽지 않다. 확실한 것은 컴퓨터가 지금보다 10배, 100배는 많이 쓰이는 세상이 될 것이다. 그런 세상에 합리적으로 살아가기 위해서 기본적으로 컴퓨터에 대한 이해와 논리력이 더 필요할 것이다. 교육은 시대의 흐름을 예측하고 대비해야 한다.

많은 초등학생이 잘 준비된 코딩 교육 기회를 접한다면 미래에 많은 소프트웨어 개발자가 생겨날 수도 있을 것이다. 그런데 그렇게 쉽게 기대하기에는 현재 우리나라 소프트웨어 업계는 너무나 매력이 없다. 소프트웨어 업계는 3D 취급을 받고 있고, Dreamless를 포함해서 4D라고 하기도 한다. 이런 바닥에 뛰어난 인재가 더 많이 지원할 리가 없다. 최근 10~20년간 소프트웨어 업계의 인기는 계속 추락해왔다. 대학의 소프트웨어 관련학과도 마찬가지이다.

소프트웨어 개발 일은 툭하면 야근에 부당한 대우에 사회적 인식은 바닥을 유지하고 있다. 좀 똑똑하다는 학생 중에서 미래에 개발자가 되고 싶다는 학생은 그리 많지 않다. 대부분 의사, 변호사가 되고 싶어한다. 코딩 선행 교육이 이런 문제를 해결해주지 않는다. 이런 와중에 소프트웨어 개발의 소질을 발견한들 소프트웨어 업계로 오겠는가? 근본적인 문제는 심하게 왜곡되고 뒤틀어진 소프트웨어 개발 환경이고 이를 개선해야 한다. 소프트웨어 업계가 일할만한 곳이란 비전이 보인다면 많은 인재가 지원을 할 것이다.

스티브잡스와 같은 인재가 탄생하기를 원하고 미래에 소프트웨어 인력이 많이 필요하다면 초등학생 코딩 교육보다 먼저 소프트웨어 업계를 정상화하기 위한 제도와 지원이 필요하다.

초등학교 코딩 교육은 어른들이 배우는 것을 흉내 낼 것이 아니라 논리력과 창의력을 키우는데 집중하고 재미있게 배울 수 있는 교육 도구들을 꾸준히 개발해야 할 것이다. 섣불리 어른이 배우는 것을 비슷하게 배운다면 흥미는커녕 오히려 지겨워할지도 모른다.

초등학교 코딩 교육 정책은 제대로 준비되고 꾸준히 투자가 이루어 진다면 30년 후에 우리나라의 중요한 국가 동력의 핵심이 될 수도 있을 것이다.


출처 : http://www.cnet.co.kr/view/20792

정부에서는 2015년에 정규교육과정에 편입시킨다는 계획을 발표했고, 이미 대학을 온 인문계 전공 학생들조차 코딩을 배우고자하는 열기가 뜨겁다. 아마 이두희 선배님이 하는 무료코딩교육<멋쟁이 사자처럼>의 높은 경쟁률도 이런 분위기 속에서 나왔을 것이다.


1. 코딩 교육 시장이 커질 것은 사실이다. 하지만 첫 번째 시장은 거품시장이 될 것이다.


일단은 코딩교육 시장이 폭발적으로 성장할 것이라는 사실에는 이견이 없다. 첫 번째로 교육과정 편입으로 인해 학부모들이 사교육에 돈을 지출하기 시작할 것이다. 한국 아동청소년 교육 시장의 경우 그 교육을 받았을 때의 기대값이 금방 시장규모에 반영된다. 왜냐면 대부분의 학부모들은 근본적으로 공부에 대해 이해를 하지 못하고 있고, 사교육 업체는 "불안감을 극도로 조성하는"마케팅을 이용해 이를 충분히 활용하기 때문이다.특히 코딩과 같이 90% 이상의 학부모가 생소한 주제에 대해서는 "이건가보다"하고 무조건 비용부터 지출할 가능성이 크다.


하지만 이 기조가 지속될 것인가? 나는 여기에 이견이 있다. 코딩교육은 너무 과평가되었다. 코딩이 많은 문제를 해결해줄 것이라 얘기하지만 실제로 코딩의 본질을 이해한다면 금방 그렇지 않다는 것을 이해할 것이다. 아래에 그 것에 대한 이야기를 더 길게 서술할 것이다. 일단은 코딩 교육에 대한 기대값이 어떻게 변해갈지를 살펴보자.


그래프가 낯이 익는가? 그렇다. 이 그래프는 그 유명한 가트너 곡선이다. 가트너 곡선은 신기술이 등장했을 때 사람들의 기대감에 대한 변화를 나타낸 곡선이다. 물론 실제 그 기술이 성공적으로 사용되느냐는 이 곡선 자체만으로는 표현되지 않는다. 필자가 굳이 이 곡선을 가져온 이유는 현재 코딩을 바라보는 일반 대중의 관점이 신기술을 보는 것과 전개관점에서 매우 유사하기 때문이다.

신기술이 등장하면 유명한 사람들이 이 기술이 가져올 미래에 대해 이야기하고 이는 구체적인 전공지식이 없는 언론과 경영학계를 거쳐 마케팅 용어로 변해간다. 마케팅용어가 되면 모든 사람들이 실체보다는 그 단어에 집중을 하며 이에 대한 사업기회를 찾거나 포럼을 열거나 하게 된다. 현재 코딩 교육도 그렇다. 몇개 국가의 정부와 성공한 스타트업 대표들이 코딩이 슈퍼파워라고 얘기를 하자 그에 대한 이해도가 매우매우매우 떨어지는 정부조직과 언론들이 이에 가세하여 마치 모든걸 해결해 줄 교육인 것 처럼 기대감을 고조시키고 있다.

하지만 대부분의 신기술과 마찬가지로 코딩 교육도 성급하게 뛰어든 부분에 대해서는 "엇 생각보다 별거 없네?"하는 엄청난 역풍을 맞기 시작하는 때가 올 것이다. 실제로 "코딩"이라는 것은 본질이 없기 때문이다. 지금 뛰어들고 있는 업체와 기관은 대부분 껍데기만 들고 있다. 그래프가 첫 번째 바닥을 찍은 거품이 꺼지는 그 때가 코딩의 본질을 이해한 교육 업체들이 서서히 시장규모를 다시 끌어올리는 시기가 될 것이다.





2. 거품시장은 어떻게 꺼질 것인가?


나는 개인적으로 공교육에서의 코딩 교육을 찬성한다. 하지만 섣불리 시작하기 전에 꼭 생각해봐야할 내용이 있다. 그 내용은 바로


"왜 지난 60년간 교수들은 대학에서만, 필요한 사람한테만 코딩을 가르쳤는가"이다.


그렇다. 코딩이 탄생한 이래로 수십년간 몇몇의 올림피아드생을 제외하고는 코딩교육은 대학 아래로 내려간 적이 없다. 올림피아드생은 어느 과목인건 대학과정을 미리 공부를 하니 예외로 두자. 

이러한 교육은 다양하다. 자동차엔진에 대한 역학도, 우리 플러그에 쓰는 교류전기에 대한 이해도 배를 건조하는 방법도 모두 중고등학교에서 가르치지 않는다. 그럴 수 밖에 없다. 왜냐하면 이 내용들을 이해하기 위해서는 많은 선수학습이 필요하기 때문이다. 자동차 엔진을 이해하려면 동역학 뿐만 아니라 재료에 대한 이해도 있어야하고 열역학에 대한 이해도 있어야한다. 물론 연소하는 원료를 이해하는 화학적 지식도 있어야할 것이다. 대부분은 고등학교를 졸업할 때 까지도 이런 지식을 습득하기 힘들기 때문에 엔진에 대해서는 대학교 때 가르치는 것이다. (많은 경우 이런 과목은 대학원으로 넘어가기도 한다.)

코딩도 본질적으로는 대학에 가서야 가르치는 이유가 있다. 코딩을 제대로 하기 위해서는 수학적 배경과 문제해결적 사고능력이 성인 중에서도 매우 뛰어나야하기 때문이다. 극한의 개념이 없는 학생이 알고리즘 최적화에 대해 이해할 것이라 기대할 수는 없다. 특히 코딩은 개인의 재능과 수학적 능력이 크게 영향을 주는 분야기 때문에 초중고등학생한테 지금의 코딩 교육을 그대로 한다는 것은 말이 되지 않는다. 필자가 현재 번역하고 있는 스탠포드의 How to start a startup 강의에서는 미국 전체에서 최고의 학업성취도를 자랑하는 그 학생들에게

" Mediocre Engineers do not build a Great Company " 

라는 문장을 강조한다. 이미 고등학교 때 최고로 치던 학생들 중에서도 실제 소프트웨어 엔지니어가 될 수 있는 사람이 적다고 공언하고 있는 것이다.

자 그럼 이제 논점이 "직업적으로 하기 위해서만 배워야 하는가?"로 넘어오게 된다. 물론 아니다. 앞서 말했듯이 난 코딩 교육을 찬성한다. 하지만 우리가 이 대학에서 배워야할 내용을 섣불리 고등학교 중학교 초등학교 과정으로 가져오면 어떻게 될지 이미 알고 있다. 

그것은 기술과정 과목으로 편입될 만큼 단편적인 수준에서만 배우게 되는 것이다.

실제로 앞서 예시를 든 자동차 엔진은 이미 기술가정 시간에 배우도록 되어있다. 선수학습이 되어있지 않은 학생들이 코딩에 자체만에 대해 제대로 배울 수 있는 것은 그 기술과정 교과서의 엔진에 대한 설명 수준을 넘지는 않는다.


어떤가? 기대치가 당연히 내려갈 것이다. 처음에는 대단한 것이 있는 줄 알았는데 막상 선수학습이 되어있지 않은 상태에서 배울 수 있는 내용은 흥미롭게 읽어볼 기술가정 과목의 한 파트 정도인 것이다. 정말 이 자리에서 필자가 가르칠 수 있는 개념을 모두 읊을 수 있을 정도로 배울 수 있는 양이 적다.

이 것을 시장과 학부모가 깨닫는 순간 거품시장은 순식간에 무너질 것이고 생각보다 그 시기는 금방 올 것이다.




3. 그렇다면 코딩의 본질은 무엇인가?


필자는 정부에서 코딩교육을 하겠다고 무작정 발표했을 때 바로 정부가 코딩 교육을 이해하고 있지 못하다는 것을 단언할 수 있었다. 왜냐하면 한국은 아직 중고등학생들에게 계산기도 못쓰게 하고 있는 상황이기 때문이다.

중고등학교 수준에서 배울 수 있는 코딩은 계산기(어쩌면 공학용 계산기) 사용법을 익히는 것과 크게 다르지 않다. 물론 훨씬 더 다채롭긴 하지만 계산기의 활용가치가 사용자의 수학수준을 벗어나지 못하듯이 코딩의 활용가치 또한 사용자의 수학,논리수준을 벗어나지 못한다.

미국에서는 이미 중고등학생 때부터 계산기를 사용하면서 공부한다. 계산기를 활용하고 Numeric한 접근을 하는 법을 배우는 교육과정이 십수년 전부터 이미 존재해왔던 것이다. 미국 정부가 코딩을 가르친다고 할 때는 그 발판이 마련되어 있는 것인데, 한국 정부는 대책없이  십수년을 뛰어넘고 바로 코딩교육을 하겠다고 하고 있는 것이다.


코딩의 본질은 우리가 알고 있는 수학적 사고를 언어로 표현하는 것이고 이는 간단한 식을 받아주는 계산기를 사용하는 것과 본질적으로 다르지 않다.


이렇게 얘기하면 "언어라도 미리 배워두는 건 어떤가" 하는 질문이 나올 수 있겠다. 일단은 찬성하지만 지금 정부와 언론이 얘기하는 이유 때문은 절대 아니다. 컴퓨터 언어라는 것이 중고등학교 배경지식과 사고력을 가지고 배우기에는 너무 삭막하고 단순하다. 배울 것이 별로 없다. 분기와 반복이 배울 수 있는 대부분의 구조이다. 그 자체만은 한 두시간이면 배울 수 있는 내용일 수 있는데 이를 이렇게 거창하게 과목까지 만들면서 배울 필요는 없는 것 아닌가?



4. 코딩 교육은 어떻게 진행되어야 할까?


지금 대부분의 코딩 교육은 초중고등학교 시스템에 적용하기 힘들다. 단편적이거나 너무 재미 위주거나 너무 실무 위주이기 때문이다. 필자가 주장하는 이상적 코딩 교육 방식은 다음과 같다.




결국은 코딩은 새로운 과목이 아니라 각 과목의 연습문제를 대체하는 방식으로 교육되어야 한다는 것이 핵심이다.


예시를 하나만 보자. 우리는 등비수열과 등비수열의 합을 구하는 방법을 수1시간에 배운다. 이는 이해와 적용을 한번에 해볼 수 있는 좋은 주제이다.

처음에는 공비가 2이고 첫 항이 3인 등비수열의 5항 값을 코딩을 통해 구해보게 한다.

그 뒤 적용 범위를 넓혀 첫항과 공비와 항수를 입력받으면 수열의 n번째 항과 n번째항까지의 합을 출력해주는 프로그램을 짜도록한다. 반복문과 대입수식 몇 개로 구현해낼 수 있을 것이다. 그 뒤에는 공비 값을 1미만과 1초과의 값으로 나누어 무한루프에 가까운 반복문을 돌려 결과를 확인하게 해본다. 이때 공비가 1보다 작으면 항이 늘면 늘수록 수열의 값과 수열의 합이 어떤 값에 다가가는걸 학생들이 직관적으로 관찰할 수 있는데, 그러는 이유에 대한 궁금증이 생겼을 때 쯤 무한수열과 무한급수에 대한 얘기를 시작한다.


개념과의 상승작용이 없는 코딩교육은 가르칠 내용이 너무나 적을 뿐더러 학생에게 아무런 도움도 되지 않는다. 학교건 사업체건 정부기관이건 이 부분을 반드시 염두해 두어야 코딩 교육을 안착 시킬 수 있다.




이런 방식의 교육을 하기 위해서는 기존 교육과정도 잘 이해하고 있고 동시에 소프트웨어에 대한 깊은 지식이 있는 사람들이 오랜 연구를 하고 거품시장이 꺼질 때 쯤 등장해 주어야한다. 우리 에듀캐스트가 매우 이상적인 팀이긴 하지만 이 시장은 모두에게 열려있다고 본다.



출처 : http://taeyoungpark.tistory.com/108

+ Recent posts