Posts by Category

Python

Python if문으로 list, dictionary가 none인 경우 예외처리

2 분 소요

함수에서 list 혹은 dictionary를 인자로 받을 때 [], {} 값을 default로 사용할 수 없기 때문에 일반적으로 none값을 많이 사용합니다. 이 때 함수 안의 if문에서 list, dictionary의 빈값([], {})을 none으로 처리하는 경우, 일반적으로 ...

Python dictionary loop

1 분 소요

Python에서 dictionary item을 하나씩 loop 돌 때 값을 찾는 방법으로 1) item(key, value), 2) key, 3) value 각각 가능합니다.

Python list indexing과 slicing

2 분 소요

Python은 indexing과 slicing을 이용해서 list에서 일부만 추출할 수 있습니다. 사용 방법이 매우 간단하고 pandas에서 더 활용되기도 하니 잘 알아두면 좋습니다.

Python math (min, max, abs, pow, round 등)

2 분 소요

Python의 math 모듈은 내장 함수로 import 없이 사용 가능한 것이 있고, import해서 사용하는 함수가 있습니다. 아래 설명에서 import 부분을 참고해서 확인하면 됩니다.

Python pass와 ellipsis(…)로 빈 함수, 변수 정의하기

1 분 소요

Python은 스크립트 언어이기 때문에 빈 함수나 변수를 미리 정의하는 경우가 다른 언어에 비해 드문 편입니다. 하지만 제대로 구조를 갖추고 코드를 작성하다보면 필요한 경우가 종종 발생합니다. 이럴 때 FM으로 한다면 함수는 raise NotImplementedError로 처리해야...

Python print 개행 없이 출력 (end)

1 분 소요

Python의 print는 기본적으로 개행을 해주기 때문에 여러 개의 print를 사용하면 아래와 같이 출력됩니다.

Python print 출력 그대로 파일에 쓰기

최대 1 분 소요

Python에서 print는 file 객체를 받아 stdout을 바꿀 수 있기 때문에 write 함수를 사용하지 않고 print 그대로 파일에 쓸 수 있습니다.

Python asterisk(*)

2 분 소요

Python에서 asterisk(*)은 일반적인 값의 곱하기 외에 여러 기능을 포함하고 있습니다.

Python dictionary

1 분 소요

dictionary는 python에서 제공되는 자료형 중 하나로, key/value 쌍으로 데이터를 저장할 수 있습니다.

Python CSV 읽기/쓰기

2 분 소요

csv는 comma-separated values의 약자로, 말 그대로 comma(,)로 데이터를 구분하는 포맷을 말합니다. 예를 들어 아래 표 처럼 데이터가 있을 때 아래와 같이 표현됩니다.

Python Type Hint (자료형 명시)

4 분 소요

Python은 기본적으로 변수를 사용할 때 자료형을 명시하지 않고 사용할 수 있습니다. 때문에 함수를 사용할 때도 파라미터나 반환의 자료형을 정의하지 않아도 동작합니다. 이것은 빠르고 가볍게 개발하는 입장에서 장점처럼 느껴지지만, 협업이나 유지보수 측면에서는 단점이 될 수 있습니다...

Python tqdm (progress bar)

1 분 소요

Python에서는 tqdm을 이용하면 loop의 진행 현황을 확인할 수 있습니다. 간단하게 for 문을 예시로 확인해보겠습니다.

Python Lambda

1 분 소요

Python에서 lambda를 사용하면 함수를 추가 작성하지 않아도 돼서 편리합니다. 아래 대표적인 sort와 map 예시로 lambda 동작을 확인해 볼 수 있습니다.

맨 위로 이동 ↑

Elastic Stack

Elasticsearch search queries

4 분 소요

Elasticsearch에서 특정 키워드로 검색할 때 조건에 따라 적절한 방법을 사용해야합니다. 아래에서 검색할 때 대표적으로 많이 사용되는 term, match, match_phrase, string_query을 설명하겠습니다.

Kibana Tag Cloud 단어 빈도수 필터링 (count filtering)

최대 1 분 소요

Tag Cloud에서 일정 횟수 이상 등장한 단어만 보여주거나, 일정 횟수 이하의 단어는 보여주지 않고 싶을 때 Kibana에서 관련 설정을 UI에서 제공하지 않기 때문에 직접 설정을 추가해야합니다. 

Elasticsearch reindex 특정 기간만 복제

1 분 소요

Elasticsearch 기능을 테스트하면서 reindex를 종종 사용하고있는데, 원본 index의 document가 아무래도 많다보니까 그냥 reindex를 하면 불필요하게 많은 document가 복제되었습니다. 이 부분을 reindex 시 query로 filtering해서 일부...

Elasticsearch query size limit 수정

최대 1 분 소요

Elasticsearch에서 데이터를 검색하면 최대 10,000개까지 검색이 되는 것을 볼 수 있습니다. 10,000개 이상 검색이 필요한 경우에는 Scroll API(공식 문서)를 사용하는게 맞지만, 성능 상관없이 검색만 필요한 경우 아래와 같이 limit를 수정하면 10,000...

Elasticsearch reindex

최대 1 분 소요

Elasticsearch index를 그대로 복사할 때 reindex를 사용합니다.

Elasticsearch analyzer 후 다시 적용하기

2 분 소요

Kibana에서 tag cloud로 시각화를 진행할 때 nori와 같은 analyzer를 많이 이용합니다. 실사용 하다보면 tokenizing되지 말아야할 단어가 생기거나 불필요한 단어가 생기게 됩니다. 아래 시각화 예시를 보면, 최근, 코로나와 같은 단어는 매 번 자주 등장하는 ...

Elasticsearch upsert (update or insert)

1 분 소요

Elasticsearch에 데이터를 적재할 때 동일한 id가 존재하면 update하고 없으면 insert하고 싶을 때 upsert를 사용하면 가능합니다. update query에 "doc_as_upsert": true를 입력하면 됩니다.

Kibana 시각화 index 변경

1 분 소요

Kibana에서는 dashboard의 시각화에 사용된 index를 변경하는 것이 어렵습니다. 이 때문에 초기 구축 단계에서 dashboard를 다 만들었는데 index 명을 변경하게되면 dashboard를 처음부터 다시 구축하는 참사가 일어날 수 있습니다.

Windows에 ELK Stack 구축 4 (형태소 분석, Word Cloud)

7 분 소요

ELK Stack 마지막 구축 과정으로 Word Cloud 시각화를 진행해보겠습니다. 데이터로 사용한 기사의 내용에서 사용된 단어의 빈도로 시각화하기 위해서는 전부 단어로 tokenizing 해야합니다. 이를 위해 형태소 분석기 플러그인을 사용해야합니다.

Elasticsearch 외부 공개

최대 1 분 소요

윈도우에서 WSL을 사용하거나 분산 서버 환경을 구축했을 경우, elasticsearch에 접근하기 위해서는 network 설정이 필요(default host가 127.0.0.1이기 때문)합니다. 따라서 외부에서 접근 가능한 IP로 변경이 필요한데, IP를 변경하면 producti...

X-Pack Security 적용 (Elastic Stack 8.1 기준)

4 분 소요

앞의 포스트에서는 편의를 위해 security 옵션을 비활성화하고 진행했는데, 추후 실사용에서는 반드시 적용해야하는 부분입니다. 그리고 Elastic Stack 8.0이 release되면서 빠르게 8.1이 release됐고, major 변경에 따른 필수 설정이 많이 변경된 것으로 ...

맨 위로 이동 ↑

Kubernetes

Ubuntu 22.04 minikube 설치 및 Lens 연동

7 분 소요

이번에 새로 구매한 노트북에 Ubuntu 22.04를 설치하면서 Kubernetes 환경을 구축한 내용을 정리해봤습니다. 목표는 아래와 같습니다.

Mac에서 Minikube 설치하기

5 분 소요

금방 할 줄 알았던 Minikube 설치에서 삽질하는 과정이 너무 길어져서 기록으로 남깁니다.. 비슷한 이슈가 있는 분들에게 참고가 됐으면 좋겠습니다.

K3s 및 Helm 설치

1 분 소요

K3s 설치 ```bash $ curl -sfL https://get.k3s.io | sh -

Kubernetes Pod DNS(CoreDNS) Naming Rule

1 분 소요

Kubernetes에서 각 Service와 통신할 때 IP를 일일이 확인하고 입력하지 않습니다. 각 Service를 IP로 직접 연결하면 아래 단점이 있기 때문입니다.

Kubernetes Ingress 쉽게 적용하기

1 분 소요

Ingress를 적용할 때 path만 설정할 경우, 외부에서 서비스로 접근하는 URI와 내부에서 실제 서비스로 요청하는 URI가 달라지면서 오류가 발생하는 경우를 볼 수 있습니다. 여기서 아래와 같이 설정하면 위 두 URI를 일치시킬 수 있습니다.

DCGM-Exporter metric 항목 추가하기

2 분 소요

DCGM-Exporter에서 기본적으로 제공되는 metric으로는 수집할 수 없는 항목들이 있습니다. (버전마다 metric 수집 항목의 차이가 있습니다.) 저는 2.4.0 버전을 사용중인데, DCGM_FI_DEV_GPU_UTIL(GPU utilization(%))과 DCGM_FI...

Lens로 Kubernetes 자원 사용량 클릭만으로 쉽게 보기

1 분 소요

Kubernetes에서 사용중인 자원 사용량을 Lens를 사용하면 클릭만으로 쉽게 볼 수 있습니다. Lens는 Kubernetes 전용 관리도구로, 관리에 필요한 기능과 다양한 플러그인을 함께 지원합니다.

Kubernetes Deployment, StatefulSet restart

최대 1 분 소요

Kubernetes에서 image 혹은 설정값이 바뀌어 재시작이 필요한 경우가 있는데, 이때 아래 명령어로 재시작이 가능합니다.

Kubernetes Pod, Service, Deployment

1 분 소요

Kubernetes에서 하나의 서비스를 운영할 때 일반적으로 Pod와 Service, Deployment가 운영되는 것을 확인할 수 있습니다. 아래서 각각 역할의 차이에 대해 가볍게 설명하겠습니다.

맨 위로 이동 ↑

Airflow

Airflow 병렬처리하기

6 분 소요

병렬처리 고려 대상 Airflow에서 병렬차리할 때 고려해야할 대상이 크게 5가지 있습니다.

Airflow S3에 있는 파일을 디스크를 안거치고 메모리로 가져오기

1 분 소요

S3에 있는 파일을 디스크에 저장 후 작업을 진행하면 파일을 삭제하기 전에 예외 상황이 발생할 수 있고, 이렇게 되면 파일이 삭제되지 않고 디스크에 남아버립니다. 때문에 특별한 경우가 아니라면 디스크에 저장하지 않고 바로 가져와서 사용하는 것이 좋습니다.

Airflow MongoDB Provider의 replace_many

최대 1 분 소요

Airflow에서 MongoDB에 연결하기 위해 사용하는 MongoDB Provider에는 PyMongo에 없는 replace_many 함수가 있습니다. PyMongo에서 지원되는 관련 함수 목록은 아래와 같습니다.

Helm으로 설치한 Airflow에 MongoDB provider 추가

1 분 소요

Helm으로 설치한 Airflow에 MongoDB connection을 추가하려했는데 MongoDB는 없었습니다. 공식 문서(링크)를 찾아보면 pip로 추가하라고 되어있지만 Helm으로 설치한 Airflow에 추가하려면 image를 새로 build해야합니다. 아래는 그 과정과 Mo...

Airflow 기간 내 Task clear (재실행)

최대 1 분 소요

Airflow Web UI에서도 task를 clear할 수 있지만, task의 양이 많거나 명령어를 이용해서 자동화하고 싶은 경우 아래 명령어를 이용해서 clear가 가능합니다.

KubernetesPodOperator에서 XCOM 사용하기

1 분 소요

DockerOperator나 KubernetesPodOperator는 다른 Operator와 XCOM을 사용하는 방식이 조금 다릅니다. 여기서는 KubernetesPodOperator 기준으로 XCOM push와 pull 방법을 설명하겠습니다.

Airflow DummyOperator(EmptyOperator)

1 분 소요

Airflow는 특정 Task에서 조건에 따라 skip하거나 멈추게하는 등의 동작을 하기 어렵습니다. 이를 해결하기 위해 branch로 분리해서 기존 flow가 진행되지 않도록 할 수 있는데, 이때 DummyOperator를 활용할 수 있습니다.

BranchPythonOperator로 Task 선택

2 분 소요

BranchPythonOperator를 사용하면 여러 개의 Task 중 하나를 선택해서 flow를 진행할 수 있습니다. 조건에 따라 하나를 선택해서 사용하는 경우에 적용하면 유지 관리 측면에서도 효과를 볼 수 있습니다.

Airflow 분 단위 주기 설정

최대 1 분 소요

Airflow는 스트리밍 솔루션이 아니기 때문에 한 시간 이하의 주기로 동작시키는 경우를 많이 볼 수 없습니다. 그러나 주기만 줄여서 사용하고 싶다면 분 단위까지 낮춰서 사용할 수 있습니다.

KubernetesPodOperator를 이용해서 GPU 할당 받기

1 분 소요

Airflow에서 딥러닝 서비스나 학습 파이프라인을 구축할 경우 필요한 만큼의 GPU만 할당해서 사용할 수 있도록 해야합니다. 그냥 사용하면 서버에 있는 전체 GPU를 잡아서 사용할 수 있습니다. 멀티 GPU 서버에서 단일 GPU만 할당받아서 사용하는 방법은 아래와 같습니다.

Airflow에서 PyTorch 사용 (KubernetesPodOperator)

1 분 소요

Airflow를 Kubernetes에 올려놓고 사용중인데, PyTorch를 사용하기 위한 패키지들을 Airflow에 설치하고 싶지 않아 알아보던 중 KubernetesPodOperator를 이용해서 해결했습니다. Kubernetes에 설치하지 않았다면 DockerOperator를 ...

Airflow v2.2 이상 schedule 관련 용어

1 분 소요

기존에 Airflow에서 schedule 처리를 진행할 때 execution_date, next_execution_date과 같은 변수를 사용해왔는데, 2.2버전부터 좀 더 명확한 용어로 변경되었습니다. 현재 최신 버전인 v2.3을 이용해도 호환성을 위해 아직 사용이 가능하지만, ...

Airflow 2.3 설치 (w. WSL2)

1 분 소요

Airflow가 아직 윈도우를 지원하지 않기 때문에 WSL을 이용해서 설치하는 방법을 설치하는 겸 Ubuntu에서 설치하는 방법과 큰 차이는 없기 때문에 두 가지 방법을 비교하면서 설명하겠습니다.

맨 위로 이동 ↑

MLflow

MLflow Artifact 삭제 (Permanently delete runs)

최대 1 분 소요

MLflow를 사용하다 반복되는 실험으로 S3에 artifact가 쌓이고있어 삭제 방법을 찾게 되었습니다. Tracking Server의 Web UI에서는 delete가 hide로 동작하기 때문에 S3에 쌓인 artifact와 PostgreSQL에 쌓인 metadata를 지우기 위...

Kubernetes MLflow ingress 적용 (UI, API 사용하기)

최대 1 분 소요

Kubernetes MLflow ingress 적용을 위해 일반적으로 나와있는 방법을 사용하면 UI는 사용 가능하지만 API 사용이 불가능합니다. API 호출 경로가 ingress path와 상관없이 서비스 상대경로로 적용되기 때문입니다. 따라서 서비스에서 ingress path를...

MLflow 패키지 설치 없이 REST API로 사용하기

1 분 소요

Airflow로 학습 및 배포 스케줄링을 하는데 단지 모델의 버전 확인, Stage 변경과 같은 단순 작업에 MLflow 패키지를 설치해야하는 과정이 발생했습니다. MLflow 패키지는 생각보다 무겁고, Airflow에서 관리상 PythonVirtualenvOperator를 사용하...

MLflow Production 모델의 정보만 가져오는 방법

최대 1 분 소요

MLflow 가이드를 보면 Production 모델을 가져오는 방법(mlflow.pyfunc.load_model)에 대한 설명이 있지만, 모델을 통채로 가져와서 load하기 때문에 속도도 느리고 리소스 낭비가 발생합니다.

MLflow model registry에 저장 및 관리

2 분 소요

MLflow UI를 보면 Experiments와 Models 2가지 메뉴를 확인할 수 있는데, 실험 관점과 배포 관점을 나누어 관리하는 부분이라고 생각하면 됩니다. 따라서 MLflow에 등록된 모델을 배포할 때는 Models에서 진행하는게 좋습니다.

MLflow 설치 (using Helm)

2 분 소요

본 설치는 MLflow 설계 시나리오 5 기반으로 작성하였습니다.

MLflow Git 프로젝트 코드로 실행

최대 1 분 소요

MLflow는 git에 저장된 코드를 가져와서 바로 실행할 수 있습니다. git clone 과정 정도를 생략할 수 있다고 보면 될 것 같습니다.

MLflow v1.0+ CLI pyfunc, rfunc 명령어를 models로 통일

최대 1 분 소요

일부 작성한지 오래된 튜토리얼의 CLI에서 pyfunc, rfunc를 사용하고 있습니다. 해당 명령어가 v1.0 정식 버전이 출시되면서 models로 통일되었기 때문에 해당 부분을 공유합니다.

맨 위로 이동 ↑

맨 위로 이동 ↑

Trend

맨 위로 이동 ↑

MLOps

데이터 거버넌스와 프로세스 거버넌스

2 분 소요

거버넌스는 비즈니스에 대한 일련의 통제로, 금융·법률·윤리적 의무가 있습니다. 대표적인 예시로 개인정보 보호법이 있습니다. MLOps에서의 거버넌스는 데이터, 프로세스, 모델 3가지로 구분할 수 있습니다.

데이터 드리프트 감지 (Drift Detection)

1 분 소요

자동차 주행 데이터로 예를 들어, 평소 도심에 인구가 밀집되어있다가 특정 이벤트(집값 폭등, 원격근무 확대 등)로 인해 지방, 시골에 이동했다고 가정해봅시다. 초기엔 주로 건물, 도로 등을 위주로 데이터가 수집됐었겠지만 나중엔 점점 자연 풍경의 데이터가 수집되기 시작할 것입니다. ...

MLOps 이해관계자들

3 분 소요

MLOps는 엔터프라이즈 AI 전략의 핵심이며, 이를 위해 맡는 역할은 직무 전문가, 데이터 과학자, 데이터 엔지니어, 소프트웨어 엔지니어, DevOps 엔지니어, 모델 리스크 관리자/감리인, 머신러닝 아키텍트 7가지가 있습니다.

모델 리스크 관리 (MRM, Model Risk Management)

3 분 소요

하나의 서비스에 AI를 도입하는데 있어 사용되는 모델이 다수인 경우가 많습니다. 추천 서비스만 도입하더라도 추천 종류별로 관점이 다르기 때문에 각각의 모델이 생기게 됩니다. 이렇게 다수의 모델을 리스크 측정 없이 도입할 경우 동시 다발적으로 문제가 생기거나 큰 효과를 볼 수 없습니...

맨 위로 이동 ↑

BentoML

BentoML v0.13.1에서 v1.0으로 Migration

3 분 소요

BentoML v0.13.1이 release된지 정확히 1년이 지난 2022년 7월 13일 v1.0이 release되었습니다. v1.0이 release되면서 기존 사용법이 조금 변경되었는데, 이에 따른 v0.13.1에서 v1.0으로 넘어가는 과정을 살펴보겠습니다.

BentoML Yatai로 모델 관리

4 분 소요

BentoML은 Yatai를 이용해서 모델을 관리할 수 있습니다. 실행 방법은 아래와 같이 2가지가 있지만, 저는 node.js를 설치하기 귀찮아서 docker를 사용했습니다.

BentoML Retrieve

1 분 소요

BentoML에서 저장한 Artifact를 찾아서 특정 위치에 저장

맨 위로 이동 ↑

Deep Learning, AI

PyTorch 전체 seed 고정 (Reproducibility)

최대 1 분 소요

딥러닝 성능을 올리기 위해서는 성능 재현 및 실험이 필수입니다. PyTorch는 다른 프레임워크에 비해 비교적 쉽게 seed 고정이 가능했습니다.

PyTorch image에서 apt update 실패 (NO_PUBKEY)

1 분 소요

이 글을 작성하기 약 한달 전인 2022년 4월 27일 Nvidia에서 보안상의 이유로 CUDA 관련 GPG key가 변경되었습니다. (https://forums.developer.nvidia.com/t/notice-cuda-linux-repository-key-rotation/2...

맨 위로 이동 ↑

Linux

Ubuntu 전체 파일 내 문자열 치환 (grep, sed)

1 분 소요

모델 성능 실험 script를 작성하면서 코드의 특정 값을 반복적으로 치환해야할 경우가 생겼습니다. python을 사용하면 command line arguments로 주입할수도 있지만 여기서는 grep과 sed로 특정 값을 치환하는 방법을 설명하겠습니다.

Bash script 문자열 리스트 Loop

최대 1 분 소요

모델 성능 실험을 하게되면서 반복적인 실험을 할 일이 많아졌습니다. 수동으로 하다보니 실수도 잦고 시간도 많이뺏겨 script를 작성하게 되었습니다.

ubuntu session timeout 없애기 (TMOUT)

최대 1 분 소요

ubuntu 서버 사용중에 session이 너무 자주 끊기는게 불편해서 timeout을 수정했습니다. /etc/profile에서 직접 수정해도 되지만, 안전하게 개인 계정만 적용하는 방법은 아래와 같습니다.

맨 위로 이동 ↑

Blog

Tistory code style 변경 (highlight.js custom 적용)

1 분 소요

Tistory 플러그인에서 highlight.js 기반의 코드 문법 강조(Syntax Highlight)를 제공하지만, 단 7개 테마밖에 제공하지 않습니다. 저는 플러그인 테마가 별로여서 VS 2015 테마를 직접 적용했는데, 적용하는 방법을 알려드리겠습니다.

맨 위로 이동 ↑

데이터 수집

데이터 스크래핑 3 (API 추출, without Selenium)

4 분 소요

이 전에 Selenium으로 데이터를 수집하는 방법을 확인해봤습니다. 이렇게하면 모든 데이터를 다 수집할 수 있을 것 같지만, 이 Selenium에도 단점이 있습니다. 이럴 때 일부 사이트에서 사용 가능한 방법을 소개하겠습니다.

데이터 스크래핑 2 (Selenium)

5 분 소요

앞의 게시글에서 설명했던 BeautifulSoup만 사용했을 때 데이터가 수집되지 않는 경우가 있습니다. 이럴 때 사용하는 프레임워크인 Selenium을 이용한 수집 방법을 소개하겠습니다.

데이터 스크래핑 1 (BeautifulSoup)

6 분 소요

빅데이터 분석 시스템을 구축할 때 가장 중요한 부분은 데이터 수집입니다. 데이터 수집 방법으로는 DB에 저장되어있는 주기적으로 수집하거나, 제공되는 API를 사용해서 수집할 수 있습니다. 하지만 이러한 방법으로의 수집이 어려울 때, 우리가 웹사이트에서 육안으로 확인할 수 있는 데이...

맨 위로 이동 ↑

Docker

Docker image save and load

1 분 소요

일반적으로 Docker는 Public(ex. DockerHub) 혹은 Private(ex. Harbor) Registry에서 Image를 가져오기 때문에 파일로 Docker Image를 옮길 일은 거의 없습니다. 하지만 아래와 같은 경우에 파일로 옮겨야할 경우가 생기게 됩니다.

Docker dangling image (none) 제거

최대 1 분 소요

Docker를 사용하다보면 <none> 이미지들이 쌓이는걸 볼 수 있습니다. 똑같은 이름:태그의 이미지를 올리거나, container가 있는 상태에서 image를 강제로 삭제한다거나 할 경우 쌓이게 되는데, 용량이나 관리하는 측면에서 정리가 필요합니다. 이럴 때 아래 명...

맨 위로 이동 ↑

Database

MongoDB string type timestamp 조회하기

최대 1 분 소요

외부 데이터를 그대로 저장하다보니 timestamp를 string type 그대로 저장하는 경우가 발생했습니다. 이때 integer type으로 변경하지 않아도 아래와 같이 조회가 가능합니다.

MongoDB 6.0 설치 및 테스트 (mongod, mongosh)

1 분 소요

7월 19일 MongoDB 6.0 버전이 release 되었습니다. 기존엔 MongoDB가 설치되면 mongo로 테스트를 했었는데 6.0이 되면서부터 mongo 대신 mongosh를 사용해야해서 여기에 정리합니다.

맨 위로 이동 ↑

Life

글또 8기를 시작하며

3 분 소요

블로그를 약 1년 정도 운영하던 중 글또를 알게되면서 참여하게 되었습니다. 👏

2022년 회고

7 분 소요

2021년 12월. 새로운 회사로 이직하면서 2022년을 맞이했다. 때문에 2022년의 목표는 주로 새로운 회사에서의 목표와도 같았다. 목표와는 다르게 흘러간 부분이 있었지만, 오히려 달라진 부분에서 더 만족했던 해였다.

맨 위로 이동 ↑

ETL

데이터 수집 전처리하기 (태그, 특수문자 코드)

최대 1 분 소요

웹에 있는 데이터를 수집하다보면 보이는 텍스트와 달리 태그나 특수문자 코드 등이 그대로 함께 수집되는 경우가 있습니다. 예를 들면 아래와 같은 형태로 수집될 수 있습니다.

맨 위로 이동 ↑

데이터 시각화

맨 위로 이동 ↑

FastAPI

FastAPI Kubernetes ingress 연결

1 분 소요

FastAPI를 ingress에 연결해서 사용하고 싶은 경우 추가 경로 설정이 필요합니다.

맨 위로 이동 ↑

Hadoop

Hadoop의 Yarn

2 분 소요

Yarn의 등장 배경 Hadoop의 초기 버전(1.0)은 MapReduce를 기반으로 분산 데이터 처리를 수행하는데 중점을 두었습니다. 이러한 구조는 MapReduce 작업이 많은 양의 리소스를 소모하여 여러 작업이 동시에 실행되기 어려웠고, 다양한 유형의 작업을 처리하기 어렵고,...

맨 위로 이동 ↑

Data

맨 위로 이동 ↑

Triton

맨 위로 이동 ↑

Flask

맨 위로 이동 ↑

Windows

Windows 원격 데스크톱(mstsc) 접속 끊김 해결

최대 1 분 소요

집에서 4k 모니터 해상도를 1920x1080로 사용중이였는데, 1920x1080 해상도를 사용중인 pc에 원격으로 접속하면 접속이 바로 끊기는 현상이 발생했습니다.

맨 위로 이동 ↑

MinIO

MinIO 설치(with NFS, Kubernetes, Helm)

3 분 소요

MinIO는 Amazon S3와 호환되는 API를 제공하는 오픈소스 오브젝트 스토리지입니다. 일반적으로 S3와 같은 오브젝트 스토리지가 필요할 때 대용으로 가장 많이 사용되는 오픈소스입니다. 영어 그대로 미니오(Minimal Object Storage를 의미하기 때문)라고 읽기도 ...

맨 위로 이동 ↑

Google Cloud

Google Cloud를 이용한 데이터 수집 파이프라인 구축기

13 분 소요

Google Cloud를 이용해서 데이터 수집 파이프라인을 구축해본 과정을 정리해봤습니다. 클라우드를 사용하지만 초기 비용은 100원도 안나오는 걸로 확인했기 때문에 비용 걱정 없이 따라해보셔도 좋을 것 같습니다.

맨 위로 이동 ↑

ArgoCD

ArgoCD의 App of Apps 패턴

2 분 소요

ArgoCD는 쿠버네티스를 위한 대표적인 선언적, GitOps 기반의 CD(Continuous Delivery) 도구입니다. 배포할 쿠버네티스 서비스의 deployment, service, ingress 등을 정의하고 서비스 Repository에서 GitOps 기반의 배포 파이프라...

맨 위로 이동 ↑