728x90

분류 전체보기 75

[Spring] Redis를 이용한 대기열 관리

콘서트 예약 서비스 기능 중 대기열 관리를 위해 RDB 대신 Redis를 적용해 보며 얻은 장점을 정리해보고자한다.  1. DB 부하 감소Redis를 사용하면 RDB 보다 비용이 저렴하고 속도가 빠르다. 특히, 대기열 진입은 많은 사용자가 동시에 요청할 수 있는 기능으로 Redis를 사용해 DB 부하를 줄일 수 있다.사용자마다 폴링을 통해 토큰의 상태를 확인하고, 토큰의 상태를 전환하는 과정 등에서 발생하는 DB의 부하를 줄일 수 있다. 2. 대기열 순서 관리 용이Redis는 String, List, Sorted Set, Set, Hash 등 다양한 자료구조를 제공한다.Redis를 사용하면 대기 상태(WAITING) 토큰을 갖는 User 정보를 Sorted Set 자료구조로, 활동 상태(ACTIVE) 토..

Spring Boot 2024.12.28

[Spring] Transaction 분리를 통한 성능 개선

목차1. Transaction 분리의 필요성2. Transaction 분리로 발생할 수 있는 문제와 해결방안3. 콘서트 예약 서비스에 적용해보기    3.1 Transaction 분리1. 좌석예약    3.2 Transaction 분리2. 결제 1. Transaction 분리의 필요성Transaction의 범위에 따라 다음과 같이 성능에 영향을 줄 수 있다. 따라서 Transaction을 분리할 필요가 있다. 1. Transaction 범위가 불필요하게 많거나 느린 쿼리가 포함되어 있는 경우트랜잭션 내에서 Lock을 갖고 있다면 다른 사용자는 트랜잭션이 끝날때까지 대기해야한다. 그리고 데드락이 발생할 수도 있다.다수의 느린 쿼리가 포함된 작업은 요청 처리에 영향을 줄 수 있다.긴 생명 주기의 Transa..

Spring Boot 2024.12.27

[Spring] Lock을 이용한 동시성 제어 - 낙관적락/비관적락/분산락 (2)적용

콘서트 예약 서비스에서 발생할 수 있는 동시성 문제를 파악해보고 앞서 살펴본 동시성 제어에 대하여 적용해보았다. Lock을 이용한 동시성 제어 개념은 이전 글을 참고하면 된다. 콘서트 예약 서비스 기능 중 동시성 제어가 필요한 기능으로 다음 항목을 선정하였다.콘서트 좌석 예약포인트 충전포인트 사용 각각에 대해 적합한 방법을 고민한 결과 다음과 같다. 실제 구현 코드는 GitHub에 있다.   1. 콘서트 좌석 예약적절한 방법: 분산락(pub/sub) > 비관적락 > 낙관적락선택한 방법: 분산락(pub/sub) + 낙관적락선택 이유콘서트 예매는 동시 접속자가 많기 때문에 충돌이 많이 발생할 수 있다. 따라서 동시성 이슈 발생 가능성이 매우 높다. 또한 분산 환경에서의 동시성 제어가 필요하다.분산 환경에서 ..

Spring Boot 2024.12.27

[Spring] Lock을 이용한 동시성 제어 - 낙관적락/비관적락/분산락 (1)개념

목차낙관적락 (s-lock, 공유락, optimistic lock)비관적락 (x-lock, 베타락, pessimistic lock) 낙관적락과 비관적락 성능/효율성 테스트분산락 (Redis)Redisson 라이브러리 사용시 주의점 분산 환경에서 동시성 제어를 위해 사용하는 Lock의 종류와 각각의 특징을 정리해보고자한다. 1. 낙관적락 (s-lock, 공유락, optimistic lock)특징트랜잭션 충돌이 발생하지 않을 것이라고 낙관적으로 가정.읽기 잠금 ( select ..from.. where ... for share )으로 한쪽이 커밋 할 때 까지 쓰기 잠금.s-lock을 설정한 트랜잭션은 해당 row를 읽기만 가능하다.충돌 빈도가 적을 경우 권장되며, 동시 요청 중 한 건만 성공해야하는 케이스에..

Spring Boot 2024.12.26

[Spring] RedisSerializer 알고 쓰기! 종류 별 특징과 주의 사항

목차RedisSerializer 란?RedisSerializer 구현체 종류와 특징2.1 JdkSerializationRedisSerializer2.2 StringRedisSerializer2.3 Jackson2JsonRedisSerializer2.4 GenericJackson2JsonRedisSerializer그럼 우리는 어떻게 사용해야 할까? Spring Boot에서 RedisConfig 파일을 작성한 예시를 검색하다 보면 블로그마다 설정이 다른 것을 볼 수 있다.Serializer 설정을 안하는 케이스, StringRedisSerializer, Jackson2JsonRedisSerializer, GenericJackson2JsonRedisSerializer 를 사용하는 케이스.. 과연, 어떤 차이가..

Spring Boot 2024.12.04

[실전 자바 - 기본편] 다형성2

김영한의 실전 자바 - 기본편 강의를 듣고 정리한 내용입니다.인프런김영한의 실전 자바 - 기본편 강의 | 김영한 - 인프런 김영한의 실전 자바 - 기본편 강의 | 김영한 - 인프런김영한 | 실무에 필요한 자바 객체 지향의 핵심 개념을 예제 코드를 통해 쉽게 학습합니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 문www.inflearn.com 1. 다형성 활용아주 단순하고 전통적인 동물 소리 문제로 접근해보자.1.1 예시Animalpackage poly.ex2;public class Animal { public void sound() { System.out.println("동물 울음 소리"); }}Dogpackage poly.ex2;public..

Java 2024.09.09

[실전 자바 - 기본편] 다형성1

김영한의 실전 자바 - 기본편 강의를 듣고 정리한 내용입니다.인프런김영한의 실전 자바 - 기본편 강의 | 김영한 - 인프런​ 김영한의 실전 자바 - 기본편 강의 | 김영한 - 인프런김영한 | 실무에 필요한 자바 객체 지향의 핵심 개념을 예제 코드를 통해 쉽게 학습합니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 문www.inflearn.com 1. 다형성 시작1.1 다형성의 의미다형성(Polymorphism) : 다양한 형태, 여러 형태→ 프로그래밍에서는 한 객체가 여러 타입의 객체로 취급될 수 있는 능력을 의미.1.2 다형적 참조(1) 부모는 자식을 담을 수 있음부모 타입은 자식 타입을 담을 수 있으나, 자식 타입은 부모 타입을 담을 수 없다..

Java 2024.09.09

[99클럽 코테 스터디 42일차 TIL] First Day Where You Have Been in All the Rooms

💡문제https://leetcode.com/problems/first-day-where-you-have-been-in-all-the-rooms/description/There are n rooms you need to visit, labeled from 0 to n - 1. Each day is labeled, starting from 0. You will go in and visit one room a day.Initially on day 0, you visit room 0. The order you visit the rooms for the coming days is determined by the following rules and a given 0-indexed array nextVisit of..

[99클럽 코테 스터디 40일차 TIL] Unique Paths

💡문제https://leetcode.com/problems/unique-paths/There is a robot on an m x n grid. The robot is initially located at the top-left corner (i.e., grid[0][0]). The robot tries to move to the bottom-right corner (i.e., grid[m - 1][n - 1]). The robot can only move either down or right at any point in time.Given the two integers m and n, return the number of possible unique paths that the robot can tak..

728x90