묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
버전 업데이트 질문
새롭게 마지막 섹션에 updated 된것은 어떻게 봐야하나요 ? 커리큘럼 중간에 deprecated 된것도 있는데, 건너뛰면 되는지 기존에 이것 대신에 updated 된곳에 어떤걸 봐라 라고 설명좀 해주실 수 있나요 ?
-
미해결비전공자도 이해할 수 있는 AWS 중급/실전 (보안, 가용성편)
퍼블릭 ip 자동 할당 질문
default vpc로 인스턴스를 생성했을 때는 퍼블릭 자동 할당 활성화를 해주지 않았던 것 같은데 default vpc의 경우에만 활성화를 해주지 않아도 자동 할당 되는건가요?
-
미해결비전공자도 이해할 수 있는 AWS 중급/실전 (보안, 가용성편)
az와 수평확장의 차이
안녕하세요k6 부하테스트 강의를 들었는데 그때 수평 확장하는 방법에 대해서 배웠습니다.인스턴스를 늘리는 거에 있어서 수평확장과 az별로 스프링부트 추가하는 거는 똑같지만 용도는 다르다는 것은 알겠어요인스턴스 늘릴때 수평확장은 단순히 복제 버튼 클릭하여 쉽게 스프링부트를 늘리는데az는 늘릴 때마다 매번 일일이 수동으로 다 설치해야하는건가요?
-
해결됨실무에서 꼭 필요한 서버 모니터링(Zabbix)
line notify 서비스 종료
line 메신저 연동 강의를 듣고 있는데 line notify 서비스가 종료되어서 할 수가 없습니다.다른 방법이 있나요?
-
미해결비전공자도 이해할 수 있는 AWS 중급/실전 (보안, 가용성편)
bation host 구성내용
안녕하세요 bation host 운영시 실무에서 그냥 단순히 최소 사양의 컴퓨터에 아무것도 설치 안하고 운영만 하나요?
-
미해결비전공자도 이해할 수 있는 AWS 중급/실전 (보안, 가용성편)
Bation host의 보안성 질문
안녕하세요 강의 잘 보고 있습니다.제가 예전에 회사에 실무 뛸 때는 기본 VPC 사용해서 해당 subnet 서브넷에 RDS와 스프링부트 사용했습니다. 확인해보니까 기본 subnet은 public subnet이네요보안 그룹을 이용해서 RDS는 스프링부트와 회사 IP에만 허용하고 스프링 부트는 80포트 한해서 모든 IP 허용해서 사용해서 제한적으로 보안을 걸었습니다.private subnet에 RDS와 스프링부트를 배치하고 bation host를 통해서 접속하는게 보안적으로 뛰어나다는 것은 알겠는데public subnet에 RDS와 스프링부트를 배치 해두고 보안 그룹으로 IP 접근 제한하고 무슨 차이가 있나요?1차원적으로만 보면 bation host가 EC2 비용이 더 나가는 거 말고는 모르겠습니다.정확히 어떤면에서 더 보안적으로 뛰어난지 궁금합니다
-
미해결비전공자도 이해할 수 있는 AWS 중급/실전 (보안, 가용성편)
강의 질문
안녕하세요 2번째 예제에서 25.212.157.0/25의 네트워크 주소가 어쨰서 10.88.135.0 으로 바뀌는지 궁금합니다.아니면 노션 기록 오타인거 같습니다25.212.157.0 ~ 25.212.157.127이 아닌가요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
멀티모듈 질문
혹시 강의에 멀티모듈구조 설정하는 방법이 있을까요 ? 하나의 프로젝트에서 무듈별로 나누는 방법은 제공하지 않겠죠 ?
-
해결됨아키텍처와 함께하는 GCP (Google Cloud Platform)
Cloud Router 질문 드려요!
안녕하세요.제공해주신 강의로 열심히 공부하고 있습니다!베스천 호스트에서 프라이빗 VM 접속시 Cloud Router 를 통해 가는 구조? 가 궁금합니다.제가 잘 몰라서 테스트로 Cloud Router 랑 Cloud NAT 를 삭제하고 접속이 정상적으로 되어서 제가 잘못 생성 하여 접속이 되는 것인지 궁금합니다.
-
해결됨아키텍처와 함께하는 GCP (Google Cloud Platform)
예제 애플리케이션 ID와 Password
안녕하세요 21강에서 예제 어플리케이션을 VM에 올리고, 브라우저에서 http://<external IP>:8080/view/users 했을때 수업자료에 올리신 ID와 Password 입력했을 때 Bad credentials 라는 에러가 떠서요.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
강의 화면이 나오지 않고 소리만 납니다.
섹션1의 'Cloud Native Architecture', 'Cloud Native Application' 강의에서 영상이 나오지 않는데 원래 그런건가요? 아래처럼 까맣게 아무것도 안나오고 소리만 납니다.
-
미해결ASP.NET Core MVC +ASP.NET Core +REST API +.NET 8.0
8장 Controller 질문
HomeController에 2개의 Test 액션이 각각 다른 역할을 한다는 것은 알겠는데, 이것도 메서드 오버로딩이라고 생각하면 될까요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
MSA 개발 배포 방식에 대한 선택과 방향성
안녕하세요! 강의를 마친 후, 여러 가지 궁금한 점이 생겼습니다.지금까지 로컬,및 도커에서 사용한 config-service, apigateway-service, discovery-service(유레카 서버) 의 역할이 Kubernetes 환경에서 대체될 수 있다는 것을 배웠습니다. 구체적으로는:유레카 대체: 각 Pod의 DNS 이름을 사용하여 서비스 간 통신API Gateway 대체: Ingress 리소스를 사용하여 외부 요청을 라우팅(강의엔 없음) Config 서버 대체: RabbitMQ를 통한 busrefresh로 설정 정보를 업데이트하는 대신, Kubernetes의 ConfigMap을 사용하여 설정을 동적으로 업데이트이렇게 Kubernetes에서 많은 기능을 간편하게 처리할 수 있다는 점에 대해 배우면서, 이전의 복잡한 서비스 구조가 생각보다 간단하게 대체될 수 있다는 점에서 약간 허무한 느낌도 듭니다.강의를 마친 후의 궁금증은, 실제 MSA 개발 시에 Kubernetes, Docker, AWS를 사용하는 다양한 배포 방식 중 어떤 선택을 해야 할지에 대한 부분입니다.EC2에 Docker 사용하여 배포EC2에 Kubernetes 사용하여 배포AWS의 EKS, ECS, API Gateway를 사용하는 방법 등 여러가지 방법이 있을텐데요 이와 같은 다양한 옵션 중에서 어떤 방식을 선택 해야하는지 공부의 방향성을 제시해주시면 감사하겠습니다.좋은 강의 감사합니다!
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
마지막강의 k8s catalog 404 오류
serivce 오타네여
-
해결됨아키텍처와 함께하는 GCP (Google Cloud Platform)
인스턴스 그룹
안녕하세요. 지금 인스턴스 그룹을 만들기를 학습 중입니다. 저는 private인스턴스로 이미지, 템플릿을 만들고 인스턴스 그룹을 만든 후 만들어진 인스턴스에 ps명령어로 접근 해 보니 jar파일이 실행중이 안 뜨는 데 어디서 놓친 걸까요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
grafana 그래프 nodata
https://www.inflearn.com/community/questions/267420/%EB%8C%80%EC%89%AC%EB%B3%B4%EB%93%9C%EC%97%90-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-%EB%AA%BB%EA%B0%80%EC%A0%B8%EC%98%A4%EB%8A%94%EA%B2%83-%EA%B0%99%EC%8A%B5%EB%8B%88%EB%8B%A4를 참고하여 Legend: {{instance}}Instant 체크 + Fields 입력을 통해 위에 처리량은 잘나오는 모습입니다 하지만밑에 그래프들은 Fields 입력하는 부분이없어서 처리량때 처럼 설정을 할 수 없고 역시나no data로 나오네요설정은 이대로 했습니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
route 설정이 동작을 안하는거 같아요.
RouteLocator gatewayRoutes(RouteLocatorBuilder builder)이 메소드를 만들기 위해 implementation 'org.springframework.cloud:spring-cloud-starter-gateway' 이걸로 수정했을 했는데 이후 저 메소드를 주석 처리하고 applicatio.yml을로 설정을 대체 했을 때는 동작을 안하고 implementation 'org.springframework.cloud:spring-cloud-starter-gateway-mvc'mvc로 다시 변경해줘야 올바르게 동작하는데무슨 차이가 있을까요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
FeignErrorDecoder 질문
FeignErrorDecoder 에 대해서order_is_empty를 수정한뒤에127.0.0.1:8000/actuator/busrefresh 를 호출하면Keys refreshed [spring.cloud.bootstrap.enabled, order_service.exception.order_is_empty]로그는 정상적으로 뜨며디버깅 모드로 코드를 추가해서 실행한결과List<ResponseOrder> orders= orderServiceClient.getOrders(userId);코드전에env.getProperty("order_service.exception.order_is_empty") 를 확인해본 결과는정상적으로 리프레시되지만 이후에 오류를 터트리고 FeignErrorDecoder 처리 로직에서switch(response.status()){ case 400: break; case 404: if(methodKey.contains("getOrders")){ return new ResponseStatusException(HttpStatus.valueOf(response.status()),env.getProperty("order_service.exception.order_is_empty")); } break; default: return new Exception(response.reason()); }getProperty("order_service.exception.order_is_empty")이부분이 새로운 환경 변수가ErrorDecoder 에서는 반영 안되는것같아서 해결이 안되서 질문남깁니다 ! UserServiceImpl 에서는 정상적으로 바뀐값이 나오는거보면 ErrorDecoder 문제 같은데 정확히 모르겠습니다 @RefreshScope 이것도 해결책은 아닌것같아요 답변 부탁드립니다 !
-
해결됨아키텍처와 함께하는 GCP (Google Cloud Platform)
서비스 계정
선생님.저는 IAM에서 서비스 계정 만들 때 역할을 선택 할 수가 없는 데 왜 그런가요? 우선 무시하고 키 발급을 받은 후 인스턴스를 만들고 gcloud shell로 확인을 하면키를 못 찾는다고 나옵니다. WARNING: The private SSH key file for gcloud does not exist.WARNING: The public SSH key file for gcloud does not exist.WARNING: You do not have an SSH key for gcloud.WARNING: SSH keygen will be executed to generate a key.Generating public/private rsa key pair.Enter passphrase (empty for no passphrase):
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
로그인 에러
안녕하세요 강사님! 질문이 있어서 작성합니다.현재 섹션 7까지 수강한 상태입니다.회원가입을 하고 로그인을 시도했는데 회원가입은 정상, 로그인은 에러가 반환됩니다. 1) 섹션 19(165강)에서 WebSecurity 코드로 실행package com.example.user_service.sercurity; import com.example.user_service.service.UserService; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authorization.AuthorizationDecision; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.core.Authentication; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.access.expression.WebExpressionAuthorizationManager; import org.springframework.core.env.Environment; import org.springframework.security.web.access.intercept.RequestAuthorizationContext; import org.springframework.security.web.util.matcher.AntPathRequestMatcher; import org.springframework.security.web.util.matcher.IpAddressMatcher; import java.util.function.Supplier; @Configuration @EnableMethodSecurity public class WebSecurity { private final UserService userService; private final BCryptPasswordEncoder bCryptPasswordEncoder; private final Environment env; public static final String ALLOWED_IP_ADDRESS = "127.0.0.1"; public static final String SUBNET = "/32"; public static final IpAddressMatcher ALLOWED_IP_ADDRESS_MATCHER = new IpAddressMatcher(ALLOWED_IP_ADDRESS + SUBNET); public WebSecurity(Environment env, UserService userService, BCryptPasswordEncoder bCryptPasswordEncoder){ this.env = env; this.userService = userService; this.bCryptPasswordEncoder = bCryptPasswordEncoder; } @Bean public AuthenticationManager authenticationManager(HttpSecurity http) throws Exception { AuthenticationManagerBuilder authenticationManagerBuilder = http.getSharedObject(AuthenticationManagerBuilder.class); authenticationManagerBuilder.userDetailsService(userService).passwordEncoder(bCryptPasswordEncoder); return authenticationManagerBuilder.build(); } @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.csrf((csrf) -> csrf.disable()) .authorizeHttpRequests((authz) -> authz .requestMatchers(new AntPathRequestMatcher("/actuator/**")).permitAll() .requestMatchers(new AntPathRequestMatcher("/h2-console/**")).permitAll() .requestMatchers(new AntPathRequestMatcher("/users", "POST")).permitAll() .requestMatchers(new AntPathRequestMatcher("/welcome")).permitAll() .requestMatchers(new AntPathRequestMatcher("/health_check")).permitAll() .anyRequest().access( new WebExpressionAuthorizationManager( "hasIpAddress('127.0.0.1') or hasIpAddress('192.168.219.119')")) ) .sessionManagement((session) -> session .sessionCreationPolicy(SessionCreationPolicy.STATELESS)) .headers((headers) -> headers.frameOptions((frameOptions) -> frameOptions.disable())); return http.build(); } private AuthorizationDecision hasIpAddress(Supplier<Authentication> authentication, RequestAuthorizationContext object){ return new AuthorizationDecision(ALLOWED_IP_ADDRESS_MATCHER.matches(object.getRequest())); } }2) https://github.com/joneconsulting/toy-msa/tree/springboot3.2 에서 'springboot3.2' 브런치의 'WebSecurityNew', 'IpAddressLoggingFilter' 코드로 실행 그리고 IpAddressLoggingFilter 코드에 대한 강의도 있나요?