안녕하세요 명오! 이번 단계도 화이팅입니다!
이전 단계 요구사항을 캐싱을 통해 해결해서 이번 단계 요구사항을 만족하는데는 큰 문제가 없었어요. 다만, 기존의 도메인과 엔티티를 분리한 설계가 생각보다 해야 할 작업이 많아서 이 부분은 조금 힘들었네요😅
이번에도 데이터베이스 스키마를 직접 생성해주어야 합니다. 스키마는 아래와 같아요. 기존에 있...
안녕하세요! 이상! 꼼꼼한 리뷰 남겨주신 덕분에 부족했던 부분들에 대해 더 깊게 고민해볼 수 있었습니다!
좋은 리뷰 감사해요:)
큰 변경 포인트는 아래와 같습니다.
1. 문제 상황을 조금 다른 포인트로 접근했던 거 같아, 더 적절하게 재정의했습니다.
- create문과 id 초기화에 대한 복제지연은 배제하고, 데이터 삽입/수정/삭제에 ...
안녕하세요 배키, 다온입니다.
혹시나 하고 애플리케이션을 실행해보니 에러가 발생하여 종료되더라구요!
해당 에러 확인 후 해결 부탁드릴게요!
```java
Action:
Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans,...
기본적으로는 트랜잭션이 시작될 때 DataSource가 지정되어 데이터베이스 연결이되는데, LazyConnectionDataSourceProxy를 사용하면 데이터 베이스 연결을 지연시켜요. 첫번째 쿼리가 나가는 순간 datasource를 갖고오게 됩니다. 따라서 첫번째 쿼리가 나갈 때 현재 트랜잭션(읽기/쓰기)에 맞는 datasource를 갖고올 수 ...
아톰이 말씀해주신 캐시 성공까지 지연시간이 발생했을 경우 복제 지연 문제가 발생하는 문제를 미처 생각하지 못했어요.
현재 반영 사항은 이렇습니다.
1. 쿠폰 조회시 캐시에서 먼저 조회하여 존재하면 반환한다.
2. 캐시에 존재하지 않는 경우 reader DB에서 조회하여 반환한다.
3. reader DB에도 존재하지 않는다면, 새로운 트랜잭션을...
위 커멘트에 언급한 시퀀스 동기화 문제를 방지하기 위해 위와 같은 해결책을 제시했었습니다.
하지만, 제가 생각한 시퀀스 동기화 문제는 엣지 케이스라 생각해 이번 미션에선 고려치 않기로 생각을 변경했습니다!
복제 방식에 대해선 최근 쓴 블로그 글이 있어 공유드립니다!
[Replication Lag 시뮬레이션 및 해결 (I/O Thread)(My...
안녕하세요, 재즈! 🎷
마지막 데모데이 잘 마무리하셨나요?
정말 고생 많으셨습니다..😄
이번 미션에서는 캐싱 전략으로 Look Aside와 Write Through 조합을 선택했습니다.
캐싱을 활용하는 이상, 먼저 캐시 저장소를 조회하고 cache miss가 발생하면 DB를 조회하는게 맞다고 생각했습니다.
또한, 쓰기 작업 때 먼저 캐시 ...
테스트 환경에서 사용한 아래 로직때문에 위와 같은 상황이 발생할 수 있다 생각했습니다.
실제로 아래와 같이 테스트 환경을 구축했을 때, writer db에선
(알쓸크잡: H2와 달리 MySQL에서 TRUNCATE TABLE을 할 경우 AUTO_INCREMENT 컬럼 값이 초기값됩니다!)
```
@Component
public class ...
급하게 짜다 이런 큰 실수를 범했네요.... 애매하게 알고 있던 개념이라 이번 기회에 정리하고 넘어가겠슴다
✅ [fix: 프록시 기반 AOP 정상동작하도록 수정](https://github.com/woowacourse/java-coupon/pull/57/commits/e098fa0826947ce39a8360f00e2b29a68fc99bea)
...