이야기를 나눠요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
config-client와 config-server간 인증 체계
안녕하세요, spring-cloud-config 서버를 통해 configuration 값들을 client가 언제든 받아서 사용할 수 있게 되면 server-client간 보안이 필요한 상황이 생길 수 있을 것 같습니다. 따라서 허용된 client만 config server에 접근한 뒤 property를 가져갈 수 있도록 설정하는 부분이 필요할 것 같은데요, 혹시 이와 관련해서 강사님의 경험이나 추천하시는 접근 방법 (기술 스택, 인증 방법)이 있으실까요?
-
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
로그에 traceId, spanId 모두 잘 찍히는데 조회가 안 됩니다.
로그에 traceId, spanId 모두 잘 찍히는데 브라우저의 zipkin에서 traceId로 조회를 하면 no trace가 뜨네요. 스프링부트 3에 맞춰서 깃허브에 올려주신 자료 참조해서 디펜던시 맞게 설정하고 yml에도 올려주신 자료대로 수정했는데 이런 문제가 생기면 어떤 부분이 잘못된 걸까요?
-
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
login까지 성공했는데 token을 bearear token에 넣어서 인증을 하면 401에러가 나옵니
post맨 결과와 제가 작성한 코드입니다. 계속 인증 실패로 뜨는데 어떻게 해야하나요?
-
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
user정보에 orders가 안생깁니다.
여기서 마지막에 orders가 나와야하는데 왜 안나오나요?어디에 문제가 있는건가여? 도와주세요 디버그하니깐 null로 나오긴 하는데... 예제처럼 수정하려면 어떻게 해야할까요db는 mysql 쓰고 있습니다
-
EDA 기반 Microservice 구현 (with Hexagonal, DDD)
엔터티 공통 필드 적용 사례
공통으로 아래와 같이 엔터티에변경사항을 추적 관리하는 용도로 BaseClass를 상속받아 사용하는 케이스가 많습니다.createdBy, updatedBy, createdAt, updatedAt 이 경우 일반적인 엔터티에서는 기존처럼 상속받아 사용하면 될것 같은데도메인 모델에서 위 필드들을 사용할 때는상속보다는 VO나 레코드로 별도 정의해서 사용해야 할까요?강좌에서는 사례가 없어서 QA남깁니다.감사합니다.
-
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
Spring Cloud Config 사용시 의존 문제
강의 잘 듣고 있습니다. msa를 현업에서 적용시키려고 하고있는데 질문이있습니다.Spring Cloud Config 가 가지고 있는 경로에 Database 연결 정보를 넣고 db를 사용하는 Micro service들이 해당 config서비스를 빌드시 참조하도록 설계해보았는데요,Spring Cloud Config service에 너무 의존을 하고 있는거 같단 생각이 듭니다.해당 서비스가 먹통이되면 다른 서비스 모두 db는 사용할 수 없다는 치명적인 이슈가 있으니까요. 현업에서 Spring Cloud Config 서비스를 구현할 때에 이렇게 크리티컬한 정보는 사용하지 않는지, 사용한다면 어떻게 의존성이 강한 문제를 해결 할 수 있는지 궁금합니다.
-
장애 없는 서비스를 만들기 위한 Resilience4j - CircuitBreaker
서킷 브레이커 상태 OPEN 전환의 기준 질문드립니다!
안녕하세요! 좋은 강의 제공해주셔서 도움이 많이 됐습니다! 수강 후 서킷 브레이커를 프로젝트에 적용해보는 과정에서 궁금한 점이 있어 질문드립니다. 현재 캐시 서버에 서킷 브레이커를 도입해서 장애 발생 시 DB로 우회하도록 구현 했습니다.여기서 만약 레디스 클러스터를 구축한다면 Master 노드 다운 시 Replica가 새로운 마스터로 승격되면서 Failover가 일어날텐데요! 이때 1. Master와 Replica가 서로 health check를 하는 시간의 timeout 2. 승격이 일어나는 시간3. Redis Cluster의 Topology를 refresh 하는 주기(현재 Redis Client로 Lettuce를 사용중입니다!)이 시간 동안은 Redis로 정상 요청이 되지 않을 것입니다.저는 개인적으로 레디스가 자동으로 Failover 되는 과정은 스스로 회복하는 시간이기에 서킷이 OPEN되야하는 상황으로 보기 힘들다 생각하는데, 서킷의 슬라이딩 윈도우를 설정할때 Failover 동안은 OPEN이 열리지 않을 정도로 여유롭게 설정하는게 좋을까요? 물론 구체적인 값은 트래픽을 예상해서 설정해야 한다고 생각합니다! 결론은, 클러스터의 Failover도 장애로 감지하고 OPEN으로 여는게 좋을지 아니면 Failover는 CLOSE 상태로 넘어갈 수 있도록 여유롭게 설정하는게 좋을지 입니다!아직 실무 경험이 없기도 하고 주변에 의견을 구할수가 없어서 현업자의 입장에서 강사님이라면 어떻게 구성하실지 궁금해서 여쭤봅니다...!! 혼자 고민해본 부분이다 보니 제가 생각하는 방식이 틀렸다면 피드백 주시면 감사합니다:)
-
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
spring-boot 2.7 이상을 사용 하시는 분의 경우
안녕하세요. 강사님께서는 2.6 버전을 사용 권장 하셨지만 왠지 모를 궁금함에 2.7에서 사용하는 spring security 5.7 이상에서 바뀐 부분으로 한번 적용을 해보고 싶었습니다.인프런에 올라온 많은 분들의 질문을 정리 하여 만들어 보았습니다. package com.example.userservice.security; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.web.SecurityFilterChain; import com.example.userservice.service.UserService; import lombok.RequiredArgsConstructor; @Configuration @EnableWebSecurity @RequiredArgsConstructor public class WebSecurity { private final UserService userService; private final BCryptPasswordEncoder bCryptPasswordEncoder; private final Environment env; AuthenticationManager authenticationManager; // spring.boot 2.7 부터는 WebSecurityConfigurerAdapter가 아닌 // SecurityFilterChain 을 사용 합니다. @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { AuthenticationManagerBuilder authenticationManagerBuilder = http.getSharedObject(AuthenticationManagerBuilder.class); authenticationManagerBuilder.userDetailsService(userService).passwordEncoder(bCryptPasswordEncoder); authenticationManager = authenticationManagerBuilder.build(); //AuthenticationFilter authenticationFilter = new AuthenticationFilter(); //authenticationFilter.setAuthenticationManager(authenticationManager); AuthenticationFilter authenticationFilter = new AuthenticationFilter(authenticationManager , userService , env); http.csrf().disable(); http.authorizeRequests() //.antMatchers("/error/**").permitAll() // public abstract java.lang.String javax.servlet.ServletRequest.getRemoteAddr() is not supported 보기 싫을때 활성화 .antMatchers("/**") .hasIpAddress("127.0.0.1") .and() .authenticationManager(authenticationManager) .addFilter(authenticationFilter) ; http.headers().frameOptions().disable(); return http.build(); } //ex) 기존의 경우 AuthenticationManagerBuilder 를 오버라이드 하여 사용 하였지만 filterChain 안에서 호출 하여 설정 합니다. /* protected void configure(AuthenticationManagerBuilder auth) throws Exception{ auth.userDetailsService(userService).passwordEncoder(bCryptPasswordEncoder); } */ //ex)filter를 authenticationAmanger에 주입 하던 getAuthenticationFilter역시 filterChain 내부에서 사용 합니다. /* private AuthenticationFilter getAuthenticationFilter() throws Exception { AuthenticationFilter authenticationFilter = new AuthenticationFilter(); authenticationFilter.setAuthenticationManager(authenticationManager); return authenticationFilter; } */ }
-
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
MSA 와 관련하여 질문드립니다.
안녕하세요 완강 후 추가적으로 궁금한 사항이 있어서 글을 올리게 되었습니다. 요즘 대세인 MSA와 관련하여 여쭙고 싶어서 연락드립니다. [문제상황] MSA와 관련하여 아키텍쳐에서는 요청에 맞추어 반응하는 서버를 만들기 위하여 docker container 를 활용한 서버들을 많이 구성하는 걸로 알고 있습니다. 이때, Spring boot은 다양한 기능들을 제공하지만 python의 flask나 Fastapi와 같은 가벼운 프레임워크에 비해서는 안좋은 점들이 있을것이라 생각듭니다. (예를 들어서 컨테이너의 용량이 크고, 콜드 스타트의 시작이 늦다는 점... 이 대표적으로 생각납니다.) [질의사항] 1. Springboot 로 MSA를 구성하였을 경우 앞서 얘기드렸던 문제점이 없는지 여부 2. Springboot 가 MSA에서 갖는 장점 3. 프레임워크의 무겁다와 가볍다의 개념이 무엇인지 궁금합니다. 4. 배민에서는 JAVA를 사용하여 프로젝트를 진행하는데, 우리나라의 경우 JAVA를 사용하는 시니어개발자들이 많아 사용하는 걸로 알고있습니다. 만약 그렇지 않았다면, JAVA Spring boot 가 아닌 다른 프레임워클 사용하여 개발하였을지 궁금합니다. 감사합니다.