본문 바로가기

220305금 - elasticbeanstalk 사용해서 api 띄우기 당신은 돈을 내기 위해 태어난 사람 ~(...) EBS도 돈이 나가는구먼. 로드밸런서.. 거 kinesis도 메세지 몇 개 던지지도 않았는데 저렇게 나왔다. 쩝..서울 리전이어서 더 비싼 것도 있는 듯하고. 이래저래 서버 띄울 일이 생겨서 aws의 elasticbeanstalk를 써보게 되었다. 어디서는 lambda로 띄우는 법도 있던데 aws 문서를 대충 보니 사이트 패키지를 람다와 연결된 ec에 설치하는 것 같다. EBS도 완전 관리형이라 한데 최소한의 설정방법은 알고 해야 안 헤맨다. nginx 502에러가 진짜 복병이었다....이 에러는 nginx 설정을 잘못해서 날 수도 있고, app에서 나는 에러때문에 생길 수도 있다. 에러엔 역시 콘솔로 접속해서 로그를 봐야 함; EB 브라우저에서 로그를 보..
220227일 - Kinesis 로 stream data 처리해보기 AWS가 확실히 문서나 피드백 수집이나 활용이나..훨씬 사용자 친화적이다. 파이프라인 만드는 것도 쉽다. 유튜브에서 활용사례 등 자료 찾기도 좋다. 괜히 1등하는게 아니다. 최근에 인터뷰 준비를 하면서 클라우드 서비스로 데이터 레이크 - 데이터 웨어하우스 를 구축하는 부분을 많이 조사했다. 조사하면서 AWS가 상당히 데이터플랫폼 구축에 친화적인 듯 하여 한번 호다닥 만들어 보기로 했다. 조사하면서 오 이런 것도 됨?하거나 해보면 좋은 것들은 다 다뤄볼 예정. 데이터는 크게 신경쓰지 않고 더미로 던질 것이다. kinesis로 받은 데이터를 s3나 RDS에 집어넣기 RDS의 트랜잭션 로그를 가져와서 실시간으로 s3에 집어넣기 간단한 데이터 레이크 → 웨어하우스 플랫폼 구축해보기 등등.. 개인적으로 클라우드 ..
220226토 - 기본 ELT pipeline 완료 spotify api에서 artist, track 정보를 이용해서 관련 테이블 내용을 보충한 다음 저장하려 했지만 spotify db는 NoSQL로 유사데이터들이 다량으로 검색되어서 이 부분은 제외하고 elt 작업을 진행했다. get_rawdata에서 raw data를 가져와서 적절히 정제한 다음 artist, user, track, user_history DB테이블에 집어넣는 작업이다. 각 테이블의 키 참조 조건을 고려하다보니 단순히 get_data → transform → store에서 먼저 저장해야 하는 테이블의 순서가 생기면서 밑과 같은 구조가 나왔다. 여기에서 spotify 데이터를 어떻게 처리할지 결정한 다음 album, track, artist 데이터를 업데이트하는 작업을 추가할 수 있겠다...
220225금 - NoSQL 데이터를 SQL에 넣는다는 건 다른 일들로 인해 작업이 끊겼다. spotify에서 가져온 artist, music 데이터를 사용해서 정형데이터를 보충해주려고 하는데. 문제는 역시 스쳐 지나가지 않는다. dataframe에 spotify 데이터를 넣어주는 작업만 하면 elt 파이프라인 70%는 끝나는데.. NoSQL 데이터를 SQL에 넣으려할 때 생기는 참사(?) 질의를 하면 유사한 문서들이 다량으로 발견된다.예를 들어, artist: Lesuire, track:Nobody 로 검색하면무려 item이 4개나 검색된다. item 내용이 길어서 track 이름 만 뽑아보면 ['Nobody (feat. Gold Link)', 'Nobody (feat. Gold Link)', 'Nobody (feat. Gold Link)', 'Nobody']..
220225금 - airflow bashoperator에서 쉘스크립트 실행 시 주의점 밑의 코드처럼 bash_command 파라미터에서 쉘파일 실행 문자열을 넣을 때 sh 뒤에 space를 넣어줘야 한다. 그렇지 않으면 jinja template을 적용하려고 해서 에러가 난다. t2 = BashOperator( task_id="bash_example", # This fails with 'Jinja template not found' error # bash_command="/home/batcher/test.sh", # This works (has a space after) bash_command="/home/batcher/test.sh ", dag=dag, )
220220일 - SQL과 NoSQL 다시 정리할 겸. 데이터엔지니어로 회사의 스택들을 보면 nosql보다는 sql쪽이 훨씬 많이 보이긴 한다. 계속 관계형 디비를 사용해와서 새로운 DB로 바꾸는 비용을 들이고 싶지 않아서 일수도 있을 것 같기도 하고. 분석쪽은 sql을 주로 많이 이용하니 다른 팀과의 데이터사용을 고려해서 관계형 디비를 사용할 수도 있을 것 같고.. 일관성 때문에 유연성이나 스케일아웃 문제에도 불구하고 sql을 더 쓰는걸까. 데이터 저장하면서 스케일 아웃이 필요한 시기가 있을 것이고 관계형DB는 스케일아웃에는 적합치 않다 들었는데. 어떻게 처리하고 있는걸까? 데이터레이크 쪽은 nosql로 하고, elt 작업으로 처리한 분석을 위한 데이터는 sql을 사용하고. 그런걸까? -> 생각해보면 sqldb의 데이터가 얼마 이상이고 튜..
220218금 - airflow dag file에서 내 module file 사용하기 dag py file을 작성하면서 나의 source 파일을 import해오는데 import가 안 된다고 에러가 나서 찾아보다 공식문서가 너무 친절하게 가이드를 해두어서 정리해본다. https://airflow.apache.org/docs → 의역있고, 적당히 정리해서 표현하기도 합니다. airflow 사용하시는데 도움이 되었으면 좋겠습니다. :)) Module management Airflow는 airflow의 configuration과 DAG에서 개인 파이썬 모듈(즉 나의 파이썬 코드)을 사용할 수 있도록 해두었습니다. 이 문서는 어떻게 커스텀 모듈을 생성하고 에어플로우가 그걸 제대로 로드할 수 있도록 가이드할 것입니다. 보통 에어플로우 배포에 보통 소스코드, 라이브러리 형태의 개인코드를 함께 사용해서..
220215화 - 데이터 탐색 #2 주말에 거사?를 치루고 다시 프로젝트로 돌아왔다. 잘 한 것같아 다행이나 다음 관문이 또 문제... 어쨋거나, 이 프로젝트. 이렇게 저렇게 하면 금방 될줄 알았는데..아니다. 누군가가 정리해준 거나 있는 디비를 가지고 구현하는 게 아니다보니 모든 걸 다 만들어야 한다. DB도 설계해야하고, 데이터도 탐색해야 해서 어떤 데이터를 삭제하고, 수정하고, 보완하고, 어떻게 새로운 데이터를 만들어낼지 찾아야 하고, 결코 빠르게 끝날 일이 아니었다. 이것만 붙잡고 있는 것도 아니니.. DB나 프로젝트 관련 스택에 대해 모르거나 궁금한 것들 찾아보고 정리도 해야 하고. 사실 대충 파이프라인만 만들어낸다 생각하면 아무렇게나 만들 수 있지만 또 그건 무슨 의미가 있고, 그렇게 해서 뭐를 얻어갈까 싶어서 데이터 들여다보면..