
💡 최상용님의 실습으로 배우는 선착순 이벤트 시스템 강의를 듣고 정리한 내용입니다. 목차 글 목록[시스템 디자인] 실습으로 배우는 선착순 이벤트 시스템 (1/3) - 동시성 이슈와 Redis로 해결하기[시스템 디자인] 실습으로 배우는 선착순 이벤트 시스템 (2/3) - Kafka로 시스템 안정성 향상하기[시스템 디자인] 실습으로 배우는 선착순 이벤트 시스템 (3/3) - 요구사항 변경과 쿠폰 발급 실패 예외처리[시스템 디자인] 실습으로 배우는 선착순 이벤트 시스템 (번외) - DLT(DeadLetterTopic)을 이용한 메시지 Consume 재처리 배경지난 글에 이어서 쿠폰 발급 시스템을 고도화하고 안정성을 향상시켜본다. 이번 글에서는 발급 가능한 쿠폰 개수를 ID당 1개로 제한하는 요구사항이 추가되..

💡 최상용님의 실습으로 배우는 선착순 이벤트 시스템 강의를 듣고 정리한 내용입니다. 목차 글 목록[시스템 디자인] 실습으로 배우는 선착순 이벤트 시스템 (1/3) - 동시성 이슈와 Redis로 해결하기[시스템 디자인] 실습으로 배우는 선착순 이벤트 시스템 (2/3) - Kafka로 시스템 안정성 향상하기[시스템 디자인] 실습으로 배우는 선착순 이벤트 시스템 (3/3) - 요구사항 변경과 쿠폰 발급 실패 예외처리[시스템 디자인] 실습으로 배우는 선착순 이벤트 시스템 (번외) - DLT(DeadLetterTopic)을 이용한 메시지 Consume 재처리 배경지난 [시스템 디자인] 실습으로 배우는 선착순 이벤트 시스템 (1/3) - 동시성 이슈와 Redis로 해결하기 글에서 가장 기본적인 선착순 이벤트 시스..

💡 최상용님의 실습으로 배우는 선착순 이벤트 시스템 강의를 듣고 정리한 내용입니다. 목차 글 목록[시스템 디자인] 실습으로 배우는 선착순 이벤트 시스템 (1/3) - 동시성 이슈와 Redis로 해결하기[시스템 디자인] 실습으로 배우는 선착순 이벤트 시스템 (2/3) - Kafka로 시스템 안정성 향상하기[시스템 디자인] 실습으로 배우는 선착순 이벤트 시스템 (3/3) - 요구사항 변경과 쿠폰 발급 실패 예외처리[시스템 디자인] 실습으로 배우는 선착순 이벤트 시스템 (번외) - DLT(DeadLetterTopic)을 이용한 메시지 Consume 재처리 배경실시간 이벤트를 진행하거나 트래픽이 순간적으로 몰릴 때(혹은 그러한 상황이 예상될 때) 발생할 수 있는 이슈와 해결방안에 대해 알아보기위해 인프런의 실..

💡 최상용님의 재고시스템으로 알아보는 동시성이슈 해결방법 강의를 듣고 정리한 내용입니다. 목차 글 목록[시스템 디자인] 재고시스템으로 알아보는 동시성이슈 해결방법 (1/3) - 동시성 이슈와 Application Level로 해결하기[시스템 디자인] 재고시스템으로 알아보는 동시성이슈 해결방법 (2/3) - 데이터베이스 락(Lock)으로 해결하기[시스템 디자인] 재고시스템으로 알아보는 동시성이슈 해결방법 (3/3) - 레디스 분산 락(Lock)으로 해결하기배경지난 [시스템 디자인] 재고시스템으로 알아보는 동시성이슈 해결방법 (2/3) - 데이터베이스 락(Lock)으로 해결하기에 이어 이번에는 레디스(Redis)를 활용하여 동시성 문제를 해결해본다. 동시성 문제를 해결하기 위해서 레디스에서는 대표적으로 L..

💡 최상용님의 재고시스템으로 알아보는 동시성이슈 해결방법 강의를 듣고 정리한 내용입니다. 목차 글 목록[시스템 디자인] 재고시스템으로 알아보는 동시성이슈 해결방법 (1/3) - 동시성 이슈와 Application Level로 해결하기[시스템 디자인] 재고시스템으로 알아보는 동시성이슈 해결방법 (2/3) - 데이터베이스 락(Lock)으로 해결하기[시스템 디자인] 재고시스템으로 알아보는 동시성이슈 해결방법 (3/3) - 레디스 분산 락(Lock)으로 해결하기배경지난 [시스템 디자인] 재고시스템으로 알아보는 동시성이슈 해결방법 (1/3) - 동시성 이슈와 Application Level로 해결하기 글에서 멀티 스레드 환경에서 개발할 때 발생할 수 있는 경합 상태(Race condition)를 비롯한 동시성 이..

💡 최상용님의 재고시스템으로 알아보는 동시성이슈 해결방법 강의를 듣고 정리한 내용입니다. 목차 글 목록[시스템 디자인] 재고시스템으로 알아보는 동시성이슈 해결방법 (1/3) - 동시성 이슈와 Application Level로 해결하기[시스템 디자인] 재고시스템으로 알아보는 동시성이슈 해결방법 (2/3) - 데이터베이스 락(Lock)으로 해결하기[시스템 디자인] 재고시스템으로 알아보는 동시성이슈 해결방법 (3/3) - 레디스 분산 락(Lock)으로 해결하기배경과거 애플리케이션 실행 속도가 너무 느려 해결방안을 고민하던 도중 멀티 스레드 환경에서 처리할 수는 없을까 의문을 가졌던 적이 있다. 하지만 당시에는 멀티 스레드 환경으로 개발할 때 발생하는 이슈와 주의해야할 점, 이슈 해결 방안에 대해 충분한 지식..
목차 배경자바의 두가지 정렬 방법에 대해 알아본다. 정렬 메커니즘 중에 호출하게되는 compareTo()와 compare() 메서드를 이용한 객체 값 비교는 실무에서도 유용하고 미묘한 차이로 다르게 동작하는 케이스도 있어 정리하고 숙지해두면 매우 유용할 것 같다.Comparable 인터페이스와 compareTo() 메서드Comparable을 상속받는 클래스 내부에 compareTo() 메서드를 구현한다. Comparable은 java.lang.Comparable 패키지에 선언되어있다. Comparable 인터페이스의 추상 메서드인 compareTo()에 정렬 기준을 작성한다. Comparable 인터페이스와 compareTo()의 메서드 시그니쳐는 다음과 같다.public interface Compara..
목차 배경최근 팀 내에서 업무 내용 공유와 일정 관리 방식에 대해 이야기한 적이 있다. 평소 조직 내 업무 관리 방법에 대해 다소 비효율적이거나 번거로운 과정이 반복된다는 생각이 들던 찰나에 마침 다른 팀원이 업무 관리 방식에 대해 이야기를 꺼냈고, 나또한 생각하고 고민하던 부분에 의견을 냈다. 팀이 함께 마주한 문제를 인식하고 더 좋은 해결 방안을 도출하기 위해 의견을 나눴으며, 업무 관리 방식을 바꾸게 되었다. 결과적으로 불필요한 문서 작업과 커뮤니케이션을 줄이며 업무 관리 방식을 효율적으로 개선할 수 있었다. 어려운 개발 문제를 해결한다거나 극적인 성능 개선을 이루는 등 기술적인 도전과 이에 따른 성공 사례는 아니지만, 함께 일하는 환경에서 어떻게 일하는게 좋은지, 어떤 방식으로 문제를 개선하고..
목차 배경지난달에 회사 업무 중에 배치 프로그램 하나를 수정하며 리팩토링까지 진행한 적이 있다. 로직이 엄청 복잡하거나 논리적으로 어려운 배치는 아니었지만, 주요 로직 중 하나로 다른 개발 팀이 데이터를 넣어주는 테이블이 있었고 또 다른 개발팀에게 POST 메서드로 API를 요청해서 데이터를 처리하는 부분이 있었다. 또한 이 배치 수행 결과는 다음 배치 수행에까지 영향을 주고 있었다. 프로그램의 주요한 로직이 이처럼 다른 개발팀과 팀 내 다른 배치와 긴밀하게 얽혀있다보니 자연스럽게 성공하는 케이스 이외에도 실패할 때는 어떻게 동작할지 고민하게 되는데, 기존 코드상으로는 실패할 때 어떻게 동작할지 / 지금 방식대로 동작하는 게 적절할지 / 개발자가 어디까지 인지해야 할지 / 배치 오류 발생 시 개입을 ..
목차 도서정보 책 제목(부제목) : 요즘 개발자(MZ 선배가 전하는 학습 · 커리어 브랜딩 · 취업과 이직 · 협업 · 네트워킹 기술) 요즘 개발자 - 예스24 MZ 개발자를 위한 성장 멘토링이 책은 여러분보다 조금 앞서 개발자가 된 선배가 전하는 커리어 가이드입니다. 취업의 첫 단추부터 네트워크 형성, 효과적인 프로그래밍 학습과 피드백 요청 방 www.yes24.com 배경 평소 종종 책을 구경하러 서점에 가는데, 어느 날은 책 구경을 갔다가 시선을 사로잡는 책이 있었다. ‘요즘 개발자’ 라는 책이였는데 특이한 표지 때문인지 어떤 내용인지 궁금증이 생겨 충동적으로 구매했다. 시선을 사로잡을 정도로 신선했던 제목과 표지에 비해 내용이 심심한 부분도 있었지만 전체적으로 재미있게 읽었다. 내용 이 책의 주요..

목차 글 목록[Java] 함수형 프로그래밍(Functional Programming)과 람다식(Lambda Expression) (1/2)[Java] 주요 함수형 인터페이스(Function Interface) (2/2)배경(지난 [Java] 함수형 프로그래밍(Functional Programming)과 람다식(Lambda Expression) (1/2) 글에 이어 작성한 내용입니다.) 최근 회사에서 리팩토링 중에 다음과 같은 코드 중복을 함수형 인터페이스를 활용하여 개선한 적이 있다.public class ServiceA { private final ServiceC serviceC; private final RepositoryA repositoryA; public void methodA(){ List o..

목차 글 목록 [Java] 함수형 프로그래밍(Functional Programming)과 람다식(Lambda Expression) (1/2) [Java] 주요 함수형 인터페이스(Function Interface) (2/2) 배경 최근에 회사에서 내가 개발했던 코드를 리팩토링하며 중복을 개선하려했었는데, 다음과 같은 중복이 여전히 남아있었던 적이 있다. 코드를 직접적으로 작성할 수 없어 예시로 풀어보자면, 전체적인 로직 자체는 거의 유사하지만 결국 호출하는 메서드와 참조하는 객체(repositoryA.save(), repositoryB.save())가 달라 중복 코드가 발생했던 케이스다. public class ServiceA { private final ServiceC serviceC; private f..