데이터 공부 72

스트리밍 데이터 기반 AI 모델 처리에 대한 고민 (1) 람다 아키텍처 활용

공부를 통해 배운 내용을 작성하고 있습니다. 혹여 해당 포스팅에서 잘못된 부분이 있을 경우, 알려주시면 빠르게 수정 조치하도록 하겠습니다. 데이터의 변경사항이 있을 때마다, 머신러닝 알고리즘을 돌리면 어떻게 될까? 매우 비효율적일 것이다. 그렇다고 1일 1회 정기 배치 업데이트를 하자니, 데이터의 변경 사항이 반영되지 않은 머신러닝 알고리즘을 쓸 수없는 환경일 수 있다. 이를 해결하기 위한 방법으로, 람다 아키텍처를 활용해보면 어떨까 하는 생각이 들었다. 요즘 개발하고 있는 머신러닝 모델은, 텍스트 벡터라이즈와 시밀러리티 연산이 필요하다. 따라서 만약 기존에 training 되지 않은 스트림 데이터가 카프카 컨슈머(Kafka Consumer)를 통해 인입되면, 머신러닝 알고리즘을 다시 돌려서 벡터라이즈하..

MySQL 의 UPSERT 쿼리

공부를 통해 배운 내용을 작성하고 있습니다. 혹여 해당 포스팅에서 잘못된 부분이 있을 경우, 알려주시면 빠르게 수정 조치하도록 하겠습니다. MySQL 쿼리는 UPSERT 명령어가 별도로 존재하지 않는다. 하지만 INSERT ... ON DUPLICATE KEY UPDATE 문을 통해 UPSERT 문을 구현할 수 있다. 나처럼 UPSERT 쿼리에 대해 익숙하지 않은 분들을 위해, 구현하면서 배운 몇 가지 사항을 정리해보려고 한다. 목차 MySQL 의 UPSERT 문 UNIQUE KEY vs PRIMARY KEY CREATE DATE, UPDATE DATE 컬럼 설정 01. MySQL 의 UPSERT 문 UPSERT 란, UNIQUE 인덱스 또는 PRIMARY KEY 와 동일한 값이 있는 데이터가 기존에 ..

쿠버네티스 서비스

1. 서비스란? 변하지 않는 IP 주소와 포트를 제공하는 리소스다. Pod가 죽어버리는 경우, 새 IP가 할당되며 진입점이 변경되는데, 이럴 때도 서비스를 이용해 해당 IP및 port 로 원하는 Pod 중 하나로 접근이 가능하도록 사용하는 리소스를 의미한다. 2. 명령어 (이후 나오는 명령어의 출처는 https://collabnix.github.io/kubelabs/Services101/#deploying--a-kubernetes-service 에서 주요 명령어 위주로 스크랩하였다.) 배포하는 방법은 아래와 같다. kubectl apply -f nginx-svc.yaml 서비스 정보 확인 (service 의 약어: svc) 하는 방법이다. kubectl get svc my-nginx 서비스 세부정보 확인..

제 45회 SQLD (국가공인 SQL 개발자 자격증) 합격 후기

지난 5월, 제 45회 SQLD 자격증 시험을 봤다. 한 달이 지난 6월 말, 자격증 결과가 나왔고, 합격을 했다. 오늘은 SQLD 자격증에 대한 후기를 작성해보려고 한다. SQLD란?데이터베이스와 데이터 모델링에 대한 지식을 바탕으로 응용 소프트웨어를 개발하면서 데이터를 조작하고 추출하는데 있어서 정확하고 최적의 성능을 발휘하는 SQL을 작성할 수 있는 개발자를 검증하는 시험을 의미한다. (출처: 데이터자격시험 사이트) 관련 자격증으로는 SQLD, SQLP 라는 두 가지 자격증이 존재하며, SQLD는 SQLP 보다는 난이도가 낮지만, 최근에는 점차 난이도가 올라가는 추세라고 한다(취득하고자 하는 사람들이 많아져서 그런 것 같다고 추측된다). 자격 요건 및 커트라인 SQLP 자격증은 응시 자격이 있는 반..

Mac M1에서 빌드한 이미지 - exec format error 해결 방법

배경 및 이슈 Logstash에 대한 도커 이미지를 빌드한 뒤, 쿠버네티스를 통해 deploy하려고 하였다. 이미지 빌드/푸시 시 에러가 뜨지 않았기 때문에 문제가 없을 것이라고 생각했는데, pod 가 제대로 실행되지 않아 로그를 살펴보니 아래와 같은 에러가 발생했다. standard_init_linux.go:228: exec user process caused: exec format error 원인 구글링 결과 이 원인은 매우 간단했다. 바로 m1 의 docker build image 기본 설정이 arm64이기 때문에, 포맷이 맞지 않아 발생한 것. 실제로 내가 빌드했던 이미지의 아키텍처 설정이 arm64인지 확인하기 위해서는 docker inspect 로 알 수 있다. docker inspect 그 ..

ECK error 원인 및 해결 방법 - elasticsearch status 가 unknown, kibana status 가 red & pod running 0/1 일 경우

ECK 를 이용하여, ELK 프로세스를 쿠버네티스 환경으로 옮겨주는 과정에서 에러 몇 가지가 발생했다. 그중, 아래 에러에 대한 해결 과정을 포스팅한다. 상태 ECK elasticsearch 의 status는 unknown ECK kibana 의 status 가 red, pod 의 running 상태가 0/1 kibana에서 해당 에러 발생 Readiness probe failed: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers). Readiness probe failed: HTTP probe failed with statuscode: 503 01. 개요 ECK 를 ..

01. 신뢰할 수 있고 확장 가능하며, 유지보수하기 쉬운 애플리케이션

지난주부터, '데이터 중심 애플리케이션 설계'라는 책을 스터디하기 시작했다. 책을 읽으며, 중요하다고 생각하는 부분에 대해 짧게 요약정리(+약간의 개인적 생각이 들어간...) 해보고자 한다. 이번 포스팅에서는 첫 챕터인, "01. 신뢰할 수 있고 확장 가능하며 유지 보수하기 쉬운 애플리케이션" 부분을 다뤄 보았다. 목차 1. 신뢰성 2. 확장성 3. 유지보수성 01. 신뢰성 신뢰성이란, 결함이 발생해도 시스템이 올바르게 동작하게 만드는 것을 말한다. 결함률이 0이 되도록 설계하는 것은 불가능하다. 오히려, 결함이 발생하더라도 결함으로 인한 장애가 발생하지 않도록 내결함성을 갖추게 설계하는 것이 좋다. (보안 이슈는 제외) 내결함성을 갖추도록 설계하면, 특정 유형의 결함이 발생하였을 경우 사용자에게 결함을..

Python Error - most likely due to a circular import 해결

aiokafka consumer 를 개발하는 과정에서 most likely due to a circular import 에러를 접했다. 원인은 되게 허무+간단했다. 해당 에러는 모듈 import 시 작업 폴더 내 모듈과 동일한 파일명이 존재하기 때문에 발생한다. 내가 실행하고자 했던 파일명이 aiokafka.py 였고, 그 안에 import aiokafka 명령이 실행되고 있었기 때문에, 이름이 충돌하여 발생한 이슈다. 따라서, aiokafka.py 파일 명을 다른 이름으로(나의 경우 aiokafka_consumer.py로 변경하였다.) 변경하면 문제없이 실행되는 것을 확인할 수 있다.

Docker airflow2 커스텀 이미지 빌드 과정

앞서, 기존에 생성된 이미지만을 이용해서 airflow 를 빌드했었는데, 오늘은 airflow 이미지 자체를 직접 빌드해보도록 하겠다. 왜 직접 빌드해야 하는지에 대한 이유와 공식 문서 소개, 그리고 airflow2 image 빌드 과정을 포스팅하겠다. 목차 airflow2 커스텀 이미지 빌드의 필요성 airflow2 이미지 빌드 공식 문서 01. airflow2 커스텀 이미지 빌드의 필요성 여담이지만 회사 면접을 봤을 당시, airflow를 도커로 띄워서 작은 프로젝트를 운영해 본 경험이 있다고 말씀드렸다. 이때 사수님께서 이미지 빌드 과정에 대해서 상세히 여쭤보았던 기억이 나는데, 이때 나는 이미 빌드되어져 있는 이미지를 활용해서 운영했었다라고 대답했던 기억이 난다. 그래서, 기회가 된다면 이미지부터..

Kafka Consumer 애플리케이션 개발 - Python (Local Server 기반)

해당 프로젝트는 로컬 서버를 기반으로 카프카 프로듀서 애플리케이션을 개발하는 프로젝트에 대한 포스팅이다. 컨플루언트 기반 클러스터에서 카프카를 실행하기 전, 카프카의 동작 원리를 이해하기 위해 로컬에 직접 설치 및 실행해보았다. 목차 Python Consumer 개발 01. Python Consumer 개발 1-1. 개요 앞선 포스팅에서, 카프카를 로컬에 설치하는 방법 그리고 해당 로컬에서 카프카, 주키퍼 서버를 띄우는 방법에 대해 알아보았다. 그리고 kafka-python을 이용해 카프카 프로듀서를 띄워보았다. 이전 포스팅 링크 https://eng-sohee.tistory.com/136 Local Server 기반, Kafka Producer 애플리케이션 개발 - Python 해당 프로젝트는 로컬 서..