반응형 분류 전체보기62 Sse 알림 기능 적용해보기 (Spring Boot) 신발 입찰 거래 프로젝트를 진행하면서 알림 기능을 구현해야 했다.기능을 적용해야 할 부분은 다음과 같다. 1. 즉시 판매의 경우 구매 입찰을 등록한 구매자에게 결제 알림이 전송되어야 한다. 구매자 1에게 알림을 전송하는 방법은 여러가지가 있는데 Sse를 사용해보기로 했다 위키백과에 SSE에 대한 설명이 나와있다.SSE ( 서버 전송 이벤트 )는 클라이언트가 HTTP 연결을 통해 서버로부터 자동 업데이트를 수신할 수 있도록 하는 서버 푸시 기술이며, 초기 클라이언트 연결이 설정된 후 서버가 클라이언트를 향한 데이터 전송을 시작하는 방법을 설명합니다. 이는 일반적으로 브라우저 클라이언트에 메시지 업데이트 또는 지속적인 데이터 스트림을 보내는 데 사용되며 클라이언트가 이벤트 스트림을 수신하기 위해 특정 URL.. 2024. 6. 14. Overload, Override overload란 여러 메서드가 같은 이름을 갖고 있으나 매개변수, 자료형이 서로 다른 개념입니다. 오버라이딩을 할 때 개발자의 실수를 방지하기 위해 메서드 위에 @Override 를 관례적으로 적습니다. override란 부모 클래스의 메서드명, 기능을 물려받아 재정의 할때 사용되는 개념입니다. 예제 코드 class Cal{ public int sum(int v1, int v2){ return v1+v2; } // Overloading public int sum(int v1, int v2, int v3){ return v1+v2+v3; } } class Cal3 extends Cal{ public int minus(int v1, int v2){ return v1-v2; } // Overriding pu.. 2024. 3. 5. Call by Reference 란? Call by Reference란 참조 값으로 함수를 호출하는 개념입니다. 함수에서 함수 외부 메모리 공간을 참조할 때 사용하며, 함수 선언시 매개변수에 &를 사용해 변수의 위치를 받도록 하고 함수 내부에서는 위치를 준 변수를 일반 변수처럼 사용합니다. 다른 개념으로는 Call by Value(값에 의한 호출)이 있습니다. -> 외부 변수의 값을 복사해서 사용하기 때문에 안전하지만, 메모리 사용량이 늘어남 Call By Reference를 사용하면 함수 내부에서 외부 변수의 값을 직접 참조하기 때문에 빠르긴 하지만 외부 변수의 값의 변경이 일어납니다. 대표적으로 swap 로직이 있습니다. #include void swap(int &num1, int &num2) { int temp = num1; num1 .. 2024. 3. 5. Redis Cache 적용해서 Tps를 높여보기 ( 이전 글과 이어지는 포스트입니다. ) 구매 서비스에서 재고 동시성 이슈 해결해보기(2) - Redisson '분산락'은 다중 서버 + 분산 DB 환경에서 동시성을 제어하기 위해 사용하는 Lock 기법입니다. 대표적으로 Mysql User Lock, Redis Lettuce, Redis Redisson이 있습니다. 반드시 Redisson을 사용할 필요는 없지만, devsting.tistory.com 이전 시간까지 멀티 쓰레드, 멀티 서버 환경을 고려하여 동시성 문제 해결하기 위해 JPA의 @Lock을 사용해서 해결했고, Redisson 또한 적용해봤습니다. 그럼 이제 수행해야할 과제는 무엇인가.. 당연 서버의 성능, 내가 만든 API의 성능을 측정하는 것이였습니다. 저는 다양한 방법 중 Redis Ca.. 2024. 3. 5. 구매 서비스에서 재고 동시성 이슈 해결해보기(2) - Redisson ( 이전글과 이어지는 포스트입니다. ) 구매 서비스에서 재고 동시성 이슈 해결해보기(1) - JPA LOCK 4주 간 예약 구매 사이드 프로젝트를 진행했습니다. `예약 구매` 서비스는 특정 기념일이나 타임세일과 같이 해당 기간 또는 시간에만 상품을 사용자들에게 노출하고, 판매하는 이미 많은 브랜 devsting.tistory.com '분산락'은 다중 서버 + 분산 DB 환경에서 동시성을 제어하기 위해 사용하는 Lock 기법입니다. 대표적으로 Mysql User Lock, Redis Lettuce, Redis Redisson이 있습니다. 반드시 Redisson을 사용할 필요는 없지만, 기본적으로 디스크를 사용하는 데이터베이스보다 메모리를 사용하는 Redis가 더 빠르게 락을 획득 및 해제할 수 있다는 점,.. 2024. 2. 28. 구매 서비스에서 재고 동시성 이슈 해결해보기(1) - JPA LOCK 4주 간 예약 구매 사이드 프로젝트를 진행했습니다. `예약 구매` 서비스는 특정 기념일이나 타임세일과 같이 해당 기간 또는 시간에만 상품을 사용자들에게 노출하고, 판매하는 이미 많은 브랜드에서 마케팅 전략으로 사용되고 있는 서비스입니다. E-COMMERCE 관련 백엔드 API 개발을 진행하면서 처음으로 멀티 쓰레드 환경에서 테스트를 경험해보았고, 재고 관리 기능을 구현하면서 Race-Condition 문제를 접했습니다. 예약 구매 비지니스 로직의 대한 간단한 이해를 시작으로, 동시성 제어, 적용한 방법의 한계에 대한 내용까지 글을 작성해보려고 합니다. 개발 방법 예약 구매 비즈니스 로직에 대한 간단한 이해 유저가 주문서비스의 주문 API를 호출하면 먼저 유저의 정보와 상품 번호 구입 수량 정보가 주문 내.. 2024. 2. 26. 이전 1 2 3 4 5 ··· 11 다음 반응형