오몰내알 데엔

데이터 엔지니어링/Kafka

카프카 스키마 레지스트리 핵심 컨셉 알아보기

카프카 스키마 레지스트리의 주요 동작 방식을 알아보자 스키마 레지스트리는 데이터의 스키마를 관리하고 저장하는 관리형 스키마 저장소이다. 이번 포스팅에서는 스키마 레지스트리의 주요 기능과 동작 방식에 대해 알아보고자 한다. 동작 방식 스키마 레지스트리는 Avro, JSON Schema, Protobuf 3가지의 형식을 지원한다(3가지 형식에 대해서는 다른 포스팅으로 다룰 예정이다). 해당 스키마는 subject 아래에 각각 저장되는데 subject의 이름은 subject name strategy에 의해 정해진다. 디폴트로 subject을 토픽이름으로 하는 TopicNameStrategy을 사용한다. 또한 스키마 레지스트리에는 가장 중요한 기능이라고 할 수 있는 compatibility 즉 호환성 규칙이 있..

개발/Go

Go 웹 어플리케이션 web handler 알아보기

Go로 웹 어플리케이션을 만들기 위해 사용하는 web handler에 대해 알아보자 Go에서 HTTP 서버를 만들기 위해서는 net/http 패키지를 이용하곤 한다. http 패키지에는 다양한 메서드들이 존재하는데 이번 포스팅에서는 각각의 메서드의 역할에 대해 간단하게 알아보고자 한다. ListenAndServe() ListenAndServe(addr string, handler Handler) error 가장 먼저 기본이 되는 ListenAndServe()부터 알아보자. ListenAndServe() 메서드는 지정된 포트에 웹 서버를 열고 HTTP 연결을 받아 요청에 응답하는 역할을 한다. 해당 메서드에 handler를 등록하면 지정한 포트에 들어온 요청에 대해 handler에서 등록한 처리 방법에 따..

프로젝트/대용량 이벤트 데이터 파이프라인 프로젝트

이벤트 데이터 파이프라인 구축하기 (1) - 카프카 구축하기

이전 글: https://kgw7401.tistory.com/105 이벤트 데이터 파이프라인 구축하기 (0) - 개요 깃허브: https://github.com/kgw7401/event-data-pipeline GitHub - kgw7401/event-data-pipeline: 대용량 이벤트 데이터를 위한 파이프라인을 구축하는 프로젝트 대용량 이벤트 데이터를 위한 파이프라인을 구축하는 프 kgw7401.tistory.com 깃허브: https://github.com/kgw7401/event-data-pipeline GitHub - kgw7401/event-data-pipeline: 대용량 이벤트 데이터를 위한 파이프라인을 구축하는 프로젝트 대용량 이벤트 데이터를 위한 파이프라인을 구축하는 프로젝트. Co..

데이터 엔지니어링/Kafka

쿠버네티스에서 카프카(kafka on k8s) 정말 좋은 선택일까?

카프카를 쿠버네티스 위에서 사용하는 이유와 장단점을 알아보자 최근 카프카를 주요하게 사용하는 프로젝트를 진행하면서 카프카와 쿠버네티스의 관계에 대해 궁금증이 생겼다. 일전에 카프카 커넥터를 쿠버네티스 위에 구축하여 사용해보면서 꽤나 좋은 경험을 했었는데, 커넥터 말고 카프카 전체를 쿠버네티스 위에서 사용하면 어떨지에 대한 호기심이 들었다. 이번 포스팅에서는 kafka on k8s를 사용하는 이유와 운영 시 주의할 사항들이 무엇이 있는지 알아보자. 왜 kafka on k8s를 사용할까? 만약 이미 다른 어플리케이션들을 쿠버네티스 위에서 실행시키고 있다면 오히려 물리 서버 위에서 실행시키는 것보다 훨씬 쉬운 일이 될 수 있다. 특히 대규모 조직에서는 Kafka를 Kubernetes 외부에서 배포하는 것이 많..

프로젝트/대용량 이벤트 데이터 파이프라인 프로젝트

이벤트 데이터 파이프라인 구축하기 (0) - 개요

깃허브: https://github.com/kgw7401/event-data-pipeline GitHub - kgw7401/event-data-pipeline: 대용량 이벤트 데이터를 위한 파이프라인을 구축하는 프로젝트 대용량 이벤트 데이터를 위한 파이프라인을 구축하는 프로젝트. Contribute to kgw7401/event-data-pipeline development by creating an account on GitHub. github.com 대용량 이벤트 데이터를 위한 견고한 파이프라인 구축을 위한 프로젝트를 해보려고 한다. 예전부터 사용자 로그 데이터에 대해서 관심이 많기도 하였고, 무엇보다 그런 데이터들을 어떻게 신뢰성 있게 공급할 것이냐에 큰 관심을 가지고 있었다. 프로젝트를 하면서 신..

Docker & Kubernetes

Kubernetes context의 역할 알아보기

쿠버네티스에서는 context라는 개념이 있는데, 어떤 역할을 하는지 알아보자 여러 개의 쿠버네티스 클러스터를 운영한다면 다른 클러스터로 이동하기 위해 kubectl config use-context 명령어를 사용한 경험이 있을건데요. 저 또한 꽤나 많이 사용하는 명령어입니다. 하지만 해당 명령어를 사용하면서도 다른 클러스터로 이동하는 건데 왜 cluster가 아닌 context라고 하는 거지? 라는 의문이 있었습니다. 이번 포스팅에서는 context가 무엇이고 어떤 역할을 하는지 이야기 해보려 합니다. 쿠버네티스에 접근하기 위한 kubeconfig kubeconfig 파일은 쿠버네티스의 설정 파일로 kubectl로 쿠버네티스의 API 서버에 접근할 때 사용하는 인증 정보를 가지고 있습니다. 보통은 ~/..

개발/Git&Github

git pull의 여러 옵션 알아보기

git pull을 하는데는 여러 옵션이 있다. 오늘은 git pull이 무엇이고, 어떤 방법들이 있는지 알아본다. git pull은 아마 깃을 사용할 때 가장 많이 사용하는 명령어 중 하나일텐데요. 해당 명령어가 원격 브랜치의 코드를 로컬로 가져오는 명령어라는 것은 아마 모두들 알고 계실 것 같습니다. 하지만 이 간단한 명령어에도 여러 옵션들이 숨겨져 있습니다. 같이 알아보도록 하죠. git pull 명령어 알아보기 원격 저장소에 있는 코드에 변경사항이 생겼는지 확인하는 방법은 크게 git fetch, git pull 두 가지로 나눌 수 있습니다. 먼저 git fetch는 원격 저장소에 변경사항이 있는지 "체크만" 합니다. 그리고 git pull은 변경사항 확인과 함께 실제로 로컬에 코드를 가져와 병합을..

Docker & Kubernetes

Docker in Docker 사용해보기

docker container에서 docker를 사용하는 방법을 알아보자 Docker in Docker(DinD)는 컨테이너 내부에서 docker를 사용할 수 있는 기술입니다. 저 같은 경우는 컨테이너 내부에서 knative function 빌드를 위해서 해당 방법이 필요했는데요. 이번 포스팅에서는 DinD가 무엇이고 어떤 장단점이 있는지 한 번 알아보도록 하겠습니다. DinD에 대해 알아보자 먼저 Docker는 어떤 방식으로 작동할까요? 보통 Docker를 이용하기 위해 CLI를 이용하는데요. 우리가 Docker CLI 명령어를 입력한다면 해당 명령이 Socket을 통해 Docker Daemon에게로 전달됩니다. CLI 명령어는 /var/run/docker.sock이라는 파일 인터페이스를 통해서 도커 ..

데이터 엔지니어링/dbt

dbt에서 jinja for, if문을 이용해서 쿼리 효율적으로 짜기

TWL(Today We Learn): dbt jinja의 for, if문을 이용하여 효율적인 쿼리를 작성해본다. dbt에는 다양한 기능을 이용하여 SQL 쿼리를 더욱 효율적으로 작성할 수 있습니다. 특히 dbt의 jinja를 이용하면 비효율적으로 반복했어야 할 쿼리를 쉽게 짤 수 있는데요. 이번 글에서는 jinja의 for, if문을 이용하여 효율적으로 쿼리를 작성하는 법을 알아보려 합니다. 참고로 SQL 문법은 Bigquery를 따르고 있습니다. 기존 코드 이벤트 로그에서 모든 파라미터를 STRING으로 변환하는 쿼리를 짜본다고 가정해봅시다. 만약 이벤트 파라미터가 많다면 아래와 같이 불필요한 중복 코드가 발생합니다. SELECT event_name, user_id, CAST("begin_schedul..

데이터 엔지니어링/Kubernetes

Nginx Ingress Annotation rewrite-target 알아보기

쿠버네티스 Ingress를 구성하다보면 어노테이션을 자주 설정하게 되는데요. 그 중에서 가장 많이 사용하는 어노테이션이 rewrite-target이 아닌가 싶습니다. 자주 사용은 하지만 그 의미를 완벽하게는 모르고 쓰는 경우가 대부분인데 오늘은 rewrite-target에 대해 정확히 짚고 넘어가보려 합니다. Ingress란 일단 간단하게 쿠버네티스의 ingress에 대해 알아보겠습니다. ingress와 service는 요청을 특정 경로로 보내주는 역할을 합니다. 그 중 ingress는 클러스터 외부에서 접근하는 요청들을 어떻게 처리할 지 정의해둔 규칙들의 모음입니다. ingress는 말 그대로 규칙들의 모음이고, 이러한 요청을 실제로 처리하는 친구가 ingress controller입니다. 예를 들어 ..

오몰내알
'분류 전체보기' 카테고리의 글 목록 (2 Page)