본문 바로가기

IT

[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이 잘 되지 않는 오류가.. 더보기
[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가 왜 필요한가? 일반적으로 우리가 보고 있는 웹 서비스는 브라우저를 통해서 흘러나온 웹서버의 내용들이다. 대부분의 어플리케이션의 경우 웹과 소통하는 미들웨어를 가장 널리 사용되.. 더보기
[Spring] 순차적 프로세스의 비동기식 프로세스로의 전환 삽질 1. 서론 및 얽힌 이야기 내부 시스템에 대해 지속적으로 healthCheck를 하는 Spring Boot기반 서비스를 개발한 적이 있다. DB에 등록된 시스템 리스트를 가져와 순차적으로 healthCheck를 실행하는 방식의 서비스이다. 그러나, 10/12 HealthCheck Target별로 HealthCheck 시점의 정합성이 맞지 않는 문제가 발생하였다. 문제 상황 서술 전에 적용중인 시스템 아키텍처 및 HealthChecker 서비스에 대한 개요를 먼저 풀어본다. A Group의 WAS에 대해 배포를 진행하였다. 배포가 진행되면, 해당 인스턴스로의 직접적인 호출에 대해서는 동작하지 않게 된다. static file을 제외한 모든 경로에 대해서 reverse proxy를 통하여 데이터가 was로 .. 더보기
[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 메시지는 스토리지에 유지되고 데이터 복제를 통해 데이터 손.. 더보기
[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.. 더보기
[Spring] Factory Design Pattern 0. Table Of Content 1. 서론 2. Factory Pattern이란 무엇인가 2.1. Factory Parrern 예제 3. Factory Pattern 사용으로 얻을 수 있는 기대 효과 4. 실무에서 적용한 코드 일부 5. 후기 1. 서론 배치 프로세스에 대한 공통 프레임워크를 담당하여 작업을 진행하고 있었다. Spring Batch Starter를 사용하여 작업을 진행하는 것이 가장 효율적이었지만, 기존 만들어진 테이블에 맞춰야 했기 때문에 해당 테이블에 맞게 배치 프레임워크를 새로 개발하게 되었다. 프레임워크에서 build된 결과물인 jar파일은 crontab에 등록이 되어 jar 실행 시 입력받은 augument값으로 해당 batch job이 실행되어야 하기 때문에, 입력 argu.. 더보기