묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Microservice 구현 (with EDA,Hexagonal, DDD)
Entity와 VO에 대해..
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요.도메인모델을 만들때 Entity와 VO는 단순히 불변성을 가지고 구분하는 것인지요?그리고 JPA에서의 Entity와는 다른 개념인지 궁금합니다.감사합니다.
-
미해결Microservice 구현 (with EDA,Hexagonal, DDD)
DTO 클래스의 위치에 대해 질문있습니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요! 좋은 강의 감사드립니다 ㅎㅎ (강의에서 나온대로 패키지와 클래스를 구성한 상태입니다.) 혹시 DTO를 framework 패키지에 넣는 이유가 있을까요? 저는 개인적으로 UseCase나 InputPort에 framework 패키지에 대한 import가 생기기 때문에 의존성이 생긴다고 판단해 application에 DTO를 생성할 것 같습니다. 혹시 제가 생각하지 못한 다른 이유가 있는지 궁금합니다!
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
circuitbreaker custom config 관련
강의를 따라하며 circuitbreaker custom config 파일을 만들었는데요. 빈에 주입하게 되실겁니다. 하고 코드에서 별다른 수정이 없는데 적용이 된건가요?빈에 따로 주입하지않아도 만들기만하면 알아서 적용이 되는건가요???
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
Kafka connector
window 사용 중이고, 서버는 전부 열려있습니다만, POSTMAN에서 JSON 형식으로 { "name" : "my-source-connect", "config" : { "connector.class" : "io.confluent.connect.jdbc.JdbcSourceConnector", "connection.url":"jdbc:mysql://localhost:3306/mydb", "connection.user":"root", "connection.password":"test1357", "mode": "incrementing", "incrementing.column.name" : "id", "table.whitelist":"users", "topic.prefix" : "my_topic_", "tasks.max" : "1" }를 보냈을 때 뜨는 오류가 "error_code": 500, "message": "Failed to find any class that implements Connector and which name matches io.confluent.connect.jdbc.JdbcSourceConnector, available connectors are: PluginDesc{klass=class org.apache.kafka.connect.file.FileStreamSinkConnector, name='org.apache.kafka.connect.file.FileStreamSinkConnector', version='3.6.0', encodedVersion=3.6.0, type=sink, typeName='sink', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.file.FileStreamSourceConnector, name='org.apache.kafka.connect.file.FileStreamSourceConnector', version='3.6.0', encodedVersion=3.6.0, type=source, typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.mirror.MirrorCheckpointConnector, name='org.apache.kafka.connect.mirror.MirrorCheckpointConnector', version='3.6.0', encodedVersion=3.6.0, type=source, typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.mirror.MirrorHeartbeatConnector, name='org.apache.kafka.connect.mirror.MirrorHeartbeatConnector', version='3.6.0', encodedVersion=3.6.0, type=source, typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.mirror.MirrorSourceConnector, name='org.apache.kafka.connect.mirror.MirrorSourceConnector', version='3.6.0', encodedVersion=3.6.0, type=source, typeName='source', location='classpath'}" 입니다. 어떤오류인지 잘 모르겠네요
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
테스트 코드 작성
항상 강의 잘 듣고 있습니다!postman으로 테스트하다가, 이걸 테스트 코드로 작성해 자동화하면 어떨까? 라고 생각을 해서 테스트 코드를 작성 중입니다.문제는 테스트 코드에서 이벤트 관련 통합 테스트를 어떻게 작성해야 효율적인지 모르겠어요..기존의 테스트 코드로는 이벤트가 한 번씩 늦게 전달되는 경우도 있어서 간헐적으로 실패를 했습니다. 이를 해결하기 위해서 Timeout을 걸어 일정 시간 이내로 이벤트가 도착하는지 체크하고 있는데, 이렇게 되니 전체적인 테스트 속도가 느려지게 되더라고요. 보통 이벤트 관련 테스트는 어떻게 작성을 하나요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
gateway와 userService 간의 인증 정보 공유 문제에 관해 질문 드립니다!
안녕하세요 선생님 강의 잘 듣고 있습니다.강의 수강 중 질문이 생겨서요! user-service는 mvc 기반의 app으로 spring security를 통해 인증을 처리하므로, tomcat의 JSESSIONID 를 기반으로 하여 Security Context에 Authentication 객체의 유무를 통해 인증이 된 사용자인지 안 된 사용자인지 Security Filter Chain에서 체크를 하는 것으로 알고 있습니다.그런데gateway에서 설정하신 application.yml 에 따르면 모든 요청 헤더에 존재하는 Cookie를 삭제하고 --> 서버에서 매번 새 요청으로 인식gateway 는 netty 서버를 사용하고 user-service는 tomcat 서버를 사용하잖아요.그래서 두 서버 사이 Context가 공유가 안 될것 같아서요... 그래서 gateway에서는 인증을 했다고 요청을 넘기지만 user-service에서는 그 요청을 받았을 때 해당하는 SESSIONID 의 Context에 Authentication 객체가 존재하지 않아 인증이 필요한 url에 접근할 수 없을 거라고 생각했습니다. 어떻게 인증 완료 정보를 두 서비스가 공유할 수 있는 건가요?? 또한 gateway도 이중화 구성이 가능한가요?.. userService를 2,3중화 한 것처럼 gateway도 여러 대의 인스턴스로 기동하면 eureka에서 다중 구성한 서버로 인식해주는 건가요??... 혹시 gateway에도 Spring Security를 적용시키는 경우도 있을까요?.. 권한 별 접근 제어를 구현하기 위해서는 해당 라이브러리를 사용해야 할 것 같아서요!또한 gateway에서 커스텀 필터를 만들 때, apply 메소드의 return 타입이 GatewayFilter 로 되어있는데, Mono<Void> 타입으로 return을 해도 되는 건가요?... Mono<Void>는 mvc에서 return 타입이 void 인 것과 같은 의미 아닌가요?... 열심히 강의해주셨는데 질문의 너무 많아 죄송합니다..ㅠ 답변 기다리겠습니다! 항상 감사드립니다!!
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
인스턴스 죽은게 대시보드에 표시가 안됩니다.
안녕하세요 수강하면서 질문이 있어 글을 남깁니다.4개의 서비스를 띄우고 작업하는 것을 해보고 있는데 서비스를 중지했음에도 대시보드에는 서버가 계속 남아있습니다.설정이 별로 없는데 적용이 안되는 이유가 혹시 있을까요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
서버의 콘솔에 관련된 질문
강의 감사하게 잘 듣고 있습니다.궁금한게 있어서 문의드립니다.프로그램을 셋팅하고 서버를 start하면 이렇게 로그가 출력되면서 왼쪽 빌드창에 계속 뭐가 돌고 있는게 보이는데 이게 서버로 설정해놓아서 그런건가요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
pring security관련 질문드려요
저는 msa 구축된 서비스를 인수인계 받아 이해하려고 해당 강의를 듣고있습니다.때문에 지금 강의와 함께 진행중인 공부용 project하나, 운영되고 있는 project하나를 로컬소스로 가지고있는데요.spring secure cofig만 구현해주면 공부용 project에서 구동한 eureka에서 -> 운영project의 microservice가 연동이 됩니다.그리고 eureka서버 콘솔에는 8761로 연결실패했다고 뜹니다(처음에 8761로 공부했다가 7777로 변경) 디펜던씨와 websecurity java를 주석처리하면 정상동작합니다.. 왜그런건가요..도대체.. ? [공부project]Eureka(port:7777)-> gateway(port:8000) -> userservice(port: random)[운영project]gateway(port: 80) -> microservice1(8001)
-
미해결Microservice 설계(with EventStorming,DDD)
전략적 설계와 전술적 설계
전략적 설계로 문제를 분할 후 전술적 설계로 그 문제영역을 정복하는 느낌으로 이해했는데, 그럼, 전략적 설계가 선결적으로 잘 되어야지 전술적 설계도 잘 될 수 있는건가요?
-
미해결Microservice 이해(with MSA패턴)
헥사고날 아키텍쳐에 대해 좀더 자세히 공부하고싶은데 참고할만한 깃주소 같은게 있을까요 ?
헥사고날 아키텍쳐에 대해 좀더 자세히 공부하고싶은데 참고할만한 깃주소 같은게 있을까요 ? 패키지구조도 사람마다 조금씩 다른거같아서 궁금합니다
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
에러 처리 궁금한점
안녕하세요현재는 각 도메인에서 서킷브레이커를 적용했는대,api-gateaway에서는 처리를 해줄 수 없을까요?(공통적으로)현재는 도메인수가 적지만 만약에 라우팅 될 도메인들이 10개 이상 넘어가면 공통적으로 처리할 수 있는 것도 필요해보여서요. (어느 도메인으로 라우팅될조 모르지만)
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
예외처리
안녕하세요. 문득 궁금한 점이 생겼는대요..주문이 성공하고나서 카탈로그 쪽에서 장애가 발생해서 롤백을 해야한다고 했을 때는 처리방안이 어떻게 되나요??찾아보니까 사가패턴 ? 이런거 사용하는것으로 보이는대, 다른 방안도 있을까요? (처리가 좀 어렵네요)
-
미해결Microservice 설계(with EventStorming,DDD)
DDD 현실적 적용
DDD 공부하면서 느낀 점이 현실적으로 완전한 DDD를 하는 것은 어렵지만 부분적으로도 적용시켜볼 수 있겠다라는 생각이 들었습니다. 예를 들면 전략적 설계는 MSA 로 전환할 때, 전술적 설계는 JPA를 사용할 때 활용해 볼 수 있겠다 싶은데 맞게 이해한 걸까요?
-
해결됨Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
docker 환경에서 eureka 대시보드 작동
8761:8761 로 포트 바인딩해서 정상 기동했고, docker log 에서도 정상적으로 기동해서 문제없어보이는데, 브라우저로 대시보드 웹페이지 접근하면 "ERR_EMPTY_RESPONSE" 로 나옵니다. 도원님 이미지로 기동해도 똑같은 현상입니다...!
-
미해결Microservice 설계(with EventStorming,DDD)
애그리거트의 크기
애그리거트를 어느정도의 크기로 만들어야 하는지에 대해 궁금증이 생겨서 질문들입니다. 애그리거트내에 여러 엔티티와 여러 값 객체로 이루어질 수 있으나, 애그리거트는 작은 단위로 만드는게 좋아서,하나의 애그리거트에 여러 엔티티보다 하나의 엔티티로 만드는 것을 추천하시나요? 애그리거트의 크기를 정할 때 강사님의 기준이 있다면 공유해주실 수 있나요?
-
미해결Microservice 설계(with EventStorming,DDD)
엔티티와 값객체와의 차이
엔티티와 값객체와의 차이 중 하나가 값객체는 바운디드 컨텍스트를 옮겨 가더라도, 그 네이밍 그대로 유지할 수 있는 반면, 엔티티는 변경해야할 수도 있다고 생각하는데, 맞을까요?예를 들어, Address(주소, 상세주소, 우편번호 포함)라는 값객체를 만들었을 때, 회원 바운디드 컨텍스트에서 회원의 주소와 주문 바운디드 컨텍스트에서 주문자의 주소의 경우, 다른 점이 없는 반면, User 라는 엔티티는 주문 바운디드 컨테스트에서 주문자이고, 리뷰 바운디드 컨텍스트에서는 리뷰어일 수 있어서, 다를 수 있다고 생각했거든요!
-
미해결Microservice 설계(with EventStorming,DDD)
확장성 관점에서 Value Object, Entity, Aggregate
강의 잘 듣고 있습니다!강의 듣고 SNS 프로젝트를 DDD를 적용시켜보려고 하는데,서비스 초기에는 Value Obejct 였던 것이 Entity가 될 수 있고,Entity였던 것이 Aggregate 가 될 수 있는 등 서비스가 커짐에 따라 변경될 수도 있나요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
Kafka 동기화 문제에 대해 질문이 있습니다.
항상 좋은 강의 감사합니다. 궁금한 점이 있어 질문을 남깁니다. Kafka를 이용해서 멀티 서버에서 하나의 DB를 사용하여 동시성 문제를 해결하는 것을 이해했습니다. 상품 제고가 0이 되면 더 이상 주문을 못하도록 하게 하고 싶습니다. 하지만 Kafka 요청을 통해 비동기로 주문을 하기 때문에 주문을 신청한 순간에는 재고가 있어 주문이 되었지만 Kafka의 모든 처리를 하고 나니 재고가 0이 되어 사실 주문할 수 없는 상황이었습니다. 이런 상황이 발생할 수도 있지 않나요??이럴 때는 어떻게 대처를 해야 하나요??쓰기 작업과 읽기 작업에서 동기화 문제는 어떻게 처리할 수 있나요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
ip주소 질문
안녕하세요 강사님!현재 Users Microservice - JPA 부분을 들으면서 user등록까지 잘 해서 테이블에도 잘 나온 상태입니다.저는 client -> api gateway -> 유레카 -> user서비스이렇게 이해하고 있습니다.그리고 현재 집에 같은 와이파이로 연결된 데스크탑으로 (api gateway 역할을 하고 있다고 이해해도 될지 모르겠지만) discovery service를 올려놓았고요.노트북으로 user-service를 만들었습니다.노트북 브라우저로 유레카를 접근하고자 할 때에는 데스크탑 아이피 주소를 입력해서 접근했습니다. 여기까지는 이해가 잘 되었습니다. 그리고 이제 user를 등록하기 위해 postman의 ip주소를 입력하려고 유레카에서 user-service의 포트를 확인하기 위해 클릭하니 노트북 주소와 랜덤 포트가 나오더라고요! 그리고 그 주소로 api를 요청하니 잘 되었습니다. 여기서 질문입니다.모든 서비스는 api gateway를 거치는 것 아닌가요? 그렇다면 api gateway가 동작하고 있는 데스크탑 ip주소를 요청해야하는거 아닌가요? 추가질문으로 환경설정에서 0을 해서 포트가 랜덤으로 설정하게 하시는 이유가 궁금합니다!자세하고 쉽게 설명해주시기 위해 강의 준비해주셔서 감사합니다:)