안녕하세요 ! 강의 잘 듣고 있습니다. 최근 OutBox 패턴을 사용해보려고 시도중입니다 ! CDC도구를 사용하지않고 어플리케이션에서 폴링을 구현한다고 하였을 때 폴링전용 어플리케이션을 따로 두어야 하는지 궁금합니다. ex) 주문서버에서 DB에 저장 -> 폴링 서버에서 DB에 저장된 이벤트를 폴링으로 조회 후 메시지 발행 이렇게 생각한 이유는 주문서버에 폴링을 구현한다면 스케일 아웃 상황에서 폴링 로직도 저절로 스케일아웃되기때문입니다. 여러개의 폴링 로직이 같이 돌아가면 데이터가 꼬일 수도 있지 않을까 합니다. 어플리케이션 폴링구조의 outbox 패턴 구현에 대한 정석이 있는지 궁금합니다.
실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
안녕하세요. 수업 내용과는 크게 관계가 없지만... 예외처리 관련 내용에 대한 질문을 드립니다. 스프링이 제공하는 표준 예외( IllegalArgumentException , IllegalStateException )와 비즈니스 로직을 표현하는 커스텀 예외( NotFoundUserException ) 사이에서 표준 예외를 사용하는 경우와 커스텀 예외를 사용하는 경우에 대한 기준을 알 수 있을까요? 감사합니다.
안녕하세요. 빈약한 도메인 모델에 관하여 질문이 있습니다. 현재 개인적으로 진행하는 프로젝트에서 데이터 홀더 역할정도만 하는 빈약한 도메인 모델이 있습니다. repository에는 테이블의 상태 컬럼을 업데이트하는 메소드가 존재하는데 이를 도메인 모델 내부에 메소드를 만들어 업데이트하고 repository의 save를 통해 엔티티의 상태를 update하는 것이 강의에서 의도한 내용으로 이해했는데 맞을까요? 추가로 이런 경우(비즈니스 로직이 복잡하지 않은)에 꼭 도메인 모델이 없어도 될지 궁금합니다.
JPA entity와 도메인 모델을 분리하는 케이스에서 데이터 저장 기술이 바뀌는 경우 Spring Data를 사용하면 해당되지 않는다고 하셨는데 JPA에서 MyBatis로 변경하는 경우도 Spring Data로 커버가 가능한가요? 회사에서 JPA로 개발을 진행중인데 MyBatis로 마이그레이션을 해야할수도 있어서 질문드립니다.
카프카 메시지 저장 방식에 대한 질문 카프카에 대해서 잘 알지 못할때 카프카에 메시지가 저장되어 편리하다는 이야기를 들었습니다. 그래서 AWS SQS에서 카프카로 전환하면 별도의 메시지 저장소가 필요 없을 것 같았는데, 강의를 들어보니 장기 보관이 필요하면 결국 따로 저장해야 하는 것 같더라고요. 질문: 장기 보관이 필요한 메시지는 별도 저장소(DB, S3 등)에 저장하시나요? 카프카 자체 저장만으로 충분한 경우와 별도 저장이 필요한 경우를 어떻게 구분하시나요?
안녕하세요. 코드에서 궁금한 점 질문드립니다. 댓글 생성, 삭제 시에 게시글의 댓글 수 증감 로직이 아래 예시 코드처럼 CommentService에서 이루어지고 있는데 과한 책임이 아닌가 싶어서요. 실무에서는 어떻게 나누게 되는지 궁금합니다. public CommentResponse createComment(Long postId, CommentRequest request) { Post post = postRepository.findById(postId) .orElseThrow(() -> new IllegalArgumentException("게시글을 찾을 수 없습니다.")); Comment comment = Comment.builder() .content(request.content()) .postId(postId) .createdAt(LocalDateTime.now()) .updatedAt(LocalDateTime.now()) .build(); Comment newComment = commentRepository.save(comment); post.increaseCommentCount(); postRepository.save(post); return CommentResponse.from(newComment); }
안녕하세요 토비님 테스트 코드를 이용한 테스트 강의 내용 중 helloApi를 테스트하기 위해 TestRestTemplate를 사용해서 테스트 코드를 작성하고 있는 부분을 진행하고 있습니다. 강의에서는 아래의 화면 같이 테스트 수행 시 TestRestTemplate 의 Http 요청과 응답에 대한 로그가 남는데, 제가 실행했을 때(2번째 사진)는 전혀 남지 않습니다. 아래는 제가 직접 실행한 결과이고, junit5 을 통해 실행했을 때나, gradle 을 통해 테스트를 실행했을 때 둘다 강의와 같이 웹 요청/응답에 대한 로그가 남지 않습니다. 테스트는 성공적으로 수행되어서 요청은 제대로 전송되고 응답받는걸로 확인되고 있고, 어짜피 성공한 테스트니까 무시해도 좋겠지만 강의대로 콘솔에 로그가 안남으니까 조금 찝찝합니다,, 웹에서 검색을 해봐도 해결방법이 안나오네요 ㅜㅜ 저는 스프링부트 3.5.6 버전, java 17을 쓰고 있고 Intellij는 Ultimate을 사용하고 있습니다. 강의와 달리 스프링부트 버전이 향상되면서 관련 로그가 남지 안도록 된 건지, 단순히 설정이 잘못되었을 수 있을지,, 질문드립니다. 감사합니다.
안녕 킬구형 형 때문에 이번 추석 연휴 재밌게 보내고 있어. 고마워 형. 강의를 보면서 예제 소스에 대한 궁금증이 생겨서 질문을 남겨. 6장. 작전4: 원격 청킹 (Remote Chunking) - 전방위적 타격이 시작되다. ☠ ' 데이터 변화 모듈(SerDes Classes)' 예제에서 예외 객체로 MessageConversionException을 사용하는데 클로드에서는 통상 Kafka를 사용할때는 org.apache.kafka.common.errors.SerializationException 을 사용해야 kafka와 호환이 된다고 하더라구. 이거에 대해 설명 부탁해도 될까?
대부분 하나의 DB만을 사용하다보니 shard key가 고려되지 않은 테이블 설계를 보고 많이 사용했는데 처음부터 shard key는 고려하면서 설계를 하는것이 좋을까요? 저같은 경우처럼 shard key가 고려되지 않은 테이블에서 샤딩을 하기위해서 shard key를 추가하는 작업은 어느정도의 난이도가 있을까요? 강사님이 생각하시는 데이터베이스 샤딩을 위한 기준같은게 있으신지 궁금합니다.
킬구형 Spring Data JPA 사용하면 JpaRepository 인터페이스를 사용해서 PlatformTransactionManager , DataSource 를 자동으로 주입받아 사용할 수 있는데, 강의에서는 스프링배치의 세밀한 조정을 위해 일부러 JpaRepository 를 사용하지 않는 거야? 아래 두 강의에 둘 다 데이터소스와 트랜잭션매니저를 직접 활용하고 있어서 궁금해서 물어봐 3장. 작전1: 관계형 데이터베이스 읽고 쓰기 (테이블의 심장에 처형장을 세우다 ☠ ) OPERATION DOUBLE TAP - Spring Batch Test (추가) 생각해보니 예전에 아주 간단한 로직의 스프링배치 앱을 JpaRepository , JPQL을 이용해서 만들었던 만들었던 기억이 있는데,, 혹시 JpaRepository 을 일부러 사용하지 않는 이유가 있는지 궁금해