분류 전체보기
-
[Airflow] 에어플로우 Main, MySQL 서버 IP 주소 변경으로 인한 Airflow woker 실행 문제 해결(Feat. Docker container)Airflow 2021. 9. 7. 23:50
🙊 배경설명 추천 Airflow를 1.10.9버전에서 1.10.14버전으로 upgrade하면서 Airflow main 서버와 Airflow MySQL 서버 IP 주소가 바뀌었고, 그로인해 이전 IP 주소를 보고 있던 worker는 실행되지 못하고 있었다. 🙈 문제점 keyword_train은 keyword_product 라는 ec2 서버 안의 컨테이너에서 worker로 실행되고 있었고, 새로운 서버의 IP 주소를 설정하기 위해서는 airflow를 처음 실행할 때 생성되는 airflow.cfg에 바뀐 주소값들로 변경해야 했다. 그러나, 문제는 처음 이미지로 빌드되어 컨테이너가 실행될 때 Dockerfile의 기본 명령어가 반영된다는 점이다. 즉, 컨테이너 실행의 베이스가 되는 Dockerfile 내부의 C..
-
[GCP] Google Cloud Functions cold start(함수 실행 지연 현상) 문제 해결(feat. Pub/Sub & BigQuery)GCP/Cloud Functions 2021. 9. 5. 23:45
🙊 배경설명 GCP에서 Pub/Sub 데이터를 BigQuery에 적재하기 위해 Cloud Functions를 사용하여 중간에서 데이터 전달 역할 로직을 구현했다. 반복적인 내부 소스코드를 수정(빅쿼리 테이블 필드 추가)하고 배포 하게되면, 배포 즉시 함수가 동작하지 않는 문제가 발생했다. 따라서 Cloud Functions 기본 로직에 대해 알아봅시다 💃 1. Cloud Functions = Severless fuction => 즉, Auto Scaling으로 트래픽에 맞는 인스턴스 수를 조정하여 함수 제공 2. GCP Cloud Functions의 인스턴스 시작 조건 함수를 새로 배포하는 경우 증가하는 트래픽을 처리하기 위해 인스턴스를 확장 또는 대체하는 경우 3. GCP Cloud Functions ..
-
[GCP] Google BigQuery 빅쿼리 Schema 설계(feat. json 타입)GCP/BigQuery 2021. 8. 31. 23:17
JSON 타입의 데이터를 BigQuery에 적재하려고 할 때 각 필드별 데이터 타입에 맞춰 테이블 스키마를 설계해야 하는데, 하위 레벨의 nested 구조로 이루어진 json 타입에 맞춰 스키마를 설정하는 방법입니다. Array : [] 리스트안에 string으로 이루어진 데이터 value 타입 id:”1", name:”abc”, age:”20", address_history: [“current”, “previous”, “birth”] BigQuery 스키마 여러개의 문자열들이 반복되어 이루어져 있으므로, Type: STRING Mode: REPEATED Struct: {} 딕셔너리 안에 여러개의 key-value 값들로 이루어진 데이터 id:”1", name:”abc”, age:”20", address..
-
[GCP] Pub/Sub 개념 정리GCP 2021. 8. 21. 00:14
공식 문서 : https://cloud.google.com/pubsub/docs/overview GCP 콘솔 설명 내용 : https://cloud.google.com/pubsub 내용 요약 지연시간을 100밀리초 단위로 하는 비동기식 통신 서비스가 가능함 데이터를 수집하고 배포하는 스트리밍 분석 및 데이터 통합 파이프라인에 사용 Publisher는 처리와 상관 없이 Pub/Sub 서비스에 이벤트를 보내어 Subscriber와 비동기적으로 통신함 저렴한 비용과 낮은 가용성의 Pub/Sub Lite 서비스도 제공하고 있음 Pub/Sub의 용도는 최종 사용자와의 통신이 아닌 서비스 간 통신 사용사례 여러 클라이언트 이벤트 동시 수집 후 스트림 처리 도구(Dataflow)를 사용하여 DB(BigQueyr, B..
-
AWS CodePipeline으로 추천 API 모델 배포하기프로젝트 회고록 2021. 8. 16. 23:08
CodPipeline 아키텍처 보러가기 https://ninano1109.tistory.com/168 API 모델 CodePipeline 아키텍처(Feat. 검색어 추천 API 배포) keyword_train DAG에서 검색어 학습 후 docker image 빌드 및 FastAPI 컨테이너를 띄우기 위해 필요한 모든 파일을 S3 버킷 내 latest/latest.zip(default로 지정!) 이름으로 업로드 codepipeline은 latest/lates.. ninano1109.tistory.com [Airflow DAG - Keyword_train] keyword_train에서 FastText 모델로 학습 후 weight 파일이 만들어짐. 예를 들어 A 인풋이 들어왔을 때 B 아웃풋을 리턴하는 로직의..
-
API 모델 CodePipeline 아키텍처(Feat. 검색어 추천 API 배포)AWS/CodePipeline 2021. 8. 16. 00:24
keyword_train DAG에서 검색어 학습 후 docker image 빌드 및 FastAPI 컨테이너를 띄우기 위해 필요한 모든 파일을 S3 버킷 내 latest/latest.zip(default로 지정!) 이름으로 업로드 codepipeline은 latest/latest.zip을 센싱하고 있다가 변경 사항이 감지되면 trigger Source stage latest/latest.zip를 build stage로 전달함 Build stage latest.zip을 압축 해제 후 docker image build 및 ECR에 해당 이미지 push DeployToDev stage ECR에서 해당 docker 이미지를 pull 하고 해당 이미지를 기반으로 검색어 추천 ML 모델을 개발 서비스에 배포함 Val..
-
[Airflow] Airflow ExternalTask Sensor 생성하기Airflow 2021. 8. 9. 00:06
배경설명 매일 각 고객사별로 검색어 추천용 데이터를 수집하기 위한 DAG가 돌아가는데 모든 고객사 DAG들이 돌고 난 이후 검색어 추천 모델 배포용 DAG가 자동으로 실행(trigger)될 수 있도록 고객사 데이터 수집 -> 모델 학습 -> 그리고 자동으로 배포까지 가능한 자동화 파이프라인을 리서치해봄. 해결방안 이 문제해결을 위한 요구조건으로는 모든 DAG들이 돌았음을 감지하는 무언가가 필요했고 Airflow에 있는 기능 중 ExternalTaskSensor가 그 역할을 할 수 있다고 판단하여 TEST 진행함. *유의사항 ExternalTaskSensor는 무조건 해당 dag의 스케줄 시간이 정확히 맞는 run만 sensing 한다. https://uiandwe.tistory.com/1302 airfl..
-
Docker Hub Cassandra 공식 도커 이미지로 컨테이너 띄우기(feat. cqlsh 실행)DataBase/Cassandra 2021. 8. 5. 22:42
1. Docker 설치 https://ninano1109.tistory.com/160 Docker Ubuntu 도커 우분투 설치 (feat. docker 이미지 pull하기) 시스템 최신 업데이트 $ sudo apt update 사전 설치 진행 $ sudo apt install apt-transport-https ca-certificates curl software-properties-common Docker repository key 추가하기 $ curl -fsSL https://d.. ninano1109.tistory.com 2. Docker Cassandra 이미지 받기 $ docker pull cassandra 3. Cassandra docker container 실행하기 $ sudo docke..