전체 글
[Kubeflow] Pipeline 작성 가이드
Kubeflow는 머신러닝 워크플로우를 자동화하고 확장할 수 있도록 도와주는 오픈소스 플랫폼입니다. 본 글에서는 Kubeflow Pipeline을 작성하는 기본 가이드를 예시 코드와 함께 제공하며, pipeline 작성 시 제가 경험했던 문제와 이를 해결한 방법도 함께 다루고자 합니다. * 본 글은 kubeflow 1.8 버전을 기준으로 작성되었습니다. 1. 개요Kubeflow Pipeline은 머신러닝 워크플로우를 구성하기 위한 도구로, 각 컴포넌트를 개별적으로, 컨테이너로 실행하여 재사용할 수 있는 파이프라인을 구축할 수 있도록 합니다. 각 컴포넌트는 독립적으로 실행되며, 데이터 파이프라인을 통해 다른 컴포넌트로 데이터를 전달할 수 있습니다. Pipeline을 작성할 때 각 컴포넌트는 컨테이너로 구성..
[글또] 10기를 시작하며; 인풋은 많지만 아웃풋이 없는 사람
본 글은 스스로 메타인지를 높이기 위해 작성한 KPT 형식의 글또 10기 다짐 글입니다. Problem올해 초부터 무엇인가를 이뤄내야 한다는 부담감에 시달렸다.리서치에서 그치지 않고 실제 서비스에서 성과를 낼 타이밍이었기 때문이다.회사에선 이제 만으로 2년 차가 지나면서 적응이 완벽히 되었다고 생각했다. (하지만 여전히 가끔 아니라는 생각이 든다….ㅎ)사회 생활도 시작한 지 3년이 넘었고, 주변 사람들과의 관계도 안정적이라고 생각했다. 스터디도 꾸준히 하고 있고, 책도 열심히 읽는다. 하지만 최근에 예상한 일정대로 업무를 진행하지 못한다거나, 공부할 때의 집중력, 스케줄 관리 등 모든 면에서 벅찬 일상을 버텨내고 있다고 판단하게 되었다. 그렇다면 어떤 부분이 일을 틀어지게 만들고 있을까 고민해 보았다..
[강의 후기] 유데미(Udemy) Python 부트캠프 : 100개의 프로젝트로 Python 개발 완전 정복
글또 9기 참여 중에 좋은 기회로 유데미의 강의를 수강할 수 있게 되었습니다. 유데미 강의는 처음 들어보는데요! 우선 저는 올해 다시 파이썬 기초부터 중급, 고급까지 차근차근 다져나갈 계획을 가지고 있었습니다. 그래서 'Python 부트캠프 : 100개의 프로젝트로 Python 개발 완전 정복' 강의를 신청했습니다. 이번 글은 해당 강의에 대한 후기를 공유하고자 합니다. 강의 소개 전세계 10만명이 넘게 수강한 Python 수업! 데이터사이언스, 웹 개발, 크롤링, GUI 프로그래밍, 게임 등 Python을 통해 개발할 수 있는 모든 것을 다뤄보는 All-in-one 코스 올인원 코스라는 설명이 아주 적합한 강의입니다. 누구나 쉽게 따라 할 수 있는 실전 예제와 함께 파이썬의 기초부터 심화 내용까지 모두..
Kafka: 대용량 실시간 데이터 스트리밍 플랫폼
비즈니스 환경에서 데이터는 굉장히 빠른 속도로 생성되고 처리되어야 합니다.기업은 이런 대용량의 데이터를 실시간으로 수집하고 분석하고자 하는 요구 사항을 가지고 있습니다.이에 따라 등장한 Apache Kafka는 대용량 실시간 데이터 스트리밍을 위한 강력한 플랫폼으로 각광받고 있습니다. 카프카란?카프카는 분산 데이터 스트리밍 플랫폼으로, LinkedIn에서 개발되었습니다.이후 Apache Software Foundation에서 오픈소스로 관리되며, 많은 기업에서 대용량 실시간 데이터의 수집, 저장, 처리를 위해 광범위하게 사용되고 있습니다. 기본 아키텍처카프카의 아키텍처는 생산자(Producer), 브로커(Broker), 소비자(Consumer), 이렇게 세 가지 주요 구성 요소로 이루어져 있습니다. 생산..
Reindex, Alias 활용해 문서 재색인하기 (비동기, 무중단)
Elasticsearch Reindexing은 데이터의 이동, 수정, 또는 클러스터 업데이트 시 중요한 역할을 하는 프로세스입니다. 데이터의 성능 향상, 새로운 매핑의 적용, 또는 클러스터 확장을 위해 필요한 작업으로, Elasticsearch의 핵심 기능 중 하나로 꼽힙니다. Reindexing은 주로 데이터 업데이트를 위해 사용됩니다. 기존 데이터 스키마를 새로운 구조로 변경하거나 업데이트해야 할 필요가 있을 때 사용합니다. 새로운 필드의 추가나 기존 필드의 삭제 등의 매핑 변경을 수행할 수 있습니다. 본 글에서는 Reindexing이 어떻게 작동하는지, 그리고 어떻게 효율적으로 사용할 수 있는지, 무중단으로 새로운 인덱스를 적용할 수 있을지 살펴보겠습니다. Elasticsearch 시리즈는 7.1x..
[SQL] 유저 데이터 분석에서 유용한 ROW_NUMBER, LAG 함수
오늘은 다음과 같은 유저 데이터 분석에서의 특정한 상황을 가정해 봅시다. 아래 질문을 해결해나가며, ROW_NUMBER와 LAG 함수의 활용에 대해 알아봅시다. 유저가 방문한 사이트를 구분해서 유저의 행동 패턴을 집계하고 싶어. 특정 이벤트 이전에 어떤 이벤트가 일어났는지 궁금해 하지만, 1번째 방문한 경우와 2번째 방문한 경우를 다르게 구분 짓고 싶어. 그러니까 내 말은.. 단순히 GROUP BY SITE 구문으로는 불가능하단 말이야. 어떻게 할 수 있을까? 본 글은 기본적인 SQL 구문을 알고 있다고 가정합니다. 그리고 윈도우 함수(LAG, ROW_NUMBER 등)의 정의를 들어본 적은 있어야 합니다. 매번 함수의 정의를 다시 찾아보고 실제 데이터 정제나 분석 업무에서 활용하기 어려운 사람을 대상으로..
[책 리뷰] 데이터 과학자 원칙
- 제목: 데이터 과학자 원칙 - 저자: 권정민, 권시현, 김영민, 김진환, 박준석, 변성윤, 이정원, 이진형, 이제현 - 출판사: 골든래빗 - 출반사 책 설명: “데이터 과학자는 뭐하는 사람일까? 지금처럼 하면 되는 것일까? 나도 선배 데이터 과학자들처럼 성장할 수 있을까? 3년 10년 후에도 생존할 수 있을까? 데이터 분석 환경이 이다지도 척박한데 어떻게 데이터 분석을 한단 말인가? 팀워크는, 팀빌딩은 도대체 어떻게 해야 하는 걸까?” 데이터 과학자로 살아가면서 하루에도 천 번을 되묻는 물음에 아마존, IDT, 빅쏠, 우아한형제들, 코드스테이츠, 쏘카, 삼성전자, 11번가, 페블러스 전현직 데이터 과학자 9명이 답합니다. 데이터 과학자, 데이터 엔지니어, 데이터 분석가뿐만 아니라 데이터를 활용하는 비..
[Airflow] dag 스케쥴 관련 date 정의 알아보기 (start_date, execution_date, schedule_interval)
개요 Apache Airflow는 데이터 파이프라인 관리와 작업 스케줄링을 위한 오픈 소스 플랫폼으로, 데이터 엔지니어링 및 데이터 과학 작업에서 널리 사용됩니다. 저도 올해 처음으로 해당 플랫폼을 사용하여 데이터 ETL 작업을 처리했습니다. 작업 중에 가장 헷갈렸던 여러 기준의 date 들을 한번 자세히 정리해보겠습니다. 태스크 스케줄링의 중요성 Apache Airflow는 작업 스케줄링 및 자동화를 위한 강력한 도구입니다. 사용자는 작업의 실행 시간, 간격 및 의존성을 정의하고, Airflow는 해당 작업을 예약된 시간에 실행하거나 재시도할 수 있습니다. Airflow에서 작업은 Directed Acyclic Graph (DAG)로 구성됩니다. DAG는 여러 작업(Task)으로 구성된 워크플로우를 나..
2023년 상반기 회고
회고의 목적 올해부터는 나의 생활, 공부, 커리어를 주제로 매년 목표를 세우고 반기마다 회고하기로 다짐했습니다. 연초에 목표를 공유하지는 않았지만, 이번 기회에 올해의 목표가 무엇이었는지 되돌아보며, 잘 지켜지고 있는지, 목표를 향해 방향을 맞게 설정하였는지, 어떤 점에서 어려움을 겪었는지 생각해 보고자 합니다. 그리고, 앞으로 남은 6개월의 방향을 다시 잘 잡는 데 목적을 두고 있습니다. 올해의 목표 (였던 것) 올해의 목표는 아래 표와 같이 설정했습니다. 아래는 대표적인 내용만 적었지만, 구체적인 실천 방안도 함께 세웠습니다. 생활 분야와 관련된 내용은 1순위인 건강 관련 내용만 언급하도록 하겠습니다. 우선순위 / 분야 생활 개인적인 공부 커리어 1 건강하기 - 운동, 식단, 영양제 영어 - 뉴스프레..
Elasticsearch 문서 업데이트 (document update)
이미 인덱싱되어 있는 문서의 데이터를 변경할 경우에는 Update 요청을 사용합니다. Update 요청으로 어떻게 지정된 스크립트를 사용하여 문서를 업데이트하는지 예제와 함께 주의할 점도 알아봅시다! Update Request 는 다음과 같이 보낼 수 있습니다. POST //_update/ Update 실행 시 문서의 버전이 증가합니다. 스크립트와 함께 문서 업데이트가 가능한데, 이때 스크립트는 문서를 업데이트하거나 삭제하거나 수정을 건너뛸 수도 있습니다. 문서 일부분만 전달하여 기존 문서와 병합할 수도 있습니다. 굳이 전체 문서 내용을 전달할 필요가 없어 기본 인덱싱 파이프라인과 다르게 수행되어야 하는 등 다른 파이프라인으로 업데이트 되는 내용에 대하여 부분 업데이트가 가능합니다. 인덱스에서 문서를 가..
[Basic] Elasticsearch 문서 인덱싱 - Index, Delete, Update, Bulk
이번 글에서는 지난 글에서 직접 구축했던 인덱스에 도큐먼트를 인덱싱하고, 삭제하고, 업데이트 하는 방법을 알아보고자 합니다. 지난 글을 읽지 않았어도, 인덱스 생성에 관해 매핑, 분석, 설정 등 기본적인 지식을 알고 있다면, 본 글을 쉽게 이해하실 수 있습니다! Elasticsearch 시리즈는 7.10 버전을 기본으로 설명합니다. 필요하다면 8.0 이후의 버전 내용을 추가로 설명합니다. 도큐먼트를 인덱싱 할 대상 인덱스는 다음과 같이 정의하였습니다. PUT /sample-user-index { "mappings": { "properties": { "age": { "type": "integer", }, "level": { "type": "keyword" }, "name": { "type": "text",..
[Basic] Elasticsearch 간단한 인덱스 구성하기 실습 - Mapping, Analysis, Similarity, Setting
지난 글들에서 간단하게 살펴본 내용을 바탕으로 오늘은 직접 샘플 인덱스를 구축해보려고 합니다. 간단한 필드 구성을 가진 인덱스를 생성하면서, 언급했던 일부 인덱스 모듈 내용을 추가해봅시다. Elasticsearch 시리즈는 7.10 버전을 기본으로 설명합니다. 필요하다면 8.0 이후의 버전 내용을 추가로 설명합니다. Mapping 유저에 관련된 필드 "age", "level", "name"를 가진 "sample-user-index"를 생성합니다. 각각의 필드에 대해 유형을 정의할 수 있습니다. integer 유형은 말 그대로 32비트 정수를 의미합니다. keyword 와 text 유형은 둘다 텍스트에 관한 유형이지만, 전자는 term level search, 후자는 full-text search를 지원한..