전체 글
-
[GCP] 워크로드 아이덴티티 제휴 (Workload Identity Federation)AWS & GCP 2022. 2. 1. 03:43
GCP Workload Identity Federation 이란? 외부 어플리케이션에서 GCP의 리소스를 접근하기 위해선 보통 서비스 계정을 발급 받고 해당 계정에 권한(IAM)을 준 뒤, 물리적인 key file을 외부 어플리케이션에 전달해야 합니다. 여기서 문제는 전달한 key file은 만료 시간이 없거나 엄청 길다는 것입니다. 또한 해당 키가 어디에 저장되는지 보장할 수도 없고 누가 접근하는지도 모릅니다. 이를 막기 위해선 해당 키의 만료시간을 짧게 두는 방법밖에 없는데 이럴 때마다 물리적인 파일을 전달해야 하므로 현실성이 떨어지는 방안입니다. 이런한 문제는 워크로드 아이덴티티 제휴 (workload identity federation)를 사용하면 해결할 수 있습니다. 이후 ID 제휴 서비스라 함..
-
[Github Action] 특정 시간마다 브랜치 삭제 & 생성하기저장소/git 2022. 1. 29. 23:44
아래는 schedule을 사용하여 새벽 6시마다 브랜치를 삭제하고 생성하는 예제입니다. name: Delete Branch & Create Branch on: schedule: - cron: '0 21 * * *' jobs: delete-branch: runs-on: ubuntu-latest steps: - name: Delete branch uses: dawidd6/action-delete-branch@v3 with: github_token: ${{github.token}} branches: test-branch create-branch: needs: delete-branch runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v..
-
[Github Action] python test 및 다른 브랜치에 머지하기저장소/git 2022. 1. 29. 23:43
여기서 할 예제는 main 브랜치에 push가 됐을 경우, python 3.7, 3.8, 3.9, 3.10 버전별로 test code 검증을 하고 전부 성공할 경우, develop 브랜치에 main 브랜치의 변경 사항을 merge 하는 케이스입니다. name: Python build & Merge main to develop on: push: branches: [ main ] jobs: build: runs-on: ubuntu-latest strategy: fail-fast: false matrix: python-version: ["3.7", "3.8", "3.9", "3.10"] steps: - name: Checkout uses: actions/checkout@v2 with: ref: main - n..
-
Github Action이란저장소/git 2022. 1. 29. 19:35
github repository가 있다면 github action을 사용하여 workflow를 구성할 수 있습니다. workflow의 예시는 다음과 같습니다. test code 실행 배포 자동화 하고자 하는 스크립트 파이썬 버전 실행 여부 확인 가격은 아래와 같이 다양하지만 대규모 프로젝트가 아닌 이상 무료버전으로도 충분히 사용할 수 있어 보입니다. github action 이해하기 GitHub Actions는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI/CD 플랫폼입니다. repository에 대한 모든 pull request를 빌드 및 테스트하는 workflow를 생성하거나 병합된 pull request를 프로덕션에 배포할 수 있습니다. GitHub Actions는 단순한 DevOps를..
-
코호트 분석 (Cohort Analysis)이란?공부/데이터 2022. 1. 29. 18:04
데이터 분석에서 자주 사용되는 분석 기법 중에 코호트(동질 집단) 분석이 있습니다. 코호트란? 특정 기간 동안 공통된 특성이나 경험을 갖는 사용자 집단을 의미합니다. 코호트 분석? 위의 코호트 개념을 분석하는 것으로 특정 기간 동안 사용자 행동을 그룹으로 나눠 지표 별로 수치화한 뒤 분석하는 기법입니다. 예를 들어, 서울에 사는 30대 초반 남성이 네이버 검색을 통해 29CM 방문을 해서 A 상품을 구매했다고 가정하면 아래와 같은 코호트 그룹에 속할 수 있습니다. 인천 (지역) 코호트 25 ~ 34세 (연령) 코호트 남성 (성별) 코호트 네이버 트래픽 코호트 자연검색 트래픽 코호트 29CM 방문 페이지 코호트 A제품 (구매) 코호트 코호트 분석에서는 주로 시간의 흐름에 따른 사용자 유지와 이탈 패턴이나 ..
-
SQL 스타일 가이드DB 2022. 1. 16. 17:27
개요 SQL 스타일을 통일시켜 직관적인 SQL 코드를 짜고 읽을 수 있도록 합니다. mordern sql style guide를 기반으로 깃랩, 모질라 문서를 참고하여 정리했습니다. ‼️가 붙어 있는 부분은 lint가 적용되지 않아 개개인이 주의해야 되는 부분입니다. Case 네이밍에는 문자, 숫자, _ 만 사용합니다. 네이밍의 시작은 문자로 시작하고 _로 끝나지 않습니다. 테이블 명의 최대 길이는 20자입니다. 한 줄에 표현할 수 있는 쿼리의 길이는 100자입니다. 탭은 사용하지 않고 공백만 사용합니다. jetbrains 제품을 사용한다면 탭을 공백으로 변환하도록 합니다. 쿼리 내 들여쓰기는 4칸 들여쓰기로 합니다. 필드 네이밍 필드 이름은 모두 소문자로 제공하며 스네이크 케이스를 지향합니다. (카멜케..
-
[Bigquery] Resources exceeded during query execution: The query could not be executed in the allotted memory 해결 방법DB/Bigquery 2022. 1. 16. 17:06
원인 bigquery에서 쿼리를 실행하면 아래와 같은 오류가 발생하는 경우가 종종 있습니다. Resources exceeded during query execution: The query could not be executed in the allotted memory. Peak usage: 140% of limit. Top memory consumer(s): ORDER BY operations: 98% other/unattributed: 2% bigquery는 분산 데이터베이스 기반으로 쿼리 대부분이 여러 노드에서 실행되지만 계산이 필요한 특정 명령어의 경우에는 단일 노드에서 실행이 되어야 합니다. 이 때, 단일 노드에서 너무 많은 데이터를 처리하려 하면 위와 같이 오류가 발생합니다. bigquery는 ..
-
[Airflow] DAG에서 다른 DAG 호출하기 (DAG 종속성)공부/데이터 2021. 11. 20. 20:43
dag를 설계할 때 dag끼리 종속성을 갖지 않는 것이 가장 좋지만 어쩔 수 없이 종속성을 만들어야 하는 경우가 있습니다. 아래와 같은 상황일 때, dag의 종속성을 갖는 것이 유용하게 사용됩니다. 두 dag는 종속되지만 일정이 다름 두 dag는 종속되지만 서로 다른 팀에서 소유 task는 다른 task에 종속되지만 execution_date가 다름 여기서는 dag에서 다른 dag를 호출하는 방법을 설명합니다. SubDAG를 사용하여 DAG 종속성을 처리할 수도 있지만 SubDAG가 성능 문제를 일으킬 수도 있으므로 dag 종속성으로 처리하는 것을 권장합니다. TriggerDagRunOperator TriggerDagRunOperator는 dag의 종속성을 구현하는 쉬운 방법입니다. 해당 operator..
-
[Airflow] custom operator, hook, sensor, util 등록하기공부/데이터 2021. 11. 14. 20:02
plugins 분리하기 실제 동작하는 dag와 custom으로 생성한 operator, hook, alert 등의 작업물을 분리하여 관리하는 방법입니다. https://airflow.apache.org/docs/apache-airflow/stable/modules_management.html 문서에 나와있는 것처럼 plugins 폴더 하위에 작성하면 airflow가 자동으로 경로를 인식합니다. /plugins/operators/custom_operator.py 폴더와 파일을 만들고 아래 코드를 추가합니다. from airflow.operators.bash import BashOperator class EvenNumberCheckOperator(BashOperator): def __init__(self, ..
-
[Airflow] Taskflow API공부/데이터 2021. 11. 13. 19:45
버전 2.X대에서 도입된 Taskflow API를 사용하여 데이터 파이프라인 튜토리얼을 설명하면서 기존 1.X대 버전과 비교를 해봅니다. Taskflow API taskflow는 간단하게 데코레이터를 사용해 DAG와 Task를 구성하는 방식입니다. 전체 코드 import json from airflow.decorators import dag, task from airflow.utils.dates import days_ago default_args = { 'owner': 'airflow', } @dag(default_args=default_args, description='Taskflow API ETL DAG tutorial', schedule_interval=None, start_date=days_ago..