728x90

Data Engineer(이하 데이터 엔지니어)로 커리어를 성장시키려고 고민하면서 가장 많이 한 일이 해당 직무의 메인 role이 무엇인지? 

데이터 분야에 어떤 직무들이 존재하는지? 그 직무들과의 차이점은 무엇인지?에 대한 것이었다.

 

내가 가고자 하는 커리어가 하는 일, 즉 사회에서 이 직무가 왜 필요한지를 알아야 적절한 커리어 방향을 세울수 있다고 생각하기 때문이다.

실제로 직무는 그냥 해당 일을 명칭하는 것이고 실제로 회사마다 어떤 일을 어떤 범위로 묶어서 해당 직무로 부를 지에 대해서 각각 다르다.

따라서 내가 이 직무를 하고 있다라기 보다는 해당 일들을 메인으로 할 것이고 해왔다는 것을 이해하는 것이 더 중요하다고 생각한다.

 

이미 블로그에 데이터 사이언스와 데이터 엔지니어를 간략히 비교해보기도 하고, 

데이터 엔지니어가 어떤 일을 하는 직무인지에 대해서도 정리한 적이 있다.

 

그리고 이후 내가 직접 데이터 엔지니어 일을 해보고, 관련된 커뮤니티에서 많은 사람들의 의견도 들어본 결과 

"데이터"와 관련된 모든 시스템/엔지니어 적인 개념에 대해 이해하고 다루는 직무라고 정리할 수 있었다.

(여느 직무와도 마찬가지로) 칼로 무를 자르듯 여기부터 여기까지가 데이터 엔지니어고 그 다음부터가 데이터 분석가가 하는일이야! 

라고 하기 힘들며, 결국은 개발팀이 아닌 데이터팀에 속한 엔지니어로서 "데이터"에 대한 이해와 커뮤니케이션이 가능해야 한다.

 

그렇지만 궁극적으로 데이터분야에서도 데이터엔지니어가 중심적으로 가야할 방향이 있을 것이며, 

더하여 기존의 백엔드 개발자와는 어떠한 차이점이 있는지도 정리해보려 한다.

 

 

데이터 엔지니어의 Main Role

정리 : 여러 시스템에서 모이는 데이터를 수집/가공/처리, 데이터 플랫폼 구축 및 관리

  • 데이터 엔지니어도 CS에 대한 백그라운드가 조금은 필요
    → 하지만 must는 아님.
  • 데이터 리터러시(데이터 주기)를 관리할 필요
    (탈퇴, 해지,고객 데이터 유지와 관련된 기간 맞추기 외에 금융회사의 경우는 개인정보를 다루므로 데이터 항목에 따라서 어떤 원천과 개인정보와 신용정보에 대한 분류 기준을 가지고 있느냐에 따라서 파이프라인에서 관리할 필요가 있다.)
  • 전체적인 데이터 시스템 구조에 대한 이해와 구축(데이터 아키텍쳐) → 데이터 전체 흐름에 대한 책임
  • 데이터 파이프라인 관리(데이터 수집/가공/처리)
  • RDB뿐 아니라 모든 데이터 저장소에 대한 이해(data lake, datawarehouse, datamart)
    → 가공해야 하는 데이터에 적절한 저장소를 판단할 수 있는 지식
    → 해당 데이터 베이스를 분석에 용이하게 모델링할수 있는 능력(DW는 기본적으로 join에 유용하게)
    → data mart는 가볍고 속도가 생명 / 바로 DW에 BI 툴을 연결해서 보는 것은 비효율적
  • 데이터 소스들에 대한 이해(정형 데이터, 비정형 데이터)
    → 가공할때 데이터의 속성에 따라서 적절한 도구를 활용할 수 있는 시각
  • 시각화할 수있는 기술
    -> 여러 Saas 서비스가 있지만 생각보다 많고 다양한 데이터를 감당할 수 없다. 
  • 데이터 라이프 사이클 관리
    → 어디서 데이터를 열고 닫아줄 것이냐?
    → 개인정보보호팀에서 정리해준 사안에 따라서 개인정보를 어떻게 어디서 불출할 것인지를 관리
    → 이런 개인정보는 DW에서 보면 된다 안된다를 정리하고 정해준다.
  • 최적화에 집중/ 데이터 플랫폼의 안정화
  • 전체 시스템에서 흐르는 데이터들에 대한 사전화/정리
    ->
    데이터 테이블 정의서 / ER Diagram 정의 및 정리(input은 어디고 output, destination은 어디인지)

 

연관된 다른 직무와의 비교

백엔드 개발자와 데이터 엔지니어의 차이

- 위에서 언급한대로 데이터 엔지니어는 "데이터"와 관련된 모든 것에 관여한다는 것이다. 

  • 다양한 종류의 데이터 저장소에 대한 개념을 깊게 이해하고 있어야 한다.
    -> BE가 운영 시에 활용하는 production database에 대한 개념에서 나아가서, DE는 많고 다양한 데이터들이 효율적으로 저장되고 처리될 수 있는 데이터저장소에 대한 개념을 잘 알고 있어야 한다.
  • 데이터가 "잘" 흐르고/처리/가공 될 수 있는 파이프라인 즉 시스템에 대한 이해가 BE보다 더 필요하다.
    -> 인프라 구축을 위한 devops 업무 및 지식 필요
  • 위의 사항에 추가하여 해당 시스템 내에서 데이터가 적절하게 가공되기 위해서는 무엇보다 "데이터"에 대한 이해가 필요하다
    -> data engineer = software engineer as focus on data / data infrastructure
  • software engineer에 비해 코드 작업하는 일이 적다
  • 문제를 해결하는 로직/ 접근 방식이 다르다
    → DE는 sql side로 로직을 작성한다.
    → 다루는 프로덕트가 다르기 때문에, 프로그래밍 코드보다는 데이터를 정의하고 다루는 sql side에 초점을 좀 더 맞춘다.
  • 주로 다루는 skill이 다르다. → DE는 sql도 main skill이다.
  • DE는 데이터 시각화 기술도 필요하다.

 

데이터 분석가/사이언티스트와의 차이

  • 업무를 통해 구분하자면, datawarehouse라고 불리는 분석계 데이터베이스까지의 데이터 흐름을 DE가 주관한다면,
    분석계 이후 데이터의 분석과 가공은 DA(데이터분석가)의 영역이라고 볼 수 있다. 
  • 회사에 따라서는 data mart 구성과 지표/대시보드 관리까지 DE가 하기도 하지만, 일반적으로는 DA의 영역이다. 

 

DA(Data Achitecture) 와의 차이 (참고)

데이터 엔지니어에 대한 직무에 대해 알아가다 보면 데이터 아키텍쳐라는 직무가 많이 언급된다. 

두 직무는 궁극적으로 DE와 어떤 차이를 지니고 있는 것일까?

  • Designing, developing, implementing, and translating business requirements and the overall organizational data strategy, including standards, principles, data sources, storage, pipelines, data flow, and data security policies
  • Collaborating with data engineers, data scientists, and other stakeholders to execute the data strategy
  • Communicating and defining data architecture patterns in the organization that guide the data framework
  • Leading data teams to develop secure, scalable, high-performance, and reliable big data and analytics software and services
  • Data modeling, integration, design, and data management: Data architects understand the concepts, principles, and implementation of data modeling, design, and data management. They can produce relevant data models and design the organization’s data flow.
  • Databases and operating systems: Data architects are experienced in the various SQL and NoSQL databases. They understand the advantages and drawbacks of each and how they can be set up effectively and securely across different operating systems (Linux, Windows) and environments (development and production).
  • Data architecture: Data architects know the best practices on data architecture for enterprise data warehouse development. They have a solid understanding of the organization’s data infrastructure and how different systems interact.
  • Data security and governance: Data architects understand the processes, roles, policies, standards, and metrics that ensure the effective and efficient use of data/information. Data architects are skilled in data governance strategies with a good understanding of the risks and mitigations of each. They ensure data governance is in line with the overall organizational strategy.
  • Communication and leadership: Data architects are usually leaders of the data management team; as such, they must communicate clear technical solutions to complex data problems to both technical and non-technical audiences.

즉, 데이터 아키텍쳐는 어떻게 보면 회사의 데이터 전반을 관장하고 방향성을 설계하는 관리자격 직무라고 볼 수 있다. 특히 데이터 중에서도 가장 중요한 보안이나 관리(탈퇴 시 폐기) 등에 대해서도 전략을 구상하고 실행해야 한다는 점에서 데이터 엔지니어와 큰 차이를 보인다.

 


 

 

사실 데이터 엔지니어 직무도 데이터가 많아지고 회사의 조직 규모도 커지면 세부적으로 나뉘어 진다.

데이터 플랫폼 - 시스템 구축 및 관리

파이프라인 관리 - ETL 가공 업무

BI/DW 엔지니어 - 데이터 저장소 모델링 및 관리

등등...

이렇다고 딱 정의할 수 있을 정도로 나뉘는 것은 아니고, 크게 위와 같이 세가지로 업무들이 보통 나뉘어지는 것 같다.

나도 결국은 업무를 하면서 약간의 방향성을 가지고 전문성을 가지면서도 데이터 분야에 대해 전반적으로 파악해나가야 하지 않을까 한다.

728x90

+ Recent posts