brunch

You can make anything
by writing

C.S.Lewis

by 익숙하지않은것 Sep 08. 2021

데이터 엔지니어링의 과제

어떤 문제를 해결하려고 엔지니어링이 필요한가?

데이터 엔지니어링이란 무엇인가?


이전 글에서는 데이터 엔지니어링을 아래와 같이 간단하게 정의했다.

데이터를 생성하는 시스템을 만드는 일을 Data Engineering (이라고 부른다.)
(이전 글: 데이터 사이언스 외에 해야 할 일들)


결국 데이터 엔지니어링의 역할은 다른 사용자 혹은 시스템이 필요로 하는 형태로 데이터를 만들어내는 것이다. 그렇다면 어떤 문제를 해결하려고 하기에 데이터 '엔지니어링'이라는 단어를 사용하는 걸까?

오늘날의 데이터 엔지니어링은 크게 논리적/물리적 관점에서 아래와 같은 문제를 해결해야 한다.


논리적인 문제


준비된 데이터의 형태가 사용하고자 하는 데이터의 형태와 다를 수 있다. 예를 들어 우리 시스템에는 사진이 저장되어 있는데, 다른 시스템은 텍스트 정보만을 다룰 수 있다면 어떨까?

이럴 때에는 데이터 엔지니어링을 통해 데이터의 형태를 변환하는 작업이 필요하다.


물리적인 문제


처리해야 하는 데이터의 양으로 인한 공간의 문제, 데이터를 처리하는 데 걸리는 시간으로 인한 속도의 문제를 해결해야 한다. 이는 아무리 거대한 시스템이라도, 결국 물리적인 한계를 극복할 수 없기 때문이다. 만약 당신에게 웹에서 사용할 수 있는 무한한 저장 공간이 주어져 있더라도, 실제로 어딘가에서 당신의 데이터를 저장하는 시스템을 구성하는 사람은 디스크 크기의 한계를 고려해야만 한다. 당신에게 1달 내내 무한하게 쓸 수 있는 인터넷 요금제가 있더라도, 당신이 단위 시간당 받거나 보낼 수 있는 데이터의 양에는 전송 기술과 매체에 따른 물리적인 한계가 존재한다.



결론


기록이라는 것이 존재한 시점부터 우리는 정보를 기록하고, 처리하는 기술을 발전시켜 왔다.

그리고 컴퓨터가 생기면서는 그 정보를 처리하는 기술 중, 원하는 형태의 데이터를 만들어 내는 기술을 데이터 엔지니어링이라고 불렀다. 그렇다면 현대의 데이터 엔지니어링은 어떤 문제를 해결하고 있는가? 데이터의 형태를 변환하는 문제, 공간의 문제, 속도의 문제 이 3가지를 해결하고 있다.




곁가지

기억력이 좋은 사람이라면, 빅 데이터라는 개념이 유행하기 시작할 때 사람들이 빅 데이터의 특징으로 제시한 3가지를 기억할 것이다. 바로 종류가 다양하다, 양이 많다, 속도가 빠르다. 이 3가지이다. 사실 이게 위에서 제시한, 데이터 엔지니어링이 해결하고자 하는 3가지 문제이다.

데이터 엔지니어링으로 다음 시스템으로 데이터를 보냈을 때, 다음 시스템에서도 다른 목적으로 데이터 엔지니어링을 수행해야 할 수도 있다. 이런 식으로 계속해서 데이터가 다음 시스템으로 넘어가면서 연결된 것을 데이터 파이프라인(Data Pipeline)이라고 부른다. 데이터 엔지니어링이란 사실 이 데이터 파이프라인을 구축하는 일이다.

작가의 이전글 데이터 사이언스 외에 해야 할 일들
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari