분류 전체보기 5

Datagrip - Virtual Foreign Key 기능 활용하기

Virtual Foreign Key란? 실제 FK가 걸려있지 않아도 diagram을 뽑거나, join 쿼리 작성 시 자동 완성을 지원하는 기능입니다. 기본적으로 활성화된 기능이지만, 기본 설정은 컬럼의 경우 스네이크 케이스, 테이블의 경우 파스칼 케이스로 설정되어 있어 해당 설정을 바꿔줄 필요가 있다. 설치 후 실행은 생략 https://www.jetbrains.com/ko-kr/datagrip/ 정규식 패턴 설정 ⌘, Preferences → Editor → General → Code Completion → JOIN clauses의 패턴을 설정하면 된다. 기본 설정은 다음과 같다. Column pattern (.*)_(?i)id Target column pattern $1\.(?i)id 여기에 + 버튼..

Hazelcast 케싱 및 다양한 케싱 방법 및 모니터링 정리

application.yaml 테스트 설정 spring: jpa: database-platform: org.hibernate.dialect.MySQL5Dialect generate-ddl: true show-sql: true properties: hibernate: dialect: org.hibernate.dialect.MySQLDialect cache: use_query_cache: true # Query Cache 테스트를 위한 설정 use_minimal_puts: true # 2nd level cache 테스트를 위한 Hazelcast 설정 use_second_level_cache: true region.factory_class: com.hazelcast.hibernate.HazelcastLocal..

Hazelcast 2023.10.06

[AWS] RDS 인스턴스 선택에 대하여

RDS란? AWS 클라우드에서 서비스하는 관계형 데이터베이스 SaaS 서비스 선택 시 고려해야할 옵션들 일반 MySQL 엔진 vs Aurora MySQL 엔진 Aurora MySQL, 일반 MySQL 엔진 차이점 Aurora MySQL Engine Serverless instance 인스턴스 클래스 지원 99.99% 이상의 가용성 제공 (AWS 피셜) Shared Storage를 사용하여 복제 지연이 최소화 호환되는 버전이 제한됨 (5.6, 5.7, 8.0.23) 일반 RDS MySQL Engine 트랜잭션 로그 및 데이터베이스 데이터 파일은 로컬 EBS 스토리지 볼륨 사용 데이터베이스의 모든 커밋된 트랜잭션 I/O 는 WAL(Write-Ahead Log)이라고 하는 전후 이미지가 있는 로그 레코드를 생..

AWS 2023.04.06

[AWS] 정산 배치 아키텍처 설계

1. 정산 배치 아키텍처 조사 목적 기존 배치 방식의 비효율성 위 CPU 모니터링의 예 처럼 배치 작업은 특정 시간에만 동작하여 그 외의 시간은 놀고있는다는 특징이 있습니다. 이러한 특징때문인지 기존 시스템에선 배치를 togle_order Application에 REST API 형태로 구성하였고, 특정 시간마다 Jenkins에서 배치 REST API를 호출하는 방식을 사용한 것으로 보여집니다. 어드민 시스템 같은 사용량이 적은 어플리케이션이였다면 문제가 크지 않겠지만, 기존 방식엔 크고 작은 단점들이 몇 가지 존재합니다. 단점 1. 해당 배치가 돌 것을 대비하여 Application에 최악의 상황을 고려하여, 필요 이상의 서버와 DB ConnectionPool 관련된 자원이 할당되어야 합니다. 그리하여 ..

AWS 2023.04.04

하나의 Thread Leak을 찾기까지

평화롭던 어느날… 서비스 장애는 언제나 갑자기 찾아온다! 서비스 장애의 원인을 찾아보니 주문 서버가 죽어있는게 원인이였다. 이전부터 종종 주문 서버가 죽는 증상이 있었으나, APM을 따로 달지 않아 죽어도 원인 파악이 힘든 부분이 있었다. 그리하여 Elastic APM을 달아두고 몇 일간 모니터링 한 결과 죽은 원인을 추측할 수 있었다. thread count가 계속 증가하면서 사용 memory가 같이 증가하였고, 그로 인해 WAS가 뻗는 것으로 추론할수 있었다. 일단 스레드 분석을 위해서 스레드 덤프를 확인해 봤다. $ jps 12051 order $ jstack 12051 > dump.txt "pool-60-thread-1" #277 prio-5 os_prio=31 tid=0x000000012cc3d..

장애대응 2023.02.12