Data Engineer

Rhahr·2022년 5월 17일
post-thumbnail

어플리케이션을 실행하고 넘어가는 이벤트들을 서비스 엔드 포인트라고 한다. 서비스 엔드 포인트로부터 발생하는 데이터를 파이프라인을 통해 수집하고 저장하는 것이 데이터 엔지니어링이다.
여러 시스템들과 상호작용하기에 데이터 인프라를 어떻게 구성해야할까에 대한 고민을 주로 한다.
데이터분석가 보다는 아니겠지만 데이터분석에 대한 통찰력이 필요하다.
데이터의 기하급수적인 팽창에 대응하여 생각해보자 LINE에서는 14TB의 데이터가 발생하며 이 데이터를 통해 부가가치를 어떻게 만들어 낼 것인가에 대한 고민으로 이어진다. 그렇다면 이런 데이터의 흐름을 어떻게 안전하게 저장하고 가공할 것인가에 대한 솔루션을 제공하는 직업이 데이터 엔지니어다.
코더: 간단한 알고리즘을 구현가능한 사람
개발자: 사용가능한 서비스를 구현가능한 사람
엔지니어: 아키텍쳐와 시스템을 구축할 수 있는 사람
엔지니어는 대용량 서비스를 다룬다. 전체를 바라볼 수 있어야 하고 시스템에 대한 전반적인 이해와 문제해결능력이 필요하다.
데이터 엔지니어가 등장하기전에 Data Warehouse Engineer, DevOps Engineer, Cloud Engineer가 이런 파트를 담당하였다. 데이터 엔지니어는 축구에 비유하면 미드필더다. 스포트라이트를 받지 못하지만 Goal을 내기위해서 끊임없이 움직여야하는 파트다.
Q&A

1. 전혀 다른 분야를 공부하다가 넘어온 경우가 많나요?

제 경우의 경우 굉장히 많습니다. 저는 국비과정을 통했고 그렇기에 몇몇분들이 계시지만 당연히 회사 차원에서는 많지 않습니다. 네카라쿠배 같은 비전공자 엔지니어의 경우 상대적으로 굉장히 적습니다. 아마 8:1 에서 9:1 정도라고 생각합니다. 단순하게 비전공자와 전공자 여부만을 가지고 성공을 논하기는 어려울 듯합니다. 데이터엔지니어라는 직업이 등장하고

2. 비전공자로서 데이터엔지니어로 성공하기 위해서는 어떤 공부하 필요한가요

필수적으로 데이터베이스에 대한 원리를 이해하고 능숙하게 사용할 수 있어야한다고 생각합니다. Python과 더불어 JAVA라는 언어를 능숙히 사용할 수 있어야합니다. Python은 인터프리터 언어로 컴퓨터에게 효과적인 행동을 지시할 수 없다
이론적인 파트는 리눅스, 운영체제, 네트워크에 대해서 깊이 공부하면 좋을 것 같습니다.
Spark, Kubernetes, Airflow는 업계 표준이 되어버렸습니다. 카프카, 빔 등 여러 스택이 존재하며 이에 대해서는 원하는 회사의 채용공고를 보고 보편적인 스택을 공부하며 실력을 쌓아 나가는 것이 좋을 듯합니다.

3. 통계학과 학사로서 취업하기위해서 필요한 것이 무엇인가요?

R 프로그래밍, 다양한 데이터를 다룰 수 있는 능력이 필요합니다. 시계열 데이터, 다양한 도매인의 데이터에 대한 통찰력이 필요하며 컴퓨터 프로그래밍의 경우 수학적 계산을 쉽게 할 수 있는 언어를 익히는 게 좋을 듯합니다. C++, Python 등등

4. 여러 개발 직군 중 데이터 엔지니어가 된 이유가 무엇인가요?

디지털 마케팅 인턴을 통해서 마케팅이 적성이 맡지 않는 것을 느꼈고 수학과 통계를 공부하며 이쪽 분야에 관심을 가지게 되었습니다. 데이터 분석가에 대해 흥미를 가지고 공부를 진행하며 개발을 접하였고 데이터 엔지니어까지 도달했다.
데이터 사이언티스트는 끝판왕이다. 하지만 기업들도 사람들도 너무나도 쉽게 언급하곤 하는 듯 하다.

5. 인턴은 어떻게 준비해야하나요?

코딩테스트가 가장 앞 단의 문제이다. 토이 프로젝트 공모전 경험을 정리하여 하나의 포플로서 만드는 것도 굉장히 좋다. 스스로 문제를 정의하고 찾아나가면서 해결하는 경험이 중요하다. 기본기가 굉장히 굉장히 중요하다. 운영체제 네트워크 데이터베이스 자료구조 개발 과 같은 파트에 대해서 기본적인 틀이 필요하며 언어에 대한 이해가 필요하다. (디자인 패턴이 굉장히 중요) 단일 실패지점에 대한 이해가 필요하다. 단순한 누더기 코드가 아니라 프로그래밍언어와 스택의 특징을 고려하고 기본기를 갇춘 상태로 엔지니어링을 할 수 있어야한다.
기본기가 굉장히 중요하다. 운영체제 정말 중요하다. 이직을 할 때도 입사를 할 때도 기본은 언제나 중요하다. 반복해서 공부하면서 완전히 나의 것으로 소화를 한다면 무리없이 취업할 수 있을 듯하다. 성실성도 중요하다.

6. 개인 프로젝트의 빈약함을 커버하기위해서는 어떻게 해야할까요?

양이 적으면 퀄리티를 올려야 합니다. 서류를 보고 Topcit기반으로 시험을 치는 전형과 그날하루에 개발과 코딩테스트를 진행하는 두가지 전형이 존재합니다. 많이 잘해야 합니다. 회사는 일을 잘 할 수 있는 사람들을 뽑습니다. 다른 지원자와 경쟁하기위해서는 차별점이 있어야 하며 프로젝트의 수와 질이 떨어진다면 더 열심히 해라 더 많은 말을 해줄 수 없다. 잘해야 한다. 코딩을 잘하고 개발을 잘하고 설득을 잘해야 한다.

7. 코딩테스트를 통과하기에 유리한 언어는 무엇인가요?

C++, Java, Python 모두 똑같다. 본인이 편한거 하는것이 최고다. Linux에서 동작하는 프로그램을 구현해보아라 등의 문제를 받았을 때 조금 덜 코드를 짜기 위해서 Python을 짜는 것이 편하다.
물론 데이터분석직무라면 Python해라
책을 보면 목차가 있다. 알고리즘테스트도 똑같다 정형화 되어있으며 큰 범주에 대해서 카테고리화시키고 이후 세부적으로 쪼개 가며 공부하고 정형화시키면 크게 무리없이 합격할 수 있다. 뻔한이야기지만 이게 정석이다. 처음 듣는 이야기가 아닐 것이다. 이 말을 들었으면 좋겠다.

8. 데이터의 플로우를 관리해야하는 데이터 엔지니어이기에 프로젝트를 진행하기위해서는 데이터의 흐름이 필요합니다. 기업에서는 1tb이상의 데이터를 처리해본 경험을 원하지만 당장 도커를 사용할만한 프로젝트(배포할만한 안정성과 퀄리티를 가진)를 진행할 수 있는 프로젝트 또한 적은데 데이터엔지니어링 프로젝트는 어떻게 시작하는게 좋을까요?

데이터 구해서 해라 은근히 많다. 본인이 데이터에 맞는 기획을 하고 그에 해당하는 솔루션을 이끌어낸 다음 데이터를 활용해 서비스를 배포하는 프로젝트가 좋을듯하다. 간단한 것이라도 결과가 나온다면 충분하다. 날것의 데이터를 끌고 와서 전처리하고 활용하는 파이프라인 등이 매력적이다. 기업과 비교하지 말아라 기업정도의 퀄리티를 우리가 해낼 수는 없다. 작은 데이터를 사용해도 프로젝트를 진행한다면 충분히 의미가 있고, 기업에서 차원의 데이터를 다룰 수 없기에 빅데이터가 나에게 주어진다면 그 데이터를 어떻게 처리할 것인가에 대한 고민을 해보는 게 좋을 듯하다. 어떤 스택을 활용해서 데이터를 관리할지 어떻게 파이프라인을 짜야 효율적일지 등등
결론 일단 하고 기업차원의 데이터를 못 구하니까 만약 나에게 기업차원의 데이터가 주어졌을 때를 가정하고 본인 나름의 고민과 솔루션을 도출해봐라 학부생은 그것으로 충분하다.

데이터 엔지니어 cookbook
https://github.com/andkret/Cookbook
MLOPS 자료정리
https://spangled-ragdoll-9c1.notion.site/20d59d39141d44c4a000382380be2b71

profile
Git Hub: wlrma0108

0개의 댓글