
실습으로 배우는 선착순 이벤트 시스템
₩19,800
초급 / Spring Boot, Java, Docker, Redis, Kafka
4.8
(101)
선착순 이벤트 시스템을 구현할 때 어떤 문제가 발생할 수 있고 어떻게 해결할 수 있는지 배워봅니다.
초급
Spring Boot, Java, Docker
안녕하세요. 지식공유자 최상용입니다.
많은 오픈소스에 기여한 경험이 있는 현직 백엔드 개발자입니다.
- Spring Data Mongo Contributor
- querydsl Contributor
- grpc-kotlin Contributor
- ksp Contributor
- mybatis Contributor
실습으로 배우는 선착순 이벤트 시스템
₩19,800
초급 / Spring Boot, Java, Docker, Redis, Kafka
4.8
(101)
선착순 이벤트 시스템을 구현할 때 어떤 문제가 발생할 수 있고 어떻게 해결할 수 있는지 배워봅니다.
초급
Spring Boot, Java, Docker
재고시스템으로 알아보는 동시성이슈 해결방법
₩19,800
초급 / 동시성, Spring, Java
4.7
(289)
동시성 이슈란 무엇인지 알아보고 처리하는 방법들을 학습합니다.
초급
동시성, Spring, Java
질문&답변
application.yaml 에 redis 정보
힝훙항님 안녕하세요! 답변이 늦어져서 죄송합니다.설정을 하지않으면 기본값으로 세팅이 되기때문에 동작을 하는것입니다!별도의 서버 host를 사용해야 한다면 그때는 세팅을 해야합니다.
질문&답변
왜 클래스 이름에 Facade 가 붙나요?
황은경님 안녕하세요.Facade 라는 이름을 붙인것은 Facade 패턴을 사용했기때문에 붙였습니다.Facade 패턴에 대해서 공부해보시면 좋을것같고 현업에서는 Facade 객체가 필요할때 선언하면서 붙여서 사용합니다!
질문&답변
@Transactional 으로 인한 동시성 문제 발생 원인이 궁금합니다.
황은경님 안녕하세요.@Transacitonal 은 트랜잭션을 관리하는것이지 동시성제어를 하는것이 아닙니다.또한, 말씀하신대로 AOP 객체가 생성되고 그 객체가 가지고 있는 모니터락으로 제어한다고 하여도 실무에서는 최소 2대이상의 서버를 운용하기때문에 동시성문제가 발생할 수밖에 없습니다. (객체는 서버에서만 유효하기때문입니다)또 질문있으시면 올려주세요! 감사합니다
질문&답변
@modifying 이용한 동시성 제어
ililil 님 안녕하세요.@Modifying 가 뭔지 몰라서 찾아보았는데요.해당 어노테이션은 동시성제어라기보다는 데이터의 수정이 있는것을 명시하기위해서 사용하는것 같아요. 어노테이션이랑은 무관하게 락은 여러스레드가 하나의 데이터에 접근하여 문제가 발생될것이라고 예상하는 지점에 진입하기 전에 걸고 데이터의 수정을 완료한 이후에 해제하면 될것같습니다.감사합니다.
질문&답변
프로젝트 진행할때 모듈로 추가하는 이유가 궁금합니다!
한지찬님 안녕하세요!저는 개인적으로 컨슈머와 api 를 별도의 모듈로 띄우는것을 선호해요!각각의 역할에 알맞는 로직들만 작성하고 필요한 의존성들만 가져가도록 하고 싶기때문입니다!다양한 방식들이 있고 각각의 장단점이 있는듯합니다 ㅎㅎ
질문&답변
Redis 활용하기 문제점 해결하기 부분이 이해가 잘 안됩니다...
한지찬님 안녕하세요. 답변이 늦어져서 죄송합니다.제가 강의에서 말씀드린 부분은 redis 에 한정지어서 말씀을 드린것이었습니다!그래서 말씀하신대로 redis 는 싱글스레드라 1개씩 처리를 하고, A 스레드에서 레디스의 연산을 마무리하고 본인의 비즈니스로직을 처리하는중에는 B 레디스가 레디스에 접근을 할 수 있습니다!감사합니다.
질문&답변
DB락과 분산락
돌하르방님 안녕하세요.질문주신것을 놓쳐서 답변을 늦게 달게 되었습니다. 죄송합니다 ㅠㅠ비관적락과 낙관적락은 1개의 데이터만 수정할때는 도움이 됩니다.그렇지만 한개의 서비스에서 여러개의 데이터를 수정, 삽입을 해야 하는상황에서는 수정해야할 데이터들에 대해서 비관락, 낙관락을 잡기에는 어려움이 있을 수 있을것 같습니다.보통 이러한 상황에서 분산락을 활용하여 제어합니다.또한, 비관적락은 디비를 활용하여 락을 잡는것이다보니 디비에 부하를 줄 수 있습니다.비관적락을 사용하여 문제가 해결되고 디비에 부하가 가지 않는다면 비관적락을 사용해도 괜찮습니다!
질문&답변
NamedLock 테스트 실패
jaeyun0507 님 안녕하세요!테스트코드의 newFixedThreadPool 의 스레드 개수를 32개로 조절해보고 해주실 수 있으실까요?지금 현재 코드로 보았을때는 100개의 스레드가 동시에 요청을 하여 커넥션 고갈이 일어나고 있는듯합니다.
질문&답변
카프카를 도입하고 난 뒤 로그로 보여지는 장점을 발견하지 못하고 있습니다.
창신동 장첸님 안녕하세요.답변이 늦어져서 죄송합니다.강의에서는 카프카를 중간에 배압조절을 위한 장치로 사용하였습니다.1만명의 사용자가 동시에 요청을 보낸다고 가정해보겠습니다.API 에서 바로 DB 에 insert 를 하게 되면 1만번의 요청이 거의동시에 DB 에 요청을 보내게 됩니다.동시에 많은 요청은 DB 에 부담을 줄 수 있습니다.카프카로 메시지를 전달하고 순차적으로 처리를 하여 1만번의 요청을 순차적으로 처리하여 DB 에 부담을 줄일 수 있습니다.위와같은것이 가능한 이유는 카프카는 메시지를 토픽에 적재한 후 먼저 적재된 메시지를 처리한 이후에 다음 메시지를 처리하기 때문입니다.따라서, DB에 보내는 요청을 분산시킬 수 있게됩니다.궁금하신점이 있다면 질문 부탁드립니다!감사합니다.
질문&답변
사용자 동선에 대한 트랜잭션 문의
아무도_모를_아이디님 안녕하세요.답변이 늦어져서 죄송합니다.말씀하신대로 실제 쿠폰발급까지 비동기이기때문에 말씀하신대로 쿠폰을 바로 사용하기는 어려울 수 있습니다.두가지 방향이 있을 것 같습니다.비동기이기지만 준실시간이기 때문에 특별한 상황이 아니라면 문제가 되지 않을 확률이 높습니다. 문제가 되지 않을 수 있다면 감수하고 해당 아키텍쳐를 선택할 수 있습니다.약간의 딜레이가 용납되지 않는다면 서버, 데이터베이스가 받을 수 있는 요청량을 제한해서 요청을 받고 발급까지 하나의 트랜잭션에서 진행하는 방법이 있을 수 있습니다. 이를 위해서 흔히사용되는것은(유명 가수 콘서트 예매 등과같은곳에서) 순서대기열이 있습니다. 순서를 발급해준 후 순서가 됐을때 요청을 받고 해당 로직을 수행합니다.2번 방법을 선택한다면 하나의 트랜잭션에서 수행할 수 있을것 같습니다.감사합니다.