전체 글

개요 Elasticsearch는 실시간 검색이 가능하도록 하기 위해 색인(indexing)이라는 과정이 필요한데 이것을 Elasticsearch는 내부적으로 어떤 처리를 하는 지 알기 위해 오늘은 Elasticsearch 색인 과정에 대해 포스팅 하도록 하겠습니다. (본 내용은 Elasticsearch에 대해 기본적인 이해가 있다고 가정하고 작성하였습니다.) Elasticsearch Cluster 색인 과정을 알아보기 전에 Elasticsearch는 데이터를 어떻게 저장하는 지 알아보겠습니다. Elasticsearch는 Index 라는 단위를 많이 사용하는데 Index란 RDB와 비교하자면 테이블과 비슷합니다. Elasticsearch는 Index를 여러 개로 쪼개서 여러 노드에 분산하여 저장하는데 이 ..
개요 BigQuery의 예약된 쿼리 기능을 사용해서 테이블 별로 postfix를 붙여서 일자 별로 데이터 마트를 생성하는 쿼리를 매일 실행하도록 하려고 하는데 쿼리를 작성할 때, postfix를 동적으로 매일 날짜로 붙이기 위해서 리서치하는 중 알게 된 내용을 정리하려고 한다. 동적 SQL 절차적 언어 | BigQuery | Google Cloud 의견 보내기 절차적 언어 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Google 표준 SQL 절차적 언어를 사용하면 단일 쿼리에서 여러 문을 멀티 문 쿼리로 실 cloud.google.com 먼저, BigQuery 에서는 동적 SQL을 실행할 수 있도록 쿼리를 지원을 한다. EXECUTE IMMEDIATE 라는 구문을 지원하..
· Linux
개요 데이터 엔지니어라는 직무를 하면서 인프라와는 밀접하게 지낼 수밖에 없고 인프라에서 네트워크는 중요한 부분이다. Application 끼리의 연결이 안 되거나 할 때는 네트워크 이슈가 대부분이기 때문에 이참에 리눅스 환경에서 네트워크 트러블 슈팅을 할 때 상황에 따른 대처 방법과 필요한 명령어에 대해 정리하려고 한다. 해당 글은 OSI 7 계층에 대한 이해가 어느 정도 있다고 가정하고 포스팅한다. 네트워크 모델 일반적으로 우리가 알고 있는 대표적인 네트워크 모델로는 OSI 7 Layer Model 이 있다. 하지만 OSI 모델보다 현대 네트워크에 더 어울리는 모델인 TCP/IP 모델을 우리는 중점적으로 볼 것이다. TCP/IP 모델은 크게 네 가지의 계층으로 나뉜다. Application Layer ..
개요회사에서 DW로 BigQuery를 도입한지 대략 1달이 지났고 전월 BigQuery 비용이 생각보다 많이 나와서 쿼리 사용과 스토리지 등에 대한 모니터링이 필요하다고 느껴졌고 구축에 대한 내용과 이를 통한 얻은 효과에 대해 포스팅을 하려고 한다.BigQuery 쿼리 사용량 모니터링BigQuery는 쿼리 사용량과 스토리지 사용량으로 비용을 청구하는데 스토리지에 대한 비용은 매우 저렴하기 때문에 신경쓰지 않아도 큰 문제는 없어서 쿼리 사용량이 대부분이다. 그렇기 때문에 이를 모니터링 하기 위해서는 쿼리를 사용했다는 것에 대한 정보가 필요한데 다행히도 GCP에서 BigQuery를 사용한 로그를 남겨주기 때문에 이것을 활용하면 된다. 라우팅 및 스토리지 개요  |  Cloud Logging  |  Googl..
· Data/Airflow
개요현재 회사에서 Workflow Management 툴로 Airflow를 도입하였고 DAG를 통해 ETL과 같은 Job을 관리하고 있다. 데이터 플랫폼 구축의 초기 단계이기 때문에 하나의 Repository에서 모든 DAG를 관리하였고 배포도 직접 서버에 접속해서 수동으로 배포하고 있었고 이번에 DW로 BigQuery를 선정하게 되면서 원본 데이터들을 ETL을 통해 DW로 적재하거나 DM을 만드는 DAG가 점점 늘어날 것이고 DAG를 개발하는 인원도 점차 늘어날 것이라고 판단해서 이번에 Airflow DAG에 대한 CI/CD를 구축하기로 결정하게 되었고 CI/CD를 구축하기까지의 여정에 대해 포스팅 해보려고 한다.CI/CD란?보통 개발이 끝난 application이 있다면 이를 실제 서버에 배포하는 것..
· Backend
데이터를 서빙하는 API가 하나 있는데 해당 API는 Java Spring으로 개발되어 있었고 현재 우리가 속해있는 데이터 팀에서 관리하고 있는 상태였습니다. Spring으로 만들었던 이유는 빠르게 만들어야 했고 인력도 부족했기에 일단 그렇게 만들었고 현재는 팀원들의 기술 스택이 Python을 주로 사용하고 있고 Java에 대한 경험이 많이 없기 때문에 추후 기능 추가나 이런 부분에서 유지 보수가 쉽게 하기 위해 Python으로 마이그레이션 하는 것이 필요했고 그 일을 제가 맡게 되어서 그 과정에 대해 포스팅해보려고 합니다. 현재 Serving API 파악 일단 해당 Serving API의 기능을 파악해야 했는데 API 주소, Response 스키마 등 API를 호출하는 쪽에서 필요한 부분들에 대해서는 ..
멍이요
Never Ending Study