전체 글 144

MySQL Role 권한 설정

MySQL 8 버전에서 지원하는 role 기능에 대해서 소개해보고자 한다. 1. MySQL Role 이란? 2. MySQL Role 기본 쿼리 3. 조건 별 Role 권한 할당 1. MySQL Role 이란? 말 그대로 역할을 의미한다. 더 풀어서 설명하자면, 권한을 모아 둔 역할이다. 마치 '학생은 다른 학생들의 개인 정보를 볼 수 없다.', '선생님은 본인 반에 한하여 학생 정보를 볼 수 있다.'와 같이, 각자의 role에 맞는 역할이 있는 것과 같다. 이를 통해 집합에 대한 권한을 한번에 설정 및 관리할 수 있으므로, 사용자에 대한 권한 관리 및 운영이 더욱 수월해지게 된다는 장점이 있다. 1-1. Role 생성 순서 및 구조 즉, role 을 생성하고 & role에 권한을 할당하고 & 이로써 특정..

Airflow Helm 배포 - 설치하기

공부를 통해 배운 내용을 작성하고 있습니다. 혹여 해당 포스팅에서 잘못된 부분이 있을 경우, 알려주시면 빠르게 수정 조치하도록 하겠습니다. 이전 포스팅을 통해 Helm 에 대해서 알아보았다면, 이제 직접 실습을 해 보겠다. (이전 포스팅 링크: https://eng-sohee.tistory.com/161) Airflow Helm 배포 - Helm 과 Chart 를 알아보기 Kubernetes 환경에서 Airflow를 운영할 때, 일반적으로 Helm 차트를 이용하여 배포 및 운영을 한다. 이유는, Airflow 에서 제공하는 공식 Helm 차트를 제공하기 때문이며, 이를 통해 특정 클라우드 제공 업 eng-sohee.tistory.com 목차 1. Helm 설치 2. Helm 레포지토리 추가 3. valu..

Airflow Helm 배포 - Helm 과 Chart 를 알아보기

공부를 통해 배운 내용을 작성하고 있습니다. 혹여 해당 포스팅에서 잘못된 부분이 있을 경우, 알려주시면 빠르게 수정 조치하도록 하겠습니다. Kubernetes 환경에서 Airflow를 운영할 때, 일반적으로 Helm 차트를 이용하여 배포 및 운영을 한다. 이유는, Airflow 에서 제공하는 공식 Helm 차트를 제공하기 때문이며, 이를 통해 특정 클라우드 제공 업체에 얽매이지 않고 Airflow를 운영할 수 있다. Helm 의 장점 Helm 을 사용하면, 복잡한 쿠버네티스 기반의 애플리케이션을 쉽게 설치 가능하다. 설치뿐만 아니라, 업데이트도 간결하다. helm 차트로 하나로 묶여 있다 보니, 여러 리소스가 묶인 복잡한 소프트웨어를 동시에 관리하기 수월하여 관리가 쉽다. Helm의 단점 하지만 Helm..

Python 클린 코드(Clean Code) 작성 방법 정리 및 고찰 (1)

더 나은 파이썬 코드를 작성하기 위한 11가지 팁과 요령이라는 유튜브를 시청했다. 시청한 내용에 대해서 정리를 해보고자 한다. 1. range(len(x)) 를 enumerate 로 변경하자. 만약 idx와 item 으로 모두 추적할 경우, enumerate 를 사용하는 것이 간결하고 좋다. range를 쓰면 len 함수를 추가로 불러와야 하고, 각 원소의 자료구조의 인덱스로 직접 접근해야 한다. 하지만 enumerate는 인덱스와 item을 하나의 튜플 단위로 묶어 출력하기 때문에, 훨씬 pythonic 하다. 변경 전 코드 data = [1,2,3,4] for i in range(len(data)): if data[i]

스트리밍 데이터 기반 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 를 ..