전체 글
-
[Airflow] User_defined_macros를 이용하여 jinja template의 사용자 정의 변수 활용하기데이터 엔지니어링/AirFlow 2023. 2. 12. 13:22
안녕하세요 까치입니다. 오랜만에 Airflow 포스팅을 하게 되었습니다. DAG의 모든 task에서 공통 변수를 활용하는 경우가 많은데 이때 어떻게 해야할지 공부하게 되어 포스팅 하게 되었습니다. 먼저 user_defined_macros라는 속성에 변수를 등록하면 그 당시에 활용하는 DAG안에 공통 변수를 설정 할 수 있습니다. 아래 코드는 완성 코드 입니다. MACROS_VAR에 공통 변수로 활용할 값을 설정하고, DAG안에 user_defined_macros라는 속성에 넣었습니다. from datetime import datetime, timedelta from airflow import DAG from airflow.operators.bash import BashOperator default_arg..
-
[DB] 샤딩(sharding )이란?DB/Modeling 2023. 1. 31. 21:43
샤딩이란? 샤딩이 나온 배경을 먼저 알아보자면, 현대에는 서비스가 증가 속도 및 데이터 증가 속도가 빠르기 때문이다. 서비스와 데이터가 증가함에 따라 과거에 사용하던 모놀리식 방법으로는 급격히 늘어나는 트래픽을 감당하기 어려워 졌다. 그래서 데이터베이스도 여러대의 컴퓨터에서 처리하고 응답을 해주는 것으로 처리 속도를 높였는데, 이것이 바로 샤딩이다. 즉, 샤딩이란 여러 머신에 저장하는 프로세스를 말한다. 데이터를 샤드라고 하는 더 작은 청크로 분할하고 여러 데이터베이스 서버에 저장한다. 샤딩의 장점 응답 시간 - 컴퓨팅이 여러 대이기 때문에 처리 속도가 향상된다. HA의 용이성 - 컴퓨터의 replica를 진행하여 HA구성하기 용이하다. 자원의 효율적인 사용 - 리소스가 작거나 클 때 데이터 베이스를 붙..
-
[DB] 데이터 모델링 - Partitioning(파티셔닝)이란?DB/Modeling 2023. 1. 30. 21:29
파티셔닝이 나온 배경은? 데이터는 시간이 지날수록 증가하는 속성을 가진다. 애플리케이션이 런칭돼고 사이즈가 증가하면서 DB자체가 VLDB(Very Large DB)로 돼게된다. 즉, 데이터의 량이 많아져 한 DB에 데이터를 모으게 돼면, 쿼리문 실행 시 속도가 느려질 뿐만 아니라, 보관 비용도 엄청나게 커지게 된다. 이런 문제를 해결하기 위해서 테이블 단위로 데이터를 나뉘는 방식을 고안하게 되었는데, 이것이 파티셔닝이다. 파티셔닝이란? 데이터 사이즈가 큰 테이블을 두 개 이상의 작은 테이블로 나누는 것을 파티셔닝이라고 한다. 보통 쿼리가 스캔할 데이터의 범위를 좁혀서 응답시간을 빠르게 하기 위한 목적으로 사용한다. 파티셔닝 이점 가용성 - 데이터를 나눠놨기 때문에 하나의 DB가 죽더라도 빠르게 살려 데이..
-
[Kubernetes] Kubernetes Pod란? pod관련 명령어 실습해보기CI-CD/Kubernetes 2023. 1. 21. 16:36
Pod란? Kubernetes는 Container 오케스트레이션 툴인데, Pod는 kubernetes의 Node안에 올라가는 컨테이너 묶음의 단위이다. 위 그림은 Kubernetes 하나의 노드를 나타내는데 여기서 10.10.10.1~4 까지가 각각 Pod이며, 그 안에 컨테이너가 하나 이상 존재 하고, Volume을 이용하여 Storage도 받을 수 있다. Pod 특징 여러개의 컨테이너 묶음 단위이며, 노드에 컨테이너를 실행하는 가장 기본 단위이다. Pod가 생성 되면 유일한 IP주소를 가진다. 이 ip주소는 외부 노출용 주소가 아닌 Cluster에서 사용하며, 동일한 Pod object라도 다시 생성되면 유일한 IP주소는 바뀌고 다시 할당 된다. Pod안에 컨테이너 간 통신은 localhost로 통신..
-
[Kubernetes] Kubernetes ObController란? Controller 간략하게 알아보기 (ReplicaSet, Deployment, StatefulSet, DaemonSet, job, CronJob)CI-CD/Kubernetes 2023. 1. 19. 20:41
컨트롤러(Controller)란? 쿠버네티스에서 제공하는 오브젝트를 생성하고 삭제 등 직접관리 할 수 있지만, Controller를 사용하여 high-level 컨트롤이 가능하다. 종류로는 ReplicaSet, ReplicationController, Deployment, StatefulSet, DaemonSet, Job, CronJob 등이 있다. ReplicaSet ReplicaSet은 ReplicationController의 상위 버전입니다. 기본적으로 Pod의 복제를 관리하며, replica의 지정한 수보다 많으면 삭제 작으면 생성하여 유지합니다. ReplicationController보다 ReplicaSet을 사용을 권장하며, ReplicationController와 동일한 기능을 제공합니다. ..
-
[Kubernetes] Kubernetes Object란? basic-object 간략하게 알아보기(pod, volume, service, label, selector, namespace)CI-CD/Kubernetes 2023. 1. 19. 20:33
Kubernetes Object란? 쿠버네티스에서 사용하는 영구한 객체라고 합니다. 이러한 개체는 클러스터의 생성한 객체의 상태를 나타내는 데 사용됩니다. 또한 배포한 내용과 다를 시 쿠버네티스에서 자동 복구를 진행하고 현상 유지를 하려고 합니다. 즉, object는 쿠버네티스에서 사용하는 각 서비스의 형태라고 보시면 됩니다. Object 종류 기본적인 object는 아래 4가지 입니다. 가장 먼저 알아야 할 object입니다. Pod : 쿠버네티스에서 실행 되는 컨테이너 묶음 단위 Namespace : 리소스들을 구분하기 위한 관리 그룹, yaml 파일에 matadata에 존재합니다. Volume : 컨테이너에서 사용하는 데이터를 매핑하여 데이터를 저장 보존 하는 storage 개체 Service : ..
-
[Kubernetes] Kubernetes 탄생배경, 구성요소 이해, 동작 과정 알아보기CI-CD/Kubernetes 2023. 1. 15. 12:52
Kubernetes란? 쿠버네티스는 컨테이너 오케스트레이션 툴이다. 쿠버네티스는 클러스터로 node를 여러개 묶어서 구성할 수 있으며, 이곳에 컨테이너를 몇개를 생성할 것인지, 생성한 컨테이너를 어떻게 유지보수 할 것인지, 컨테이너들은 어떻게 연동 할 것인지를 편리하게 구성 및 조작 할 수 있다. Kubernetes 탄생 배경 그럼 쿠버네티스는 왜 탄생하게 되었고 현대에 꼭 많이 사용하는 툴 이 되었을까? 먼저 개발을 진행한 내용을 배포 할 때 예전에는 하나의 웹 서버와 하나의 DB로 구성된 모놀리식으로 구성하였다. 하지만, 현대로 오면서 서버 운영의 확장성과 유동성을 제공하기 위해서 MSA 아키텍쳐의 필요성을 느끼게 되었고, 서버도 분리 DB도 분리하여 관리하게 되었다. 하지만, 이렇게 관리하게 되면 ..
-
데이터 측면에서 웹에서 발생하는 데이터 종류 알아보기(Transaction, Metadata, Event, Log, Aggregation)데이터 엔지니어링/데이터 엔지니어링 기본 2023. 1. 7. 17:34
안녕하세요 오늘은 웹에서 발생하는 데이터의 종류에 대해 좀 알아보면 좋을 것같아 이 글을 작성하게 되었습니다. 데이터를 다루다 보면 종류에 맞게 데이터를 설계하거나 머리속에 어느 정도의 수준의 데이터 인지 인지할 필요가 있는데요. 이 글로 아 이런 데이터는 이런 목적의 데이터 구나 하고 넘어가면 좋을 것 같습니다. Transaction Data 비즈니스나 시스템에서 빈번하게 생성되고 업데이트 되는 데이터를 의미한다. 즉, 트랜잭션 데이터는 일상적인 구매 및 판매 비즈니스 프로세스를 실행하거나 지원하는 동안 다양한 애플리케이션에서 생성되는 데이터입니다. 말이 어려운데 예로 들면, 음악 재생프로그램에 의하면, 다음과 같은 데이터가 Transaction Data입니다. 재생 목록에 음악 추가 및 삭제 이용자가..