본문 바로가기

IT

[Typescript] Generic을 활용한 class constructor 간소화하기 0. Table Of Contents 0. Table Of Contents 1. 서론 2. 이번 문제의 key는 왜 Generic인가? 3. Generic 4. Generic Type (Utility Type) 4.1. Partial 4.2. Pick 5. 최종 적용 코드 1. 서론 class 정의시, constructor를 정의하곤 했다. 일반적인 constructor를 생성시, 아래와 같은 형태를 띈다 export class ModbusConnection { constructor(modbusClient: ModbusRTU, deviceId: any, ipAddress: string, modelId: any, nestedDeviceIdList: Device[]) { this.modbusClient = .. 더보기
[Apache Kafka]Kafka Consumer Group에 대한 고찰(2023.03.30) 0. Table Of Contents 0. Table Of Contents 1. Consumer Group이란 무엇인가 2. Consumer Group이 왜 필요한가 2.1. Consumer Failover 2.2. 다수의 Instance에서의 Offset 관리 2.2.1. 독립적인 Consumer로 구성하였을 경우 2.2.2. 같은 Consumer Group의 Instance로 구성하였을 경우 3. Consumer Group과 Partition의 관계 1. Consumer Group이란 무엇인가 Consumer Group이란, Consumer Instance를 대표하는 그룹이며 아래 그림을 참조한다. Consumer (Instance) : Broker로부터 데이터를 pull 받아 처리하는 단일 proc.. 더보기
[Apache Kafka] kafka topic convention에 대한 고민 (2022.12.29) 0. Table Of Contents 0. Table Of Contents 1. 발생한 이슈 사항 2. 기본적인 Kafka Topic Convention 3. 개인적으로 cut 한 생각들 1. 발생한 이슈 사항 모식도를 먼저 그려보면 아래 그림과 같다. 여러 공장에서 여러개 장비에 대한 buffer 데이터를 cluster에 전송한다. 이 때, 보낸 데이터에 대한 식별자가 필요한데 이를 topic으로 관리한다. topic convention에 대해 고민하는 도중 아래와 같은 고민이 들었다. 장비별로 topic을 생성한다 공장별로 topic을 생성한다. 이외에도 convention을 지정하기 위한 고민을 하며 들었던 생각 전체를 이 글에 적어놓고자 한다. 2. 기본적인 Kafka Topic Conventio.. 더보기
[Apache Kafka] Kafka Data Ordering issue (2023.01.26) 0. Table Of Contents 0. Table Of Contents 1. 서론 2. 문제점 2.1. partition이 하나일 경우의 데이터 ordering test 2.2. partition이 복수개의 경우 2.2.1. kafka clustering 2.2.2. data ordering test 3. 문제점 분석 4. 해결법 4.1. partitioning key 4.2. sticky partition 1. 서론 현재 기획중인 데이터 파이프라인의 경우 아래와 같은 특성을 지니고 있다. 하나의 source가 아닌 다양한 환경의 source에서 데이터를 받는다. 현장 local server가 존재하지만, 통계 및 분석을 local server에서 지원하게되면 disk 및 성능 문제가 발생 할 수 있.. 더보기
[MongoDB] 불필요한 index 정리 및 최적화 (2022.09.01) 0. Table Of Contents 0. Table Of Contents 1. 개요 2. 배경 지식 2.1. 인덱스 2.2. B-Tree 2.3. B-Tree에 최적화된 mongodb index 설계 2.3.1. ESR Rule 2.3.2. 왜 ESR Rule을 따라야 하는가? 3. 개선 전 DB 문제점 분석 3.1. 불필요한 인덱스 3.2. 인덱스 카디널리티 분석 3.3. ESR Rule 분석 4. 인덱스 튜닝 결과 4.1. Index Access 4.2. 카디널리티 분석 ESR Rule 분석을 통한 개선 4.3. 총평 5. 후기 및 다음 작업에 대한 예고 1. 개요 여러 서비스로 쪼개져 있는 환경에서는 각 마이크로서비스가 필요한 인덱스를 build 할 수 있다. 그러나, 인덱스를 개발자 간 상호 협.. 더보기
[MongoDB] Timeseries Collection에 대한 연구 0. Table Of Content 0. Table Of Content 1. Time Series Collection을 연구하게 된 계기 2. Time Series Data란 무엇인가? 3. 일반 Collection과 Time Series Collection의 동작 방식 3.1. 일반 Collection 3.2. TimeSeries Collection 4. 적용 방법 4.1. MongoDB 설치 4.2. NestJS 초기 설정 4.2.1. mongoose 설치 4.2.2. mongoose connection 설정 4.2.3. Schema 작성 4.2.4. Schema를 injection 받아서 사용할 수 있도록 선언해준다. 4.3. MongoDB data auto delete by ttl 설정 (Opti.. 더보기
[MongoDB] MongoDB Performance를 향상시키는 전략 0. Table Of Contents 0. Table Of Contents 1. 많은 인덱스를 생성하지 않는다. 2. Index Prefix를 적극적으로 이용하자. 3. Multi Sorting의 경우 sort 방향 신경써서 index를 설계하자 4. 하나의 collection을 여러개의 collection으로 분리하자 5. MongoDB를 4.0이상 버전으로 유지하자. 5.1. Non blocking Secondary Read 5.2. Multi Transaction 6. Reference 1. 많은 인덱스를 생성하지 않는다. 다음 사진과 같이 인덱스를 하나의 사전이라고 생각해보자. 위 같은 구조에서 collection에 name이라는 property가 “AB“라는 document를 추가한다고 가정하자.. 더보기
[AWS S3] AWS S3 Key path 설계 0. Table Of Contents 0. Table Of Contents 1. 설계 배경 2. 고려해야할 항목 3. AWS S3 Reference 분석 3.1. 문제상황 예시 3.2. 문제상황 해결 4. 실전 적용 5. 결론 및 느낀점 6. Reference 1. 설계 배경 개인 프로젝트를 진행하던 도중 업로드한 개인 프로필 사진을 저장해야하는 기능을 개발하게 되었다. 프로필 사진을 저장하고 불러오는 단계에서 최대한의 성능을 내게 하고자 고민하게 되었다. 2. 고려해야할 항목 사진파일이 올라갈 때 너무 큰 크기의 사진이 올라가게 되면 돈을 많이 내게 된다. 사진 파일이 올라간 aws s3경로를 보고 이 사진이 어떤 사진인지 확실하게 알면 좋다. AWS S3도 내부적으로 파일을 찾을 때 성능적인 문제가 .. 더보기
[FaaS Service] FaaS Service를 사용시 주의해야할 점 0. Table Of Contents 0. Table Of Contents 1. Coldstart 2. Stateless Environment 3. 한도 1. Coldstart FaaS Service는 쓰지 않는 상태일 때는 function instance 대기 상태가 아닌 생성되지 않은 상태로 유지되다가 request가 들어올 경우, function instance가 생성되며 이에 대한 요청을 핸들링하기 시작한다. 이 때, request를 handling할 instance가 없으면 delay가 생길 수 있다. cloud function은 다음과 같은 경우 새로운 함수 인스턴스가 생성된다. cloud function을 새로 배포할 경우 auto scaling으로 인해 확장되는 경우 긴 시간동안 funct.. 더보기
[Docker-Compose]Docker-Compose env parsing error로 인한 삽질기록 0. Table Of Contents 0. Table Of Contents 1. 문제 현황 분석 1.1. 문제 상황 1.2. 기존 docker version과 upgrade한 docker version 1.3. 프로젝트 폴더 구조 1.4. 명령어 call 순서 1.5. 주요 파일 구성 확인 2. 문제 해결 삽질 2.1. 문제 해결을 위한 searching 2.2. 문제 디버깅 2.3. 디버깅내용이 맞는지에 대한 검증 2.4. 최종 문제 해결 flow 3. 삽질을 통해 얻은 결론 및 개인적인 프로젝트 구조에 대한 회고 4. Reference 1. 문제 현황 분석 1.1. 문제 상황 docker version을 업그레이드 하고 나서 다음과 같이 잘 되던 .env file parsing이 잘 되지 않는 오류가.. 더보기