본문 바로가기

전체 글362

[선착순 쿠폰 발급 2편] Redis 자료 구조 설계 (lua script) source 는 Github 에 있습니다. 목차는 선착순 쿠폰 발급 에 있습니다. [선착순 쿠폰 발급 2편] Redis 자료 구조 설계 (lua script) 코틀린, Redis 공부를 위해 작성했습니다. 쿠폰 발급 요청 처리 FLOW 쿠폰 발급 요청 처리 FLOW 는 다음과 같습니다. Redis 자료 구조 설계 쿠폰 발급 요청이 들어왔을 때 DB 처리 부하를 줄이기 위해 Redis 자료구조를 사용하여 한 번에 처리하지 않고 앞단에 Redis를 두기로 결정했습니다. 또한, 여러 단계로 이뤄지는 쿠폰 ID 발급 과정에서 동시성 처리 문제를 해결하기 위해 lua script를 사용하여 처리합니다. Redis 자료구조를 설계하는 두 가지 방법은 다음과 같습니다. Redis 에 한정된 쿠폰 데이터를 미리 생성해.. 2023. 3. 18.
[선착순 쿠폰 발급 1편] 개요 source 는 Github 에 있습니다. 목차는 선착순 쿠폰 발급 에 있습니다. [선착순 쿠폰 발급 1편] 개요 코틀린, Redis 공부를 위해 작성했습니다. 선착순 쿠폰 발급 제공 기능 쿠폰을 제한된 개수만큼 발급해줘야 합니다. 동시에 여러 사용자가 요청해도 쿠폰 발급이 되야 합니다. 쿠폰 발급 시, 같은 사용자가 여러번 요청해도 1번만 발급됩니다. 시스템 구성도 사용자가 쿠폰 발급을 요청하면, 쿠폰 발급 요청 서버 API 를 호출하게 됩니다. 쿠폰 발급 요청 서버 API 에서는 Redis 와 통신을 합니다. Redis 에 미리 쿠폰 ID 데이터를 만들어 놓습니다. 쿠폰 발급 요청이 들어오면 미리 생성된 쿠폰 ID 를 할당해줍니다. 모니터링 하고 있다가 Redis 에 쿠폰 ID 가 전부 소진되면 Co.. 2023. 3. 4.
[Java 15편] 자바 컴퍼지트 패턴 source 는 Github 에 있습니다. 목차는 Java series 에 있습니다. [Java 15편] 자바 컴퍼지트 패턴 예전에 공부해둔 내용을 remind 할려고 다시 작성했습니다. 자바 컴퍼지트 패턴 전체-부분의 관계를 갖는 객체들 사이의 프로그래밍을 할 때 유용합니다. 아래와 같이 전체-부분 관계를 갖는 것을 컴포지트 패턴을 사용했을 시, 제일 큰 장점은 변화에 유연한 구조가 됩니다. 재료가 추가돼도 HamBurger 재료 List 에 객체를 넣어주면 됩니다. 즉, 영향도가 적습니다. Example 햄버거가 있고 햄버거에는 여러 재료가 들어갑니다. (햄버거 - 전체 , 재료 - 부분) 아래 소스 예제는 햄버거의 칼로리를 구하고 싶습니다. Source 2023. 2. 11.
[Java 14편] 자바 스트레지트 패턴 source 는 Github 에 있습니다. 목차는 Java series 에 있습니다. [Java 14편] 자바 스트레지트 패턴 예전에 공부해둔 내용을 remind 할려고 다시 작성했습니다. 자바 스트레지트 패턴 알고리즘 전략을 유연하게 변경할 수 있는 패턴입니다. 아래 소스를 간략히 설명하면 Player 의 play 행동을 전략에 맞게 선택할 수 있습니다. main 에서 player 는 play 를 할 때, BaseBall 을 할지, soccer 를 할지 전략적으로 선택할 수 있습니다. 변경에 유연화된 구조입니다. Source 2023. 2. 11.
[Java 13편] 정적 팩토리 메서드로 객체 생성 source 는 Github 에 있습니다. 목차는 Java series 에 있습니다. [Java 13편] 정적 팩토리 메서드로 객체 생성 정적 팩토리 메서드로 객체 생성 객체를 생성할 때, 정적 팩토리 메서드로 객체 생성을 하는 예제에 대해서 정리했습니다. 특징 객체 생성에 이름을 부여할 수 있기 때문에 가독성이 높습니다. 하위 타입 객체를 return 할 수 있습니다. Source 2023. 2. 11.
[Java 12편] Map Sort 정리 source 는 Github 에 있습니다. 목차는 Java series 에 있습니다. [Java 12편] Map Sort 정리 Java Map Sort 정리 Java Map Sort 관련 예제를 작성했습니다. Source 2023. 2. 11.