게시글
질문&답변
2024.10.21
학습방법 질문드립니다.
안녕하세요, 이도원입니다,. 새로 추가된 3.x 버전에 대한 강의는 실습 예제 부분에서 어떤 패키지가 사용되었고, 어떻게 코드가 변경되었는지, 실행하는 과정에 대한 내용을 다루고 있습니다, 이론적인 부분에 대해서는 2.x에서 다루고 있는 내용을 통해 수강하시는 게 좋을 것 같습니다. 올해 준비하고 있는 다른 강의 및 프로젝트들이 정리되면, 새로운 버전으로 강의콘텐츠도 업데이트 될 예정입니다. 그 전까지는 이전 강의와 신규 업데이트 된 부분은 함께 봐 주시면 좋을 것 같습니다. 감사합니다.
- 0
- 1
- 30
질문&답변
2024.10.21
혹시 강의에서 오토스케일링은 배울수있을까요?
안녕하세요 이도원입니다. 말씀하신 오터스케일링에 대한 부분은 Spring Cloud의 Eureka에서는 서비스별로 CPU 메트릭을 수집하여 스케일링 작업을 해주지는 않습니다. 다만, 스케일링을 위한 별도의 서비스를 추가로 개발하여 작업되도록 구성하실 수 있습니다. ( https://www.geeksforgeeks.org/auto-scaling-microservices-with-eureka-and-spring-boot/ ) Eureka 대신 Orchestration 도구를 도입하신다면 (K8s, Mesos, Normad 등) 스케줄 관리, 리소스 관리 등을 처리할 수 있습니다. ( https://landscape.cncf.io/guide#orchestration-management--scheduling-orchestration ) 두번째 질문은, 배포에 관련된 부분이신 것 같습니다. 강의에서는 MSA 학습을 위해 제공되는 예제 애플리케이션에 대해서 Docker 컨테이너 (docker-compose 포함) 형태로 배포하는 것과, 최근 추가된 업데이트 영상에서는 K8s로의 배포에 대해서는 소개하고 있지만, 별도의 EC2별로 배포하는 과정을 소개하고 있지는 않습니다. 다른 강의인 https://www.inflearn.com/course/lecture?courseSlug=%EC%A0%A0%ED%82%A8%EC%8A%A4-ci-cd-%ED%8C%8C%EC%9D%B4%ED%94%84%EB%9D%BC%EC%9D%B8&unitId=124792&subtitleLanguage=ko 에서 클랑우드상에서 여러 EC2에 배포하는 내용에 대해 다루고 있기는 합니다. 참고가 되시면 좋을 것 같습니다. 감사합니다.
- 0
- 2
- 24
질문&답변
2024.10.20
안녕하세요 Eureka 관련 질문 있습니다.
안녕하세요, 이도원입니다. 저희가 AWS ECS 상에서 Eureka를 테스트해 보지는 못했습니다만, Eureka에 서비스가 등록되었을 때 사용 된 서비스 ID가 Private IP로 설정된 것 같고, 위에 이미지에서와 같이 서비스가 등록된게 맞다면, 검색 시 오류가 생기는 부분은 네트워크에 대한 문제일 것 같습니다. 말씀하신 ALB에서의 연결과 내부적으로 검색할 때의 네트워크 허용 등에 대한 설정을 확인해 할 것 같습니다. 질문하신 내용과는 조금 다르지만 Docker를 기동할 경우에 같은 기본 네트워크를 사용할 경우에는 컨테이너명으로 통신이 되지 않고, 직접 IP를 명시하거나, 컨테이너를 위한 네트워크를 생성 후 사용해야지만, 컨테이너명으로 사용됩니다. 이번기회에 ECS로 기동될 수 있도록 테스트 후, 어떤 설정을 조정해야 하는 확인 후에 추가 답변 드리도록 하겠습니다. 감사합니다.
- 0
- 2
- 32
질문&답변
2024.10.20
Kafka 통신 클라이언트 응답 질문
안녕하세요, 이도원입니다. 말씀하신 부분은 클라이언트로 바로 응답이 전송되었기 때문에 발생되는 부분이기 때문에, Kafka의 처리 이후에 결과에 따라 클라이언트로 결과를 전송하도록 처리할 수 있습니다. 주문 요청의 경우 201 Created라는 응답코드를 전달하고 있는데, 이 부분에 클라이언트의 UI를 처리하는 Frontend에서 진행중인 상태(로딩 중, 처리 중과 같은 처리)로 처리하면서 Kafka의 요청을 비동기로 받은 다음에 사용자에게 보여주는 결과를 제어해야 합니다. 현재 강의에서는 Frontend 없이 Postman과 같이 즉각적으로 응답을 확인해야 하는 도구를 사용하고 있지만, 이 부분은 Frontend, Backend가 같이 처리되어야 하는 부분입니다. 추가로, Kafka에서는 메시지를 전달하였다는 부분만으로 메시지 처리가 완료되었다고 판단할 수도 있지만, Consumer에서 메시지를 잘 받았는지에 대한 반환 코드를 얻도록 설정할 수도 있습니다. https://kafka.apache.org/22/generated/producer_config.html 추가 질문사항 있으시면 다시 글 남겨 주세요. 감사합니다.
- 0
- 2
- 29
질문&답변
2024.10.16
[Exec exit status not zero. Status [125]]
안녕하세요, 이도원입니다. Jenkins에서 war 파일 배포를 위해 docker-server에 접속하는 과정에서 오류가 발생한게 아닌가 싶습니다. Jenkins 설정 정보에서 서버 설정하는 부분에 docker-server에 대한 접속 테스트를 확인해 보실 수 있을까요? 확인 해 보시고 추가 질문 남겨 주시기 바랍니다. 감사합니다.
- 0
- 2
- 60
질문&답변
2024.10.08
apigateway 프로젝트 생성하고 실행시 Timout이출력 됩니다.
안녕하세요 이도원입니다. 올려주신 오류 메시지를 확인한 내용으로 답변 드립니다. apigateway-service의 application.yml 파일 routes.uri 부분에 localhost:8081 로 시작하는 부분을 http:// 를 붙여서 http://localhost:8081 와 같이 변경해 보시기 바랍니다. eureka 설정 부분에 register-with-eureka와 fetch-registry 의 설정 값을 false에서 true로 변경하시기 바랍니다. 콘솔에 출력 된 localhost:5672 오류는 rabbitmq 서버를 찾지 못해 발생하는 오류입니다. 아직 rabbitmq에 대한 실행 되지 않은 거라면, 일단 무시하시고 실행하셔도 됩니다. 추가예외에 발생 된 http://localhost:8888 에 관련 된 오류도 config-server가 실행되지 않았거나, 실행되었더라도 apigateway-service 라는 애플리케이션 정보를 얻지 못해 발생하는 오류인 것 같습니다. apigateway-service에서 config 설정하는 부분에서 apigateway-service부분을 user-service 등과 같이 실제 존재하고 있는 yml 파일의 이름으로 변경해 보시기 바랍니다. 추가 질문 사항 있으시면 다시 글 남겨 주세요. 감사합니다.
- 0
- 2
- 38
질문&답변
2024.10.08
깃 업데이트 요청드립니다
안녕하세요, 이도원입니다. "Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)" 강의에 대한 Spring Boot 3.2 + Spring Cloud 2023.0.0 버전으로의 업데이트는 올초에 했었습니다. 아래 Github에서 확인해 보실 수 있습니다. 브랜치를 main 브랜치 외에 springboot3.2 등으로 변경해서 사용해 보시면 됩니다. GitHub - joneconsulting/toy-msa: A Toy project for a mas practice. 감사합니다.
- 0
- 2
- 71
질문&답변
2024.10.04
게이트웨이의 부하 관련 질문
안녕하세요, 이도원입니다. 게이트웨이에 대한 부하부분은 말씀하신 내용처럼 다양한 요청이 발생할 수 있습니다. 강의에서 소개한 APIGateway service는 기존 동기 서버에서 비동기 서버를 이용하여 기동되기 때문에, 사용자의 요청 처리에 조금은 더 잘 대응할 수 있습니다. 현업에서는 이렇다~ 고 정의해서 말씀드리기는 어려울 것 같습니다. 구현해야 하는 환경이나 제약조건이 다를것이기 때문에, 다양한 옵션과 고객의 요청에 맞춰 협의하고 구축해야 하는 부분이라 단정짓기는 어렵지만, 최근의 MSA화 하는 프로젝트에서는 거의 필수적으로 K8s + 컨테이너 가상화 환경으로 운영하고 있지 않나 싶습니다. K8s와 같이 운영 플랫폼을 제공하는 경우라면, Router 및 LB의 요청을 추가로 연동하여 처리할 수 있게끔 구성하고 있을거라 생각되고, 실제로 저희도 프로젝트에서 Istio를 연동하여 트래픽 통제, 서비스간 안정성 제공, 보안 등의 서비스를 이용하고 있습니다. 말씀하신 내용 중에 비용이 크게 들지 않으면서, 활용할 수 있는 방법이라면, 사용자의 요청을 분산할 수 있도록 Gateway를 구축하는 옵션이 있을 것 같습니다. 사용자의 요청에 대한 Endpoint를 분류하고, 모니터링과 관리자를 위한 부분뿐만 아니라, 사용자 요청에 대한 Endpoint역시 카테고리를 구분하고 요청 처리될 수 있도록 Gateway를 구성하는게 필요합니다. MSA 구축에 대한 목적이 서비스의 유연성이나 분할을 통해 가볍게 운영할 수 있는 환경을 구축하는데에 있다고 생각합니다. 서비스의 분할이 잘 되어 있다고 해도 Outer 아키텍처의 역할을 하고 있는 Gateway나 API 분리, Service mesh의 역할도 필요에 맞게 구성하는게 필요하게 됩니다. 서비스가 많은 경우에는 서비스에 맞는 Gateway를 분리하고, 거기에 필요한 부하분산 처리를 추가하고, 효율적인 기능 구현이 작동될 수 있도록 API에 대한 분리와 결합도 같이 고려해 보실 수 있을 것 같습니다. 정확한 환경이나 제약조건을 모르는 상태여서 드릴 수 있는 일반적인 답변이 되어 버린 것 같네요. 추가 질문 사항있으시면 다시 글 남겨 주세요. 감사합니다.
- 0
- 3
- 55
질문&답변
2024.10.04
스프링 클라우드가 아닌 다른 방식의 msa 개발 강의문의
안녕하세요, 이도원입니다. 말씀하신 K8s를 이용하는 msa 개발 강의가 Outer architecture를 K8s의 리소스+환경을 이용하여 개발하는 것을 말씀하신 게 맞으실까요? 우선 기본적인 Service registration이나 Configuration service 대신 K8s의 리소스(오브젝트)를 활용하여 예제를 기동하는 부분에 대해서는 아래 강의에 포함하기는 했습니다. https://www.inflearn.com/course/lecture?courseSlug=%EC%8A%A4%ED%94%84%EB%A7%81-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4&unitId=231753&subtitleLanguage=ko 전체적인 K8s 활용에는 많이 부족하지만, 강의를 업데이트 하면서 추가해 본 내용입니다. 말씀하신 K8s를 활용한 MSA 개발은 현재 준비중인 MSA 패턴강의가 완료된 이후에 추가할 예정입니다. 강의에 관심을 가져 주셔서 감사드립니다 . 좋은 하루 되세요.
- 0
- 2
- 78
질문&답변
2024.09.25
엔티티가 바로 응답으로 나가도 되나요??
안녕하세요, 이도원입니다. 말씀하신 것처럼 Entity용 빈을 DTO의 용도로 대신해서 사용것을 추천하지는 않습니다. 저희도 실제로는 그렇게 작업하지 않고요. 다만, 강의에서는 단계별로 실습 예제를 만드는 과정에서 처음에 시작되었던 User라는 빈에 사용자 정보를 전달 받아 사용하면서 이것을 Entity로까지 확장해서 사용하게 된 경우라 조금은 특별한(?) 또는 강의를 위해 간단하게 구성한 빈 정도로 이해해 주시면 좋을 것 같습니다. 제 기억에 강의 중간에도 언급했다고 생각했는데, 혹시라도 그런 언급이 없었다면, 다음번 강의 업데이트 시에는 꼭 수정해 놓도록 하겠습니다. 감사합니다.
- 0
- 2
- 31