로드벨런서에서 타겟그룹으로 포인팅을 할 때의 리스너가 80번 포트(http)라고 가정합니다. 타겟그룹의 포트는 3000번이라고 한다면 데이터의 흐름이 다음과 같습니까? 사용자가 80번 포트로 request (즉, http://example.com ) 로드벨런서의 보안그룹의 인바운드에 80번이 열려있는지 확인 로드벨런서에 80번포트로 들어왔을 때 타깃그룹으로 포이팅하는 리스너 확인 80번으로 받은 request를 타깃그룹이 대상 인스턴스로 보낼 때 3000번 포트로 변환 대상 인스턴스의 보안그룹의 인바운드에 3000번이 열려있는지 확인 대상 인스턴스의 3000번 포트에 웹 요청이 들어옴(즉, 웹 서버가 3000번 포트에 열려있어야 함). 제가 이해한 것이 맞을까요? 타깃그룹에 포트번호가 있는것이 헷갈립니다. 왜 있는지도 모르겠고...
public void login(Account account) { System.out.println(account); UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(account.getNickname(), account.getPassword(), Collections.singleton(new SimpleGrantedAuthority("ROLE_USER"))); SecurityContextHolder.getContext().setAuthentication(token); } 우선 AccountService에 있는 login입니다. 제가 테스트를 하던 도중 나머지는 다 되는데 authetication부분에서 문제가 있는것을 발견했습니다. 단위테스트로 하다보니 권한이 부여가 되지 않아서 회원가입을 해도 다시 원상태로 복구되더군요 springsecurity6로 바뀌면서 새로 바뀐부분이 있길래 구글링해서 바꿀만큼 바꿔보고 찾을만큼 찾아봤다 생각했는데도 자꾸 권한부여 부분에서 문제가 생깁니다(위의 login함수) 이럴경우 어떻게 바꾸어야 할까요...? 저 위에 SecurityContextHolder.getContext().setAuthentication(token); 라는 코드전에 토큰을 출력해 보니 UsernamePasswordAuthenticationToken [Principal=jungsik, Credentials=[PROTECTED], Authenticated=true, Details=null, Granted Authorities=[ROLE_USER]] 이렇듯 AUtheticated는 true로 반환되는데 redirect될때는 권한이 사라지는것 같습니다
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
@GetMapping("/add") public int addTwoNumbers(CalculatorAddRequest request) { return request.getNumber1() + request.getNumber2(); } @PostMapping("/multiply") public int multiplyTwoNumbers(@RequestBody CalculatorMultiplyRequest request) { return request.getNumber1() * request.getNumber2(); } GetMapping 메소드에서는 @RequestParm 어노테이션을 사용하지 않아도 자동으로 쿼리 데이터를 DTO로 변환해주고 PostMapping 메소드에서는 @RequestBody 어노테이션을 사용해야만 Body 데이터를 DTO로 변환해주는 것인가요?
Route53 의 유형에 보면 여러가지가 있지만 그 중에서 MX와 TXT가 궁금합니다. MX는 메일서버라고는 알고 있는데 DNS쿼리할때 어떻게 동작하는지 감이 잘 안옵니다. 사내메일 서비스를 이용하는 업체가 있는데 서로 어떻게 커넥트를 하는지도 감이 안옵니다. TXT는 예전에 WIX서비스를 이용할 때 입력하는 칸이 있어서 궁금합니다. 마찬가지로 DNS쿼리할 때 어떻게 동작하는지 궁금합니다. 감사합니다.
가비아 (도메인 등록업체) 에서 도메인을 구입하면 그곳에 Route53에서 제공하는 NS 레코드를 입력하는 것으로 알고 있습니다. 로컬 DNS 서버와, ISP DNS 서버 둘 다 도메인 등록이 되어 있지 않다고 가정합니다. Root DNS Server -> TLD -> SLD -> 가비아 서버-> Route 53 인것인가요? 가비아 서버로 DNS 쿼리가 갔다가 그곳에 등록된 NS가 Route53을 가리키고 있기 때문에 Route53 호스팅영역으로 리다이렉트 되는 것인가요? 그럼 NS레코드의 값인 ns.어쩌구는 사실상 DNS인가요? 만약 그렇다면 ns.어쩌구를 ip로 변환하는 과정이 또 필요하다면 제자리걸음이 아닌가요? NS 레코드에 나오는 ns.어쩌구 문자열이 하는 역할이 무엇인지 궁금합니다.. 감사합니다.
AWS light sail을 이용하여 배포까지 3월 초에 완료하였습니다. 웹사이트는 잘 작동하였고 너무 기뻐 친구들에게도 자랑을 하였습니다. 그렇게 웹사이트가 잘 작동되고 있었는데 갑자기 어느순간부터 도메인을 치면 오류가 납니다. 제 웹사이트 링크는 giyeons.com 입니다. 구글링을 해보니 aws에 문제가 없었다가 갑자기 생긴것 같은데 제가 aws는 강사님이 하라는데로 따라하기만 하고 추가로 다른 공부를 하진 않아서 어디를 어떻게 수정해야 하는지 감이 안잡힙니다. (제가 아마존 라이트세일 결제 카드를 배포후 2주 후에 잃어버려서 기존 카드를 해지를 하고 aws에 새로운 카드를 등록시켰는데 이것이 문제가 될 수도 있나요?) 새로운 카드를 이미 등록은 하였는데 계속 오류가 나는것을 보아하니 카드의 문제가 아닌것 같습니다.
public class DecoData { private int instanceValue; private static int staticValue; public static void staticCall() { System.out.println(this.instanceValue); } .... } 안녕하세요! 강의에서 "static 영역 입장에서 힙 영역에 있는 인스턴스의 참조값을 몰라서 인스턴스 변수에 접근할 수 없다." 라고 얘기를 해주셨는데 그러면 this는 클래스 본인의 인스턴스 참조값이니 이 this를 이용하면 static 메서드에서도 인스턴스 변수에 접근할 수 있지 않을까? 라는 생각을 해서 코드를 짰는데 오류가 났습니다. 왜 static 메서드 영역에서 this를 사용해도 인스턴스 변수에 접근할 수 없나요? 감사합니다.
실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
안녕하세요 강사님 덕분에 편히 배우고 있습니다. 다름이 아니라 이번 강의 초반에 @Transactional 어노테이션을 사용할 시 open 키워드를 클래스와 매서드에 다 사용해주어야 하고, 만약 이게 싫다면 플러그인을 적용해야 한다고 말씀하셨는데요, 찾아보니 코틀린에서는 기본적으로 모든 클래스가 최종 클래스고, 그렇기 때문에 상속이 되지 않아 open 키워드를 사용해 상속 가능성을 열어두어야 한다는 것 같더라구요. 그런데 왜 이게 @Transactional 어노테이션을 사용할 때도 해당되는 내용인지 잘 모르겠습니다. 프록시 객체가 생성되기 때문인 걸까요? 제가 코틀린 기본 강의를 들었음에도 잘 기억이 나질 않아 질문드립니다. 항상 감사드립니다.
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
똑같은 이름의 책 등록을 막기 위해서는 스프링 부트의 멀티스레드 구조와 단일 인스턴스 - 서버가 1대인 경우 - 일 때의 synchronized 구문, 멀티 인스턴스 - 서버가 N>=2 대 인경우 - 일 때의 DB unique key 등을 언급해야 하고, (이 과정에서 서버의 인프라도 설명이 들어갑니다!) 동시 대출을 방어하기 위해서는 DB의 Lock(잠금) 종류와 원리에 대해 설명해야 합니다. 이렇게 답변주셨는데 대용량 트래픽 개인프로젝트를 설계한다고 해야한다면 서버를 여러대 생각을 하고 DB unique key를 생각을 해야할지 먼저 서버 1대를 생각하고 synchronized 구문으로 똑같은 이름의 책 등록을 막아야할지 고민입니다.!!
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
비즈니스 요구사항,기술적인 요구사항,도메인 아키텍처 등 여러 부분을 고민해서 연관관계를 사용을 선택해야한다고 하셨고 도메인을 설계할 때 이거는 이렇게 하니까 이렇게 하자 저거는 저렇기 때문에 저렇게하자라고 하셨습니다. 실례가 될수 있지만 강사님께서는 어떻게하시는지 예시를 좀 들어주실수 있을까요..? 개인프로젝트할때 도움이 될것같습니다!!!
rds가 private subnet에 있어서 외부에서 접근이 불가능하다면 로컬에서 사용 하는 DB툴로 접근이 안되잖아요. 그렇다고 같은 VPC 내의 EC2로 매번 SSH연결을 해서 터미널창에서 쿼리날릴수도 없고.. 보통은 어떤식으로 하나요? rds를 public / private 스위칭하면서 접근하나요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 패키지 import를 할때 import는 하나만 할 수 있다고 하셨는데 a패키지와 b패키지에 클래스명이 User로 같아서 하나만 할 수 있다는건가요? 직접해보니까 c라는 패키지를 만들어서 클래스명을 User로 안하니까 import가 되더라고요 만약 그렇다면 강의에서 보통 자주쓰는 패키지를 임포트하고 다른 패키지는 풀네임으로 쓴다고 하셨는데 그냥 클래스명만 조금 바꾸고 둘다 임포트해서 쓰는게 더 낫지 않나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 생성메서드의 용도가 갑자기 까먹었는데 그냥 생성자로 넣어주려는걸로 아는데 Static으로 정적으로 왜쓰는건가요? Static 빼면 안되나요?
안녕하세요! 정말 너무너무 눈이 반짝반짝거리면서 보고, 듣고 실습하고 있습니다. 제목과 같이 내부에서 DNS 질의할때 CoreDNS 동작방식이 너무나 궁급합니다. 아무래도 노드에 resolv.conf에 등록한 Search List와 ndots에 대해 부록이라도 추가 컨텐츠 제공이 가능할까요...?
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' runtimeOnly 'com.h2database:h2' runtimeOnly 'mysql:mysql-connector-java:8.3.0' testImplementation 'org.springframework.boot:spring-boot-starter-test' } 위와 같이 dependencies를 설정했고 밑은 application.yml입니다. spring: datasource: url: "jdbc:mysql://loca lhost/library" username: "root" password: "비밀번호" driver-class-name: com.mysql.cj.jdbc.Driver 비밀번호는 알아서 설정했습니다. 오류가 생겨서 dependencies에서 runtimeOnly 'mysql:mysql-connector-java:8.3.0'로 설정했습니다. 밑에는 에러 표시입니다. Execution failed for task ':LibraryAppApplication.main()'. > Could not resolve all files for configuration ':runtimeClasspath'. > Could not find mysql:mysql-connector-java:8.3.0. Required by: project : Possible solution: - Declare repository providing the artifact, see the documentation at https://docs.gradle.org/current/userguide/declaring_repositories.html > Task :LibraryAppApplication.main() FAILED Execution optimizations have been disabled for task ':LibraryAppApplication.main()' to ensure correctness due to the following reasons: - Type 'org.gradle.api.tasks.JavaExec' property 'classpath' cannot be resolved: Could not resolve all files for configuration ':runtimeClasspath'. Reason: An input file collection couldn't be resolved, making it impossible to determine task inputs. Please refer to https://docs.gradle.org/7.5/userguide/validation_problems.html#unresolvable_input for more details about this problem. Execution failed for task ':LibraryAppApplication.main()'. > Could not resolve all files for configuration ':runtimeClasspath'. > Could not find mysql:mysql-connector-java:8.3.0. Required by: project : Possible solution: - Declare repository providing the artifact, see the documentation at https://docs.gradle.org/current/userguide/declaring_repositories.html Could not find mysql:mysql-connector-java:8.3.0. Required by: project : Search in build.gradle files 뭐가 에러인가요..? 만약 Runtimeonly뒤에 version을 따로 기입하지 않는다면, Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure 라는 에러가 뜹니다.
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 강의에서는 21버전 Oracle OpenJDK를 사용하라고 하셨는데 제 화면에는 (21버전) OracleGraalVM 만 뜨는데 이걸로 사용해도 무방한가요? 상관없어보이지만 혹시나 해서 궁금한 마음에 여쭤봅니다!
수동으로 EC2에서 RDS로 connect한 상황이라고 가정하겠습니다. 코드상에서 TypeORM 또는 SDK 라이브러리를 사용하여 쿼리를 날리면 해당 쿼리가 무엇인지도 CloudWatch에 로깅이 될 수 있는 건가요? 뿐만아니라 DB툴을 이용해서 DB를 조작하더라도 SQL이 로깅이 되는건가요? 그게 아니라면 auditing and logging의 범위가 어디까지인지 간단한 설명 부탁드립니다.