본문 바로가기
Socket 통신 https://jaeseo0519.tistory.com/168 [Network] TCP/IP Socket 통신소켓의 존재를 올해 처음 네트워크 스터디를 통해 처음 알아보긴 했었는데, 여전히 알 것 같다가도 종종 헷갈릴 때가 많다. 그래도 이론을 모두 공부해두고 프로그래밍 단계로 넘어가니 나름 할jaeseo0519.tistory.com ##############소켓 통신에서 사용한 소켓(Socket)과 스트림(InputStream, OutputStream)은 꼭 close 해줘야 합니다.💡 왜 close()가 필요할까?소켓 통신에서 Socket은 내부적으로:서버와 클라이언트 간의 연결(Connection)데이터 송수신용 InputStream, OutputStream을 관리합니다.이 연결과 스트림은 운영체.. 2025. 5. 8.
Oracle- LOB 세그먼트, 테이블스페이스 LOB STORE AS SECUREFILE LS_DIFF_01 (TABLESPACE ...)LOB (Large Object)란?LOB은 BLOB(Binary Large Object), CLOB(Character Large Object) 같은 대용량 데이터를 저장할 때 사용하는 데이터 타입입니다.예를 들면:파일, 이미지, 동영상수십~수백 MB 이상의 텍스트STORE AS SECUREFILE오라클은 LOB을 저장할 때 방식이 2가지 있습니다:BASICFILE: 옛날 방식 (9i ~ 11g 초기)SECUREFILE: 새 방식 (11g 이후 기본)SECUREFILE은 다음을 지원합니다:데이터 압축 (COMPRESS)데이터 암호화 (ENCRYPT)중복 제거 (DEDUPLICATE)빠른 읽기/쓰기 성능파일시스템처럼.. 2025. 4. 28.
MSA 인증인가 전략2 유저 Passport토스 내부 서비스들도 기존에는 모든 서비스에서 유저 정보가 필요할 때 유저 API를 호출하는 방식으로 유저 정보를 가져오고 있었는데요 이는 트랜잭션 내에 불필요한 중복 요청을 유발하고 서버 리소스의 낭비로 이어졌습니다. 이를 개선하기 위해 저희는 Netflix의 Passport 구조를 참고하였습니다.Netflix는 유저 인증 시에 Passport 라는 id 토큰을 트랜잭션 내로 전파하는 방법을 사용하고 있는데요. 저희는 Netflix의 Passport 구조를 저희 팀에 맞게 변경하여 토스 Passport를 구현했습니다.Passport는 사용자 기기 정보와 유저 정보를 담은 하나의 토큰인데요. 앱에서 유저 식별키와 함께 API를 요청하게 되면 Gateway에서 이 키를 토대로 인증 서버.. 2025. 3. 20.
MSA 인증인가 전략1 MSA를 구성하면서 인증인가에 대한 고민을 하게됨. 이미 Gateway를 통과했다면 내부는 Private Network 환경이라 또다시 인가/인증를 거치는것이 꼭 필요하다 생각하지는 않는다. 그러면 어떻게 인증인가를 거친 사용자의 정보를 보내줄 것인가? 헤더를 이용한 검증     1.직접 정보를 추출해 헤더에 보내줄 수 있고   header("X-User-ID", getUserIdFromToken(jwtToken))   2. JWT 토큰을 보내 줄 수 있다. 첫번째 방법은 말 그대로 직접 HTTP 요청 헤더에 담아 전달하는 방법다만 SecurityContextHolder(ThreadLocal) 혹은 RequestScope Bean을 활용해 정보를 유지해야 같은 요청 스레드 내에서 정보가 유지됨.두번째는 .. 2025. 3. 18.
Swagger 통합 MSA기반으로 프로젝트를 진행하다 보면 정말 많은 서비스 모듈이 생기게 됩니다. 포스트맨과 같은 API 테스트 툴을 사용하면 상관없지만 Swagger를 사용하는 경우 각 서비스에 맞게 Swagger UI를 실행해야 하며 각각의 주소를 기억해야 하는 번거로움이 있습니다.보통 마이크로서비스는 API Gateway를 통해 연결되며, gateway의 주소만 public IP로 공개하는 것이 일반적이므로 GateWay에서 라우트하여 한 곳에서 모든 서비스의 api docs를 통합하여 볼 수 있도록 설정.  설정GateWay application.ymlspringdoc: enable-native-support: true api-docs: enabled: true path: /v3/api-docs s.. 2025. 3. 17.
멀티모듈 https://dgjinsu.tistory.com/81https://hello-judy-world.tistory.com/204https://new-pow.tistory.com/98https://velog.io/@bienlee/멀티모듈-우아한-멀티모듈-정리by.-권용근-1.-멀티모듈이란https://hyeon9mak.github.io/woowahan-multi-module/✅ 모듈Oracle Java 문서에서 모듈이란 패키지의 한 단계 위의 집합체이며, 관련된 패키지와 리소스들의 재사용할 수 있는 그룹이라고 정의하고 있다.이때 각 모듈은 독립적으로 개발, 빌드, 테스트, 배포가 가능하다.✅ 멀티 모듈멀티 모듈은 위에서 언급한 모듈들을 하나의 프로젝트 안에서 관리하는 것을 의미한다.멀티 모듈 안에서 각각의 .. 2025. 3. 13.
Error와 예외처리 try{... } catch (BaseException e) { return sendErrorResponse(exchange, e.getErrorCode(), e); } catch (Exception e) { e.printStackTrace(); return sendErrorResponse(exchange, 999, e); } 미처 처리하지 못한 예외처리의 경우         e.printStackTrace();       등으로 로그를 남길 수 있도록 한다. 이때 남겨지는 에러메시지의 경우 (파란색으로 위치가 드는 곳이 내가 작성한 코드에서 제일 처음 에러가 발현한 곳 - 인텔리제이의 기능) 2025. 3. 12.
spring cloud - Gateway 1. Gateway CustomPreFilter에 가지 않는 문제 기존 Gateway SecurityConfig@Configuration@EnableWebFluxSecuritypublic class SecurityConfig { @Bean public SecurityWebFilterChain securityWebFilterChain(ServerHttpSecurity http) { return http .csrf(ServerHttpSecurity.CsrfSpec::disable) .formLogin(ServerHttpSecurity.FormLoginSpec::disable) .authorizeExchange(auth -> auth .pa.. 2025. 3. 11.
@NoArgsConstructor,@AllArgsConstructor와(access=AccessLevel.PROTECTED) + @Builder https://oh-sh-2134.tistory.com/107 @NoArgsConstructor(access = AccessLevel.PROTECTED)를 이용하여 의미있는 생성자를 만들어 보자( + @Bulider)목표 @NoArgsConstructor와 함께 생성자를 만드는 어노테이션들을 알아보고 의미 있는 생성자를 만드는 방법을 알아보자. 내용 Entity위에서 자주 볼 수 있는 어노테이션은@NoArgsConstructor, @AllArgsConstructooh-sh-2134.tistory.com   @NoArgsConstructor(access = AccessLevel.PROTECTED) 와 @AllArgsConstructor(access = AccessLevel.PROTECTED) 의미1️⃣ @.. 2025. 3. 10.
StackOverflowError:null (feat.AuthenticationManager) ERROR 30400 --- [auth-service] [io-19095-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Filter execution threw an exception] with root causejava.lang.StackOverflowError: null 모놀리틱에서 msa로 전환을 시도해보았다.  모놀리틱에서는 잘되던 Authentication 필터에서 저 에러가 발생했다. 해결https://kwakscoding.tistory.com/51 [스프링부트] 멀티인증 Authentic.. 2025. 3. 7.