inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

hasIpAddress(), getRemoteAddr() 질문입니다.

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

이전에 이런 질문들(( https://www.inflearn.com/questions/423204 ))이 있던 것을 확인하였으나 저는 해결이 되지 않아 질문을 남깁니다. postman으로 회원가입하고 로그인하려고 하면 401 Unauthorized가 나며 많이 보셨을 이런 에러가 나옵니다. java.lang.UnsupportedOperationException: public abstract java.lang.String javax.servlet.ServletRequest.getRemoteAddr() is not supported .... 이와 같은 에러의 질문과 답변을 보고 hasIpAddress()에서 .access("hasIpAddress('" + IP + "')")로 바꿔서 해보았는데도 또는 스프링 부트 버전을 바꾸어 시도해(2.6.2, 2.4.2 등)보았으나 해결이 되지 않아 질문을 드립니다. 처음 설정한 spring boot 버전은 2.7.15입니다. build.gradle plugins { id 'java' id 'org.springframework.boot' version '2.7.15' id 'io.spring.dependency-management' version '1.0.15.RELEASE' } group = 'com.example' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '11' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } ext { set('springCloudVersion', "2021.0.8") } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client' compileOnly 'org.projectlombok:lombok' developmentOnly 'org.springframework.boot:spring-boot-devtools' runtimeOnly 'com.h2database:h2:1.3.176' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.modelmapper:modelmapper:3.1.1' implementation 'org.springframework.boot:spring-boot-starter-security' testImplementation 'org.springframework.security:spring-security-test' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' } dependencyManagement { imports { mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}" } } tasks.named('test') { useJUnitPlatform() } WebSecurity은 @Configuration @EnableWebSecurity public class WebSecurity extends WebSecurityConfigurerAdapter { private final Environment environment; private final UserService userService; private final BCryptPasswordEncoder bCryptPasswordEncoder; private String IP = "192.168.1.2"; @Autowired public WebSecurity(Environment environment, UserService userService, BCryptPasswordEncoder bCryptPasswordEncoder) { this.environment = environment; this.userService = userService; this.bCryptPasswordEncoder = bCryptPasswordEncoder; } @Override protected void configure(HttpSecurity http) throws Exception { http.csrf().disable(); http.authorizeRequests() .antMatchers("/**") // .hasIpAddress(IP) .access("hasIpAddress('" + IP + "')") .and() .addFilter(getAuthenticationFilter()); http.headers().frameOptions().disable(); } private AuthenticationFilter getAuthenticationFilter() throws Exception { AuthenticationFilter authenticationFilter = new AuthenticationFilter(authenticationManager(), userService, environment); return authenticationFilter; } // db password와 input password 비교 @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.userDetailsService(userService).passwordEncoder(bCryptPasswordEncoder); } } 2.7 이후 버전에서는 https://www.inflearn.com/chats/789887와 같이 WebSecurityConfigurerAdapter 를 상속하지 않고 configure함수 오버라이드 대신 SecurityFilterChain을 사용해보았으나 이렇게 해도 되지 않았습니다. AuthenticationFilter에 unsuccessfulAuthentication를 오버라이드하여 확인해본 결과 org.springframework.security.authentication.BadCredentialsException: 자격 증명에 실패하였습니다. at org.springframework.security.authentication.dao.DaoAuthenticationProvider.additionalAuthenticationChecks(DaoAuthenticationProvider.java:80) at org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider.authenticate(AbstractUserDetailsAuthenticationProvider.java:147) at org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:182) at org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:201) at com.example.userservice.filter.AuthenticationFilter.attemptAuthentication(AuthenticationFilter.java:46) 라고 오류가 나오는 것을 확인했습니다. AuthenticationFilter.java:46 부분은 return getAuthenticationManager().authenticate( 부분 입니다. AuthenticationFilter 코드는 다음과 같습니다. @Slf4j public class AuthenticationFilter extends UsernamePasswordAuthenticationFilter { private final UserService userService; private final Environment environment; public AuthenticationFilter(AuthenticationManager authenticationManager, UserService userService, Environment environment) { super.setAuthenticationManager(authenticationManager); this.userService = userService; this.environment = environment; } @Override public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException { try { RequestLogin creds = new ObjectMapper().readValue(request.getInputStream(), RequestLogin.class); return getAuthenticationManager().authenticate( new UsernamePasswordAuthenticationToken( creds.getEmail(), creds.getPassword(), new ArrayList<>() ) ); } catch (IOException e) { throw new RuntimeException(e); } } @Override protected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response, FilterChain chain, Authentication authResult) throws IOException, ServletException { // log.debug(((User)authResult.getPrincipal()).getUsername()); String userName = ((User)authResult.getPrincipal()).getUsername(); UserDto userDetails = userService.getUserDetailsByEmail(userName); System.out.println("details :" + userDetails); String token = Jwts.builder() .setSubject(userDetails.getUserId()) .setExpiration( new Date((System.currentTimeMillis() + Long.parseLong(environment.getProperty("token.expiration_time")))) ) .signWith(SignatureAlgorithm.HS512, environment.getProperty("token.secret")) .compact(); System.out.println("token :" + token); response.addHeader("token", token); response.addHeader("userId", userDetails.getUserId()); } @Override protected void unsuccessfulAuthentication(HttpServletRequest request, HttpServletResponse response, AuthenticationException failed) throws IOException, ServletException { // super.unsuccessfulAuthentication(request, response, failed); failed.printStackTrace(); } } 어느 부분을 어떻게 수정하여 진행을 해야 할까요? AuthenticationFilter에서 attemptAuthentication 함수를 UsernamePasswordAuthenticationToken 받는 것으로 수정하여 디버깅해보니 아래 코드의 authenticationToken 값은 잘 나옵니다. 그런데 위의 질문처럼 getAuthenticationManager().authenticate 여기서 문제가 발생합니다. 문제가 발생하는 부분은 AbstractAuthenticationProcessingFilter의 저 부분으로 잡히며 AuthenticationFilter 코드는 다음과 같습니다. import com.example.userservice.dto.UserDto; import com.example.userservice.service.UserService; import com.example.userservice.vo.RequestLogin; import com.fasterxml.jackson.databind.ObjectMapper; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import lombok.extern.slf4j.Slf4j; import org.springframework.core.env.Environment; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.security.core.AuthenticationException; import org.springframework.security.core.userdetails.User; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; import java.util.Date; @Slf4j public class AuthenticationFilter extends UsernamePasswordAuthenticationFilter { private final UserService userService; private final Environment environment; public AuthenticationFilter(AuthenticationManager authenticationManager, UserService userService, Environment environment) { super.setAuthenticationManager(authenticationManager); this.userService = userService; this.environment = environment; } @Override public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException { try { RequestLogin creds = new ObjectMapper().readValue(request.getInputStream(), RequestLogin.class); UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken( creds.getEmail(), creds.getPassword(), new ArrayList<>()); return getAuthenticationManager().authenticate(authenticationToken); } catch (IOException e) { throw new RuntimeException(e); } } @Override protected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response, FilterChain chain, Authentication authResult) throws IOException, ServletException { // log.debug(((User)authResult.getPrincipal()).getUsername()); String userName = ((User)authResult.getPrincipal()).getUsername(); UserDto userDetails = userService.getUserDetailsByEmail(userName); System.out.println("details :" + userDetails); String token = Jwts.builder() .setSubject(userDetails.getUserId()) .setExpiration( new Date((System.currentTimeMillis() + Long.parseLong(environment.getProperty("token.expiration_time")))) ) .signWith(SignatureAlgorithm.HS512, environment.getProperty("token.secret")) .compact(); System.out.println("token :" + token); response.addHeader("token", token); response.addHeader("userId", userDetails.getUserId()); } // @Override // protected void unsuccessfulAuthentication(HttpServletRequest request, // HttpServletResponse response, // AuthenticationException failed) throws IOException, ServletException { //// super.unsuccessfulAuthentication(request, response, failed); // failed.printStackTrace(); // } } 해결 방법 좀 알려주시면 감사하겠습니다.

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
댓글 1 좋아요 0 조회수 474

강의자료

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

강의자료는 따로 없을까요?

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
dahliachoilune 댓글 1 좋아요 0 조회수 722

섹션 16 mysql 문의드립니다

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

$ docker run -d -p 3306:3306 --network ecommerce-network --name mariadb nhw0926/my-mariadb:1.0 c5aed5c624e8c48d18a32f8beea882f5373745350a4a069f64058d459045016d docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "mysqld": executable file not found in $PATH: unknown 실행 시 위와같은 오류가 발생하는데 몇시간을 찾아도 도저히 답이나오지않습니다..... 하... 아시는분있을까요

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
나현우 댓글 2 좋아요 0 조회수 1135

도메인 서비스와 응용서비스의 구분

해결됨

Microservice 설계(with EventStorming,DDD)

도메인 서비스와 응용서비스를 구분할 수 있는 조건이 무엇일까요? 사내 프로젝트 마다 달랐고, 항상 경계가 모호해서 해당 프로젝트의 정책에 맞추어 개발했는데 이 부분에 대해 의견을 듣고 싶습니다. - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

  • 아키텍처
  • msa
  • ddd
아무도_모를_아이디 댓글 1 좋아요 0 조회수 1566

Aggreagte 에 두개 이상의 Entity로 구성할 수 있나요?

해결됨

Microservice 설계(with EventStorming,DDD)

논리적인 개념인지 물리적인 개념인지 둘 다 포함하는 영역인지 궁금합니다. Order와 OrderHistory 테이블과 Entity(JPA) 는 분리 되어 있고 같은 트랜잭션에서 처리 한다는 가정하에 (저는 History 성 테이블을 같은 트랜잭션안에 두지 않는 것을 선호합니다) 두개를 동일한 Aggregate 라고 할 수 있나요? - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

  • 아키텍처
  • msa
  • ddd
아무도_모를_아이디 댓글 1 좋아요 0 조회수 666

Spring boot 3.1.3, Security 6.1.3 버전 업데이트

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

학습이 너무 예전거라 최신 스프링과 security 버전이 달라서 많이 바뀐것 같습니다. 강의 최신화좀 빨리 해주세요 진도가 안나갑니다 해결하느라

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
hans52410537 댓글 2 좋아요 1 조회수 904

섹션14 Prometheus와 Grafana 설치 강의 내용중 문의 드립니다

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

강의 내용대로 진행하였는데 http://localhost:8000/user-service/actuator/prometheus http://localhost:8000/order-service/actuator/prometheus 둘다 아래 이미지와같은 에러가 발생합니다 apigateway application.yml 설정 - id: user-service uri: lb://USER-SERVICE predicates: - Path=/user-service/actuator/** - Method=GET,POST filters: - RemoveRequestHeader=Cookie - RewritePath=/user-service/(?<segment>.*), /$\{segment} - id: order-service uri: lb://ORDER-SERVICE predicates: - Path=/order-service/actuator/** - Method=GET filters: - RemoveRequestHeader=Cookie - RewritePath=/order-service/(?<segment>.*), /$\{segment} 프로메테우스.yml 설정 static_configs: - targets: ["localhost:9090"] - job_name: 'user-service' scrape_interval: 15s metrics_path: '/user-service/actuator/prometheus' static_configs: - targets: ['localhost:8000'] - job_name: 'order-service' scrape_interval: 15s metrics_path: '/order-service/actuator/prometheus' static_configs: - targets: ['localhost:8000'] - job_name: 'apigateway-service' scrape_interval: 15s metrics_path: '/actuator/prometheus' static_configs: - targets: ['localhost:8000'] apigateway 의 AuthorizationHeaderFilter.java // 절차 // login -> token반환받음 -> client에서 apigateway로 정보 요청 시 (토큰정보를 가지고 요청함) -> 서버에서는 토큰정보 검증 (header 안에 토큰이 포함됨) 38줄 @Override public GatewayFilter apply(Config config) { return ((exchange, chain) -> { ServerHttpRequest request = exchange.getRequest(); if(!request.getHeaders().containsKey(HttpHeaders.AUTHORIZATION)) { return onError(exchange, "no authorization header", HttpStatus.UNAUTHORIZED); } String authorizationHeader = request.getHeaders().get(HttpHeaders.AUTHORIZATION).get(0); // 반환값은 list배열이기에 0 String jwt = authorizationHeader.replace("Bearer", ""); if(!isJwtValid(jwt)) { return onError(exchange, "JWT token is not valid", HttpStatus.UNAUTHORIZED); } return chain.filter(exchange); }); } 여기서 지속적으로 아래 오류가 발생중입니다 2023-09-10 01:15:35.241 INFO 31372 --- [tor-http-nio-10] c.e.a.filter.GlobalFilter : Global Filter baseMessage: Spring Cloud Gateway Global Filter 2023-09-10 01:15:35.241 INFO 31372 --- [tor-http-nio-10] c.e.a.filter.GlobalFilter : Global Filter Start: request id -> a5f590c1-1098 2023-09-10 01:15:35.270 INFO 31372 --- [tor-http-nio-10] c.e.a.filter.GlobalFilter : Global Filter End: response code -> 404 NOT_FOUND 2023-09-10 01:15:35.528 INFO 31372 --- [tor-http-nio-12] c.e.a.filter.GlobalFilter : Global Filter baseMessage: Spring Cloud Gateway Global Filter 2023-09-10 01:15:35.528 INFO 31372 --- [tor-http-nio-12] c.e.a.filter.GlobalFilter : Global Filter Start: request id -> d5aec101-1099 2023-09-10 01:15:35.528 ERROR 31372 --- [tor-http-nio-12] c.e.a.filter.AuthorizationHeaderFilter : no authorization header 2023-09-10 01:15:35.528 INFO 31372 --- [tor-http-nio-12] c.e.a.filter.GlobalFilter : Global Filter End: response code -> 401 UNAUTHORIZED 이 필터관련 수정한건 없는것으로 기억하는데 제가 놓친게있을까요 답답하네요 ㅠ

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
나현우 댓글 2 좋아요 0 조회수 731

Dockerfile 질문

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

Dockerfile에서 FROM은 base 이미지를 지정할 수 있는데요, 보통 ubuntu와 같은 OS를 지정하는 것으로 알고 있습니다. 만약 FROM ubuntu로 지정했을 경우 ubuntu OS로 해당 컨테이너가 동작하며 그 안에서 jdk를 설치하고 앱을 실행하고 하는 작업이 가능할 것 같은데요 FROM에 그냥 jdk를 지정하면 java는 jvm을 통해 OS에 종속되지 않고 앱이 실행 가능하니 정상 실행될 것이라는 것은 알지만 컨테이너의 OS는 어떻게 되는것인가요?

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
이무 댓글 1 좋아요 0 조회수 370

Resilience4JCircuitBreakerFactory id

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

return factory 객체에서 생성하는 Resilience4JConfigBuilder에게 전달되는 id 값은 직접 주입하는것이 아닌것 같은데요, circuitBreakerFactory create시에 지정하는 name 값이 컨테이너를 통해 주입되는건가요? 만약 그렇다면 생성된 모든 circuitBreakerFactory을 조회해서 id를 주입하는 로직이 있는건가요?

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
이무 댓글 1 좋아요 0 조회수 442

connect 사용시 kafka 서버

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

kafka connect 사용시 kafka서버와 zookeeper 구동도 필수인가요? connect는 다른 도메인으로 접근하는 것 같은데 필요한지 궁금합니다.

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
이무 댓글 1 좋아요 0 조회수 380

kafka listener

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

Kafka Consumer Config에서 등록한 KafkaListenr bean은 Consumer 쪽 서비스 로직에서는 쓰지 않는것인가요? Producer에서는 등록한 template bean을 서비스 객체에서 주입받아 send에 사용하는데 listener는 어노테이션 지정후 내부 동작 하는것인지 궁금합니다.

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
이무 댓글 1 좋아요 0 조회수 421

kafka connect 실행 시 질문

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

kafka topic 생성시에는 localhost :9092의 브로커 정보를 입력해서 붙였는데 kafka connect 실행 시에는 브로커 정보없이 실행해도 조회시에 topic과 connect가 함께 출력됩니다. connect는 타겟 브로커를 어떻게 알고 적용되는 것인가요?

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
이무 댓글 1 좋아요 0 조회수 577

spring cloud 무중단 구성 방법

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

아래와 같은 spring cloud 환경에서 무중단 배포를 구현할려면 어떻게 진행해야하나요? 맨 앞단에 L4 1대 그 뒤에 spring cloud gateway 2대 spring cloud eureka 2대 api server 2대 각 서버를 2대씩 구성한 이유는 HA구성을 위해서입니다. 여기서 api server를 무중단 배포로 진행할려면 어떻게 해야되나요? api server를 down시키면 eureka의 registry에 반영된다 하더라도 gateway에서 반영되기까지는 시간걸려 down된 인스턴스로 라우팅 해주고, gateway에서 retry로직을 적용시켜도 배포순간에 많은 요청이오면 한 요청에 대해서 실패한 인스턴스로 모두 retry하여 결국 실패하는 경우도 생기더라고요 (ribbon의 avoid-previous-instance 적용시킬려고 하였으나 spring cloud gateway에서는 지원 안한다고합니다 ㅜㅜ) 현업에서는 보통 어떤 방식으로 무중단 배포를 구현하나요?

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
유경민 댓글 1 좋아요 0 조회수 930

대칭키 암호화 취약점

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

대칭키 암호화 내용을 보고 의문이 들었습니다. config server에서 관리하는 yml 파일이 git 에 올라갔을 때 적혀 있는 데이터를 평문으로 저장하지 않고 암호화 하여 보호하려는 것은 이해를 했습니다. 그러나 config server 프로젝트를 내려받으면 config 설정 파일명은 알 수 있으니 실행 후 브라우저를 통해 접근하면 원본값 반환으로 바로 알 수 있는 것 아닌가요?

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
이무 댓글 1 좋아요 1 조회수 718

2.6버전 이상만 있을때 어떻게 진행하나요

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

zuul은 지원이 안됩니다. 그러면 zuul 대신 다른 gateway를 사용해야하는건지 억지로 2.3대이하로 내려서 zuul을 사용해야하는건지 궁금합니다. 혹시 zuul이외에 다른 게이트웨이를 사용해야한다면 어떤것을 사용해야하는지, 혹시 참고할 자료가 없는지 여쭙습니다

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
닝링딩동 댓글 1 좋아요 1 조회수 1275

config name 기준

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

각 마이크로서비스에서 지정하는 config name이 파일 명으로 들어가는데요, 만약 다른 확장자의 동일이름인 파일인 경우 어떻게 되는건가요? ecommerce.yml, ecommerce.properties name을 ecommerce로만 지정해도 되는 이유가 무엇인지 궁금합니다. 단순 설정 파일의 확장자를 제외하는 이유인지 아님 yml 파일로만 config server에 등록될 수 있는지요

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
이무 댓글 1 좋아요 0 조회수 449

gateway route 순서

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

gateway에 작성하는 routes의 작성 순서가 의미가 있는건가요? Path=/user-service/** 를 먼저 작성하고 Path=/user-service/actuater를 뒤에 작성하면 actuater에 대한 처리를 위의 path에서 가져가는 것 같았습니다. 순서를 바꾸어서 작성하니 정상 동작하네요 알아서 내부 로직으로 처리가 되지 않고 , (ex) url에 actuater가 포함 시 해당 라우팅으로 수행) 작성 순서에 따른 우선순위로 처리되는건지 궁금합니다.

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
이무 댓글 1 좋아요 1 조회수 623

강의노트가 어디에 있는지요?

미해결

마이크로넛 자바 클라우드 어플리케이션 제작

수업중에 강의노트에서 복사해서 사용해야 할 내용이 계속 나오는데 어디서 확인할 수 있나요?

  • java
  • oracle
  • msa
  • Micronaut
  • GraalVM
Swip3rR 댓글 1 좋아요 0 조회수 293

instanceId

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

instanceId 설정할때 ${spring.application.instanc_id:${random.value}}로 들여쓰는 이유가 뭔가요? 그냥 ${random.value}로도 생성이 되는것은 확인을 했는데요.. 이유를 모르겠습니다.

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
이무 댓글 1 좋아요 0 조회수 365

SOA vs MSA

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

구분에 대해 명확히 이해가 되지 않는데요, SOA 경우도 서비스 단위 개발이고 Microservice도 그렇지 않나요? 그 규모의 차이가 둘을 구분 짓는 건가요? ex) SOA의 서비스 단위가 숙박 예약 기능이라고 하면 Microservice는 숙박조회, 결제 ... 으로 더 세분화 그리고 SOA에서 직접 서비스간에 데이터 교환을 하는 것에서 발생하는 의존 문제로 인해 ESB를 도입했다고 봤는데요, Microservice에서는 API를 통해 서비스 간 통신 시 이런 의존문제가 없을 수 있는건가요? 뭔가 구체적인 예시로 비교해주시면 감사하겠습니다.

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
이무 댓글 2 좋아요 0 조회수 730

인기 태그

인프런 TOP Writers

주간 인기글