Yun Blog

기술 블로그

Hikari와 비교하며 알아보는 Redis Lettuce 커넥션 풀의 특징

Redis는 싱글 스레드로 동작하는 인메모리 데이터베이스로, 모든 요청을 순차적으로 처리합니다. 이러한 특성 때문에 많은 개발자들은 Redis 클라이언트인 Lettuce에서 제공하는 커넥션 풀의 필요성과 이점에 대해 의문을 가질 수 있습니다. 특히, "Redis는 싱글 스레드로 동작하기 때문에 여러 개의 커넥션을 사용해도 동시성을 처리할 수 ......

Mermaid 코드로 그리는 다이어그램

Mermaid는 간단한 텍스트 형식의 코드를 통해 다양한 다이어그램을 생성할 수 있는 강력한 도구입니다. 특히, 개발자들에게 큰 이점을 제공하며, 프로젝트 문서화 작업에서 필수적인 역할을 할 수 있습니다. 이번 글에서는 Mermaid가 어떤 이점을 가지고 있는지, 그리고 이를 활용하여 프로젝트 문서화를 어떻게 개선할 수 있는지에 대해 설명드리겠습니다.......

Kotlin 객체 생성의 안전성과 유효성 강화하기

자주 사용하는 패턴 정리

코틀린에서 객체 생성과 값 타입 관리의 안전성을 강화하는 다양한 방법에 대해 알아보겠습니다. 이번 포스팅에서는 User라는 엔티티 클래스를 예로 들어 생성자 제약 사항을 안전하게 처리하는 방법과, value class를 활용해 값 타입을 효율적으로 관리하는 방법에 대해 설명하겠습니다. 기존 생성자 코드의 문제점 아래는 간단한 User 클래스입니다. 이......

HikariCP로 MySQL Connection Pool 최적화하기

TPS 변화에 유연하게 대응하는 커넥션 풀 설정 방법

Spring Boot는 기본적으로 HikariCP를 내장된 커넥션 풀로 지원하며, 이를 통해 데이터베이스 연결을 효율적으로 관리할 수 있습니다. 이번 포스팅에서는 Spring Boot 환경에서 HikariCP의 설정을 최적화하여 TPS 변화에 유연하게 대응하는 방법을 알아보겠습니다. HikariCP 설정 예시 Spring Boot에서 applicati......

MySQL Connection Pool 관리 - HikariCP 설정 및 타임아웃 처리

최적의 풀 크기 설정과 대기 시간 관리 전략

Connection Pool이란? 애플리케이션에서 MySQL 데이터베이스와의 효율적인 연결을 위해 커넥션 풀을 사용합니다. 커넥션 풀은 미리 일정한 수의 데이터베이스 연결을 생성해 두고, 애플리케이션이 필요할 때마다 이 연결들을 재사용함으로써 성능을 향상시키는 기법입니다. 이 방식은 데이터베이스와의 연결을 매번 새로 생성하는 대신 이미 준비된 연결을 ......

코루틴을 이용한 성능 개선 - Flow를 활용한 다중 요청 처리

Kotlin 코루틴으로 효율적인 대규모 요청 처리

Kotlin의 코루틴을 이용한 비동기 프로그래밍은 성능을 크게 향상시킬 수 있는 강력한 도구입니다. 특히 Flow를 활용하여 여러 요청을 동시에 처리하는 방식은 효율적인 비동기 처리를 가능하게 합니다. 이 포스팅에서는는 Flow를 사용하여 다중 요청을 처리하는 방법과 이론적 배경, 그리고 이를 사용할 때 주의할 점에 대해 다루겠습니다. 시나리오 30......

Kotlin 자주 사용하는 패턴 정리

불변 객체의 효율적 관리: copy() 메소드 활용 불변 객체는 데이터의 안정성과 예측 가능성을 제공하여 소프트웨어 개발에서 권장되는 패턴입니다. 특히, 암호화와 같은 데이터의 보안적 처리에 있어서 불변 객체를 사용하면 변경될 필요가 없는 정보의 무결성을 유지할 수 있습니다. Kotlin의 data class는 이러한 불변 객체를 다루기 위한 유용한 ......

Locust 성능 테스트 도구 소개 Part 2

이 글을 읽기 전에, Locust 성능 테스트 도구 소개를 먼저 확인해 보시는 것이 좋습니다. 이를 통해 Locust의 기본적인 사용법과 개념을 이해하신 후, 본 글에서 다루는 보다 심화된 사용 방법과 전략에 쉽게 접근하실 수 있습니다. on_start 및 on_stop 메서드 123456class OrderApiTest(HttpUser): de......

Locust 성능 테스트 도구 소개 Part 1

Locust 란? Locust는 오픈 소스 부하 테스트 도구로, 사용자가 Python으로 시나리오를 작성하여 웹 애플리케이션의 성능을 측정할 수 있게 해줍니다. 이 도구는 이벤트 기반 모델을 사용하여 수천 명의 사용자를 시뮬레이션하고, 웹사이트나 API 서버에 대한 부하 테스트를 실시간으로 실행할 수 있습니다. Locust는 사용자 친화적인 웹 인터페......

IntelliJ 각종 팁

Database Global IntelliJ에서는 MySQL, Oracle, PostgreSQL, Redis, Mongo DB 등을 포함한 다양한 데이터베이스에 대한 지원을 제공해주고 있습니다. 이를 통해서 동일한 도구를 이용해서 다양한 데이터베이스에 대한 작업을 수행할 수 있습니다. 해당 Database 설정은 Project Data Source......