전체 글

공부와 경험을 기록하는 공간
읽은 문서 : https://medium.com/gitconnected/python-generators-how-to-efficiently-fetch-data-from-databases- 25f1947f56c0 Python Generators: How To Efficiently Fetch Data From Databases Two practical use cases for Data Engineers. levelup.gitconnected.com 소개 위 문서에서는 매우 큰 데이터베이스에서 데이터를 어떻게 효율적으로 가져올 수 있는지에 대해 설명하고 있다. 필자는 데이터베이스 엔지니어로 근무하면서 실제 운영되고 있는 데이터베이스에서 많은 데이터셋을 가져와 분석을 위한 다른 데이터베이스나 클라우드 스토리지에 ..
문서링크 : Postgres 공식문서 - Index 11.1 소개 아래와 같은 테이블이 있다고 가정합니다. CREATE TABLE test1 ( id integer, content varchar ); 그리고 어플리케이션은 다음 형식의 쿼리가 발생하는 상황이 많습니다. SELECT content FROM test1 WHERE id = content; 별다른 조치가 없었다면, 시스템은 일치하는 것을 찾기위해 test1의 모든 행들을 스캔해야 합니다. 만약 test1 테이블에 엄청나게 많은 행들이 있고 그 중 찾고 있는 행은 극히 일부(0개이거나 1개)일 경우 이는 명백히 비효율적인 방식입니다. 하지만 만약 시스템이 id 컬럼에 대해 인덱스를 유지하도록 설정되어있다면, 더 효율적인 방식으로 일치하는 행들을 찾..
· 개발공부
1. What is Debezium? (데비지움이란?) Debezium은 변경 데이터 캡처를 위한 오픈 소스 분산 플랫폼입니다. 간단하게, 데이터베이스에 Insert or Update or Delete가 발생할 경우 이를 감지하고 변경 내용을 캡처해 이벤트로 변환하는 도구입니다. Debezium 공식 문서를 읽어보면 이벤트 스트리밍 플랫폼으로 가장 일반적으로 Kafka를 사용한다고 소개할 정도로 Kafka와 함께 사용한다면 분산 시스템 환경에서 데이터 변경을 쉽게 감지하고 전달할 수 있습니다. 2. How does Debezium detect changes? (데비지움은 어떻게 데이터 변경을 감지할까?) Debezium은 수많은 데이터베이스를 지원하지만 PostgreSQL을 기준으로 설명드리겠습니다. 공..
· 개발공부
1. Introduction & Background (소개 및 등장 배경) Apache Kafka의 공식 문서 소개문을 인용하면 아래와 같이 소개합니다. 수천 개의 회사에서 고성능 데이터 파이프라인, 스트리밍 분석, 데이터 통합을 위해 사용하는 오픈 소스 분산 이벤트 스트리밍 플랫폼 즉, Kafka는 분산 시스템에서 효율적으로 대용량 데이터 처리를 위해 Pub/Sub 구조로 동작하는 이벤트 스트리밍 플랫폼입니다. Kafka가 등장한 배경은 LinkedIn에서 대용량 데이터(사용자 활동, 로그 등)의 데이터 파이프라인을 각 서버에서 end-to-end 구조로 처리를 하도록 되어 있었는데 서비스가 확장될수록 시스템 복잡도가 높아지고 유지 보수에 어려움이 증대되어 이 대용량 데이터를 중앙에서 효율적이고 안정적..
· 프로젝트
프론트엔드, 백엔드 개발 모두 진행하였는데 본업이 백엔드 개발자다 보니 UI, UX의 부족함은 감안해주시면 감사드리겠습니다.. 지극히 개인적 사용 목적으로 개발한 개인 프로젝트이며 Kafka와 Debezium을 사용해 데이터 동기화를 한 것이 특징인 프로젝트입니다. 분산 시스템에서 데이터 동기화를 어떻게 구현했는 지를 중심으로 설명드리려 합니다! 프로젝트 개요 매주 웨이트 트레이닝을 하는데 중량이나 횟수, 진행한 세트 수 등을 기록하지 않아서 매주 할 때마다 헷갈리고 중량이 잘 늘지 않는 것 같다... 좀 더 체계적으로 운동할 수 있도록 내 운동 페이스에 맞춘 트레이너 앱을 제작해 관리하자! 사용 시나리오 오늘도 웨이트 트레이닝을 하러 헬스장에 간다! 헬스 시작 전 운동 시작하기 버튼을 누른다! 진행할 ..
· 개발경험
최근 회사들의 업무를 살펴보면 모놀리식 구조에서 MSA로 전환하는 사례가 많습니다. 그만큼 MSA의 확장성과 편한 유지보수가 입증되어 많은 모놀리식 프로젝트들이 MSA로 전환하는 동향을 보이고 있는데요. 저 또한 2번의 스타트업 경험 중 2번 모두 모놀리식에서 MSA로 전환하는 업무를 경험했었습니다. 근데 MSA로 전환하면서 몇가지 까다로운 것들이 생기는데 그 중 하나가 서버 간 데이터 동기화였습니다 MSA의 일반적인 구조는 각 Feature로 분리된 서버가 자신의 DB를 독립적으로 가지는 것이기 때문에 만약 한 서버에서 다른 서버의 데이터가 필요한 경우 데이터 동기화를 시켜주어야 합니다. 실제로 제가 진행했던 프로젝트 중 캘린더나 기관 통합 검색을 구현할 때 이런 상황이 있었는데요. 대표적으로 캘린더 ..
· 일상경험
안녕하세요! 저는 2021년 11월 15일에 산업기능요원으로 편입된 후 약 2년이라는 시간 동안 IT 산업기능요원으로 복무하고 2023년 10월 16일부로 소집해제된 민간인입니다. 제가 처음 산업기능요원으로 복무를 시작할 당시 관련 정보가 많지 않고 비추천한다는 소문만 무성해서 두려웠던 과거를 회상하며 제가 복무해 온 과정에 대한 썰도 풀고 산업기능요원 제도에 대한 장단점도 말씀드릴 겸 회고를 씁니다. 다사다난했던 산업기능요원 복무 과정 1. 인생 첫 회사에 입사하다. 산업기능요원 복무를 위해 여러 회사들을 찾아보았고 많은 회사에 입사 지원을 하였습니다. 하지만 첫 취준인만큼 이력서와 포트폴리오에 부족한 부분이 많아서 계속된 서류 탈락을 경험하면서 어떤 부분이 부족했을까를 생각하면서 보완했던 기억이 납니..
· 프로젝트
자동차 번호판 인식 with OpenCV 1. 라이브러리 호출 import cv2 import numpy as np import matplotlib.pyplot as plt import pytesseract plt.style.use('dark_background') 사용한 라이브러리들은 총 4가지이다. 사용 용도는 다음과 같다. cv2 : Opencv numpy : 복잡한 수치계산 matplotlib : 시각화 pytesseract : 글자 인식 (사진에서 번호판 숫자 추출) 2. Read Input Image 2번째 단계에서는 이미지를 불러온 후 너비, 높이, 채널의 값을 저장한다. matplotlib을 이용해 정상적으로 불러왔는지 출력해보고 저장된 너비, 높이, 채널을 확인한다. img_ori = c..