유시동물 대시보드
주요 메모 사항
1일차
진행 목록
- OpenAPI 유기동물데이터를 서드파티의 개념으로 지정하고 일마다 데이터를 Cloud Storage에 적재하는 작업
- 내부적인 대시보드를 위한 Superset을 GKE에 설치 (팀원)
- 외부로 서비스할 웹을 firebase hosting을 사용해 react로 호스팅 (팀원)
- OpenAPI 유기동물 데이터 중 변하지 않는 데이터들을 Cloud Storage에 적재 (팀원)
- 시도 조회, 시군구 조회, 보호소 조회, 품종 조회는 사실 변할 이유가 없음 RDB의 개념으로 보자면 부가적인 테이블임
필자는 진행 목록 중 1번을 진행, 먼저 생각난 2가지의 방법은 이렇다.
- VM 인스턴스를 하나 만들어 서버에서 Crontab을 사용해 데이터를 적재하는 방법
- Cloud Functions를 사용해 데이터를 적재하는 방법
- lambda를 생각했으나, GCP를 이용하기로 했어서 Cloud Functions을 찾아봤었음
사실 2번으로 진행하는 것이 맞겠지만, 사용경험이 전무하다보니 5일간의 프로젝트에서 가장 빠르게 완성되어야 할 작업이 늦어질까봐, 또 디테일한 작업이 가능할까? 라는 의문에 1번으로 진행했었음. (프로젝트가 마무리 될때쯤 Phase 1으로 업데이트 했다)
VM 세팅 과정
VM 세팅과정 중 실수
- VM 인스턴스의 OS는 Ubuntu 18.04 로 설치 (개인적으로 가장 친숙한 OS이고 쉬운 OS 라고 생각해서)
- GCP 관련한 라이브러리 중 필요한 라이브러리가 python 3.7 이상에서만 지원했었으나 이를 나중에 알았음
- 그러나 18.04 버전에서 패키지 저장소를 통해 제공하는 python은 3.6 까지였음.
- 이를 해결하기 위해서는 상위 버전의 python 소스 코드를 구해 직접 install 하는 과정이 필요했고 진행했음
- 진행중에 기존의 python을 삭제했더니 서버가 오류가 발생하는 문제가 생겼음.. 이 문제는 해결하는데 더 오랜시간이 걸린다고 판단했음.
- 그래서 인스턴스를 재설치 하면서 20.04로 설치를 진행했음
다시 시작한 서버 세팅 과정
작업의 편의성을 위해서 vsCode로 서버에 연결하는 작업 진행
vim 에디터나 편의성을 위한 라이브러리들 설치, 그리고 라이브러리들 update 진행
기본적으로 UTC 시간으로 세팅되어 있기 때문에 KST로 변경
- 따로 root로 진행하지 않고 ubuntu 기본 계정으로 진행
- Ubuntu에서는 Crontab의 로그 기록 기능이 자동으로 비활성화되어 있어서 활성화가 필요
- 데이터 스크립트 작동을 확인하고 crontab에 기록, `$ crontab -e`
- 이 과정에서 crontab은 사용자가 없는 쉘에서 행동한다 라고 알고있는데 이와 관련해 python 실행시 유저마다의 독립적인 환경에 따라 달라지지 않도록 기본 python3 을 전역적?으로 사용했었음 (pip install 등)
- Cloud Storage에 적재하는 스크립트를 데이터 스크립트 내부에 작성해서 데이터에 오류가 있으면 적재가 되지 않도록 진행
- VM 인스턴스 자체에도 일정예약을 걸어 인스턴스 자동 시작 종료 설정 (Cloud Console 에서 제공하는 기능)
이 외
vsCode에서 ssh를 통한 서버 접속이 가능한데, 설정하는 방법은 기술 블로그 를 참고했다.
2일차
1일차에 생성했던 VM 인스턴스에 Issue가 있었다. -> 해당 날짜에 해당하는 Data.csv 가 업로드 되지 않아 이를 확인하는 작업이 필요했다.
Issue 내용은 다음과 같다.
1. log에서 스크립트 error인지 확인했으나, 실행자체가 안되었다.
2. crontab 명령어가 error인지 확인 (서버에 접속해 1분뒤에 crontab를 통해 작동하도록 했다.)
- 2번이 문제없이 잘 작동했음.
3. 여기서 조금 헤맸던 것 같다. 분명히 서버에서 스크립트 에러가 아니고, crontab을 임의로 1분뒤에 설정해도 잘 작동했다.
4. 한참을 고민해본 결론이 VM 인스턴스가 실행되는 시간을 고려하지 않고 타이트하게 시간 설정을 했던게 문제였던 것 같다.
- VM 인스턴스 일정 관리에서 VM 인스턴스가 리소스를 낭비하는 것을 막기위해 시작 중지를 설정했었음.
- 기존에 작성한 VM 인스턴스 일정관리는 23:55 에 시작해 00:30에 종료하도록 했다.
- crontab은 00시 00분으로 동작하게 했었음.
5. 해당 내용을 수정하고 계속해서 다른 문제가 없는지 테스트하는 작업을 진행했다.
3일차
- Bigquery에 적재된 원시 테이블에서 Analytics Table을 팀원분이 예약 쿼리로 생성해주셨다.
1. SuperSet에 대시보드를 만들기 위해 Analytics Table에서 나올 수 있는 차트를 정리했고, 해당 차트를 만드는데 있어서 데이터를 검증했었다. -> BigQuery
2. Superset에서 확인한 데이터들을 사용해 차트를 생성했다.
4일차
3일차에 진행했던 Superset 차트는 이번 프로젝트 서비스의 내부 대시보드이다.
4일차에는 서비스할 Web에서 대시보드를 구현하기 위해 Superset의 차트 중 사용자를 위한 차트를 다시 검증하고 이를 Product DB에 적재하기 위한 쿼리를 작성했다.
5일차
4일차에 작성한 쿼리들을 사용해 팀원분이 Product Table(fireStore)를 새롭게 생성해주셨고 해당 DB에서 차트를 Web에 차트로 표현하기 위해 새롭게 JS 코드를 작성했다. (리엑트 라이브러리를 사용해 javascript 로 작성해야 했다.)
프론트 작업을 하려니 너무 힘들어서 팀원분들께 말씀드렸다.
- 현재 BigQuery에서 데이터가 업데이트 되었을 때 Product DB로 적재하는 작업을 다른 팀원분이 계속 하고 계셨는데 막히는 부분에서 도움을 드릴 수 있을 것 같아 이쪽으로 합류했다.
- BigQuery에서 데이터가 업로드 되었을 때의 트리거로 Pub/Sub을 사용하는 방법을 한번 봤던적이 있어서 해당 부분에 대해 조금 설명해드렸다. -> 이 서비스를 모르셔서 막히셨었다. 금방 해당 기능을 완성하셨음
그리고, 프로젝트 마무리를 위해 git repo를 정리했다.
Original repository
GitHub - data-dev-course/project2-team1
Contribute to data-dev-course/project2-team1 development by creating an account on GitHub.
github.com
Programers repository
아래의 링크는 사용자 서비스 웹이다!
https://strayanimal.web.app/
Animal STAT-US Tracker
strayanimal.web.app
6일차
프로젝트는 5일차 까지 진행하는게 원칙이었으나, 아쉬움이 남아서 개인적으로 주말동안 더 진행했었다.
해당 내용에 대해서는 새로 포스팅한 글에서 다루었다!
Cloud Function
Google Cloud Functions로 공공데이터 openAPI를 사용해 Cloud Storage로 적재 (Python)
ETL 주요 메모 사항 과정을 설명하기 이전에 해당 서비스를 사용하게된 계기를 설명 프로젝트를 진행하는 과정에서 주기적으로 데이터를 가져오는 과정이 필요했었음 Cloud Functions을 사용한 경험
usiohc.tistory.com
Cloud Scheduler
Google Cloud Scheduler로 Cloud Functions 실행하기 (HTTP)
Cloud Scheduler 주요 메모 사항 이전에 작성한 Cloud Functions 함수를 crontab 처럼 스케줄링 하는 작업 이전에 작성한 Cloud Functions Google Cloud Functions로 공공데이터 openAPI를 사용해 Cloud Storage로 적재 (Python)
usiohc.tistory.com
'프로그래머스 데브코스-데이터 엔지니어 > TIL(Today I Learned)' 카테고리의 다른 글
06/06 42일차 데이터 파이프라인과 Airflow (2) (0) | 2023.06.06 |
---|---|
06/05 41일차 데이터 파이프라인과 Airflow (1) (0) | 2023.06.05 |
05/26 35일차 데이터 웨어하우스 관리와 고급 SQL과 BI 대시보드 (5) (2) | 2023.05.26 |
05/25 34일차 데이터 웨어하우스 관리와 고급 SQL과 BI 대시보드 (4) (0) | 2023.05.25 |
05/24 33일차 데이터 웨어하우스 관리와 고급 SQL과 BI 대시보드 (3) (1) | 2023.05.24 |