ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 데이터 엔지니어 vs 데이터 과학자
    MACHINE LEARNING 2018. 5. 2. 07:39
    반응형

    데이터 엔지니어 vs 데이터 과학자

    두 직책은 상호 교환할 수 없으며, 자신의 역할에 대한 그릇된 인식은 팀을 해치고 생산성을 저하시킬 수 있습니다.

    데이터 엔지니어와 데이터 과학자의 차이점을 이해하는 것이 중요합니다. 차이점을 모르거나 오해할 경우 팀의 성과를 저조하게 만들거나, 실패하게 할 수 있습니다.

    각 직책의 강점과 약점에 대해 오해를 많이 합니다. 데이터 과학자와 데이터 엔지니어를 묘사하는 데 사용하는 아래 다이어그램에서 이러한 오해가 발생했다고 생각합니다.

    그림 1. 데이터 과학자 및 데이터 엔지니어가있는 단순한 벤 다이어그램 Jesse Anderson의 삽화.

    그림 1과 같은 벤 다이어그램은 각 직책 간의 위치와 다른 점을 간단하게 설명합니다. 그림에서는 직책 간 상호 교환 가능하게 보입니다. 그러나 빅데이터에 있는 가치를 찾아내거나, 데이터 파이프 라인을 만들기 위해 수행하는 작업은 매우 다릅니다. 이 차이는 각 직책별 기본 기술에서 비롯됩니다.

     

    데이터 과학자와 데이터 엔지니어는 무엇인가요?

    팀 구조로 조직과 협력할 때 데이터 엔지니어와 데이터 과학자의 관계를 설명하기 위해서는 아래와 같은 다이어그램을 그립니다.

    그림 2. 데이터 과학자와 데이터 엔지니어의 핵심 역량과 겹치는 기술을 보여주는 다이어그램 Jesse Anderson과 Big Data Institute의 일러스트레이션.

    데이터 과학자의 기술

    데이터 과학자들은 수학 및 통계(때로는 물리학도)에 대한 지식 배경을 가집니다. 수학적 지식을 이용하여 고급 분석을 하며, 응용 수학의 극단적인 끝에서 기계 학습 모델과 인공 지능을 만들어 내고 있습니다.

    소프트웨어 엔지니어와 마찬가지로 데이터 과학자도 비즈니스 측면과 상호 작용해야 합니다. 여기에는 통찰력을 얻기에 충분할 정도로 도메인에 대한 이해가 포함됩니다. 데이터 과학자들은 비즈니스 분석에 필요한 데이터를 분석해야 하는 경우가 많기 때문에 비즈니스에 대한 통찰력이 필요합니다. 또한 결과를 이해할 수 있는 방식으로 제공해야 합니다. 결국 비즈니스 측면에서 이해하고 행동할 수 있는 방식으로 말로, 시각적으로 복잡한 결과와 관찰할 내용을 전달할 수 있는 능력이 필요합니다.

    데이터 과학자의 정의는 다음과 같습니다.

    데이터 과학자는 프로그래밍으로 수학 및 통계 지식을 보완하여 데이터를 분석하고 적용된 수학적 모델을 만드는 사람입니다.

    일반적인 데이터 과학자의 특성은 그들이 할 수 없는 것을 성취하기 위해 프로그래밍을 배웠다는 것입니다. 더 복잡한 분석을 수행하기 위해 또는 극복할 수 없는 문제를 해결하기 위해 그들은 프로그램하는 법을 배웠습니다. 따라서 그들의 프로그래밍 및 시스템 생성 기술은 프로그래머 또는 데이터 엔지니어가 볼 수 있는 수준이 아닙니다.

    데이터 엔지니어의 기술

    데이터 엔지니어의 핵심은 프로그래밍 배경입니다. 이 배경은 일반적으로 자바, 스칼라 또는 파이썬으로 이루어집니다. 그들은 분산 시스템과 빅 데이터에 중점을 두고 있거나 전문화되어 있습니다. 데이터 엔지니어는 프로그래밍 및 시스템 생성 기술을 향상하였습니다.

    데이터 엔지니어의 정의는 다음과 같습니다.

    데이터 엔지니어는 빅데이터를 중심으로 소프트웨어 솔루션을 만드는 기술을 전문화한 사람입니다.

    이러한 엔지니어링 기술을 사용하여 데이터 파이프라인을 만듭니다. 데이터 파이프라인을 생성하는 것은 사소하게 들릴 수 있지만 빅 데이터에서는 10~30 가지의 서로 다른 기술을 통합해야 합니다. 더 중요한 것은 데이터 엔지니어가 해당 작업에 적합한 도구를 이해하고 선택하는 것입니다. 데이터 기술자는 다양한 기술과 프레임워크를 심층적으로 이해하고 이를 결합하여 데이터 파이프라인 만들고 이를 사용하여 회사의 비즈니스 프로세스를 구현할 수 있는 솔루션을 만듭니다.

    내 경험에 의하면, 데이터 엔지니어는 클러스터의 운영과 접한 부분에만 관여합니다.(여기서 데이터 엔지니어에 대해 말한 것과는 다르다.) 일부 데이터 과학 기술은 DevOps 또는 DataOps를 적용해야 하지만, 대부분의 기술은 그렇지 않습니다. 대부분의 프로그래머와 마찬가지로 프로덕션 시스템에 직접 액세스 할 수 없습니다.

    겹치는 기술

    데이터 과학자와 데이터 엔지니어 간에 겹치는 부분이 있습니다. 이 부분은 각자의 능력의 가장자리에서 발생합니다.

    예를 들어 분석에서의 중복입니다. 그러나 데이터 과학자의 분석 기술은 데이터 엔지니어의 분석 기술보다 훨씬 앞선 것입니다. 데이터 엔지니어는 몇 가지 기본 수준이나 중간 수준의 분석을 수행할 수 있지만, 데이터 과학자가 수행하는 고급 분석을 수행하기는 어려울 것입니다.

    데이터 과학자와 데이터 엔지니어는 모두 프로그래밍에 중점을 두고 있습니다. 그러나 데이터 엔지니어의 프로그래밍 기술은 데이터 과학자의 프로그래밍 기술을 훨씬 능가합니다. 데이터 과학자가 데이터 파이프 라인을 만드는 것은 그들의 기술에서 가장 먼 가장자리에 있지만 데이터 엔지니어는 밥먹듯이 하는 것입니다. 이러한 방식으로 두 가지 역할은 보완적이며 데이터 엔지니어가 데이터 과학자의 작업을 지원하게 됩니다.

    데이터 과학자와 데이터 엔지니어 간에 또 다른 중복이 있음을 알 수 있을 것입니다. 각 포지션의 스킬을 더 잘 이해하면 중복을 이해할 수 있습니다. 데이터 엔지니어는 프로그래밍 및 시스템 작성 기술을 사용하여 빅 데이터 파이프 라인을 만듭니다. 데이터 과학자는 제한된 프로그래밍 기술을 사용하고 고급 수학 기술을 적용하여 기존 데이터 파이프 라인에서 고급 데이터 제품을 만듭니다. 이러한 생성 및 사용의 차이점은 팀의 실패에 핵심 역학을 하고 있거나, 실적이 저조한 원인이 됩니다. 데이터 과학자들이 데이터 파이프라인을 만들 것을 기대한다면 팀은 망할 것입니다.

    조직이 잘못하면

    조직이 각 직책의 핵심 기술과 역할을 오해하는 것은 유감스럽게도 일반적입니다. 일부 조직에서는 데이터 과학자가 데이터 파이프라인을 만들 수 있다고 생각합니다. 데이터 과학자는 유행을 따라 데이터 파이프라인을 만들 수는 있습니다. 데이터 과학자가 데이터 파이프라인을 작성하는 것은 몇 가지 문제가 있습니다. 데이터 과학자는 필요에 따라 프로그래밍과 빅 데이터만 배웠습니다. 데이터 파이프라인을 만드는 것은 그들의 핵심 역량이 아닙니다.

    관리 관점에서 볼 때 데이터 과학팀은 꼼짝 않고 있는 것으로 보입니다. 다른 팀을 둘러보고 진행상황을 비교하면 마치 데이터 과학팀은 실적이 좋지 않거나 실적이 떨어지는 것처럼 보입니다. 이것은 데이터 과학자의 핵심 역량에 대한 오해에서 발생한 부당한 평가입니다.

    데이터 공학을 연구하는 데이터 과학자

    나는 데이터 엔지니어가 해야 할 일들을 데이터 과학자가 작업하는 것을 보았습니다. 데이터 과학자들은 20~30%의 효율을 내고 있었습니다. 데이터 과학자는 데이터 엔지니어가 머릿속에서 알아낸 것을 전혀 모릅니다. 데이터 파이프라인을 만드는 것은 쉬운 일이 아닙니다. 고급 프로그래밍 기술, 빅 데이터 프레임워크의 이해 및 시스템 구축이 필요합니다. 이것은 평균적인 데이터 과학자가 가진 기술이 아닙니다. 데이터 과학자가 이러한 기술을 습득할 수는 있습니다. 그러나 투자 대비 수익(ROI)이 좋지 않을 것입니다.

    데이터 파이프라인을 생성에 대해 아마추어인 데이터 과학자의 문제도 있습니다. 데이터 과학자는 데이터 엔지니어라면 하지 말아야 할 실수와 잘못된 선택을 할 수 있습니다. 데이터 과학자는 작업에 적합한 도구를 모르거나 이해하지 못합니다. 모든 작업에 대해 하나의 도구를 사용한다면 모든 것은 무너집니다. 현실은 다양한 작업에 많은 도구가 필요하다는 것입니다. 자격을 갖춘 데이터 엔지니어는 이를 알고 있지만 데이터 과확자들은 알 수 없습니다.

    최근의 예를 보겠습니다. Apache Spark를 사용하여 10GB의 데이터 세트를 처리하는 데이터 과학자가 있습니다. 맞습니다. Spark는 해당 데이터를 처리할 수 있습니다. 하지만 작은 데이터 프로그램은 훨씬 더 빠르고 더 좋았을 것입니다. Spark 작업을 실행하는데 10~15분이 걸렸지만 작은 데이터로 RDBMS에서 동일한 작업을 수행하면 0.01 초가 걸립니다. 이 경우 데이터 과학자는 문제를 해결했지만 작업에 적합한 도구가 무엇인지 이해하지 못했습니다. 15분씩 걸리는 작업을 하루에 16번 수행한다면 데이터 과학자는 잘못된 도구를 사용했기 때문에 4시간을 기다려야 했습니다.

    다른 조직에서는 데이터 과학자에게 데이터 엔지니어링 리소스가 없었습니다. 데이터 과학자들은 데이터 엔지니어링 문제에 봉착할 때까지 문제를 해결할 것입니다. 하지만 그들은 일을 끝내지 못한다고 보고를 할 것이고 일은 반쯤 마쳤습니다. 이로 인해 데이터 과학자들은 그 시점까지 시간을 낭비했고, 일을 끝낼 수 없기 때문에 수백만 달러를 버리게 됩니다.

    데이터 과학자가 데이터 엔지니어의 작업을 수행하는데 더 걱정스러운 표현은 데이터 과학자가 좌절감을 느끼고 접는 것입니다. 데이터 엔지니어 작업을 수행하는 다양한 조직의 많은 데이터 과학자와 이야기를 했습니다. 대화의 내용은 동일합니다. 데이터 과학자는 데이터 공학이 아니라 데이터 과학 작업을 하기 위해 회사에 왔다고 불평합니다. 데이터 과학자가 데이터 엔지니어의 일을 하게 되면 그들은 미치게 됩니다. 그들은 그만둘 것입니다. 나는 다른 포스트에서 이 문제에 대해 더 자세히 이야기할 것입니다.

    데이터 엔지니어와 데이터 과학자의 비율

    문제는 데이터 엔지니어와 데이터 과학자의 비율을 파악하는 것입니다. 비율을 선택할 때 고려해야 할 일반적인 사항은 데이터 파이프 라인의 복잡성, 데이터 파이프라인의 성숙도 데이터 엔지니어링 팀의 경험 수준입니다.

    데이터 엔지니어보다 더 많은 데이터 과학자를 갖는 것이 문제가 됩니다. 이는 조직에서 데이터 과학자가 데이터 엔지니어링은 수행하도록 하는 것을 의미합니다. 이것은 모든 종류의 문제를 야기합니다.

    공통적인 출발점은 데이터 과학자당 2~3명의 데이터 엔지니어입니다. 보다 복잡한 데이터 엔지니어링 요구 사항을 가진 일부 조직의 경우 데이터 과학자당 4~5명의 데이터 엔지니어로 구성할 수 있습니다. 여기에는 데이터 엔지니어링 및 데이터 과학이 서로 다른 부서에 있는 조직이 포함됩니다. ML/AI 부분을 만드는 것보다 데이터 파이프라인을 만드는데 더 많은 시간과 노력이 필요하기 때문에 더 많은 데이터 엔지니어가 필요합니다.

    나의 책에서 데이터 엔지니어링 팀과 데이터 과학팀이 서로 어떻게 상호 작용해야 하는지에 대해 더 자세히 이야기합니다.

    데이터 과학을 하는 데이터 엔지니어

    데이터 엔지니어가 데이터 과학을 하기 시작하는 경우는 흔치 않습니다. 데이터 엔지니어가 수학 및 통계 기술을 향상하기 시작함에 따라 상승 추세가 있습니다. 데이터 과학이 표준화됨에 따라 이러한 상승 추세가 더욱 보편화되고 있습니다. 그것은 새로운 유형의 엔지니어로 이어지고 있습니다.

    기계 학습 엔지니어의 필요성

    데이터 과학자들은 학문적 배경에서 왔습니다. 그들은 보통 박사 학위(또는 석사 학위)를 소지하고 있습니다. 문제는 그들이 제품에 대한 어떤 것을 찾기보다는 문제에 대한 논문을 작성하고 싶다는 것입니다. 그들의 프로그래밍 능력은 R에서 무엇인가를 만드는 것으로 확장됩니다. R로 쓰인 것을 production에 넣는 것은 그 자체로 중요한 문제입니다. 그들은 엔지니어처럼 시스템을 만드는 관점에서 생각하지 않습니다.

    데이터 과학자들의 일반적인 문제는 그들이 production에 투입하고, 데이터 파이프라인을 만들고, AI/ML 결과를 노출시키는 엔지니어가 아니라는 것입니다.

    학계의 사고방식과 production 방식에 대한 필요성 사이의 불균형을 해결하기 위해 새로운 유형의 엔지니어를 볼 수 있습니다. 현재 이 엔지니어는 미국에서 주로 볼 수 있습니다. 이 엔지니어는 기계 학습 엔지니어입니다.

    그림 3. 기계 학습 엔지니어가 데이터 과학자 및 데이터 엔지니어와 어울리는 위치를 보여주는 다이어그램. Jesse Anderson과 Big Data Institute의 일러스트레이션.

    기계 학습 엔지니어는 주로 데이터 엔지니어링 배경에서 왔습니다. 데이터 엔지니어링 및 데이터 과학 모두에 능숙해질 만큼 충분히 교차 교육을 받았습니다. 덜 일반적인 방법은 데이터 과학자가 데이터 엔지니어링 측면에서 교차 훈련하는 것입니다.

    기계 학습 엔지니어의 한 문장 정의는 다음과 같습니다.

    기계 학습 엔지니어는 데이터 과학 및 데이터 엔지니어링의 교차점에 앉아 데이터 엔지니어링 및 데이터 과학에 능숙한 사람입니다.

    그림 3은 기계 학습 엔지니어가 위치를 말해 줍니다. 이들은 데이터 엔지니어가 작성하는 데이터 파이프라인과 데이터 과학자가 작성하는 데이터 사이의 통로입니다. 기계 학습 엔지니어는 데이터 과학자가 발견하거나 생성하는 것을 가져와 생산에 합당하게 만드는 책임이 있습니다. (데이터 과학자가 만들어내는 대부분의 것이 생산에 합당하지 않고 대부분 해킹당할 수 있습니다).

    기계 학습 엔지니어의 업무는 주로 데이터 과학 파이프 라인의 마지막 마일을 만드는 것입니다. 이것은 여러 부분을 수반할 수 있습니다. R/Python에서 Java/Scala로 데이터 과학자의 코드를 다시 작성했을 수도 있습니다. 데이터 과학자가 작성한 ML/AI 코드를 소프트웨어 엔지니어링 관점에서 최적화하여 실행이 잘 되도록 할 수 있습니다. 기계 학습 엔지니어는 데이터 과학분야에 필요한 엔지니어링 배경을 가지고 있습니다.

    생산 환경에서 실행되는 모델은 소프트웨어가 제공하지 않는 보살핌과 수유가 필요합니다. 기계 학습 모델이 부실해져서 부정확하거나 왜곡된 결과가 나올 수 있습니다. 이는 데이터 변경, 새로운 데이터 또는 악의적인 공격의 성격 때문일 수 있습니다. 어느 쪽이든, 기계 학습 엔지니어는 재교육이나 조정이 필요한 모델의 변화를 감시하고 있습니다.

    기계 학습 엔지니어 및 데이터 엔지니어

    데이터 엔지니어의 기계 학습 엔지니어로의 전환은 느리게 진행되는 프로세스입니다. 솔직히 말해서, 우리는 기계 학습 엔지니어가 데이터 과학자의 정의에서 본 것과 유사한 수정을 보게 될 것입니다.

    느리게 진행되는 것의 의미를 설명하기 위해 데이터 엔지니어에서 기계 학습 엔지니어로 전환 한 경험을 공유할 것입니다. 그들은 소프트웨어 엔지니어로서, 그리고 데이터 엔지니어로서 개발 작업을 해왔습니다. 그들은 항상 통계 나 수학에 관심을 가졌습니다. 다른 때에는 데이터 엔지니어라는 제약 때문에 지루해합니다. 어느 쪽이든, 이 전환은 몇 년이 걸렸습니다. 나는 사람들이 초보자용 통계 수업을 듣거나 초보 기계 학습 과정을 치른 후에 기계 학습 엔지니어가 되는 것을 보고 있지 않습니다.

    엔지니어는 진실과 거짓, 흑과 백, 1과 0을 좋아합니다. 그들은 불확실성을 좋아하지 않습니다. 기계 학습을 통한 모델의 추측에는 불확실성이 존재합니다(엔지니어는 추측을 좋아하지 않습니다). 대부분의 엔지니어와 달리 기계 학습 엔지니어는 데이터 엔지니어링의 확실성과 데이터 과학의 불확실성에 걸쳐 있을 수 있습니다.

    기계 학습 엔지니어의 증가하는 가치

    데이터 과학을 수행하기 위한 기준은 점차 감소하고 있습니다. 모범 사례가 점차 구체화되고 있습니다. 가장 일반적인 알고리즘이 알려져 있습니다. 더 좋게도, 누군가 이미 이러한 알고리즘을 코딩하고 최적화했습니다.

    이 성숙도가 높아짐에 따라 데이터 과학자와 기계 학습 엔지니어가 코딩 작업을 하지 않아도 제작 작업을 보다 쉽게 수행할 수 있게 되었습니다. 우리는 또한 데이터 과학이 보다 자동화되고, 자동화된 프로세스가 되는 것을 목격하고 있습니다. Google의 AutoML 은 본격적인 데이터 과학자의 작업 없이 자동으로 최상의 알고리즘을 찾고 결과를 제공하는 동향 중 하나입니다. DataRobot 은 데이터에 적합한 데이터 과학 알고리즘을 찾는 프로세스를 자동화하는 또 다른 기술입니다. 또한 이 알고리즘을 기계 학습 엔지니어가 생산에 투입하는 데 도움이 됩니다.

    이러한 도구는 하드 코어 데이터 과학을 대체하지는 않지만 데이터 과학자가 데이터 과학의 보다 어려운 부분에 집중할 수 있게 해줍니다. 이를 통해 기계 학습 엔지니어는 점점 더 생산적으로 발전할 수 있습니다. 우리는 기계 학습 엔지니어와 알고리즘 자동화에 대한 오프로드가 점차 증가하는 것을 보게 될 것입니다.

    미래의 기계 학습 엔지니어가 기대해야 할 생산성 수준은 어느 정도인지 알기 어렵습니다. 기계 학습 엔지니어가 웹 개발자의 워드프레스 구성자가 될 수 있을까? 이 시나리오에서 기계 학습 엔지니어는 매우 잘 알려져 있고 표준적인 사용 사례로 생산적일 수 있으며 데이터 과학자 만이 실제로 맞춤형 작업을 처리할 수 있습니다. 아니면 기계 학습 엔지니어가 데이터베이스 관리자로 될 것입니까? 모델에 대한 심층적인 지식을 바탕으로 알려진 쿠키 커터 (cookie-cutter) 방식을 사용하여 모델을 구성하고 시간의 50-80 %가 올바른 결과를 얻으며 필요한 만큼 충분합니다. 진정 정확한 결과를 얻으려면 데이터 과학자가 필요합니다.

    기계 학습 엔지니어와 데이터 과학자의 생산성을 높이는 핵심은 그들의 도구가 될 것입니다. 현재는 성숙함이 부족하기 때문에 그들이 미래에 얼마나 생산적 일지 궁금합니다.

    나는 데이터 과학이 계속해서 낮아질 것으로 기대합니다. 이것은 기계 학습 엔지니어가 지식의 엄청난 증가 없이 더 많은 데이터 과학을 수행할 수 있게 합니다. 저는 기계 학습 엔지니어의 역할이 미국과 전 세계에서 점차 일반화될 것으로 기대합니다.

    무엇을해야합니까?

    이제 데이터 과학자와 데이터 엔지니어의 차이점을 확인한 후에 조직을 돌아보고 변경해야 하는 부분을 파악해야 합니다. 이것은 다른 조직이 달성하는 데 도움이 된 변화이며 엄청난 결과를 보았습니다. 데이터 과학 그룹이 멈추어 서 수행할 수 없는 것처럼 보인 경우, 우리는 데이터 엔지니어링 팀을 만들고, 데이터 과학 및 데이터 엔지니어링 팀에게 협력 방법을 제시하고 적절한 프로세스를 마련했습니다.

    이러한 변화로 인해 데이터 과학 팀의 생산성은 20-30 % 에서 90 %로 향상되었습니다. 팀은 같은 수의 사람들로 더 많은 것을 할 수 있었습니다. 데이터 과학자들은 데이터 엔지니어링을 하지 않아서 더 행복했습니다. 경영진은 큰 데이터 약속에 대한 가치 제공을 시작할 수 있습니다.

    또한 기계 학습 엔지니어라는 새로운 직책을 만났습니다. 데이터 과학 및 데이터 엔지니어링 팀이 성숙 해짐에 따라 팀 간 격차를 확인하는 것이 좋습니다. 데이터 엔지니어를 기계 학습 엔지니어가 되거나 기계 학습 엔지니어를 고용할 수 있도록 홍보해야 할 수도 있습니다.

    마지막으로, 큰 데이터에 대한 대부분의 문제는 사람과 팀 문제입니다. 그것들은 기술적인 문제가 아닙니다 (최소한 초기에는 아닙니다). 기술 자체가 비난받는 이유는 기술 자체를 비난하는 것이 팀 내부를 들여다보는 것보다 훨씬 쉽기 때문입니다. 인사 문제를 해결할 때까지는 어려운 기술 문제에 시달리지 않거나 만들려는 커다란 데이터로 가치를 창출하지 않습니다. 팀과 조직을 정직하게 바라보고 어디에서 변경해야 하는지 확인하십시오.

    그들의 피드백에 대해 Russell Jurney, Paco Nathan 및 Ben Lorica에게 큰 감사를 드립니다.


    이 문서는 영문으로된 내용을 구글 번역기를 활용하여 번역한 내용입니다. 
    개인적인 공부 및 추후 다시 볼 수 있도록 하기 위해 개인 블로그에 번역 내용을 옮겨 놓았습니다.
    원문과 내용이 다를시 책임지지 않으며, 저작권 문제가 발생시 언제든 삭제 될 수 있습니다. 

    원문보기 : https://www.oreilly.com/ideas/data-engineers-vs-data-scientists



    반응형
Designed by Tistory.