9.1 데이터 서빙의 일반적인 고려 사항
9.1.1 신뢰
- 데이터 검증: 정보를 정확하게 나타내기 위해 데이터를 분석
- 데이터 관찰 가능성: 데이터와 데이터 프로세스에 대한 지속적인 뷰를 제공
- 최종사용자 및 업스트림 이해관계자와 서비스 수준 협약(SLA), 서비스 수준 목표(SLO)에 대한 신뢰를 쌓아야함
9.1.2 사용사례는 무엇이며 사용자는 누구인가?
- 데이터는 보고서와 대시보드를 보는데 그치지 않고, 행동으로 이어질 때 최상의 효과를 발휘한다.
- 사용사례를 모색할때는 ‘어떤 행동을 트리거하며 누가 수행할 것인가’를 고려하고, 고객의 기대와 목표를 이해해야한다.
9.1.3 데이터 제품
- 요구사항과 맞지 않게 단순히 구축하는 것은 전형적인 엔지니어링 실수
- 좋은 데이터 제품에는 긍정적인 피드백 루프가 있다.
9.1.5 셀프서비스 여부
9.1.6 데이터 정의 및 논리
- 데이터의 유용성은 궁극적으로 데이터의 정확성과 신뢰성에 근거
- 데이터 정의와 논리를 공식적으로 선언하면 데이터의 정확성, 일관성 및 신뢰성을 보장하는데 큰 도움이 된다.
- 데이터 정의: 조직 전체에 이해되는 데이터의 의미
- 데이터 로직:데이터로부터 특정지표를 도출하는 공식
9.1.7 데이터 메시
- 모든 도메인 팀은 두가지 측면을 담당
- 각 팀은 데이터를 사용할 수 있도록 준비해서 다른팀에 데이터를 제공할 책임이 있다.
- 각 팀은 잠재적으로 셀프서비스를 위한 대시보드와 분석을 실행 할 수 있다.
9.2 분석
9.2.1 비즈니스 분석
- 비즈니스 분석에서는 과거/현재 데이터를 사용해 전략적이고 실행가능한 결정을 내린다.
- 통계 및 추세분석과 함께 도메인 전문지식과 인간의 판단이 혼합되어 사용된다.
- 대시보드, 보고서, 애드혹 분석 등의 형태로 제공된다.
9.2.2 운영 분석
- 비즈니스 분석과 다르게 데이터를 사용해 즉각적인 조치를 취한다.
- 실시간 갱신이 비교적으로 중요하며, 문제해결의 중요한 키가 된다.
9.2.3 임베디드 분석
- 데이터 어플리케이션이라고 하며, 어플리케이션 자체에 대시보드가 내장된 경우가 많다.
9.3 머신러닝
- ML, 데이터 과학, 데이터 엔지니어링 및 ML 엔지니어링의 경계가 점점 모호해 지고 있고, 경계는 조직마다 크게 다르다.
9.4 데이터 엔지니어가 ML에 관해 알아야 할 사항
- 고전적인 ML의 작동방식과 딥러닝의 기본을 이해하는것은 데이터 엔지니어에게 매우 유용하다.
- 데이터 캐스캐이드
9.5 분석 및 ML을 위한 데이터 서빙 방법
9.5.1 파일 교환
- 데이터 서빙 어디에서나 가능하며, 다양한 용도로 사용 할 수 있다.
- 객체 스토리지를 통한 교환은 일반적으로 ‘데이터 공유’로 간주된다.
9.5.2 데이터베이스
- 데이터베이스를 통해 데이터를 제공하면 스키마로 인해 데이터에 순서와 구조를 부여하고, 복잡한 접근정책을 작성 할 수 있고, 계산 집약 쿼리와 높은 쿼리 동시성의 성능을 제공한다는 장점이 있다.
- 데이터베이스는 사용사례에 따라 최대한 클러스터를 분할하여 팀마다 쿼리비용을 계산할 수 있도록 권장한다.
9.5.3 스트리밍 시스템
9.5.4 쿼리 페더레이션
- 분석, 머신러닝 및 역 ETL을 위한 데이터 서빙분산 쿼리 가상화 엔진이 OLAP 시스템에서 데이터를 집중 관리하지 않고도 쿼리를 처리할 수 있는 방식으로 인식되고 있다.
- 최종 사용자가 여러 시스템에 쿼리 할 수 있다는 것에 유의하여, 원천의 리소스를 과도하게 소비하는 것을 막아야 한다.
9.5.5 데이터 공유
9.5.6 시맨틱과 메트릭 계층
- 고품질의 쿼리를 위해 다양한 도구를 사용하여 프로세스를 자동화 하고, 일관성, 유지보수 및 지속적인 개선을 촉진한다.
- 메트릭 계층: 비즈니스 로직을 유지 및 계산하는 도구로, BI 도구 또는 변환쿼리를 작성하는 SW에서 사용 (루커, dbt)
9.5.7 노트북에서의 데이터 서빙
- 데이터 과학자는 데이터 탐색, 모델 훈련 등의 용도로 노트북을 사용하는 경우가 매우 많다.
- 노트북은 ‘가벼운’운영에 사용하고, 고부가가치 프로젝트에는 완전한 운영 프로세스를 사용한다.
9.6 역 ETL
- OLAP 데이터베이스에서 원천 시스템으로 다시 적재해 제공하는 것을 말한다.
- Reverse ETL은 본질적으로 피드백 루프를 형성하기 때문에, 과도한 비용낭비를 막기 위해 세심한 모니터링 및 감시 체계를 구축해야 한다.
9.7 함께 작업하는 사람
- 아래가 대표적이나, 여기에만 국한되지 않음
- 데이터 분석가
- 데이터 과학자
- MLOps/ML엔지니어
- 비즈니스 이해관계자, 경영진
9.8 드러나지 않는 요소
서빙은 데이터가 최종 사용자의 손에 들어가기 전에 상태를 확실하게 관리할 수 있는 마지막 기회이다.
9.8.1 보안
- 서빙 단계는 가장 큰 보안 위협에 노출되어 있다.
- 최소 권한의 원칙과 업무에 필요한 접근 권한만 제공한다.
- 사용되지 않는 데이터 제품은 확인 후 폐기하자.
9.8.2 데이터 관리
- 고품질의 신뢰할 수 있는 데이터에 접근할 수 있도록 하는것이 중요하다.
- 비즈니스 로직과 정의를 표현하는 엄격한 데이터 모델링과 시멘틱과 메트릭 계층을 서빙 계층에 통합하자.
9.8.3 데이터 옵스
9.8.4 데이터 아키텍처
- 데이터 서빙단계에서는 피드백 루프가 빠르고 긴밀해야 하므로, 사용자는 필요할 때 데이터에 최대한 빨리 접근할 수 있어야 한다.
- 데이터 과학자들은 로컬 컴퓨팅을 좋아하므로, 적절한 운영 아키텍처를 만들 수 있는 클라우드 환경의 공통 시스템을 장려한다.
9.8.5 오케스트레이션
- 중앙집중식 or 분산식 오케스트레이션 에 따라 고려사항이 달라진다.
- 분산식은 소규모 팀에서도 데이터 흐름을 관리 할 수 있지만, 팀 간 조율에 대한 부담이 커진다.
- 중앙집중식은 작업을 조정하기 쉽지만, 단일 운영자산 보호를 위한 높은 표준, 자동화된 DAG 테스트, 게이트 키핑이 필요하다.
9.8.6 소프트웨어 엔지니어링
9.9 결론
- 데이터 엔지니어링 수명주기는 논리적으로 서빙 단계에서 종결되며, 피드팩 루프가 발생한다.
개선 --> 구축--> 학습
- 새로운 피드백을 열린 마음으로 받아드리고, 항상 개선할 방안을 모색한다.