대용량 날씨 데이터, 파티셔닝으로 해결하다 문제 상황 회사 프로젝트에서 전국 지역별 날씨 예보 데이터를 저장하는 batch.weather_forecast_latest 테이블을 운영하고 있었다. 시간이 지나면서 데이터가 기하급수적으로 쌓이기 시작했고, 최신 데이터만 필요한 쿼리에서도 테이블 풀스캔이 발생하는 심각한 성능 문제가 생겼다. -- 기존 ...
회사에서 Azure Function App을 사용한 서버리스 아키텍처를 운영하고 있었다. 인프라는 관리 하지 않았지만 인프라 담당자의 퇴사로 인프라 관리까지 업무를 맡게 되었다. 어느 날 Azure 청구서를 확인하고 깜짝 놀랐다. “이렇게 비용이 많이 나온다고…?” 문제 발견: 과도한 스펙 9월 청구 내역 9월 Function App 비용을...
마이그레이션 일지 전력, 온도 5분데이터를 Mongo로 옮겨야함 점포는 약 17000개 5분마다 데이터가 17000개가 들어오니 하루에 약 4896000건의 데이터 1년의 데이터를 이관을 해야하니 전력, 온도 각각 약 1,787,040,000건의 데이터를 이관을 해야한다. 총 3,574,080,000건 현재 데이터가 한행에 시간당 데이터가 한...
스프레드 연산자(…)는 배열이나 객체의 요소를 쉽게 펼치고 조작할 수 있는 유용한 기능이다. 배열결합 AS-IS const array1 = [1, 2, 3]; const array2 = [4, 5, 6]; const combinedArray = array1.concat(array2); console.log(combinedArray); // [...
AS-IS const cars = []; for (const name of names) { cars.push(new Car(name)); } TO-BE map을 이용하여 간단한 반복문은 더욱 간결하고 가독성있게 표현할 수 있다. const cars = names.map(name => new Car(name))
Jest Jest는 JavaScript 및 TypeScript로 작성된 애플리케이션을 위한 오픈 소스 테스트 프레임워크입니다. Facebook에서 개발하였으며, 주로 유닛 테스트에 사용됩니다. 사용사례 아래는 간단한 자동차게임에 필요한 객체이다. Car.js import * as rand from "../util/random.js" class...
블로그 글을 반영을 하려는데 아래와 같은 v3 버전을 사용하지 않는다는 에러가 발생하였다. Error: This request has been automatically failed because it uses a deprecated version of `actions/upload-artifact: v3`. Learn more: https://gi...
Github Repo 기존에는 H2QueryBuilderDML, H2QueryBuilderDDL 내부에서 DMLColumnData와 DDLColumnData까지 각각 내부 데이터를 검증하는 로직이 포함되어 있었다. 하지만 각 클래스안에 너무 많은 책임이 있다고 생각하여 클래스들을 감싸고 각 쿼리 메소드별로 클래스를 나눠 책임을 분산하였다. DD...
Github Repo DDL이란 DML은 Data Manipulation Language의 약자로, 데이터베이스에서 데이터를 조작하기 위한 SQL 명령어들을 포함하는 언어이다. DML은 데이터의 입력, 수정, 삭제 및 검색과 관련된 다양한 작업을 수행하는 데 사용된다. SELECT: 데이터베이스에서 데이터를 조회할 때 사용합니다. IN...
Github Repo DDL이란 DDL은 Data Definition Language의 약자로, 데이터베이스의 구조와 스키마를 정의하고 변경하는 SQL 명령어들을 포함하는 언어이다. DDL은 데이터베이스에서 테이블, 인덱스, 뷰 등의 객체를 생성, 수정, 삭제하기 위한 명령어를 제공한다. 주요 DDL 명령어는 다음과 같다 CREATE: ...