주니어 데이터 엔지니어 우솨's 개발일지

데이터 엔지니어링 62일차 TIL 본문

데브코스

데이터 엔지니어링 62일차 TIL

우솨 2024. 6. 30. 10:16

학습내용

Nginx란?
- 보통 웹서버들의 앞단에 로드밸런서(Load Balancer)로 사용
- 동시에 요청을 로그하는데 사용(HTTP 요청헤더와 응답헤더 내용을 기록)
        - 보통 이 로그를 logstash등의 툴을 사용하여 GDFS나 Kafka로 푸시한다.

 

Data Drift로 인한 모델 성능 저하
- ML모델에서 가장 중요한것은 훈련 데이터
- 시간이 지나면서 훈련에 사용한 데이터와 실제 환경의 데이터가 다르게 변화.
        - 이를 Data drift라고 부르며 이를 모니터링하는 것이 중요하다
=>> 주기적으로 ML모델을 다시 빌딩해주는 일이 필요함 !


A/B테스트란?
- 온라인 서비스에서 새 기능의 임팩트를 객관적으로 측정하는 방법
        - ex) 의료쪽에서 무작위 대조 시험(Randomized Controlled Trial)
- 새로운 기능을 론치함으로 생기는 위험부담을 줄이는 방법
        - 100%의 사용자에게 론치하는 것이 아니라 작게 시작하고 관찰 후 결정
        - 실제 예제 : 추천을 기계학습 기반으로 바꾼 경우
                - 먼저 5%의 사용자에게 론치 후 나머지 95%의 사용자와 매출액 등 중요지표 기반 비교
                - 5%, 10%, 20% 이런 식으로 점진적으로 높이고 최종적으로 100%로 론치
- 보통 사용자들을 2개의 그룹으로 나누고 시간을 두고 관련 지표를 비교
        - 한 그룹은 기존 기능에 그대로 노출(control)
        - 다른 그룹은 새로운 기능에 그대로 노출(test)
- 가설에서 영향받는 지표를 미리 정하고 시작하는 것이 일반적이다.
        - 지표의 경우 성공/실패 기준까지 생각해보는 것이 필요하다.

DevOps
- 개발자가 만든 코드를 시스템에 반영하는 프로세스(CI/CD)
- 시스템 모니터링 그리고 이슈 감지시 escalation 프로세스 수행(On-call 프로세스)

MLOps
- DevOps가 하는일과 동일하지만 개발자 코드가 아니라 ML모델이 대상이 된다.
- 모델을 계속적으로 빌딩하고 배포하고 성능을 모니터링한다.
        - ML모델 빌딩과 프로덕션 배포를 자동화 : 계속적인 모델 빌딩(CT)과 배포
- 모델 서빙 환경과 모델의 성능 저하를 모니터링하고 필요시 escalation프로세스를 진행한다.
        - Latency의 중요성
        - Data drift 측정

Avro란?
: Row-based 데이터 포맷으로 Binary 포맷이다.
- 2009년 Hadoop Open Source 프로젝트의 하부 프로젝트로 시작
- Parquet와 비교
        - Parquet는 Column-based 이고 Avro는 Row-based이다.
        - Parquet는 Spark나 DW등에서 데이터 분석용으로 배치 쿼리 수행시 더 적합한 포맷이다.
        - Avro는 데이터 송수신이나 스키마 변경 감지등에 더 최적화된 포맷이다.