-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[36] 파트너 회원 생성 #38
[36] 파트너 회원 생성 #38
Conversation
ohsuha
commented
Oct 6, 2024
- api 요청 -> 키클락 -> 사업자등록번호(bizID) 가게명을 별도의 attribute 로 받음
- 파트너 유저 생성 api 요청을 받으면 attribute 의 정보를 가지고 api서버의 partners/keycloak/webhook 을 호출(attribute 정보 추가)
- webhook api 에서 기본적인 유저정보와 attribute 정보를 가지고 DB에 저장
- auth id 추가, 패스워드 칼럼 삭제
@Service | ||
@RequiredArgsConstructor | ||
public class KeycloakAuthService { | ||
private final RestTemplate restTemplate = new RestTemplate(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
멤버 변수를 활용하다 지역 변수로 변경한 이유가 있나요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
getAccessToken 함수에서밖에 사용하지 않아 변경했습니다.. 그런데 이러면 저 함수를 요청할때마다 RestTemplate 객체를 새로 생성하겠네요 찾아보니 빈으로 등록하고 스프링이 관리하게 하고 주입받는게 더 좋을것 같아서 변경하도록 하겠습니다..!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
빈으로 등록해서 생성하면 스프링의 의존성 주입을 사용해 싱글톤으로 만들어지기 때문에 객체가 하나만 생성되고 재사용되어 메모리를 절약할 수 있습니다. 그리고 테스트에서 RestTemplate 을 Mock 으로 바꿀 수 있어 테스트가 용이해집니다..!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
connection pool 관점에서는 어떨까요? 그리고 다른 설정들에 대해서는 세팅할 부분이 없을까요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
찾아보니 OkHttp나 HttpComponents 를 사용해 커넥션풀을 만들어 관리할 수 있을거같네요.
커넥션 풀을 만들지 않고 레스트 템플릿을 빈으로 등록한 방식은 매 요청마다 새로운 HTTP 연결을 생성하고 닫아서, 요청시마다 대기시간 발생, 연결 생성 비용이 발생하는 단점이 있고
커넥션 풀 설정을 사용하면 한번 생성한 연결을 여러 요청에서 재사용할 수 있어서 새로운 연결을 생성하는 비용을 피할 수 있어서 성능이 개선되고, 새로운 연결을 매번 생성하지 않아 속도가 빨라진다는 것을 알았습니다.
새로운 커넥션을 생성할때 더 느린 이유는 TCP 연결을 설정하고, DNS를 조회하는 등의 여러 과정이 필요하기 때문에 추가적인 시간이 소요 됩니다. 기존 커넥션을 재사용하면 이런 단계를 생략할 수 있습니다
private String name; | ||
private String firstName; | ||
private String lastName; | ||
private String email; | ||
private String shopName; | ||
private String password; | ||
private String businessNumber; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
서비스가 계속 운영되는 상황에서 request의 형태를 바꾸면 어떻게 될까요?
return ApiSuccessResponse.success(); | ||
} | ||
|
||
@PostMapping("/keycloak/webhook") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
dl webhook이 한번 실패하면 그 이후 동작은 어떻게 되나요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이후에도 일반 회원과 마찬가지로 DB 등록에 실패하고 키클락 서버에서도 200 요청을 받지 못했으므로 저장된 회원을 삭제 하도록 되어있습니다..!