Consumer 서버를 처음 만들 때 yml 설정에서 서버 포트를 왜 굳이 0으로 둘까? 궁금했는데 30강을 통해서 이해가 되었습니다. Kafka와 관련없는 질문인거 같긴 하지만 혹시 yml 파일에 server.port를 8081 같은걸로 고정시켜두었다면, 서버 여러대를 띄울 수 있는 방법이 있을까요 ? (강의 환경처럼 localhost로 Consumer 띄우는 경우)
안녕하세요! 강의 잘 듣고있습니다. 질문이 두 개 있는데요, 1/ RentalCard라는 도서 대여 카드로 Entity를 구성하셨는데, 이벤트 스토밍때 한 번도 Card라는 개념이 나오지 않은 것 같습니다. DDD 자체가 유비쿼터스 언어로 기술되어야하는 것으로 이해했는데, Card라는 키워드가 이벤트 스토밍때 도출되지 않는걸로 봐서는 비즈니스 언어라고 하기 어려울 것 같습니다. 이 상황에서 RentalCard라는 네이밍을 지으신 이유가 있을까요? 2/ RentalCard 도메인 자체에 ReturnItem을 쥐고있어, 이 설계에서는 Aggregate가 매번 ReturnItem 리스트를 조회하게 됩니다. 사용자 대여 목록이 쌓이게 되면 이 리스트가 매우 커질수도 있을 것 같은데, 이러한 문제는 현업에서 어떻게 처리하나요?
강사님, MSA의 장애 격리에 대해 강의를 듣다가 궁금한 점이 생겨 질문드립니다. 제가 이해하기로는 모놀리식은 하나의 애플리케이션 안에 여러 도메인/서비스가 함께 구성되어 있고, MSA는 각 도메인별로 서비스를 분리하여 구성하는 것으로 알고 있습니다. 강의에서 MSA의 장점 중 하나로 장애 격리를 말씀해 주셨는데, 실제로는 한 서비스의 장애가 해당 서비스를 의존하고 있는 다른 서비스로 전파될 수도 있지 않을까 하는 생각이 들었습니다. 예를 들어 여러 서비스에서 회원 정보나 회원 상태를 검증하기 위해 회원 서비스에 요청을 보내야 하고, 회원 서비스의 검증 결과가 정상이어야만 해당 서비스를 이용할 수 있는 구조라고 가정하겠습니다. 이 경우 회원 서비스에 장애가 발생하면 회원 서비스에 의존하고 있는 여러 서비스에서도 요청 처리가 불가능해지기 때문에, 결국 장애가 다른 서비스로 전파되는 것처럼 보입니다. 그래서 제가 생각한 것은 MSA의 장애 격리가 '장애가 다른 서비스로 전혀 전파되지 않는다'는 의미보다는, 모놀리식에 비해 장애가 발생했을 때 영향을 받는 범위를 제한할 수 있다는 의미에 더 가깝지 않을까? 하는 것입니다. 예를 들어 모놀리식에서는 하나의 애플리케이션에 장애가 발생하면 전체 기능에 영향을 줄 수 있지만, MSA에서는 특정 서비스의 장애가 해당 서비스 및 이를 직접적으로 의존하는 서비스 정도로 영향 범위를 제한할 수 있다는 의미인지 궁금합니다. 그리고 실제 MSA 환경에서는 이러한 장애 전파를 막기 위해 Circuit Breaker, Timeout, Retry, Fallback, 비동기 메시징 등의 방법을 사용해서 장애 격리 수준을 높이는 것으로 이해하고 있는데, 제가 이해한 방향이 맞는지도 궁금합니다. 결국 MSA에서 말하는 장애 격리의 핵심이 '완전한 장애 격리'라기보다는 '장애 영향 범위를 줄이고 장애 전파를 제어할 수 있다'는 점에 있다고 이해하면 될까요?
Beginning Kubernates-Based MSA (with Spring Boot) - Part 1
안녕하세요. 자문자답해봅니다. PowerShell 7.6.6 PS C:\Users\MZC-USER> kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo base64: 'base64' 용어는 cmdlet, 함수, 스크립트 파일 또는 실행 프로그램의 이름으로 인식되지 않습니다. 이름의 철자를 확인하거나 경로가 포함되어 있으면 경로가 올바른지 확인하고 다시 시도합니다. 명령 파이프라인 위치 1에서 cmdlet Write-Output 다음 매개 변수에 대한 값을 제공하세요. InputObject: PS C:\Users\USER> $pwd = kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" PS C:\Users\USER> [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($pwd)) ................ PS C:\Users\USER>
9월 8일 세션 진행한 거는 없었을까요? 그날 다른 행사 운영자로 참여하느라 20시에 세션이 있었던 것 같았는데 뭔가 놓친 느낌이 들어서요... 만약 9월 8일날 세션이 없었다면 다행이고, 있었다면 대략 어느 내용이었는지, 어떻게 진도를 나아가야 할지 살짝이라도 알려주시면 감사드리겠습니다.
안녕하세요. 미션1을 수행하려고 하는데 진행 방법이 막연합니다. 내려받은 git소스는 이미 헥사고날아키텍쳐로 구성이 되어있는 상태인거같은데 어떤 소스, 혹은 브랜치를 기준으로 클린아키텍쳐로 리팩터링해서 제출하여야 할까요? 아니면 주문, 상품, 결제 시스템을 처음부터 설계해서 클린아키텍쳐로 작성하라는게 미션의 취지인가요? (이 경우 각 도메인별 요구 기능도 임의로 가정해서 작성해야 하나요?)
org.springframework.amqp.rabbit.listener.BlockingQueueConsumer$DeclarationException: Failed to declare queue(s):[springCloudBus.anonymous.GYptJUJaSVqhPwPextvd6A] at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.attemptPassiveDeclarations(BlockingQueueConsumer.java:773) ~[spring-rabbit-3.2.2.jar:3.2.2] at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.passiveDeclarations(BlockingQueueConsumer.java:650) ~[spring-rabbit-3.2.2.jar:3.2.2] at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start(BlockingQueueConsumer.java:637) ~[spring-rabbit-3.2.2.jar:3.2.2] at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.initialize(SimpleMessageListenerContainer.java:1484) ~[spring-rabbit-3.2.2.jar:3.2.2] at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$ AsyncMessageProcessingConsumer.run (SimpleMessageListenerContainer.java:1324) ~[spring-rabbit-3.2.2.jar:3.2.2] at java.base/ java.lang.Thread.run (Thread.java:842) ~[na:na] Caused by: java.io .IOException: null at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:140) ~[amqp-client-5.22.0.jar:5.22.0] at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:136) ~[amqp-client-5.22.0.jar:5.22.0] at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:158) ~[amqp-client-5.22.0.jar:5.22.0] at com.rabbitmq.client.impl.ChannelN.queueDeclarePassive(ChannelN.java:1033) ~[amqp-client-5.22.0.jar:5.22.0] at com.rabbitmq.client.impl.ChannelN.queueDeclarePassive(ChannelN.java:47) ~[amqp-client-5.22.0.jar:5.22.0] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na] at org.springframework.amqp.rabbit.connection.CachingConnectionFactory$CachedChannelInvocationHandler.invoke(CachingConnectionFactory.java:1201) ~[spring-rabbit-3.2.2.jar:3.2.2] at jdk.proxy2/jdk.proxy2.$Proxy135.queueDeclarePassive(Unknown Source) ~[na:na] at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.attemptPassiveDeclarations(BlockingQueueConsumer.java:751) ~[spring-rabbit-3.2.2.jar:3.2.2] ... 5 common frames omitted Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no queue 'springCloudBus.anonymous.GYptJUJaSVqhPwPextvd6A' in vhost '/', class-id=50, method-id=10) at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:66) ~[amqp-client-5.22.0.jar:5.22.0] at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:36) ~[amqp-client-5.22.0.jar:5.22.0] at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:552) ~[amqp-client-5.22.0.jar:5.22.0] at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java:316) ~[amqp-client-5.22.0.jar:5.22.0] at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:152) ~[amqp-client-5.22.0.jar:5.22.0] ... 14 common frames omitted Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no queue 'springCloudBus.anonymous.GYptJUJaSVqhPwPextvd6A' in vhost '/', class-id=50, method-id=10) at com.rabbitmq.client.impl.ChannelN.asyncShutdown(ChannelN.java:528) ~[amqp-client-5.22.0.jar:5.22.0] at com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java:349) ~[amqp-client-5.22.0.jar:5.22.0] at com.rabbitmq.client.impl.AMQChannel.handleCompleteInboundCommand(AMQChannel.java:193) ~[amqp-client-5.22.0.jar:5.22.0] at com.rabbitmq.client.impl.AMQChannel.handleFrame(AMQChannel.java:125) ~[amqp-client-5.22.0.jar:5.22.0] at com.rabbitmq.client.impl.AMQConnection.readFrame(AMQConnection.java:761) ~[amqp-client-5.22.0.jar:5.22.0] at com.rabbitmq.client.impl.AMQConnection.access$400(AMQConnection.java:48) ~[amqp-client-5.22.0.jar:5.22.0] at com.rabbitmq.client.impl.AMQConnection$ MainLoop.run (AMQConnection.java:688) ~[amqp-client-5.22.0.jar:5.22.0] ... 1 common frames omitted 2026-08-30T23:22:44.382+09:00 WARN 14368 --- [VqhPwPextvd6A-1] o.s.a.r.listener.BlockingQueueConsumer : Failed to declare queue: springCloudBus.anonymous.GYptJUJaSVqhPwPextvd6A 2026-08-30T23:22:44.382+09:00 WARN 14368 --- [VqhPwPextvd6A-1] o.s.a.r.listener.BlockingQueueConsumer : Queue declaration failed; retries left=2 org.springframework.amqp.rabbit.listener.BlockingQueueConsumer$DeclarationException: Failed to declare queue(s):[springCloudBus.anonymous.GYptJUJaSVqhPwPextvd6A] at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.attemptPassiveDeclarations(BlockingQueueConsumer.java:773) ~[spring-rabbit-3.2.2.jar:3.2.2] at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.passiveDeclarations(BlockingQueueConsumer.java:650) ~[spring-rabbit-3.2.2.jar:3.2.2] at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start(BlockingQueueConsumer.java:637) ~[spring-rabbit-3.2.2.jar:3.2.2] at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.initialize(SimpleMessageListenerContainer.java:1484) ~[spring-rabbit-3.2.2.jar:3.2.2] at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$ AsyncMessageProcessingConsumer.run (SimpleMessageListenerContainer.java:1324) ~[spring-rabbit-3.2.2.jar:3.2.2] at java.base/ java.lang.Thread.run (Thread.java:842) ~[na:na] Caused by: java.io .IOException: null at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:140) ~[amqp-client-5.22.0.jar:5.22.0] at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:136) ~[amqp-client-5.22.0.jar:5.22.0] at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:158) ~[amqp-client-5.22.0.jar:5.22.0] at com.rabbitmq.client.impl.ChannelN.queueDeclarePassive(ChannelN.java:1033) ~[amqp-client-5.22.0.jar:5.22.0] at com.rabbitmq.client.impl.ChannelN.queueDeclarePassive(ChannelN.java:47) ~[amqp-client-5.22.0.jar:5.22.0] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na] at org.springframework.amqp.rabbit.connection.CachingConnectionFactory$CachedChannelInvocationHandler.invoke(CachingConnectionFactory.java:1201) ~[spring-rabbit-3.2.2.jar:3.2.2] at jdk.proxy2/jdk.proxy2.$Proxy135.queueDeclarePassive(Unknown Source) ~[na:na] at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.attemptPassiveDeclarations(BlockingQueueConsumer.java:751) ~[spring-rabbit-3.2.2.jar:3.2.2] ... 5 common frames omitted Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no queue 'springCloudBus.anonymous.GYptJUJaSVqhPwPextvd6A' in vhost '/', class-id=50, method-id=10) at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:66) ~[amqp-client-5.22.0.jar:5.22.0] at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:36) ~[amqp-client-5.22.0.jar:5.22.0] at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:552) ~[amqp-client-5.22.0.jar:5.22.0] at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java:316) ~[amqp-client-5.22.0.jar:5.22.0] at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:152) ~[amqp-client-5.22.0.jar:5.22.0] ... 14 common frames omitted Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no queue 'springCloudBus.anonymous.GYptJUJaSVqhPwPextvd6A' in vhost '/', class-id=50, method-id=10) at com.rabbitmq.client.impl.ChannelN.asyncShutdown(ChannelN.java:528) ~[amqp-client-5.22.0.jar:5.22.0] at com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java:349) ~[amqp-client-5.22.0.jar:5.22.0] at com.rabbitmq.client.impl.AMQChannel.handleCompleteInboundCommand(AMQChannel.java:193) ~[amqp-client-5.22.0.jar:5.22.0]
안녕하세요!!! 강사님!!! 3년차 백엔드 개발자입니다. 재고차감부터 쿠폰 그리고 분산 트랜잭션까지 쭉 너무 잘 듣고 있습니다!(이건 회사 계정이고 제 개인 계정으로 구매했습니다 ㅎㅎ) Orchestaration - 현재구조의 문제점과 해결방법 강의를 수강중인데, 보상트랜잭션 실패시 데이터 베이스에 저장하는것과 같이 장애가 났을 경우를 대비하는것 같은습니다. 여기서 궁금한게 실무에서는 어느정도 장애상황까지 대비를 하는지 궁금합니다. 예를들어 지금과 같이 데이터베이스에 실패한 기록을 남기는것조차 실패할 수도 있을것 같은데요... 만약 카프카를 쓴다고 해도 카프카 장애로 기록이 안된다면??? 이렇게 장애 상황을 계속 꼬리질문 하다보면 정말 끝도 없이 갈것 같은데... 실무에서는 어느정도 타협(?) 트레이드 오프(?)를 하는지 궁금합니다!! 추가로 혹시 강사님께서는 어떤 책으로 시스템 설계를 공부 하시는지도 궁금합니다..ㅎㅎㅎ 감사합니다!
안녕하세요. pod 강의를 듣다가 문제가 생겨서 문의드립니다. 제가 Docker Desktop(v.4.80.0) + kubeadm 으로 강의 세팅을 비슷하게 하고 학습 진행 중입니다. 그런데 아래 명령어들은 모두 잘되는데... kubectl apply -f my-first-pod kubectl get pods -o wide kubectl logs my-first-pod 아래 명령어가 치면... kubectl exec -it my-first-pod -- /bin/bash 아래와 같은 에러가 발생합니다. error: Internal error occurred: error sending request: Post "//[::]:57349/cri/exec/LZxZE5Gs": http: server gave HTTP response to HTTPS client docker desktop 에서 k8s reset 도 해봤는데, 여전하더라구요.