2024-02-0446. SQL OrderBy 에 여러가지 인덱스 적용해보기 - 46배 빨라진 쿼리!서론 본 포스팅에서 테스트할 쿼리는 아래와 같습니다. 이 메소드는 roomId 에 기반하여 최대 1000개의 row 를 createdAt ascending 순서로 가져오는 쿼리입니다. 해당 쿼리는 findAllByRoomId 메소드로 수행이 되는데요.
2024-01-2945. CI/CD 자동화 구축 - 3지금까지 자동화한 부분에 대해 정리가 필요해서 본 포스팅을 작성합니다. 결론부터 말씀드리면, git main 브랜치에 병합되면 자동으로 신버전 태깅되어 여러 워커노드에 deploy 됩니다. 그리고 여러 Job 들의 결과를 slack 채널로 반환받게 됩니다.
2024-01-2744. 현재까지 프로젝트에 사용된 기술 정리지금까지 채팅서비스에는 정말 여러가지 기술들이 사용되었습니다. 이러한 기술들을 왜 사용했는지, 그리고 각각의 개념들에 대한 이해가 중요할 텐데요. 본 포스팅에서 자문자답 형식으로 이를 기술해보겠습니다! Q1. Kafka 는 어떤 이유로 쓴건가요? A1.
2024-01-22(PostgreSQL) Index 에 따른 성능측정Postgresql vs Mysql 인덱스 최적화 방법을 말씀드리기 전에 데이터 저장에 있어 Mysql 와 Postgresql 의 인덱싱 차이점을 먼저 말씀드리겠습니다. Mysql 의 PK 인덱스는 클러스터링 인덱스로 되어있습니다.
2024-01-0743. 서버성능 개선기록 - 🔴MTTFB 평균차이 - 31% 성능감소저는 채팅서버의 Interceptor 에서 Redis Session 에 저장된 refreshToken 을 find 하도록 설정했습니다. 그리고 이러한 Interceptor 메소드와 Redis 지연시간을 io.micrometer 로 측정해보았는데요.
2024-01-0342. 서버성능 개선기록 - 🟢MTTFB 변동량 평균 30.46% 개선성능개선 이전에 기존 서비스의 성능측정 10분간 POST /api-chat/chat 의 퍼포먼스를 ramp-up VUSER 300 으로 측정하였습니다. 아래의 테이블은 Thread warm up 이전과 이후 차이를 관찰합니다. 그리고 그래프는 웜업 이후의 그래프입니다.
2023-12-2941. 서버성능 개선기록 - 🟢TPS AVG 31%, MTTFB p99 39% 개선개선 이전(Ingress 파드 1개) thread 300 으로 요청 전송 시 위와같이 많은 cpu 로드가 걸리네요. cpu limit 설정은 적용되어 있지 않아 보이지만 일반적으로 Ingress 파드 하나로 돌리기에는 많은 부하를 혼자 감당하고 있는것을 확인할 수 있었습니다.
2023-12-1039. CI/CD 자동화 성공 - 2{: .important-title } 1.CI/CD 자동화 성공 그리고 실패 기존에 CI/CD 플로우는 하나의 머신에 자동으로 업로드하는 플로우를 가지고 있습니다(기존의 CI/CD 방법).
2023-11-03Transactional 와 Async 예제 및 탐구JPA 영속성 유지기간을 관찰하기 위한 여러 예제를 설명합니다 @Transaction 코드 밖에서는 영속성 유지가 되지 않는 것을 확인 @Transaction 코드 내부에서 영속성 유지가 되는 것을 확인 이를 통해 바뀐 생각은 아래와 같아요.
2023-10-0738. CI/CD 자동화 성공 그리고 실패 - 1본 포스팅은 제가 아래의 이슈에서 이야기한 내용을 정리한 글이에요. {: .important-title } CI/CD 자동화 성공 그리고 실패 기존에 CI/CD 플로우는 하나의 머신에 자동으로 업로드하는 플로우를 가지고 있습니다(기존의 CI/CD 방법).
2023-09-12쿠버네티스 요약본kind:Service 와 kind:Deployment 의 차이 Service와 Deployment는 Kubernetes(K8s)의 핵심 구성요소이지만, 그들의 목적과 기능이 크게 다릅니다.
2023-09-10JPQL JOIN 의 4가지 방식과 예제 설명JPQL JOIN 들이 헷갈리는 부분이 있어서 정리해보았습니다. JPQL 에는 총 4 가지 JOIN 방식이 존재합니다. 그리고 이 JOIN 방식에 따라 영속성 컨텍스트로의 로딩 전략이 달라집니다. JPQL 에서 JOIN 을 사용하려면 연관관계를 엔티티에 설정해주어야만 합니다.
2023-08-01JPA IdClass 중복저장 시 기존 엔티티 업데이트 이슈1. Issue Description 현재 LicenseCategory 는 licenseType 과 analyzeType 을 CombinedKey 로 사용합니다. 그리고 이 두 개의 키는 LicenseCategoryId 라는 IdClass 로 선언되어 있어요.
2023-06-26📌 쿼리 최적화 방법저는 JPA, Data-JPA, JPQL를 사용해서 채팅 프로젝트에서 사용합니다. 하지만 성능이 생각보다 낮았습니다. 따라서 NativeQuery(=SQL query)를 사용하여 좀 더 최적화시키려 합니다. 그러기 위해서 다양한 최적화 방식들을 정리해보려고 하는데요.
2023-06-18Spring-Cloud-Gateway 지원 로드밸런싱 기술Gateway 지원 로드밸런싱 기술 : Default로 ReactiveLoadBalancer 을 사용하고, 이는 Round-Robin(default) 과 Random 이 두 가지를 지원합니다.
2023-06-17Spring-Java 에서의 Sync/Async Blocking/Non-Blocking 구현 방법다들 동기/비동기와 Blocking/Non-blocking 을 한번씩 들어보셨을거에요. 하지만 Spring-Java 에서 이를 섞은 조합에 대한 실제 구현 방식을 설명하는 글이 별로 없더라구요. 그래서! 오늘의 포스팅은 해당 구현 방식에 대해 자세히 설명하려고 합니다. 1.