분류 전체보기
-
spring security oauth2 (vscode,web) 로그인 환경 구축카테고리 없음 2025. 10. 28. 11:04
1.용어 정리(중요)Authorization Server: 구글Client(또는 RP): 스프링 기반 웹 앱 (로그인 시작/콜백 처리 주체)Resource Server: 여러분 API 서버(액세스 토큰으로 보호 자원 제공). 실서비스에선 Client와 Resource Server가 같은 앱일 수도 있지만 역할은 구분해서 생각하세요.OIDC(OpenID Connect): “로그인(신원)”을 다루는 확장 규격. 구글 로그인은 사실상 OIDC 사용이 표준입니다. 2. oauth2 로그인 전체 플로우 [브라우저] │ 1. GET /oauth2/authorization/{registrationId} ← 로그인 버튼/링크 ▼[Spring Security Filter Chain] │ │ (A) O..
-
Spring의 @Transactional은 AOP 프록시 기반 프록시를 “통과하는” 메서드 호출만 트랜잭션 어드바이스가 적용된다.Spring 2025. 10. 13. 17:12
Spring의 @Transactional은 AOP 프록시 기반이라서, 프록시를 “통과하는” 메서드 호출만 트랜잭션 어드바이스가 적용된다는 점입니다. 같은 클래스 내부에서 this.someMethod()로 자기 자신을 호출하면 프록시를 거치지 않으므로, @Transactional이 동작하지 않습니다. 왜 적용 안 되나요? (프록시 구조 이해)스프링은 @Transactional을 보고 빈의 프록시(Proxy)를 만듭니다. (JDK 동적 프록시나 CGLIB)🧩 예시 코드 구조@Servicepublic class OrderService { @Transactional public void placeOrder(String itemId) { System.out.println(">>> 비즈니스..
-
스트라이프 api를 이용해 결제시스템 로그 쌓기 (with spring boot,mongodb)카테고리 없음 2025. 9. 8. 15:45
왜 MongoDB에 따로 저장하나? 이벤트/웹훅은 JSON 구조가 가변적 → 문서형 DB가 유리.쓰기 폭주 + 읽기 드묾: 결제 피크에 이벤트가 쏟아짐 → TTL로 자동 정리(저장비 절감).장애 분석/정합성 검증(리컨실리에이션): “Stripe에선 성공인데 우리 DB는 실패?” 같은 상황에서 원본 페이로드가 생명줄.멱등/재시도/비동기 처리: Outbox/Idempotency 레저(원장)로 중복 방지와 안전한 재처리. MongoDB에 담으면 좋은 것 (무엇 & 왜) 원본 웹훅 이벤트(raw) + 서명/헤더왜: 장애 시 재현/분석, Stripe 재전송 대비, 중복 차단(이벤트 ID unique).TTL: 30~180일.Idempotency 레저(우리 서버가 Stripe에 보낸 요청 이력)왜: 결제/환불 ..
-
네이티브 머신 코드,HotSpot JVM , jvm 메모리구조자바웹프로그래밍/JAVA 2025. 9. 5. 10:20
네이티브 머신 코드 jvm 성능 공부 및 postgresql에서 쿼리 최적화를 하기 위해서 공부를 하고있는데 성능이 좋아지기위해 자주 사용 하는 코드를 네이티브 머신코드로 변경하다는 말을 자주 본다. 해당 네이티브 머신코드는 cpu가 직접 이해할수있는 이진 코드이며 (11111111 10101010) 같은 코드라고 보면된다. HotSpot JVMHotSpot JVM은 단순히 통계만 모으는 게 아니라 → 그 통계를 바탕으로 “어떤 코드를 JIT 컴파일할지, 어떤 최적화를 적용할지”까지 결정하는 엔진 2. HotSpot JVM의 실행 과정처음 실행 시 (Interpreter)자바 바이트코드(.class)는 바로 CPU에서 실행할 수 없으니, 처음에는 인터프리터가 한 줄 한 줄 해석하면서 실행합니다.이 단..
-
상관 서브쿼리(Correlated subquery) 와 비상관 서브쿼리(Uncorrelated) 조인에 대해 성능 평데이터베이스/postgresql 2025. 9. 3. 16:38
1. 상관 서브쿼리 (Correlated Subquery)서브쿼리가 바깥 쿼리의 컬럼을 직접 참조합니다.즉, 바깥 쿼리의 각 행(row)마다 서브쿼리가 실행됩니다 → 반복 실행 때문에 성능 부담이 커질 수 있습니다. -- 각 사원의 급여가 해당 부서의 평균보다 높은 사원 찾기SELECT e.emp_id, e.name, e.salaryFROM employees eWHERE e.salary > ( SELECT AVG(e2.salary) FROM employees e2 WHERE e2.department_id = e.department_id); 여기서 e.department_id는 바깥 쿼리 컬럼을 참조합니다.각 사원의 department_id마다 AVG()가 다시 계산됨 → 실행 횟수 ↑..
-
query 튜닝 대량 데이터 hash_join 유도후 다시 급격히 느려짐.데이터베이스/postgresql 2025. 8. 29. 10:26
기존 쿼리 속도가 느려서 체크해보니. join들이 index_join을 하고있지만 대량 조인(배치)라 속도가 느려짐. set local enable_mergejoin = false;set local enable_nestloop = false;설정을 하여 hash_join을 유도해 속도를 1초까지 단축시킴 . 하지만 어느순간 갑자기 속도가 10초이상으로 느려짐.. Planning Time: 23.284 msJIT: Functions: 1001 Options: Inlining true, Optimization true, Expressions true, Deforming true Timing: Generation 68.033 ms, Inlining 823.403 ms, Optimization 5257.6..
-
쿠버네티스 서버 CI ,DI 구조까지 완벽 가이드 (with 젠킨스편) 2탄Devops/kubernetes 2025. 8. 27. 14:19
helm을 이용한 jenkins 설치Jenkins Controller: 클러스터 내부 jenkins 네임스페이스에 Helm으로 설치Jenkins Agent: Kubernetes Plugin으로 필요 시마다 파드로 생성(오토스케일)이미지 빌드: Kaniko(도커 데몬 없이 빌드) → 보안/간편배포: Helm(권장) 또는 kubectl apply접근권한: jenkins ServiceAccount + 최소권한(RBAC)으로 대상 네임스페이스만 조작환경 분리: dev / stage / prod 각각 네임스페이스 + 서로 다른 RoleBinding/크리덴셜 1) Helm 값에 JCasC로 멀티 JDK 등록values-multi-jdk.yaml (새 파일)controller: # 리소스/Java 옵션 resou..