전체 글 45

[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 할 수 있다. 그러나, 인덱스를 개발자 간 상호 협..

IT/NOSQL 2023.05.22

[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..

IT/NOSQL 2022.03.17

[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를 추가한다고 가정하자..

IT/NOSQL 2021.09.22

[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도 내부적으로 파일을 찾을 때 성능적인 문제가 ..

IT/Cloud 2021.09.02

[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..

IT/Cloud 2021.07.16

[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이 잘 되지 않는 오류가..

IT/Cloud 2021.06.24

[Middleware] ASGI(Asynchronous Server Gateway Interface) vs WSGI(WebSErver Gateway Interface)

0. Table Of Content 0. Table Of Content 1. Server Gateway Interface가 왜 필요한가? 2. WSGI (Web Server Gateway Interface) 3. ASGI (Asynchronous Server Gateway Interface) 3.1. 기존 WSGI에는 어떤 문제점이 있었는가? 3.2. ASGI는 어떤 방식으로 WSGI의 문제점을 해결했는가? 3.3. 간단한 ASGI Application 예제 4. Reference 1. Server Gateway Interface가 왜 필요한가? 일반적으로 우리가 보고 있는 웹 서비스는 브라우저를 통해서 흘러나온 웹서버의 내용들이다. 대부분의 어플리케이션의 경우 웹과 소통하는 미들웨어를 가장 널리 사용되..

IT/미들웨어 2021.02.17

[Spring] 순차적 프로세스의 비동기식 프로세스로의 전환 삽질

1. 서론 및 얽힌 이야기 내부 시스템에 대해 지속적으로 healthCheck를 하는 Spring Boot기반 서비스를 개발한 적이 있다. DB에 등록된 시스템 리스트를 가져와 순차적으로 healthCheck를 실행하는 방식의 서비스이다. 그러나, 10/12 HealthCheck Target별로 HealthCheck 시점의 정합성이 맞지 않는 문제가 발생하였다. 문제 상황 서술 전에 적용중인 시스템 아키텍처 및 HealthChecker 서비스에 대한 개요를 먼저 풀어본다. A Group의 WAS에 대해 배포를 진행하였다. 배포가 진행되면, 해당 인스턴스로의 직접적인 호출에 대해서는 동작하지 않게 된다. static file을 제외한 모든 경로에 대해서 reverse proxy를 통하여 데이터가 was로 ..

IT/Java Spring 2020.10.14

[OpenSource] Apache Kafka

Table of content 1. What is the Apache Kafka 2. Benefits of Apache Kafka 3. Apache Kafka 아키텍처 3.1. 주체 단위 아키텍처 3.1.1. Producer 3.1.2. Broker 3.1.3. Zookeeper 3.2. 데이터 단위의 아키텍처 3.2.1. Topic 3.2.2. Partition 3.2.3. Offset 4. Failover 과정 5. 가장 이상적인 Kafka 아키텍처 1. What is the Apache Kafka Apache Kafka는 대량의 데이터를 처리할 수 있으며, 엔드포인트간 메시지를 전달 할 수 있는 분산 발행-구독 메시징 시스템이다. Kafka 메시지는 스토리지에 유지되고 데이터 복제를 통해 데이터 손..

IT/OpenSource 2020.09.07

[HikariCP] Possibly consider using a shorter maxLifetime value

Table Of Contents 0. 서론 1. Connection Pool이 무엇인가 2. Connection Pool이 왜 필요한가? 3. HikariCP의 주요 파라미터 4. 문제 분석 5. 후기 및 조치 6. 참고 문헌 클릭하시면 해당 content로 넘어갑니다. 0. 서론 지난주, 플랫폼 각 내부의 엔드포인트를 호출하여 각 서비스 및 데이터베이스가 살아있는지에 대해 모니터링 하는 Spring Boot Application에서 다음과 같은 에러 메시지를 보았다. [WARN ] 2020-07-30 16:43:39 299545737 [PoolBase.java][isConnectionAlive](184) : HikariPool-1 - Failed to validate connection org.mari..

IT/Java Spring 2020.08.12