전체 글

    [강의 후기] 유데미(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를 지원한..

    [Python] Iterable 과 Iterator의 차이

    개요 최근 빅쿼리를 사용하여 슬랙봇을 개발할 일이 있었습니다. 빅쿼리 테이블에서 쿼리한 결과를 보기 좋게 편집하여 슬랙을 보내는 배치 서비스를 개발하는 중에 헷갈렸던 파이썬 개념이 있어 정리해 보려고 합니다. *해당 글은 다음 기준으로 작성되었습니다. python~=3.10 google-cloud-bigquery~=3.9.0 빅쿼리 패키지에서 쿼리 결과를 객체로 받아 사용하는 여러 가지 방법이 있습니다. 그중에서도 bigquery.Client.query().result()라는 함수를 사용하여 리턴되는 bigquery.table.rowiterator 객체를 바로 사용하려고 했었으나, for문 실행 중에 ‘iterator has already started'라는 오류가 발생하였습니다. 😭 파이썬의 기본 개념..

    [글또] 글또 8기 중간 회고와 더 나은 글쓰기를 위한 액션 아이템

    인트로 글또 8기가 시작한 지 벌써 3개월이 되어갑니다. 지난주, 글또를 운영하시는 변성윤님의 ‘기술 블로그 운영에 어려움을 겪는 분들에게 전하는 이야기’ 발표를 들었습니다. 일요일의 바쁜 일정 중 가장 마지막이어서 집중을 잘하지 못했음에도 불구하고 제게 와닿는 이야기들이 많았습니다. 예를 들면, 나는 왜 글을 잘 못 쓸까 하는 자책감이요. ㅎㅎ 오늘은 발표에서 인상 깊게 들은 부분을 기억하며 나의 지난 글과 글쓰기 습관을 돌아보고 스스로 선정한 액션 아이템의 결과를 공유하고자 합니다. 지난 글또 활동 회고 우선 지난 글또 활동 중 쓴 글을 돌아보자면, 4개의 글을 쓰고 1번의 패스를 사용했습니다. 4개의 글 중 1개의 글은 맨 처음 작성한 글또 다짐 글이었습니다. 나머지 3개의 글은 기술 & 언어 주제..