2023년에 데이터 엔지니어가 되는 방법
How to Become a Data Engineer in 2023: 5 Steps for Career Success
다음 글은 위의 게시글을 번역한 후, 요약해서 정리한 글입니다.
저는 요즘 데이터 엔지니어가 되기 위해서는 어떻게 공부해야 하는지 고민을 하고 있는데요.
해당 글을 통해 데이터 엔지니어의 역할과 책임, 일상적인 작업에 대해 알아보고, 왜 데이터 엔지니어로 일 하는 것이 좋은 선택인지 살펴 볼 예정입니다.
더불어 데이터 엔지니어가 되기 위해서 필요한 기술과 자격 요건을 살펴 보려고 합니다.
The Data Engineer Learning Path
먼저 간략하게 기술적인 데이터 엔지니어의 학습 경로는 다음과 같습니다.
Python
및Scala
와 같은 언어로 프로그래밍 능력을 습득한다.- 자동화 및 스크립팅 배운다.
→ 스트립팅 언어?
다른 프로그래밍 언어와 통합하고 통신하도록 설계된 언어 유형
예로는 JavaScript, VBScript, PHP 등이 있음 - 데이터베이스 관리를 이해하고 SQL 기술을 개발한다.
- 데이터 처리 기술을 숙달한다.
- 워크플로우를 스케줄링하는 방법을 배운다.
AWS
와 같은 클라우드 컴퓨팅 플랫폼에 대한 지식을 개발한다.Docker
및Kubernetes
와 같은 인프라 도구에 대한 지식을 개발한다.- 산업(업계) 동향을 최신 상태로 유지한다.
역시 해야 할 공부들이 많은 걸 알 수 있네요 😟
그래서인지 더더욱 어떻게 공부해야 할지 고민이 되는 거 같습니다.
그렇다면 데이터 엔지니어가 어떤 역할을 맡고 있는지 알아볼까요?
What is a Data Engineer?
데이터 엔지니어는 조직 내에서 데이터의 수집, 저장, 변환, 관리를 위한 기반을 마련하는 역할을 담당합니다.
데이터베이스 아키텍처와 데이터 처리 시스템을 설계하고 유지하여 데이터 분석, 시각화, 머신 러닝 모델 개발과 같은 작업이 원활하게 이루어질 수 있도록 합니다.
데이터 엔지니어는 데이터 과학 분야에서 기술적인 역할을 맡으며, 데이터 과학자와 소프트웨어 개발자 사이에서 연결 역할을 수행합니다.
What Does a Data Engineer Do?
그렇다면 데이터 엔지니어는 어떤 일을 할까요?
데이터 엔지니어는 기업의 데이터 아키텍처를 개발하고 유지보수하며, 대규모 데이터셋을 분석 가능한 형식으로 준비합니다.
ETL 프로세스와 데이터 정리 프로세스를 통해 데이터 추출, 변환, 적재 작업과 데이터 정규화 작업을 수행합니다.
데이터 파이프라인을 개발하여 데이터 이동을 자동화하고, 이를 통해 데이터 엔지니어는 분석가와 데이터 과학자들이 데이터를 적절하게 활용할 수 있도록 지원합니다.
이러한 작업들은 데이터 수집 및 저장의 복잡성이 증가하는 다양한 데이터 원본과 다양성, 속도에 대응하기 위해 이루어집니다.
데이터 파이프라인은 데이터를 정의된 단계로 이동시키고, 자동화된 작업 스케줄링과 모니터링을 통해 신속하고 견고한 데이터 처리를 보장합니다.
How to Become a Data Engineer
데이터 엔지니어가 되기 위해 따라야 할 단계를 안내하겠습니다.
Step 1: 데이터 엔지니어 교육 및 자격 고려하기
데이터 엔지니어링은 새로운 직업으로 간주됩니다. 아직까지 한국에서도 학위를 제공하는 대학이 매우 적은 걸로 알고 있습니다.
데이터 엔지니어의 업무를 수행하기 위해서는 교육보다는 지식과 역량이 더 중요한 경우가 많습니다.
시스템 아키텍처, 프로그래밍, 데이터베이스 구성 등이 커리큘럼에 포함된 교육을 선택하도록 해야 합니다.
Step 2: 데이터 엔지니어 스킬 개발하기
데이터 엔지니어는 매우 복잡한 작업을 수행하기 위해 상당한 스킬이 필요합니다. 그러나 필요한 스킬과 지식을 상세하고 포괄적으로 나열하는 것은 매우 어렵습니다.
데이터 과학 생태계는 빠르게 진화하고 새로운 기술과 시스템이 지속적으로 등장 하기 때문입니다.
이는 데이터 엔지니어가 기술적인 혁신과 발전에 맞춰 계속해서 학습해야 함을 의미합니다.
그럼에도 불구하고 다음은 데이터 엔지니어가 되기 위해 개발해야 하는 일부 기술 목록입니다.
- 데이터베이스 관리에 대해 배우기
데이터 엔지니어는 매일 데이터베이스를 다루는 일에 상당한 시간을 할애합니다.
데이터 수집, 저장, 전송 또는 단순히 데이터 조회를 위해 데이터베이스를 다루는 것이기 때문입니다.
데이터베이스와 상호 작용하기 위한 기본 언어인 SQL
에 능숙하고, MySQL
, SQL Server
, PostgreSQL
을 비롯한 가장 인기 있는 SQL
에 대한 전문 지식을 갖추는 것을 의미합니다.
관계형 데이터베이스 외에도, 데이터 엔지니어는 NoSQL
(비관계형) 데이터베이스에도 익숙해져야 합니다.
이는 대규모 데이터와 실시간 응용 프로그램에 대한 주요 시스템으로 빠르게 인기를 얻고 있습니다.
- 프로그래밍 언어 배우기
SQL 외에도, 데이터 엔지니어는 다양한 작업에 다른 프로그래밍 언어를 사용합니다.
Python
은 데이터 과학에서의 공용어이며, ETL 작업을 실행하고 데이터 파이프라인을 작성하는 데 완벽합니다. Python
이 어떤 용도로 사용 되는지에 대해 더 읽어볼 수도 있습니다.
Python
을 사용하는 또 다른 이유는 데이터 엔지니어링에서 중요한 도구와 프레임워크인 Apache Airflow
와 Apache Spark
와의 훌륭한 조합입니다.
또, 이러한 오픈 소스 프레임워크 중 많은 것들이 Java
가상 머신에서 실행됩니다.
회사에서 이러한 프레임워크를 사용한다면, Java
나 Scala
배워야 할 가능성이 큽니다.
- 분산 컴퓨팅 프레임워크에 대해 배우기
최근 몇 년 동안, 분산 시스템은 데이터 과학에서 일반적으로 사용되는 기술이 되었습니다.
분산 시스템은 여러 컴퓨터(클러스터라고도 함)에 걸쳐 다양한 구성 요소가 분산되어 있는 컴퓨팅 환경입니다.
Apache Hadoop
및 Apache Spark
와 같은 분산 컴퓨팅 프레임워크는 대량의 데이터 처리를 위해 설계 되었으며, 가장 인상적인 Big Data 응용 프로그램의 기반을 제공합니다.
이러한 프레임워크 중 하나에 대한 전문 지식은 데이터 엔지니어에게 필수적 입니다.
- 클라우드 기술에 대한 지식을 개발하기
클라우드 컴퓨팅은 데이터 과학에서 가장 핫한 주제 중 하나입니다.
클라우드 기반 솔루션에 대한 수요는 빠르게 변화하는 추세입니다. 오늘날 데이터 엔지니어는 회사의 비즈니스 시스템을 클라우드 기반 시스템에 연결하는 것이 큰 부분을 차지합니다.
Amazon Web Services (AWS)
, Azure
, Google Cloud
와 같은 서비스의 등장으로 전체 데이터 워크플로우가 클라우드 내에서 진행될 수 있습니다.
따라서 좋은 데이터 엔지니어는 클라우드 서비스의 사용과 이점, 단점, 그리고 Big Data 프로젝트에서의 적용에 대한 지식과 경험을 갖추어야 합니다.
AWS
나 Azure
와 같은 플랫폼에 대해 최소한은 알아두어야 하며, 이들은 가장 널리 사용되는 플랫폼입니다.
- ETL 프레임워크에 대한 실용적인 지식 습득
데이터 엔지니어의 주요 역할 중 하나는 ETL 기술과 오케스트레이션 프레임워크를 사용하여 데이터 파이프라인을 생성하는 것입니다.
이 부분에서는 여러 기술을 나열할 수 있지만, 데이터 엔지니어는 Apache Airflow
와 Apache NiFi
와 같이 잘 알려진 기술 중 일부를 알고 있거나 익숙해져야 합니다.
Airflow
는 오케스트레이션 프레임워크로, 데이터 파이프라인을 계획, 생성 및 추적하기 위한 오픈 소스 도구입니다.NiFi
는 기본적이고 반복 가능한 대용량 데이터 ETL 프로세스에 적합합니다.
- 스트림 처리 프레임워크에 대해 알아보기
가장 혁신적인 데이터 과학 애플리케이션 중 일부는 실시간 데이터를 사용합니다. 따라서 스트림 처리 프레임워크에 익숙한 지원자에 대한 수요가 증가하고 있습니다.
이러한 이유로, Flink
, Kafka Streams
또는 Spark Streaming
과 같은 스트림 처리 도구를 사용하는 방법을 배우는 것은 다음 단계로 나아가고자 하는 데이터 엔지니어에게 좋은 선택입니다.
- 셸(Shell) 스크립트 배우기
클라우드와 기타 Big Data 도구 및 프레임워크의 대부분의 작업과 루틴은 셸 명령과 스크립트를 사용하여 실행됩니다.
데이터 엔지니어는 파일 편집, 명령 실행, 시스템 탐색을 위해 터미널에 익숙해져야 합니다.
- 커뮤니케이션 기술 개발하기
마지막으로, 데이터 엔지니어는 부서 간 커뮤니케이션 기술도 필요합니다.
데이터 분석가, 데이터 과학자 및 비즈니스 리더의 요구를 이해하고 협업하기 위해 커뮤니케이션 기술이 필요합니다.
조직에 따라 데이터 엔지니어는 이해 관계자와 커뮤니케이션하기 위해 대시보드, 보고서 및 기타 시각화 도구를 개발하는 방법도 알아야 할 수도 있습니다.
Step 3: 데이터 엔지니어 포트폴리오 작업
다음 단계는 기술과 핵심 주제에 대한 이해를 증명할 수 있는 몇 가지 프로젝트를 하는 것입니다.
https://www.datacamp.com/blog/how-to-build-a-great-data-science-portfolio-with-examples
해당 링크에서 포트폴리오 구축에 대한 영감을 얻을 수 있습니다.
특정한 비즈니스 영역을 탐색할 준비가 되었다고 느낄 때는 해당 분야에 대한 도메인 지식을 습득하고 관련된 개별 프로젝트에 집중하면 됩니다.
Step 4: 데이터 엔지니어로 직장에 지원
데이터 엔지니어는 데이터 과학 분야에서 매우 수요가 높은 직책 중 하나입니다.
기업들은 조직의 요구에 부합하는 넓고 매우 특수화된 기술 세트를 갖추고 있는 적합한 후보를 찾는 데 어려움을 겪고 있습니다.
데이터 엔지니어링 직업에 대한 완벽한 공식은 없지만, 데이터 과학자나 데이터베이스 관리자와 같은 역할로부터 전환하여 데이터 엔지니어가 되는 경우가 많습니다.
데이터 엔지니어링 기회를 찾을 때는 "데이터 엔지니어"라는 표기가 있는 채용 공고에 주목해야 합니다.
클라우드 데이터 엔지니어, 빅데이터 엔지니어, 데이터 아키텍트 등 다양한 직무가 있으며, 각 포지션마다 특정 기술과 요구사항이 다를 것입니다.
따라서 핵심은 자신이 알고 있는 내용과 회사의 요구사항 사이에서 가장 적합한 일치를 찾는 것입니다.
다양한 데이터 엔지니어링 직무가 있으며, 자신의 기술과 회사의 요구에 가장 잘 맞는 포지션을 찾는 것이 중요합니다.
- 취업 기회를 어떻게 높일 수 있을까?
계속해서 학습해야 합니다. 데이터 엔지니어링 기술을 깊이 있게 이해하고 도구를 넓힐 수 있는 다양한 방법이 있습니다.
독특한 기술과 소프트웨어 및 프로그래밍 언어에 대한 능숙한 습득을 갖춘 후보자를 찾고 있습니다.
개인 프로젝트에서 코딩 기술을 연습하고 빅데이터 도구와 프레임워크를 시도할수록, 더욱 돋보일 기회가 늘어날 것입니다.
마지막으로 데이터 엔지니어로서 취업에 어려움을 겪고 있다면, 다른 초급 데이터 과학 직무에 지원하는 것도 고려해 봅시다.
데이터 과학은 데이터 역할에 걸쳐 교차적으로 다루는 다양한 주제와 기술을 갖춘 협업 분야입니다. 이러한 직무들은 꿈꾸는 데이터 엔지니어링 직책을 얻는 데 도움이 되는 귀중한 통찰력과 경험을 제공할 것입니다.
Step 5: 데이터 엔지니어 면접 준비하기
데이터 엔지니어링 인터뷰는 일반적으로 기술적인 부분과 비기술적인 부분으로 나뉩니다.
https://www.datacamp.com/blog/top-21-data-engineering-interview-questions-and-answers
위 링크에서 최고의 데이터 엔지니어링 인터뷰 질문 및 답변을 확인할 수 있습니다.
간단히 요약하자면, 다음 4가지 주제와 관련된 질문을 예상할 수 있습니다.
- 이력서와 경험
이력서에서 직무나 프로젝트와 관련된 작업을 강조하고, 면접에서 이에 대한 자세한 설명을 준비하십시오.
이 정보는 기술적인 역량 뿐만 아니라 문제 해결, 커뮤니케이션, 프로젝트 관리 능력을 평가하는 데 중요한 자료입니다.
- 프로그래밍
일반적으로 몇 줄의 코드로 주어진 시간 내에 문제를 해결하는 것을 요구하며, 이를 위해 Python
이나 Spark
와 같은 데이터 프레임워크를 사용합니다.
예를 들어, 단순한 데이터 파이프라인을 작성하여 데이터를 로드하고 정제하는 연습을 할 수도 있습니다.
문제는 복잡하지 않을 것이지만, 순간의 긴장감이 성과에 부정적인 영향을 미칠 수 있습니다.
이러한 유형의 테스트에 익숙하지 않다면, 미리 몇 가지 코딩 문제로 연습해 볼 수 있습니다
- SQL
프로그래밍 테스트 외에도 SQL
을 사용하는 문제를 해결해야 할 수도 있습니다.
일반적으로 이 연습은 데이터베이스에서 일부 데이터 처리를 수행하기 위해 효율적인 쿼리를 작성하는 것으로 이루어집니다.
- 시스템 디자인
이것은 기술 면접에서 가장 개념적인 부분이자 가장 어려운 부분일 것입니다.
데이터 아키텍처를 설계하는 것은 데이터 엔지니어의 가장 중요한 업무 중 하나입니다.
이 부분에서는 일반적으로 데이터 저장, 데이터 처리, 데이터 모델링의 세 가지 측면을 포함한 데이터 솔루션을 처음부터 끝까지 설계하도록 요청됩니다.
마무리
지금까지 데이터 엔지니어가 되는 방법에 대한 글을 정리해봤습니다.
글을 정리하면서 데이터 엔지니어에 대한 준비 과정이 막막했던 것이 해소될 수 있었던 유익한 시간이었습니다.
취업을 원하는 기업의 채용 공고를 보고, 기업에서 쓰이는 기술들에 대해 공부를 해볼 예정입니다.
번역을 하고, 요약을 하려고 하니 생각보다 어색한 문장이 많은 거 같습니다만... 용기 내서 올려봅니다.
이제 저의 성장과정을 지켜봐주세요 ㅇ_<
'Big Data > Data Engineering' 카테고리의 다른 글
[번역] Roadmap for Data Engineering 2023 (0) | 2023.06.19 |
---|