묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨은행 서버 프로젝트 실습을 통해 배우는 코틀린 마스터 클래스
CompletableFuture 질문
안녕하세요.KafkaProducer future.whenComplete에서throw 하는 코드를 보고 질문 드립니다.코드를 보니까 CompletableFuture로 구현되어 있던데transactional.run 안에서 예외를 잡을 수가 있는지 궁금합니다.코드만 보기로는 whenComplete가 비동기로 동작해서 저기서 예외를 던진다고 누가 받는지 잘 모르겠습니다.제가 스프링 비동기를 구현해보지 않아서 질문드립니다.감사합니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
자바 버전에 관하여
자바 21버전이 아닌 17버전을 사용해도 괜찮나요?
-
해결됨은행 서버 프로젝트 실습을 통해 배우는 코틀린 마스터 클래스
스프링 빈 질문
안녕하세요.궁금한 점이 있어 질문드립니다.코드를 보면 @Component private class Advice: Runner ...이렇게 내부 클래스가 Private으로 되어 있는데 private으로 선언된 클래스도 component scan 대상이 되나요? 만약 1번에서 안된다면 인자로 받은 Runner가 프록시 빈으로 생성이 안될 것 같은데, 그렇다면 프록시가 제대로 동작하는게 맞는지 궁금합니다. private val advice : Runner = Advice()코드를 보면 만약 빈으로 생성된 인자를 넣지 않는다면 기본 Advice() 를 생성해서 넣는다고 보이는데 이렇게 된다면 Advice 프록시가 자동으로 생성되지 않는다고 생각되고 그렇다면 aop가 작동되지 않을것 같은데 맞는지 궁금합니다.(그래서 기본값을 넣지 않는게 맞지 않나 궁금합니다.) 감사합니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
read Service 캐시방식 질문
학습 관련 질문을 최대한 상세히 남겨주세요!고민 과정도 같이 나열해주셔도 좋습니다.먼저 유사한 질문이 있었는지 검색해보세요.안녕하세요? 강의 계속 잘 듣고 잇습니다. 이제거의 막바지에 이르렀네요 ㅎㅎ..게시글 목록조회 최적화와 관련하여 질문드리고자 합니다.제가 처음에 이해한 바는 최신의 천개의 데이터를 레디스에 적재하고, 그 외의 데이터는 직접 articleServcie를 통해 가져오자 라고 이해를 했었습니다.(hot, cold Data)그런데 이후의 결과적으로는 아래 두가지 캐시가 존재하게 되었더라구요1.zset을 활용한 인기글 데이터 관리(목록 조회 최적화)2.실제 데이터 queryModel(단건 조회 최적화)이런 구조에서는 zset에서 천개의 데이터를 관리하긴 하지만 실제로 queryModel에는 데이터가 있을지 없을지 확신을 할 수 없는 상황이라는 생각이 듭니다. 즉 실제로 zset에 있는 데이터라 해도 하루가 지났다면 queryModel이 있을지 없을지 모르는 상황이라고 인지했습니다.질문1) 제가 이해한바가 맞을까요? 맞다면 이 구조를 선택하신 이유가 조금 궁급합니다.두 캐시를 합쳐서, queryModel자체를 하나의 캐시에서 천개의 데이터만 관리하면 되지않나? 라는 의문이 생겨가지구요어차피 천개의 데이터만 관리한다면 메모리를 그렇게 크게 차지 하지 않을 것 같기도 하구요질문2) 지금과 같은 구조에서는 zset을 활용한 article_id가 그렇게 큰 의미가 있는 부분인가? 라는 생각이 듭니다.- 어차피 최신순(1000개이하)의 데이터에 대해서 id를 추출하는거면 DB에서 offset을 세어도 그렇게 안느린 거 아닌가? 하는 생각이 들구요- zset에 포함되어 있더라도, 실제 데이터(QueryModel)가 있는지 없는지 확답을 할 수 없는 상황이니 큰 의미가 있는건가? 하는 의문이듭니다. 차라리 최신 천개의 데이터에 대해서는 조회에 필요한 모든 데이터를 캐싱해둔다면 큰 의미가 있을거라고 생각이 드는데, 지금의 경우에 대해서는 잘 모르겠네요 ㅠㅠ-결론적으로, 현재 회사에서 RDB를 주로 쓰고 있는 주니어 개발자 입장에서 관련해서 레디스를 도입해본다면.. 아키텍처 복잡도가 올라가는 부분에 비해 엄청 크게 이득이 되는 부분이 있나?? 라는 생각이 많이 들었습니다.질문3)추가로, 이거는 좀 다른 부분이긴 한데 read-service에서 like, unlike등 업데이트 이벤트 핸들러의 경우 동시요청에 대해서 lostupdate처럼 동작하는 부분이 있을 것 같은데 이부분은 배제하신건지, 혹은 제가 잘못생각하고 있는건지 궁금합니다.양질의 강의 정말 감사드립니다
-
미해결카프카 완벽 가이드 - 커넥트(Connect) 편
메시지 발행이 안 됩니다.
kafka-console-producer는 여전히 잘 동작합니다. 그런데 kafka-avro-console-producer로 메시지를 발행하면, 아무런 에러메시지 없어, 그냥 메시지 발행이 안 됩니다. schema-registry에는 잘 반영이 되는데, 토픽도 안 생기고, 미리 토픽을 만들어 발행해도 아무 반응이 없습니다. kafka-avro-console-producer와 kafka-broker간의 문제인 것 같은데,, 가령 kafka-console-producer, kafka-console-consumer, kafka-avro-console-consumer는 에러가 나든 안 나든 broker랑 상호작용을 하는데, 유독 kafka-avro-console-producer만 문제네요.. 혹시 이런 케이스를 겪어보셨을까요?
-
미해결실전에서 바로 써먹는 Kafka 입문
Kafka concurrency
안녕하세요, Consumer 서버가 2대라고 가정해보겠습니다.@KafkaListener의 concurrency 값을 설정을 2으로 설정하였다고 가정한다면, 2개의 스레드가 생성이돼서 병렬적으로 파티션을 처리할텐데위의 설정 없이 그냥 @KafkaListener가 붙은 메서드에 @Async를 통해서 ThreadPool의 크기를 2으로 설정하였다면, 동일하게 동작하게 되는걸까요?스프링 MVC의 경우 톰캣 기본 설정이 200 정도의 스레드풀을 할당해서 병렬적으로 처리하는 것으로 알고 있는데, Async대신 KafkaListener의 concurrency 설정을 200으로 하는 것이 맞을까요?
-
미해결실전에서 바로 써먹는 Kafka 입문
Kafka timeout 설정
안녕하세요.보통 RestTemplate, WebClient, FeignClient 등으로 외부 요청 등을 시도할 경우에는 timeout 설정을 중요하게 생각하는데, 카프카에서는 Connection Timeout, Read Timeout 등과 같은 셋팅 값을 몇 초로 설정해야할까요? 그리고 몇 초에 해당하는 값을 정하는 기준이 어떻게 될까요?
-
미해결실습으로 배우는 선착순 이벤트 시스템
안되서 스트레스 받아요
다 따라 했는데 안되니깐 스트레스 받네요
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
샤드 할당 관련 질문 드립니다.
학습 관련 질문을 최대한 상세히 남겨주세요!고민 과정도 같이 나열해주셔도 좋습니다.먼저 유사한 질문이 있었는지 검색해보세요.인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. AssignedShard 클래스의 목적이 샤드를 균등하게 분배하는 것이라고 보이는데요 저는 처음에 스레드가 처리할 일을 분할해주는 거라고 생각했는데 찾아보니까 앱 인스턴스를 기준으로 샤드를 나누는 것이라고 하더라고요. 근데 앱 인스턴스는 말하자면 각각의 서버? 예를 들어서 포트 9000번을 A,B,C 서버에서 실행하면 그 각각을 앱 인스턴스라고 부른다고 봤습니다. 그리고 이렇게 각각 다른 서버에서 하나의 포트를 실행하려면 운영 환경에서 서버의 부담이 커질때 서버를 늘려주는 로드밸런싱?같은 기법을 쓸때 필요한 샤드 분배 기능같은데 나중에 운영환경에서 이런때를 대비해서 미리 구현하신건가요? 아니면 이런 지금 강의 환경 안에서도 이렇게 앱 인스턴스가 늘어나는? 상황이 있는건가요.. 아직 공부중이고 모르는 부분도 좀 있다보니 설명이 두서없었습니다 ㅠ
-
미해결카프카 완벽 가이드 - 커넥트(Connect) 편
디비지움 오프셋 리셋
1-1. 디비지움도 오프셋 리셋이 가능한가요?그렇게 된다면만약 mysql 로그 경로에 로그들이 예전과 같지 않은데 가능한가요?1-2. 혹시 디비지움으로 mysql의 빈로그의 특정 지점부터 읽어들이게 할 수도 있나요?
-
해결됨[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
리밸런스 onPartitionRevoked이 필요한 상황
안녕하세요.onPartitionRevoked() 메서드에 대한 아래 설명을 보고 몇 가지 의문이 생겨 질문드립니다."리밸런스가 시작되기 직전에 호출되는 메서드이다. 마지막으로 처리한 레코드를 기준으로 커밋을 하기 위해서는 리밸런스가 시작하기 직전에 커밋을 하면 되므로 onPartitionRevoked() 메서드에 커밋을 구현하여 처리할 수 있다."수동 커밋 모드(manual commit)의 경우, "마지막으로 처리한 레코드를 기준으로 커밋"한다는 의미를 어떻게 이해해야 할까요?리밸런싱이 발생하더라도 이미 poll()로 받아온 레코드는 그대로 처리할 수 있으니, 레코드 처리 및 커밋은 정상적으로 동작하지 않을까요?그럼에도 불구하고 onPartitionRevoked()에서 커밋하지 않으면 '커밋을 구현하여 처리할 수 있다'는 어떤 의미인지 궁금합니다.오토 커밋 모드(auto commit)의 경우에는 onPartitionRevoked()가 어떤 상황에서 필요하게 되는지도 잘 감이 오지 않습니다.이 경우에도 별도의 처리를 하지 않으면 유실이나 중복이 발생할 수 있다는 의미인지, 혹은 다른 목적이 있는지 궁금합니다.
-
미해결카프카 완벽 가이드 - 커넥트(Connect) 편
mysql_jdbc_oc_sink_customers_02.json 에서 오류납니다.
오랜만에 강의를 전체를 다시 듣고 있습니다만,아래와 같은 에러에서 벗어나지 못하고 있습니다.도와 주세요.ㅠㅠ [2025-07-31 18:21:32,067] ERROR [mysql_jdbc_oc_sink_customers_02|task-0] Failing task after exhausting retries; encountered 2 exceptions on last write attempt. For complete details on each exception, please enable DEBUG logging. (io.confluent.connect.jdbc.sink.JdbcSinkTask:124)[2025-07-31 18:21:32,067] ERROR [mysql_jdbc_oc_sink_customers_02|task-0] WorkerSinkTask{id=mysql_jdbc_oc_sink_customers_02-0} Task threw an uncaught and unrecoverable exception. Task is being killed and will not recover until manually restarted. Error: java.sql.SQLException: Exception chain:java.sql.BatchUpdateException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'customers_sinkcustomer_idemail_addressfull_name) values(1,'testuser_' at line 1java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'customers_sinkcustomer_idemail_addressfull_name) values(1,'testuser_' at line 1 (org.apache.kafka.connect.runtime.WorkerSinkTask:616)org.apache.kafka.connect.errors.ConnectException: java.sql.SQLException: Exception chain:java.sql.BatchUpdateException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'customers_sinkcustomer_idemail_addressfull_name) values(1,'testuser_' at line 1java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'customers_sinkcustomer_idemail_addressfull_name) values(1,'testuser_' at line 1 at io.confluent.connect.jdbc.sink.JdbcSinkTask.put(JdbcSinkTask.java:133) at org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:584) at org.apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:334) at org.apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.java:235) at org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:204) at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:200) at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:255) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829)
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
좋아요 기능 중복처리
안녕하세요 강사님, 좋아요 기능을 만드는 api를 반복하여 보고 있는데 궁금한 점이 생겨서 질문 드립니다.좋아요 기능을 만들고 테스트중인데 좋아요가 중복처리 예를 들어,10번 게시글에 15번의 사용자가 좋아요가 두 개를 눌러도 두 번 다 좋아요가 눌리는 상황인데 이에 대한 중복처리는 따로 해줘야 하는 것인가요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
MSA 애플리케이션에 Spring Web과 Spring Data JPA를 사용하는 것이 바람직한지 궁금합니다. (MSA 설계와 관련된 질문입니다)
인사말안녕하세요. 질 높은 강의를 제공해주셔서 너무 감사하다는 말씀드립니다.아직 강의를 모두 본 것은 아니어서, 제가 질문드리고자 하는 내용이 강의에 포함이 되어있을지 모르겠습니다만.. 궁금한 내용을 질문드립니다. 질문많은 모놀리식 프로젝트에서는 Spring Web + Spring Data JPA를 의존성을 주입하고 개발을 하고 저 또한 이러한 방식의 개발을 경험해왔습니다. Spring Data JPA와 Spring Web은 동기방식으로 동작하게 되는데, MSA의 독립 모듈을 만들 때 해당 의존성들을 사용하는 것이 바람직한지 모르겠습니다.강의의 내용처럼 하나의 서비스는 독립적으로 구성된 수십개에서 수백개의 독립된 애플리케이션으로 동작을 하게 될 것인데요. 상황에 따라 다르기는 하겠지만 Spring Web과 Spring Data JPA를 사용하는 독립된 애플리케이션이 있게 된다면 이쪽에서 병목이 일어나 엄청난 성능 이슈가 발생할 것으로 생각이듭니다.이와 같은 고민을 갖고 GPT한테 물어보니 WebFlux와 R2DBC를 사용하여 모두 비동기적으로 만드는 것이 권장되는 사항이라고 하는데 이 답변이 맞을까요? MSA를 구성한다고 한들, 모놀리식보다 성능상 좋지가 않으면 MSA로 구축할 필요성이 없을 것인데, 제가 우려하는 성능상의 심각한 문제 / 병목현상을 예방하기 위한 설계를 어떻게 해야하는지 너무 궁금합니다. 추가적으로는 Speing web이나 Spring Data Jpa가 MSA에거 어느 점에 필요하게 됭까요? 성능 관점에서 도무지 필요성을 느끼지 못하고있습니다.질문이 너무 두서가 없는데... 질문 내용이 강사님께 잘 전달되었길 바랍니다..!
-
미해결카프카 완벽 가이드 - 커넥트(Connect) 편
io.debezium.connector.mysql.MySqlConnector 질문
snapshot mode에 궁금한 점이 있습니다.MySqlConnector 중간에 에러가 발생하면 커넥터 기동이 멈추는데, (snapshot.mode = initial 일 때)delete했다가 다시 create를 진행하면 중복된 snapshot 데이터를 또 토픽에 적재하는지 궁금합니다.중복 저장된다면, 모두 삭제한 뒤 (토픽/히스토리토픽/커넥터) 다시 재생성해서 진행을 해야할까요?
-
미해결Kafka & Spark 활용한 Realtime Datalake
Kafka Cluster 서버 구축 시 Docker 사용
안녕하세요! 강의 정말 잘 듣고 있습니다! 수업에서 Kafka 클러스터를 구축할 때 EC2 인스턴스 4대를 사용하셨는데요. 혹시 도커 리눅스 컨테이너 4개를 띄워 학습 환경을 구성해도 Kafka 클러스터 실습이 가능할까요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
어떤 것이 업데이트 된 건가요?
강의를 한 번 수강했던 수강생입니다.반년전 듣고 실습을 안해서 까먹어서 다시 들어볼려고 하는데 어떤 게 업데이트 된 건지 알 수 있을까요? 기존에 커리큘럼별 강의 제목은 같은데 업데이트 된 건가요? 아니면 새로 찍으신 강의가 별도로 올라와있는건가요?
-
미해결Kafka & Spark 활용한 Realtime Datalake
데이터레이크 구성요소 안나옵니다.
저도 데이터레이크 구성요소 영상 안나옵니다.소리는 나옵니다.위에도 있던데 어떻게 해결되었나요?다른영상은 나옵니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
spring_cloud_gateway_requests_seconds_count를 Execute시 다른 요청을 하지 않았음에도 오류 요청의 숫자가 계속 증가합니다.
spring_cloud_gateway_requests_seconds_count{httpMethod="GET", httpStatusCode="401", instance="localhost:8000", job="apigateway-service", outcome="CLIENT_ERROR", routeId="user-service", routeUri="lb://USER-SERVICE", status="UNAUTHORIZED"}22spring_cloud_gateway_requests_seconds_count{httpMethod="GET", httpStatusCode="404", instance="localhost:8000", job="apigateway-service", outcome="CLIENT_ERROR", routeId="order-service", routeUri="lb://ORDER-SERVICE", status="NOT_FOUND"}회원가입과 로그인만 하더라도 이러한 것들의 숫자가 올라가 총 요청 수 중 성공한 숫자가 매우 적습니다. chat gpt에서는 자동으로 health-check를 해서 그렇다라고는 하는데 정확히 어떤 것이 문제인지 잘 모르겠습니다.
-
미해결Kafka & Spark 활용한 Realtime Datalake
codedeploy 배포 실패
안녕하세요! 강사님강의 잘 듣고 있습니다.github actions 실행 부분에서 codedeploy부분이 실패했는데요... github actions에서 성공이 떴고 버킷 이름도 잘 바꿨으며kafka-server에 code-deploy가 있는 것도 확인했습니다. 혹시 뭔가 확인해봐야할 게 있을까요?