프로그래머스 강의 '실리콘밸리에서 날아온 데이터 엔지니어링 스타터 키트 with Python' 을 수강했다. (6기)
이 강의 내용을 정리하여 공유하고자 한다.
https://programmers.co.kr/learn/courses/12916
2주차는 데이터 엔지니어의 일상, Cloud Computing 기본개념 & AWS 그리고 DW(Data Warehouse) & Redshift가 무엇인지에 대한 내용을 다루었다.
Q. 데이터 엔지니어가 데이터를 production DB(ex. mySQL 등)에서 DW로 단순히 옮기는 것이 아닌, 어떤 의도를 가지고 Extract하는 경우는 없을까요? 원래라면 데이터 분석가나 ML 사이언티스트가 이상치들을 제거하는 코드를 매 번 앞단에서 실행하는 것보다 데이터 엔지니어가 DW로 옮기는 과정에서 이들을 제거한다면 더 효율적일 것 같아서 입니다.
A. 필요한 것만 골라서 가져가는 것도 나쁘진 않지만, 원하는 것이 추가될 때 마다 DE가 추가적으로 손이 가게된다.
그래서 일반적으로 전체를 다 가져다가 갖다놓고, 분석가가 필요한 것을 골라 사용하는 경우가 많다.
Q. Cloud 기반 서비스보다 On-prem에서 직접 구축하는 것이 더 유리한 경우가 있을까요?
A. 보안이 아주 중요한 경우에는 온프렘으로 구축한다. 금융,개인정보를 다루는 회사는 보수적으로 온프렘을 고수하기도 함. 그리고 어느 순간부터는 클라우드가 더 비싸지기도 한다. 이럴 경우 다시 온프렘으로 돌아가기도 한다.
그러나 엄청난 트래픽을 다루는 넷플릭스는 95%이상을 AWS에서 돌리는 중이다. 이것은 엔지니어의 능력차이인 것으로 보인다. 인턴, 주니어 안뽑고 잘하는 사람들만 데리고 있으니 클라우드를 쓸 때도 탄력적으로 오토스케일링을 잘 구현해놓아서 가능한 것 같다.
Q. 기존 데이터 분석에서 데이터 엔지니어로 직무 전환 준비중입니다. 가고자 하는 회사는 airflow을 포함한 다양한 기술 스택을 요구하는데요. 이번 수업과 병행해서 준비하면 좋은 공부가 어떤 것인지 추천해주시면 감사하겠습니다. 혹시 추천해주신 공부가 여러 가지라면 우선순위도 같이 알려주시면 감사하겠습니다.!
A. 기본은 SQL, Python 코딩, Airflow(ETL tool) 데이터가 커지면 SPARK(분산처리) 공부 → ML공부해서 ML 엔지니어, DEVOPS 공부해서 ML OPS등등으로 발전도 가능함
KANBAN 느슨하게, SCRUM 빡세게 (KANBAN, SCRUM 차이점 참조)
2주 정도의 스프린트로 반복한다. 2주 빠르게 돌리고, 리뷰하고, 다시 2주 빠르게 돌리고..
다음 일주일 동안 Data Pipeline 이슈가 생기면 해결한다. 주말도 예외가 아니다.
내가 24시간동안 무엇을 했는지, 앞으로 24시간 동안 무엇을 할 것인지 등등 빠르고 짧게 공유하는 미팅
(DE <-> DA, DE <-> DS, DA <-> DS)
지속적으로 파이프라인을 관리해야하므로 노가다라고 느낄 수 있다.
airflow를 잘 쓰면 Backfill하기 좋다 -> 사고, 데이터 품질 문제 등 과거의 데이터를 불러와야 하는 경우에 대처하기 좋음
데이터 분석가 한 사람이 한 시간 정도 시간 내서 내부 직원들로부터 다양한 데이터 관련 질문에 답을 해줌
목표 달성현황, 이슈 생긴 파이프라인에 대한 리뷰, 리쿠르팅
문제가 생겼을 때 왜 생겼고, 어떻게 막았는지, 어떤 피해가 생기는지 작성하는 것
문제가 생길 수는 있찌만 반복되는 문제가 생기면 안 됨!
컴퓨팅 자원을 네트워크를 통해 서비스 형태로 사용하는 것
클라우드는 비용관리를 잘 해야한다. 계속 켜놓으면 오히려 돈이 더 많이든다.
탄력적으로 필요한 만큼만 사용하기!
클라우드 컴퓨팅이 없다면?
온갖 장비를 직접 준비해서 설치해놓아야함. 뭐 잘못건드리면 서버 꺼지고 난리남
너무 번거롭다. 장비 추가하려면 2~3개월은 걸림.
가장 큰 클라우드 컴퓨팅 서비스 업체
트래픽이 가장 높은 날(블랙 프라이데이)과 트래픽이 가장 낮은 날(여름 연휴기간) 의 트래픽 차이는 30배나 된다!
탄력적으로 대응하는 요구가 발생한다.
아마존 사이트를 운영하던 서버들 중 놀고 있는 서버들을 다른 업체에게 렌트해주는 것이 AWS의 시작이었다.
에어플로우가 설치된 서버를 이용할 수 있는 상품
Postgres 기반으로 만들어져서 상당히 유사하다.
다만 VARCHAR(CHARACTER VARYING)은 POSTGRES에는 제한이 없으나, REDSHIFT는 제한이 있다. 이것 유의할 것
Dense Storage : 고정비용
Managed Storage : 가변비용
분산되서 저장되어야하는데, 어떻게 분산될지를 개발자가 정해줘야하는 구조라서
python으로 사용자가 직접 함수를 추가할 수 있음
먼저 S3에 파일을 옮겨놓고, S3에서 REDSHIFT로 COPY 명령어 사용함