묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Kafka & Spark 활용한 Realtime Datalake
kafka 개념 질문
안녕하세요, 우선 데이터 관련 좋은 강의 올려주셔 감사합니다.수강 중 실습에서 AWS kafka 서버가 어떤 역할인지 헷갈려 질문 드립니다. 위 강의 pdf와 같이 지금까지 producer가 서버에 push하고 consumer가 서버(브로커)에 있는 메시지를 pull 하는 것으로 이해했고, AWS에 만든 3개의 kafka-broker01~03이 서버를 구성하는 3개의 '브로커'라고 이해했는데,실습을 진행하면서 AWS kafka-broker서버에서 파티션을 만들었으니 브로커는 맞는 것 같으나 동시에 producer, consumer 역할을 하는 것 같아서 원래 브로커가 서버를 구성하는 동시에 클라이언트의 역할도 하는 것인지 이해하는데 어려움을 겪고 있습니다.만약 그렇다면 kafka02에서 produce하고 kafka01에서 consume한다고 할 때, kafka02도 kafka01와 같은 cluster에 속하니 kafka02의 파티션에도 메시지가 저장되고 있는 것이 맞나요...?긴 글 읽어주셔서 감사드립니다.
-
미해결Kafka & Spark 활용한 Realtime Datalake
강사님 필기하실 때 어떤 프로그램 사용하시나요??
안녕하세요! 항상 강의 잘 듣고 있는 1인입니다. 필기시 사용하시는 프로그램이 궁금해서 질문드립니다!아 그리고 강의 소개쪽에 나와있는 디스코드 채널 링크를 클릭하면 '올바르지 않은 초대장' 이라고 나오는데 이 부분도 한 번 봐주시면 감사하겠습니다. 😄
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
프론트엔드 코드
안녕하세요 선생님 강의 정말 잘들었습니다.제가 이 강의를 듣고 게시판을 직접 만드는 것이 목표였는데, 프론트 코드를 만드는데 어려움을 겪고 있습니다.혹시 뼈대만이라도 프론트엔드 코드를 제공해 주실 수 있을까요 ? 무리한 부탁인 것을 알고 있지만, 간절하여 질문글로 남깁니다
-
미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
KStreamJoinKTable 실행시 오류
맥북 M1이고 jdk version "1.8.0_402" 입니다.KStreamJoinKTable 실행시 오류가 나서 order_join 결과값에 아무것도 나오지 않습니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
comment_v2에서 unique index 를 추가하지 않고 table 생성 시 path에 unique 제약을 걸어도 효과가 같을까요?
안녕하세요 쿠케님. 우선 좋은 강의 감사합니다.다름이 아니라 댓글 무한 depth - 테이블&구현 설계에서 unique index를 작성하는 부분이 나오는데 unique index 대신 index로 구현하고 table 생성 시 path에 unique 제약을 걸어도 효과가 같을지 궁금합니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
hot article 로직 변경
안녕하세요 선생님 !선생님 코드로 구현을 완료하고 제가 커스텀 해보고 있는 중에 고민이 있어 질문글 남깁니다.추천 수가 특정 개수 이상일때 hot article이 되고, 매일 갱신하는 것이 아닌, 한번 hot article이 되면 계속해서 hot article 게시판에 게시하고 싶습니다.이럴 때 hot article을 데이터베이스에 저장하는 것이 좋을까요 아니면 redis에 저장하는 것이 좋을까요 ?선생님의 의견이 궁금하여 질문 남깁니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
MSA -> 모놀리식 패턴으로 수정
안녕하세요 선생님현재 애플리케이션을 MSA에서 모놀리식으로 바꾸고 있습니다.MSA 에서는 hot-article 애플리케이션에서는각각의 서비스들과 통신하지 않고 데이터를 저장하기 위해ArticleCommentCountRepository, ArticleViewCountRepository,ArticleLikeCountRepository 를 따로 만든 것으로 이해했습니다 .모놀리식에서는 이 3개의 Count Repository를 따로 만들지 않고 각각의 서비스에 있는 Count Repository 에서 가져오는 것이 더 좋을까요, 아니면아니면 MSA hot-article 패키지에 따로 count repository를 만드는 것이 좋을까요 ..선생님의 의견이 궁금합니다 .
-
해결됨카프카 완벽 가이드 - 코어편
멀티 브로커 설정 중 포트 충돌 발생
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요멀티 브로커 설정하는 과정에서 문제가 발생하였는데요.kafka의 server.properties를 훑어보니confluent.metadata.server 관련 포트로 보입니다.강의에서는 관련 설정을 별도로 수정하지 않고 진행 해도 문제가 되지 않지만저의 경우에는 위와 같이 예외가 발생해서 진행할 수 없었습니다.그래서 저는 수동으로 각각 8090, 8091, 8092 로 수정하여 실행했는데 우선 실행은 잘 됩니다.강의 진행하는데 문제는 없겠죠...?강사님과 환경을 똑같이 설정했다고 생각했는데 왜 차이가 발생하는걸까요 ㅜ
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
MSA 에서 Monolithic Architecture로 마이그레이션
안녕하세요 강사님 ! 강의 잘듣고 있습니다.강의를 거의 다들었는데, Monolithic Architecture로 마이그레이션 해보고 싶다는 생각이 들어 해보려고 합니다.각각의 모듈을 하나의 어플리케이션의 패키지로 만들기만 하면 될까요 ? 어느 부분을 신경쓰면 좋을지 간단하게라도 조언해주시면 정말 감사드리겠습니다 .!!이 강의를 듣기를 진심으로 잘했다는 생각이 듭니다. 좋은 강의 해주셔서 감사드리고 다음 강의도 기대하겠습니다 !!
-
미해결카프카 완벽 가이드 - 커넥트(Connect) 편
CDC Connect 통시에서의 암호화 관련 하여 문의 드립니다.
안녕하세요.외부 DB 에 connect 하여 CDC를 통해 데이터를 가져 오는 것을 하고 있습니다. 외부에서 가져오다 보니 데이터를 보호 하고 싶다는 생각이 들었습니다.챗 GPT 에게 우선 물어 보니 properties 설정에 security.protocol=SSLconnection.url=jdbc:mysql://your.db.host:3306/yourdb?useSSL=true&requireSSL=true&verifyServerCertificate=trueconnection.user=db_userconnection.password=db_pass이런 설정을 하라는 답변이 왔는데,kafka 설정과, JDBC 암호를 적용 해야 한다고 합니다.제가 잘 몰라서, 이 답변이 신뢰 할수 있는 건지 알 수가 없습니다. 1.kafka에서 암호화 하여 통신이 가능한 걸까요? 2. 암호하가 적용 된다면kafka connect 에서 동작 원리에 도 상관없이 적용이 될까요? 외부에 kafka connect로 DB의 데이터를 가져 오는 경우가 실무 에서도 많이 있나요?그럴 경우 데이터 암호화는 어떻게 처리 하나요?
-
미해결Kafka & Spark 활용한 Realtime Datalake
spark01 인스턴스 생성시 문제점 발생
우분투 서버 선택하는부분에 강사님과 다른 목록밖에 없어서 인스턴스 시작이 되고있지 않습니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
최신 webflux 라이브러리에서 yml 작성법
server: port: 8000 eureka: client: register-with-eureka: false fetch-registry: false service-url: defaultZone: http://localhost:8761/eureka spring: application: name: apigateway-service cloud: gateway: server: webflux: routes: - id: first-service uri: http://localhost:8081/ predicates: - Path=/first-service/** filters: - AddRequestHeader=first-request, first-request-header2 - AddResponseHeader=first-response, first-response-header2 - id: second-service uri: http://localhost:8082/ predicates: - Path=/second-service/** filters: - AddRequestHeader=second-request, second-request-header2 - AddResponseHeader=second-response, second-response-header2위처럼 weflux:라고 yml에서 작성해주셔야 잘 동작합니다.
-
미해결Kafka & Spark 활용한 Realtime Datalake
python auto_commit_consumer.py 실행 이후
실행이 되지 않습니다. 원인이 어떤 것들이 있을까요?
-
미해결Kafka & Spark 활용한 Realtime Datalake
ui for apache kafka 브라우저 접속했을때
브로커 탭에 브로커 아이디가 1번에 체크표시가 되어있는데 상관없나요? ppt에는 2번으로 설정하신거같은데 그대로 했는데 1번으로 지정되었습니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
각 application.java에서 빈 스캔할때 차이
안녕하세요 Transactional Outbox 모듈 적용 부분을 듣던중에 차이가 발생해서 질문드립니다.강의에서는 이제 각 나눠진 기능마다 XXXAplication 클래스에EntityScan과 EnableJpaRRepositories 애노테이션을 달아주는것만으로도 다른패키지에있는 outboxEventPublisher를 사용할 수 있는데 저는 인식을 못합니다. application클래스에 @componentScan(...)까지 달아주고나서야 비로서 인식이 되기 시작하는데 혹시 뭐가 문제고 무슨 차이가 있는걸까요 ... 찾아봤는데 잘 안보입니다 ㅠㅠ
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
섹션4 (좋아요)의 댓글 수 구현 강의에서 질문 있습니다.
안녕하세요 ! 좋은 강의 해주셔서 감사합니다.섹션 4의 댓글 수 구현 강의 3분 39초 경에서 질문 있습니다 .선생님의 코드에서는 댓글을 물리적 삭제할때만 댓글 수를 decrease를 통해 줄여주고 있는데, 논리적 삭제 시에도 count를 줄여주는 것이 맞다고 생각해서 질문글 남깁니다. 왜 물리적 삭제 시에만 댓글 수를 decrease 하시는 건가요 ?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
ArticleDeletedEventHandler
handle()에 조회 수, 좋아요 수, 댓글 수 캐시도 삭제해주어야 하는데 누락되어야 한다고 생각이 하는데 어떻게 생각하시는지 궁금합니다! 아니면 다른 의도가 있으셨을까요?강의에서는 생성 시간 및 인기글 캐시만 삭제하고 있습니다!
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
TransactionalEventListener 관련 문의드리고자 글 남깁니다.
안녕하세요, 강사님 늘 강의 잘 듣고 있습니다, 감사합니다 !다름이 아니고, @Transactional과 @TransactionalEventListener 설정 관련해 궁금한 사항이 있어서 문의드리게 되었습니다.강의내용은 @Transactional, @TransactionalEventListener가 전역적으로 선언되었고 outbox 관련 로직만 존재하기 때문에 괜찮지만제 업무환경에서는 @TrasnactionalEventListener가 사용되면 프로젝트의 모든 @Transactional으로 관련된 내용이 바인딩되기 때문에 이를 scope 별로 구분하는 방법이 필요해보였는데요. 따로 알아보았지만, payload(강의에서는 OutboxEvent) 를 통해 분기처리하는 방법만 보이다보니 혹시 관련하여 TrasnactionalEventListener 어노테이션 필드 혹은 커스텀 어노테이션만으로 구분할 수 있는 방법이 있을까요 ?문의드리는 가장 큰 이유는 outbox 로직이 필요없는 DB처리에도 TrasnactionalEventListener이 우선은 호출되고 payload를 통해 early return 시키려고 하다보니, 불필요한 리소스 사용을 방지하고 싶어서 문의드리게 되었습니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
오타 문의
안녕하세요! 우선 강의 너무 잘 듣고 있습니다!강의 자료에서 좋아요 수 설계 부분에서11:171:1 관계이지만, 테이블 비정규화의 필요성을 살펴본 것이다.이 부분은 1:1 관계이므로 비정규화의 필요성이 있지만, 레코드 락으로 인한 자원 한계를 고려하여 '정규화'의 필요성을 살펴본 것 이 맞지 않나 싶습니다! 혹시 제가 잘못 이해한 부분이 있다면 알려주시면 감사하겠습니다!
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
docker mariadb 실행
백업은 안하려고 한참 헤메다, 결국 백업으로 해결했네요..ㅎ..환경: window pc에 mariadb client 버전을 설치함dump 생성client 버전이기 떄문에, “mariadb prompt” 를 실행해서 아래의 명령어 실행(cmd에서 mariadb, mysql 명령어 동작 안함)# 생성할 위치로 이동하시거나, 덤프 생성할때 경로 작성하시요. cd "어느 경로"/docker_file # 덤프 생성 mysqldump -u root -p --all-databases > all.sql Dockerfile 생성# Docker Hub에서 공식 MariaDB 이미지 사용 FROM mariadb:latest # 초기화 시 자동 실행될 SQL 복사 COPY ./all.sql /docker-entrypoint-initdb.d/ # 포트 개방 EXPOSE 3306 이미지 생성 및 컨테이너 실행docker build -t [당신의 게정은?]/mariadb:1.0 . docker run -d \\ -p 13306:3306 \\ --name mariadb \\ --network ecommerce-network \\ -e MARIADB_ROOT_PASSWORD=[당신의 root 비번]\\ kimjinwon1432/mariadb:1.0 =============== 추가 ==============강사님께서 알려주신 방법으로 진행해봤어요.일단, 제 pc의 mariadb 설치경로가 "C:\Program Files" 였기 때문에, mariadb폴더 내의 data 폴더와 그 하위 파일 및 디렉터리를 C: 밑에 우리가 사용하는 docker_file 폴더에 넣었습니다* Program Files를 경로로 잡으시면 13에러 코드가 발생합니다. 이는 권한 관련 문제이므로 cli에서 사용하시는 계정에 대해서 mariadb 폴더 내부에 권한을 주셔도 소용이 없어요.* 이 과정은 이전에 설치한 mariadb 이미지가 있으면 삭제?하거나 이미지의 이름을 변경해서 진행하세요.(전 삭제함) * 제 pc의 mariadb 의 버전이 11.4.2여서, docker에서 사용할 수 있는 가장 근접한 버전으로 진행했습니다. docker run -d -p 13306:3306 --network ecommerce-network \ -e MARIADB_ROOT_PASSWORD=[비번] \ --name mariadb -v "C:\study\SpringCloud\docker_files\data:/var/lib/mysql" \ mariadb:11.4.7이렇게 하시면 docker exec -it ~~~ /bin/bash를 통해서 db에 접속 후 데이터베이스를 확인하면 로컬에서 작업했던 db의 데이터가 docker로 전해진 것을 확인 할 수 있어요.