데이터 엔지니어: 신화 대 현실
게시 됨: 2018-05-10자율주행 자동차에서 이미지의 자동 태깅에 이르기까지 데이터 과학은 먼 길을 왔습니다. 데이터 과학자와 분석가는 그들이 추가하는 가치 때문에 모든 조직의 필수적인 부분이 되었습니다. 그러나 솔직히 말해서 데이터 과학자는 작업하는 데이터만큼만 훌륭합니다. 오늘날 대부분의 조직은 다양한 플랫폼에 걸쳐 다양한 형식으로 데이터를 저장하고 있습니다. 여기에 데이터 엔지니어가 필요합니다!
데이터 엔지니어는 데이터 과학자와 분석가가 이 데이터를 사용할 수 있도록 만드는 사람들입니다. 데이터 엔지니어는 데이터 힙을 데이터 과학자가 사용할 수 있는 형식으로 변환하는 파이프라인을 구축할 책임이 있습니다. 그들은 대부분 배후에서 일하기 때문에 데이터 과학자/분석가의 모든 매력이 없습니다.
데이터 과학자가 경주용 자동차 운전자라면 데이터 엔지니어는 경주용 자동차 제작자입니다. 전자는 트랙을 질주하는 짜릿함과 박수갈채를 받는 관중 앞에서 승리하는 짜릿함을 얻습니다. 반면에 후자는 엔진을 튜닝하고 강력하고 견고한 기계를 만드는 기쁨을 얻습니다. 경주용 자동차 제작자는 운전자의 작업을 훨씬 쉽게(제작자의 품질에 따라 더 힘들게) 만듭니다.
데이터 분석으로 어떻게 전환할 수 있습니까?
이러한 점에서 데이터 엔지니어는 거의 모든 데이터 분석 팀의 이름 없는 영웅입니다. 건전한 데이터 엔지니어가 없으면 데이터 과학자는 형식이 지정되지 않은 데이터에서 단서를 찾기 위해 머리를 긁적일 뿐입니다.
데이터 엔지니어의 모든 작업이 수반하는 작업을 살펴보겠습니다.
이해를 돕기 위해 여러분이 Swiggy의 경쟁업체(이름을 Twiggy로 지정)의 데이터 엔지니어라고 가정해 보겠습니다. 사용자가 모든 기기에서 사용하고 서비스에 액세스할 수 있는 앱이 있습니다. 그들은 음식을 주문하고 주문은 적절한 식당으로 리디렉션되고 음식은 거기에서 픽업되어 당신에게 도달합니다.
이 서비스를 동기화 상태로 유지하려면 다음이 필요합니다.
- 사용자를 위한 모바일 앱
- 식당 주인을 위한 모바일 앱
- 한 번에 여러 요청을 처리하는 강력한 서버입니다.
지금쯤이면 이해하셨겠지만 이 애플리케이션은 엄청난 양의 데이터를 생성합니다. 또한 일부 데이터 저장소가 필요합니다.
- 사용자 및 레스토랑의 세부 정보가 포함된 데이터베이스입니다.
- 서버 액세스 로그. 여기에는 앱에서 서버에 대한 모든 요청이 포함됩니다.
- 모든 서버 측 오류가 포함된 서버 오류 로그입니다.
- 앱 이벤트 로그. 여기에는 사용자 또는 레스토랑 소유자가 애플리케이션에서 취한 조치에 대한 정보가 포함됩니다.
- 앱 기반 오류가 포함된 앱 오류 로그입니다.
- 고객 서비스 데이터베이스. 여기에는 고객과의 상호 작용에 대한 데이터가 포함됩니다.
이제 팀의 데이터 과학자가 서비스에 대한 사용자 행동을 분석하고 지출이 많은 사용자와 어떤 작업이 관련되는지 확인하려고 한다고 가정해 보겠습니다. 그들이 이것을 만들 수 있도록 하려면 서버 액세스 로그와 앱 이벤트 로그의 모든 정보를 결합해야 합니다.
다음을 수행해야 합니다.
- 앱 분석 로그를 정기적으로 수집합니다.
- 앱 분석 로그를 관련 사용자에 대한 서버 로그 항목과 결합합니다.
- 모든 사용자의 이벤트 기록을 반환하는 API를 개발합니다.
그것은 바로 거기에 많은 작업입니다!
이 모든 작업을 수행하려면 모바일 앱 로그와 서버 로그를 실시간으로 효율적으로 수집하고 구문 분석하고 적절한 사용자에게 연결할 수 있는 파이프라인을 만들어야 합니다. 또한 API가 쉽게 쿼리할 수 있도록 구문 분석된 로그를 데이터베이스에 저장해야 합니다. 들어오는 로그를 구문 분석하기 위해 로드 밸런서 뒤에 많은 서버를 가동해야 합니다.
직면하게 될 대부분의 문제는 분산 시스템 및 안정성과 관련되어 있습니다. 로그를 수집하는 수백만 개의 장치와 동적 수요가 있는 경우(오후에는 많은 로그 항목을 받지만 자정에는 많지 않음) 서버 수를 자동으로 늘리거나 줄일 수 있는 시스템을 개발해야 합니다. 트래픽에 따라.
데이터 과학을 마스터하기 위한 최고 단계
대략적으로 일반 데이터 엔지니어링 파이프라인의 작업은 다음 단계를 거칩니다.
- 수집: 필요한 데이터를 수집합니다.
- 처리: 원하는 결과를 얻기 위해 데이터를 처리합니다.
- 저장: 더 빠른 검색을 위해 결과를 저장합니다.
- 액세스: 도구가 데이터 파이프라인의 결과에 액세스할 수 있도록 합니다.
데이터 엔지니어는 다음 영역에 대한 지식을 보유해야 합니다.
- 데이터 웨어하우징:
- MySQL, MS SQL Server 등과 같은 RDBMS
- HBase, MongoDB, CouchDB, Cassandra 등과 같은 NoSQL 데이터베이스
- 데이터 수집:
- RESTful API
- SQL에 대한 데이터 모델링 및 전문 지식에 대한 지식.
- 데이터 변환:
- Informatica, Datastage, Redpoint 등과 같은 ETL 도구
- Python, Ruby, Perl 등과 같은 모든 스크립팅 언어
이러한 데이터 엔지니어의 삶과 직업을 둘러싼 몇 가지 신화와 오해를 살펴보겠습니다.
목차
통념 #1: 데이터 엔지니어는 수집된 데이터에서 가치를 추출합니다.
데이터를 수집하는 것과 지식을 추출하는 것 사이에는 많은 것이 있습니다. 데이터 엔지니어는 주로 과학자가 분석하고 작업할 수 있는 형식으로 데이터를 변환하는 일을 담당합니다. 이 점에서 그들은 데이터에서 어떤 가치도 추출하지 않으며, 실제로 접시에 있는 데이터를 데이터 과학자에게 제시한 다음 그 데이터에서 가치를 발견합니다.

통념 #2: 데이터 엔지니어는 모든 데이터를 깨끗한 상태로 만들어야 합니다.
위의 문장을 천천히 읽어보면 이 말이 어처구니가 없음을 알게 될 것이다. 데이터 엔지니어는 하루 종일 들어오는 데이터 스트림을 처리합니다. 이 데이터는 폐기되지 않도록 즉시 정리하고 조치를 취해야 합니다. stale은 통찰력이 없고 늙음을 의미합니다. 따라서 데이터 엔지니어는 모든 데이터를 원래대로 만들지 않습니다. 그들은 당면한 문제에 필요한 다른 데이터와 결합된 당면한 데이터로 작업합니다. 전체 데이터 세트를 정리하는 데 몇 달이 걸리고 그때쯤이면 아무 소용이 없을 것입니다.
데이터 과학 통계 기초 기초
통념 #3: 데이터 엔지니어는 이미 만들어진 도구에 데이터를 버리고 깨끗하고 실행 가능한 데이터를 출력으로 즐깁니다.
데이터 엔지니어 앞에서 큰 소리로 말하지 마십시오. 항상. 자존심이 강한 데이터 엔지니어는 그러한 노골적인 모욕을 용납하지 않을 것입니다. 다른 엔지니어(소프트웨어, 기계, 화학 등)와 마찬가지로 데이터 엔지니어는 항상 생각의 한계를 가지고 있어야 합니다. 데이터 엔지니어링에 모든 것을 적용할 수 있는 접근 방식은 없으며 데이터 엔지니어는 계속해서 사용 사례에 맞는 알고리즘을 만들어야 합니다. 그들은 완벽한 효율성을 보장하기 위해 작업과 관련된 최신 기술과 방법을 알고 있어야 합니다.
신화 #4: 데이터 엔지니어는 빅 데이터 작업을 하는 소프트웨어 엔지니어일 뿐입니다.
소프트웨어 엔지니어는 모바일/웹 앱 개발 작업을 합니다. 그들의 업무에는 다양한 문제가 포함되어 있으며 작업 관리가 어렵습니다. 즉, 생각하고, 의사소통하고, 코드를 구성하는 것입니다. 반면에 데이터 엔지니어는 일반적으로 문제가 적지만 개별 문제는 기술적으로 훨씬 더 어렵습니다. 전망에서 기술에 이르기까지 데이터 엔지니어의 경우 소프트웨어 엔지니어의 경우와 모든 것이 완전히 다릅니다.
데이터 과학자, 데이터 분석가 및 데이터 엔지니어는 누구입니까?
세계 최고의 대학에서 데이터 과학 인증 을 받으십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 통해 경력을 빠르게 추적하십시오.
데이터 엔지니어링은 기존 IT 역할과 유사합니까?
'데이터 엔지니어'와 '소프트웨어 엔지니어'는 둘 다 프로그래밍 기술에 크게 의존하기 때문에 컴퓨터 분야 외부의 사람들과 상호 교환 가능하게 들릴 수 있습니다. 그러나 실제로 그들은 다른 분야의 전문가입니다. 소프트웨어 엔지니어의 주요 목표는 사용자 친화적인 웹사이트를 만드는 것입니다. 데이터 엔지니어는 데이터를 저장, 통합 및 검색하기 위한 시스템을 구축한 다음 소프트웨어 개발자가 시스템 및 애플리케이션을 구축하는 데 사용합니다. 데이터 엔지니어는 인프라 전반에 걸쳐 데이터 품질을 보장하기 위해 버전 제어 시스템뿐만 아니라 모든 조직 데이터에 대한 CI/CD(지속적 통합 및 전달) 파이프라인을 만들고 유지 관리할 수도 있습니다.
데이터 엔지니어가 되려면 대학 교육이나 고급 학위가 필요합니까?
데이터 엔지니어로 일하기 위해 학위가 필요하지는 않지만 특정 고용주는 최소 학사 학위를 가진 후보자를 선호할 수 있습니다. 다양한 소스에서 데이터를 이동하고, 변경하고, 분석을 위해 저장할 수 있는 데이터 시스템을 만들기 위해 학업 과정이나 온라인 커리큘럼을 완전히 준비할 수는 없습니다. 사실 가장 성공적인 데이터 엔지니어는 실제 고객과 함께 실제 세계에서 작업하면서 많은 것을 배웁니다. 하지만 예, 데이터 엔지니어가 Amazon Athena, Amazon Redshift, Apache Spark 등과 같은 특정 도구를 사용하고 데이터 관리 모범 사례에 대한 지식을 얻는 데 능숙한 기술을 보유하는 것이 중요합니다.
성공적인 데이터 엔지니어가 되려면?
데이터 기반 비즈니스의 경우 데이터 엔지니어링이 중요하지만 데이터 엔지니어는 정확히 무엇을 합니까? 성공적인 데이터 엔지니어가 되는 길은 다음과 같습니다.
1. 프로그래밍에 능숙해지기: 성공적인 데이터 엔지니어가 되려면 먼저 프로그래밍 기초를 닦는 것부터 시작하십시오. Python과 Scala는 해당 분야에서 가장 일반적으로 사용되는 기술입니다.
2. 자동화 및 스크립트 방법 배우기: 학습 자동화는 데이터 엔지니어에게 매우 중요합니다. 지루하거나 정기적으로 발생할 수 있는 데이터에 대해 수행해야 할 많은 작업이 있기 때문입니다. 자동화를 위한 몇 가지 중요한 도구는 Shell 스크립팅과 Shell에서의 데이터 처리입니다.
3. 데이터베이스 사용법을 안다: 이것은 SQL과 데이터 모델링을 배움으로써 할 수 있다.
4. 능숙한 데이터 처리 기술: 데이터 처리 기술을 마스터하려면 대상 데이터베이스에 결과를 로드하기 전에 일괄 처리 및 스트림으로 데이터를 처리하는 방법을 배우는 것이 중요합니다.