빅데이터를 하기 위해서는 어떤 역량이 필요한가? 데이터 과학자(Data Scientist) 그리고 Devops

지난 포스팅을 마지막으로 빅데이터에 대한  글은 그만 쓸까 했는데 사람에 관한 얘기, 즉 빅데이터를 하기 위해서 필요한 인력, 역량에 대한 얘기가 쏙 빠져 있었네요. 기술이라는 것이 결국 사람에 의해서 수행되고 발전해 나가는 것일텐데 말이죠. 그래서 다시한번 빅데이터와 관련한 포스팅을 한번 더 하기로 했습니다.

1. 데이터 과학자 (Data Scientist)

빅데이터라고 하면서 최근 데이터 과학자라는 새로운 직업이 생겼습니다. 2009년도에 Beautiful Data 라는 책을 보면서 처음 이러한 용어를 접하게 되었는데 작년 말부터 해외의 빅데이터 관련 컨퍼런스등에서 이러한 직업군에 대한 소개와 더불어 미국에서는 관련한 교육과정등도 생겨나고 있는 것 같습니다.

통계학자, 데이터 마이너, CRM전문가 등 해서 유사한 직종이 있지만 데이터 과학자라는 직군은 통계, 데이터마이닝, 머신 러닝등 데이터 분석에 대한 기초적인 지식과 더불어 프로그래밍 기술을 함께 갖춘 인력을 생각하시면 될 것 같습니다. 좀더 자세히 설명하자면  데이터를 분석하고 이를 통해서 패턴을 찾아내고 추천, 추정, 예측 모델링을 함으로써 인터넷 비지니스 같은 경우에는 서비스에 활용할 수 있는 추천 엔진을 만들어내거나 전력선 분석을 분석해서 보다 효과적인 전력 분배 (스마트 그리드라고들 말하죠) , 생산 공정상의 각종 센서등에서 발생하는 데이터를 수집해서 수율을 예측하거나 해서 문제점을 미연에 방지해서 수율을 높일 수 있도록 하는 업무등 다양한 도메인에 적용될 수 있는 데이터 프로세싱 알고리즘과 마이닝, 통계적 기법등을 활용할 수 있는 역량을 갖춘 사람들을 데이터 과학자라고 할 수 있습니다.

이를 위해서 빅데이터를 처리할 수 있는 하둡과 같은 분산컴퓨팅과 관련 도구 (pig, hive 등) 및 스크립트 언어등도 자유자재로 활용하고 특히 강조되는 것은 각 도메인에서 요구하는 니즈를 이해하고 이에 맞추어서 분석하고 모델링 할 수 있는 커뮤니케이션 스킬이 매우 중요하다고 할 수 있습니다.

이런 측면에서 데이터 과학자는 서비스 또는 제품에 직접적인 영향을 미치는 위치에 있는 만큼 이러한 서비스(도메인)에 대한 이해 역시 충분히 할 수 있어야 하겠습니다. 이런 친구들을 도대체 어디서 구하거나 교육을 시킬 수 있겠어 하겠지만 제 주위에 젊고 유능한 소프트웨어 개발자들 중에는 이러한 역량을 갖추고 일하는 분들이 몇몇 있습니다.

기존의 어플리케이션이나 시스템 소프트웨어 엔지니어와는 좀 구별되지만 제 생각에는 소프트웨어 개발자인 분들이 데이터 과학자로써 성장할 수 있는 게 더 쉽다는 생각을 하게 됩니다. 특히 마이닝이나 머신 러닝관련해서는 관련 지식에 대한 백그라운드를 갖추게 된다면  소프트웨어 개발을 하신 분들이 통계나 데이터 마이닝쪽을 전공하신 분들보다 좀 더 유리할 것으로 생각되네요. (가재는 게편인가요? ^^)

정리하면 데이터 과학자는 programming, Information Retrieval, machine learning, prototyping, big data technology (pig,hive,hadoop), data mining, recommender system, visualization 과 더불어 communication skill 까지 요구하고 있습니다. 솔직히 과학자인지 슈퍼프로그래머인지 구별이 잘 안가긴 합니다만…

아래의 링크는 링크드인의 Senior Data Scientist 와의 인터뷰입니다. 한번 일독을 권합니다.

http://www.forbes.com/sites/danwoods/2011/11/27/linkedins-monica-rogati-on-what-is-a-data-scientist/

2. Devops = Developer + Operator

데이터를 다루는 분야에서 필요로 하는 데이터 과학자와 같은 역할과 더불어서 함께 등장하는 또다른 방법론, 역할이 최근 회자되고 있습니다. 바로 Devops 라는 것인데요. Developer (소프트웨어 개발자) 와 operator (시스템 운영자)의 역할을 둘다 할 수 있는 또는 조율할 수 있는 역할과 방법론에 대한 것을 Devops 라고들 말하고 있습니다.  작년에 가을쯤 이 단어를 처음 듣게 되어서 이건 또 뭐지 하고 찾아보고 나서 정말 개발자든 운영자든 IT하는 사람은 정말 먹고 살기 힘들겠다는 생각을 했습니다.

결국 소프트웨어 개발, 품질관리 그리고 운영을 아울러 관리하고 이를 조율할 수 있는 역량을 조직내에 키우자는 얘기인데 애자일 방법론을 소프트웨어 개발의 영역뿐 아니라 이렇게 개발된 소프트웨어를 애자일하게 구축하고 운영할 수 있는 체계를 갖추어 나갈 수 있도록 하는 하자는 취지에서 나온 거겠죠.

이를 위해서 개발자에게는 시스템에 대한 것을 가르치고 시스템 운영자에게는 프로그래밍을 익히게 함으로써 설계, 개발, 구축 , 운영에 이르는 사이클을 단축하면서 동시에 소프트웨어, 운영 품질을 확보하겠다는 것이겠죠.

그렇다면 왜 갑자기 이러한 역할과 역량을 더욱 강조하게 된 것일까요?

그 전에 전통적인 IT 조직에서의 소프트웨어 개발과 구축에 대해서 생각해보도록 하죠. 여전히 많은 기업들은 초기 요구사항을 정리해서 개발팀에서는 상위설계, 상세설계를 거친 후 개발에 본격적으로 착수하고 이렇게 개발이 완료된 결과물은 QA팀을 통해서 품질검증을 받게 되면 시스템 운영쪽에서는 시스템에 설치 구축하고 운영하게 되는 소위 폭포수 모델이라는 방법론으로 소프트웨어 개발과 구축, 운영이 이루어지고 있습니다.

더불어 많은 소프트웨어 개발자들은 정해진 데이터베이스와 어플리케이션 프레임워크상에서 주어진 요구사항에 맞는 영역만 개발을 하고 맡은 모듈을 딜리버리하는 것으로 자신들의 역할을 다하는 경우가 많고 서버 시스템에 데이터베이스 설치, 어플리케이션 서버 설치, 각종 서비스 프레임워크 자체의 설치와 최적화에 대한 부분은 각각의 프레임워크 또는 서버 벤더들의 엔지니어에 의해서 별도로 수행되고 있는 것이 현실입니다. 어느 개발자는 자신이 사용하는 어플리케이션서버 , 데이터베이스 설치를 할 줄 모르는 경우도 있습니다. 해당 시스템 엔지니어가 서버에 관련 모듈을 설치해주기전까지는 자신이 개발한 모듈을 제대로 테스트하지 못하는 상황도 발생하는 것이죠. 금융 부문등의 대형 SI 프로젝트에서는 이러한 일들이 실제로 벌어집니다.  이러다보니 자신이 개발한 모듈에 대한 충분한 테스트와 검토가 정확하게 이루어지지 않게 되기도 하게 됩니다. 물론 시스템의 규모가 커서  수십, 수백명이 투입되는 소프트웨어 프로젝트인 경우에는 이러한 명확한 역할 분담과 체계가 매우 중요하겠지만요.

하지만 잦은 변경과 서비스 업데이트를 해야 하는 인터넷 비지니스와 같은 경우에는 이렇게 프로젝트를 하게 된다면 매우 심각한 리소스 낭비와 품질 문제가 발생할 수 밖에 없게 됩니다. 따라서 잦은 서비스 릴리즈에도 견딜 수 있는 릴리즈 관리와 소프트웨어 품질 확보를  Devops 라는 역량을 갖춤으로써 강화하고자 하는 것이 큰 목적중에 하나라고 생각됩니다.

다시 말하면 시스템 운영자 , 시스템 엔지니어 입장에서는 서버시스템뿐 아니라 그 위에서 실행되는 다양한 데이터베이스, 웹프레임워크등에 대한 지식이 함께 수반되고 심지어 그 위에서 실행되는 어플리케이션에 대한 이해도 요구되는 것입니다. 마찬가지로 개발자들도 자신들이 개발한 모듈과 어플리케이션에 대한 지식 뿐 아니라 자신들이 실행되어야 할 시스템 환경, 특히 여기서는 클라우드 컴퓨팅 환경에 대한 추가적인 지식이 필요하게 된 것이죠. 이러다보니 이러한 접점에서 효율적으로 업무를 조율하고 리소스를 관리하고 보다 빠르게 개발에서 검증, 설치, 운영에 이르는 프로세스를 자동화하고 최적화할 수 있는 역량과 체계가 요구되고 있기에 DevOps 라는 역할과 방법론이 등장했다고 생각됩니다.

제가 빅데이터에 대한 얘기를 하면서 이 Devops 에 대해서 언급하는 것은 실제 빅데이터를 수행하기 위한 인프라 라는 것이 수십, 수백대 심지어 수천대 이상의 서버와 네트워크 장비들 또한 그 위에 설치된 리눅스 운영체계 뿐 아니라 다시 그 위에서 동작하는 자바 가상머신 , 하둡 프레임워크에 대한 지식에서과 더불어 cron, shell, programming 에 이르는 온갖 시스템 운영상의 노하우가 어우러져야 되는 것이기 때문입니다.

결국 빅데이터라는 것이 시스템에서부터 데이터를 다 아울러 다루는 것이기에 데이터 과학자 , Devops와 같은 인력과 역량이 모두 갖추어져야 제대로 수행될 수 있는 일이라고 생각됩니다.

너무 힘들겠죠? ^^

이 글은 IT 카테고리에 분류되었습니다. 고유주소 북마크.

빅데이터를 하기 위해서는 어떤 역량이 필요한가? 데이터 과학자(Data Scientist) 그리고 Devops에 1개의 응답

  1. tebica댓글:

    정말 힘들겠네요..
    확실한 비젼과 top-down 방식의 실행력이 뒷받침 된다면 못할것도 없겠지만요!

  2. 이재성댓글:

    우승님은 하고 계신 것 아닌가요? ^^

  3. Haeran Cho댓글:

    디봅스? 디브옵스? 뭔가 새로운 고렙 몬스터 이름 같네요. >.< 흐흐
    엄청나게 공부할 것도 많아보이지만, 천리길도 한걸음부터, 내가 소화할 수 있는 것부터 천천히 recursive 해나가다 보면 언젠가는 무시무시한 디봅스가 될 수 있을까요 +ㅇ+/

  4. Taeyoung Koh댓글:

    컴맹 개발자에 삽질해커도 모자라서 컨설턴트 확장팩도 달아야만 하는거로군요. 그런데 시스템 관리자는 정말 싫은데… 그 모든걸 다 잘 해야만 하는거라면…

    …이라고 말하면서 DBA(내가 왜 SQLDM을 만지고 있어야 하는건지…), Modeler(할줄 아는 사람이 현재는 없어서 직접 BI 데모 데이터 모델 만들고… OTL), Coder(이 요상한 내장 스크립트는 뭔지…VBA도 아니고…), 엽기시스템개발(멋지다 Erlang~!!!), 디자인(응!? 대시보드에 들어갈 PNG도 만들… ~___~;;; ) 게다가 경영과학(리테일 모델기반 수요예측 및 가격결정 모델 설계)까지… 점.입.가.경…
    제 현실에서는 늘 벌어지는 일입니다.
    네… 연구원님들은 그 이름도 거창한 ‘대용량 트래픽 흐름제어 분산병렬처리 솔루션’ 만드느라 바쁘시고, 다른 팀은 장비화 작업 하느라 바빠주시고, 웹팀은 관제용 백오피스 구축하느라 바빠주시고, 왕고참씨는 솔루션 신사업 개척하는데 인원이 없어서 혼자 뺑이치고(…라고 말하지만 뭐 이런거 하루이틀도 아니니 이젠 이력이 붙었습니다. ~__~;)

    열거하고보니 데이터 사이언티스트는 커녕 데브옵도 아닌 만랩 슈퍼SCV 였군요.
    제가 뭐 그렇지요. 우승님의 포스팅을 보다보니 자조섞인 웃음만 나와서…울컥…합니다.
    구루급 개발자 혹은 아키텍트들이 넘실대는 IT중원무림에 오늘도 만랩 슈퍼SCV는 스쳐지나갈뿐…

    저도 데이터사이언티스인지 사이어인지 뭔지거나 혹은 데브옵으로 전직하고 싶습니다.
    그러나 스킬트리 포인트 리셋하는데 필요한 미네랄 부족~!

    즐거운 밤 되세요. ㅠ____ㅠ

    • kimws댓글:

      말씀하시는 걸 보니 진정 devops의 고수임을 느낍니다. 어설픈 경력과 커리어로 나대시는 분들보다 훨씬 가치있는 일을 하고 계시는게 아니신지 생각합니다. 아무튼 무척 궁금한데요. 어떤 분이신지 …

      • Taeyoung Koh댓글:

        글쎄요. 저는 데브옵이라는 용어도 친구를 통해 알게되었고 제가 늘 하던 일이 데이터 사이언티스트로 가는 길목에 있다라는 사실도 최근에 우승님 덕분에 알게되었습니다. 그렇다고 제가 긱한 디벨로퍼도 아니고… 이젠 나이도 있어서 그냥 프로토타이핑만 할 뿐이고(주로 파이썬이나 루비로…)… 얼랭이야 프로토타이핑으로 사용하기엔 너무 강력하고 아름다운 언어라서 취미가 실전무기로 되어가는 상황인데다가 삽질해커기질을 10년만에 자극한 쎈 녀석이라서 자극받아서 그런것이고… 통계분석이야 대수학을 좋아하고 공부하다보니 전공이 아닌데도 다루게 된 조금은 생뚱맞은 녀석인데 뭐랄까… 재미로 시작한 취미가 이런저런 개발하는데 적용되다보니 조금 아는 것이고… 솔루션이야 필요에 의해서 강탈해온건데 하다보니 재미있어서 사업화 하는 것일 뿐이고… 개발을 띄엄띄엄 하다보니 회사라는걸 하게되고 그 이전엔 어쩌다보니 월드와이드한 조직에서 다양한(?) 삽질 경험을 좀 한 탓도 있고… 조금은 무식하면 용감하다라는 말에 걸맞는 기질 탓이기도 할테고…

        뭐 딱히 개발로도 분석가로도 혹은 시스템관리자로도 모든 분야가 함량부족이지만 딱히 장점 하나 내세우자면 어려서부터 컴퓨터 만져오는동안 이날까지 스스로가 해커라고 생각해본적도 없지만 하는 짓(?) 만큼은 해커 삘 충만하게 돈 안되는 삽질의 고수가 되어 있더라는 것(삽질 그 자체만입니다. 해킹의 고수는 아닙니다… ㅋ~ )이었죠.
        개발하면서 하루에 소모하는 시간의 대부분을 엉뚱한 생각으로 채우고 코딩 3줄 하려고 3시간을 멍 때리고… 귀차니즘의 천성탓에 에디터마다 모듈팩 커스터마이징 해서 단축매크로화로 몇 자 안치고도 패턴블럭이나 스트럭쳐를 구현해낼 수 있을까에 더 고민하고… 아무것도 없는 콘솔터미널을 주로 이용하면서도 콘솔터미널을 싫어하고… IDE를 좀더 편하게 사용하고 싶다면서 키셋을 VI로 맞춰서 사용하는 구닥다리인데다가… 이쁘게 잘 정렬된 코드를 보면서 잘빠진 몸매 감상하는 기분이 되기도 하고… 남들 잘 사용 안하는 툴들만 골라서 사용하길 좋아하는 이런 뭐 돈 안되고 그닥 가치없는 행위에 희열을 느낀고 만족하는 철없는 중년일 뿐입니다.

        그리고 잘 아시겠지만 한없이 빈약한 IT지식과 트렌드 정보획득력을 커버해주는 고마운 지인들 덕분에 겨우 컴맹 개발자 노릇도 하고… 정말이지 IT 용어는 정말 이해불가입니다. 폭포수 모델이 뭔지 애자일이 뭔지 아직도 잘 모른체 살아갈 뿐입니다.
        이런 저를 데브옵 고수인 것처럼 생각하신다면 다 제 불찰입니다.
        그런것 처럼 보이게 만들지는 않았나 반성합니다.
        저는 그냥 개발일을 좋아하는 만랩(연식만 가득한) SCV일 뿐입니다.
        우승님의 발목 근처에도 이르지 못하는 존재이오니 너무한(?) 과대평가는 정신건강에 해롭다고 생각합니다. 그리고 인연이 닿는다면 조만간 뵙게 될지도 모르죠. ㅋ~
        그 때는 정말 저에게 완성된 하둡시스템과 오랜기간의 성공적 DW 마이그레이션 무용담을 들려주시길 바랍니다. 그럼 좋은 밤 되세요. +___+

      • kimws댓글:

        새벽에 마침 잠이 깨서 올라온 님의 글을 보고 아 진정한 고수들은 다 어디있나 했더니 여기 계셨구나 싶었습니다.

        이젠 소프트웨어 개발이 무엇인지 잊은체 입으로만 사는 저로써는 님의 슈퍼만랩 SCV 능력치가 한껏 부럽기만 합니다. (은근 자랑하시는 거 아시죠?)

        나이만 먹고 메일과 파워포인트로 개발하고 있는 제 자신이 부끄럽기도하구요. 그래서 제 블로그의 부제가 개발능력을 상실한 개발자랍니다. 이제는 입담으로 겨우 겨우 풀칠하고 사는 거죠. ^^

        이곳에 들르신 여러 소프트웨어 개발자분들이 님의 댓글로 더욱 자극받아서 데봅스든 데이터과학자든을 떠나서 소프트웨어 개발이라는 것에 대해서 더욱 진지하게 생각하고 실력을 쌓는 계기가 되었으면 합니다.

        암튼 전 소프트웨어를 좋아하는 분들을 정말 좋아하거든요.

댓글 남기기