안녕하세요 Debezium source connector 부분을 공부하다가 궁금한 부분이 생겨서 질문드립니다! DB의 binlog 변경 사항을 감지해서 이벤트 메시지를 발행하는 부분에서, 여러가지 원인에 의해 에러가 발생하여 메시지가 유실되는 경우도 있을 것 같은데요. 커넥트에 에러로그는 남겠지만, 재처리를 위해 SourceDB 또는 별도 로그성 테이블에 메시지발행에 대한 상태를 기록하고 싶을 경우, 커넥터로부터 메시지발행 성공에 대한 응답을 받을 수 있을까요?
먼저 강의 만들어 주셔서 감사합니다. 첫번째 강의 퀴즈에 대한 문의입니다. 문제 중 데이터 웨어하우스와 비교할 때, 데이터 레이크의 주요 차이점 중 하나는 무엇일까요? 라는 질문에 대한 정답이 '데이터를 저장할 때 스키마 적용 방식'으로 되어있습니다. 이것은 데이터 웨어하우스의 특징이 아닌가요? 해설에는 제대로 되어있는데... 정답이 되려면 '데이터를 읽을 때 스키마 적용 방식'이 되어야 할 것 같습니다. 아니면 데이터 접근 권한 관리의 엄격성이 정답아닌가요? 전사의 모든 데이터가 모여있는데 웨어하우스는 처음부터 접근할 수 있는 사람들이 정해져 있지만, 레이크는 다양한 계층의 사용자에게 오픈되어 있어 권한 관리가 더 필요할 것이라 생각됩니다.
안녕하세요 좋은강의 감사드립니다. 제 주변도 사서 듣는다고 합니다. 예전에 완강해놓고 관련프로젝트를 하다 궁금한점이 생겼습니다. 이런식으로 분리된 구조라면, 유저 정보는 어떻게 가져오는건가요?? 예를들어서 게시판이면, 거기에 들어가면 게시글들이나 댓글들 뿐만 아니라 유저의 닉네임이라던가, 유저가 설정한 대표이미지 라던가 등등 유저정보에 관한것들도 같이 뷰 렌더링을 위해선 필요한 정보들일텐데 유저와 관련된 서비스도 뭔가 따로 분리가 되어있을것 같은데 이때 유저 정보들은 어떻게 같이 가져오는지 궁금합니다. 디비도 다 따로 사용할텐데 연관관계매핑도 아닐테고...모르겠네요
안녕하세요. 카프카 클러스터 규모를 추산하던 중 감당 가능한 토픽/파티션 수가 궁금하여 질문드립니다. 예를 들어, Replication Factor를 3으로 가정할 때 레플리카 개수가 대략 10,000개가 나옵니다 (3,000 파티션 × replication factor 3) 파티션 10개인 토픽 100개: 1,000개 파티션 20개인 토픽 100개: 2,000개 총 파티션: 3,000개 RF가 3일 때 전체 클러스터 레플리카 수: 9,000개 추후 토픽 추가에 따라 레플리카 수가 최대 18,000개까지 늘어날 수 있음 토픽과 파티션 규모가 이 정도라면 카프카 클러스터를 적절한 단위(도메인)로 나눠야 할지, 아니면 한 클러스터에서 충분히 운용 가능한지 궁금합니다. 클러스터를 하나로 구성하여 사용하자니 레플리카 수가 감당 가능할지 고민되고 클러스터를 여러개로 구성하여 사용하자니 그에 따른 비용과 오버 엔지니어링이 고민됩니다. 파티션이 많을수록 파일 같은 자원을 더 사용하고 각 클라이언트로부터 수많은 요청을 받게 되는데, 브로커를 충분히 늘리면 감당 가능한 정도일까요? 큰 규모의 카프카 클러스터를 운용해본 적이 없어 강사님께서 카프카 클러스터를 어떻게 운용하셨는지 여쭤봅니다. (이정도 수준의 레플리카를 운용해본적이 있는지 등) 참고로 카프카는 3.x (KRaft 모드) 버전을 사용하려고 합니다. 아래는 참고한 자료입니다. 참고1) 컨플루언트 개발자 가이드 에 따르면 토픽은 KRaft일 때 수백만 개 생성 가능하다고 하지만 결국 각 토픽당 파티션 수에 따라 달진다고 언급하고 있습니다. 참고2) 컨플루언트 블로그 에 따르면 가용성을 고려하면 2,000~4,000개를 권장하고, 지연시간을 고려하면 100 × b × r (b: 브로커 수, r: 복제 팩터) 공식을 제안하고 있습니다. 그런데 10년 전에 작성된 글이라 현재는 더 많이 지원하지 않을까 싶습니다.
14:42 에서 Snowflake 알고리즘으로 articleId를 생성한 후 DB에 저장된 121530268440289280L값을 사용해서 테스트 코드를 작성하시는 것을 보고, 실제로 Snowflake를 도입해서 Id를 생성하고 같은 방식으로 테스트 코드를 작성한다면 DB에 종속적이라서 반복적으로 테스트 코드를 실행할 때 테스트 코드의 유지보수에서 문제가 발생할 수 있을 거라는 생각이 들었습니다. 이런 문제를 막기 위해서 테스트 시에는 Mock 객체를 사용해 미리 정해진 Snowflake가 고정 ID 값을 반환하도록 하는 방식으로 테스트 코드를 작성하는게 맞는건지 궁금해서 질문글을 남기게 되었습니다.
게시글을 보면 한 개의 게시물 아래에 댓글이 쭉 나열되어 있습니다. 댓글을 확인할 때 page가 아닌 쭉 스크롤(infinite-scroll) 하면서 확인 하는 것인데 게시물 댓글에 왜 page와 pageSize가 필요한 것인지 모르겠습니다. 게시물의 댓글의 갯수를 말씀하시는 거라면 몇 개의 댓글을 불러오는지 이해가 가는데... 혹시 page와 pageSize가 단순히 두 단어를 말씀하시는 게 맞나요? 아니면 comment_count와 같은 게시물 갯수를 말씀하시는 건가요? @Test void readAll() { CommentPageResponse response = restClient.get() .uri("/v1/comments?articleId=1&page=1&pageSize=10") .retrieve() .body(CommentPageResponse.class); System.out.println("response.getCommentCount() = " + response.getCommentCount()); for (CommentResponse comment : response.getComments()) { if (!comment.getCommentId().equals(comment.getParentCommentId())) { System.out.print("\t"); } System.out.println("comment.getCommentId() = " + comment.getCommentId()); }
학습 관련 질문을 최대한 상세히 남겨주세요! 고민 과정도 같이 나열해주셔도 좋습니다. 먼저 유사한 질문이 있었는지 검색해보세요. 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요! 수업 잘 듣고 있습니다. 댓글 수나 조회수 쪽에서, likeCount, viewCount가 없는 경우 init을 통해 생성해주는 방식을 사용하고 있는데, 처음부터 게시글과 게시글의 조회수 객체를 같이 생성하는 방식을 사용하지 않는 이유가 있을까요? 게시글이 있다면 게시글 조회수 객체도 같이 존재하고, 이 둘의 객체 생명주기는 같아야 한다고 생각하는데, 강의가 순차적으로 진행됨에 따라 이전에 db에 생성된 값들이 존재하기 때문에 이렇게 하신건지 궁금합니다!! 그리고 처음부터 같이 생성할 수 있다면 다른 프로젝트에서 그 방법을 선택하는 게 나을까요? 감사하빈다!!
기존에는 http://localhost:8081 과같이 보내줬는데, 이걸 lb:/MY-FIRST-SERVICE 로 바꿨습니다. 그렇다면, 원래 localhost:8081로 직접 http 프로토콜로 보내줬던건, 유레카를 거치지 않았고, 하드코딩으로 직접 보내줬던 것이고, 그리고 lb:/를 이용하는 것이 유레카에 저장되어 있는, 정보들을 통해 읽어와서 동적으로 보내주는 것으로 이해하였는데, 제가 이해한게 맞을까요?
안녕하세요 ! 좋은 강의 해주셔서 감사합니다. hot article 부분에서 헷갈리는 부분이 있어서 질문 남깁니다. hot article 을 저장할때, article 의 생성 날짜 기준으로 저장하기 때문에, 생성 시간이 아닌 다른 날짜에 hot article이 되더라도, 생성 시간이 key가 되어 그 생성 시간 날짜에 저장이 되는 것이 맞나요 ?
안녕하세요. 강의에서 실습을 종료할 때는 첫 구동 순서의 반대로 순서로 종료를 하라고 말씀을 하셨는데 그러지 못했습니다...ㅠㅠ 이후 zookeeper, kafka, connect 순으로 구동을 하려고 했지만 아래와 같은 오류가 connect구동단계에서 떴습니다. [2025-06-30 19:42:13,440] INFO [AdminClient clientId=adminclient-8] Retrying to fetch metadata. (org.apache.kafka.clients.admin.KafkaAdminClient:3177) 위 구문이 무한반복으로 로그에 뜨게 되는데요. ~/data/kafka-logs/ meta.properties 을 지웠다가 kafka 구동부터 다시 시작을 시도해 봐도 여전히 connect구동을 위 에러로 진행할 수 없었습니다. 해결방법이 무엇인지 궁금합니다.
안녕하세요 선생님 좋은 강의 해주셔서 감사합니다. 댓글 create 구현에서 findParent() 함수를 구현할때, .filter(Comment::isRoot) 이런 코드가 있는데, 애초에 parentCommentId 에 root 댓글이 아닌 댓글의 ID가 존재하면 안되는 것 아닌가요 ? 존재하면 안되는 경우를 filter 로 걸러주는 것 같아서 필요한 코드인지 의문이 들어 질문 남깁니다.