TIL28. FeignClient로 AI API 가져오기 + 인증 @PreAuthorize
·
TIL
2차 프로젝트는 화요일에 제출했다.왜 이제서야 TIL을 쓰냐면 🐶같이 바빴기 때문이다... (이건 인간학대임...) 🤖 FeignClient로 AI API 가져오기1차 때와 같은 Gemini API를 가져옴. 그런데 이번엔 FeignClient로 ㅇㅇ1. 구현1) GeminiClient.java@FeignClient(name = "geminiClient" , url = "https://generativelanguage.googleapis.com/v1beta/models")public interface GeminiClient { @PostMapping("/{model}:generateContent") GeminiResponseDto getCompletion( @PathVariable("model") ..
TIL27. 주문 만들기 + Client 연결 실패 문제 해결!
·
TIL
1️⃣ 주문 생성주문 만드려고 하는데 넘 헷갈려서 그려봄.// 주문 생성@Override@Transactionalpublic OrderResponseDto addOrder(OrderRequestDto orderRequestDto) { UUID supplyCompanyId = orderRequestDto.getOrderSupplyCompanyId(); // 공급업체 ID CompanyInfoDto supplyCompanyInfo = companyServiceClient.getCompany(supplyCompanyId); // 공급업체의 허브ID 검색 후 허브 재고 조회 UUID supplyCompanyHubId = supplyCompanyInfo.getCompanyHubId(); // 공급업체 담당 허브 ..
TIL26. 상품 만들기 (2) - 수정, 삭제 + Git Conflict, 401 Error
·
TIL
3️⃣ 상품 수정PatchMapping 처음 해봄.상품의 모든 정보를 받는 게 아니라 Map로 일부분만 받고 수정하는 식임.근데 @RequestBody 안 붙여놓고 왜 안되지??? 이러고 있었음.public void modifyProductInfo(String key, Object value, String userRole) { switch (key) { case "productName" -> this.productName = (String) value; case "productQuantity" -> this.productQuantity = (Integer) value; case "productCompanyId" -> { if (!"HUB_MA..
TIL25. 상품 만들기 (1) 생성, 조회
·
TIL
1️⃣ 상품 생성MASTER : 어디서나 상품 생성 가능HUB_MANAGER : 본인 허브에 소속된 상품만 생성 가능→ 업체에 저장된 허브ID와 허브관리자ID로 가져온 허브ID가 일치하면 상품 생성 가능업체담당자: 업체담당자ID와 유저ID와 일치하면 상품 생성 가능// 상품 생성@Overridepublic ProductResponseDto addProduct(ProductRequestDto productRequestDto, String userRole, UUID userId) { // 업체 조회 CompanyInfoDto companyInfo= companyServiceClient.getCompany(productRequestDto.getProductCompanyId()); switch(userRole)..
TIL24. 업체 만들기
·
TIL
userId나 userRole을 user-service에서 받아와야 하는 건가?만약에 jwt 토큰으로 받아서 쓴다면 각 서비스에서 파싱을 해야하나?? 너무 비효율적 아닌가?? 라고 고민하니까 초비님이 던져주심. @RequestHeader에 받아쓰거라... JWT 토큰에 userId 포함시키기기존 access 토큰에 userId를 그냥 포함시켜서 보내주면 굳이gateway에서 email을 보내줄 필요없이 userId를 보내주면 다른 서비스 모듈에서 FeignClient를 사용할 필요가 없다라는 생각이 들었다.기존 JWTUtivelog.io1. 업체 생성유저가 로그인을 함. 그럼 유저 정보를 어디서 받아오냐?→ user-service에서 보내주냐, 게이트웨이에서 파싱해서 보내주냐?권한 - 유저 ROLE이 허..
TIL23. 공통 모듈 만들기 - Exception, BaseEntity
·
TIL
슬슬 ZEP 캐릭터 코디하기가 빡세짐. 이미 한번씩 다 해본 것만 눈에 들어옴. 전화영어하는데 드라마 The Inbestigators 시즌3 캔슬 이야기를 하려고 했는데 드라마라고 하니까,선생님이 몹시 흥분하며 김수현 이야기를 했다..... 신도 안 믿는데 오마이갓 소리만 나왔음.이게 바로 나라 망신...?  [MSA] 개인 프로젝트 Monolithic to MSA 전환기 - (2) 멀티 모듈 구성하기이제 본격적으로 모놀리식 아키텍쳐 프로젝트를 MSA 아키텍쳐로 전환해보고자 합니다! 이번 포스팅에서는 단일 모듈로 구성되어 있는 프로젝트를 멀티 모듈로 구성하는 과정을 담아보겠습니다.ksh-coding.tistory.com1. root 디렉토리에 settings.gradle, build.gradle 넣어 줌..
TIL22. SAGA Pattern + JMeter
·
TIL
내용 다 날라감. 티스토리 일 안해?1. SAGA Pattern분산 트랜잭션의 주요 개념으로 트랜잭션을 여러 단계로 분할하여 각 단계를 독립적으로 실행하고,실패 시 보상 트랜잭션을 수행하여 롤백함.✉️ 메세지의 흐름주문이 정상 작동한다면 : Order -ProductQueue-> Product -PaymentQueue-> Payment주문에 에러가 난다면 : Payment -ProductErrQueue-> Product -OrderErrQueue-> Order1) Order ApplicationOrderApplicationQueueConfig더보기package com.market.order;import org.springframework.amqp.core.Binding;import org.springfr..
TIL21. 물류 관리 및 배송 시스템 프로젝트 시작!!
·
TIL
2차 플젝 팀 배정이 되서 15조가 되었다.내배캠하면서 점점 외출이 귀찮 + 힘들어지기 시작했다고 초비님이랑 이야기했더니 MBTI 검사 다시 해보라고 하셨다.근데 ㄹㅇ바뀜. 다시 INTJ를 되찾았다. 나 아직 상상력 부족한데 몰까,,,여하튼 새로운 우리 조는 INTJ만 나 포함 3명이다... 2차 프로젝트의 주제는 [ 물류 관리 및 배송 시스템 ] + MSA이다. 간단하게 내가 이해한 걸 나열하자면,모든 업체는 허브 소속Hub and Spoke : 모든 일반 허브는 중앙 허브를 거쳐야 한다.만약, 공급업체의 소속 허브가 일반 허브라면?공급 업체의 소속 일반 허브(= 상품이 보관되어 있는 허브, 출발지 허브)➡️ 출발지 허브의 중앙 허브➡️ 도착지 허브의 중앙 허브➡️ 수령 업체의 소속 허브(= 도착지의 ..
TIL20. Kafka
·
TIL
1. Kafka분산 스트리밍 플랫폼으로 주로 실시간 데이터 피드의 빅데이터 처리를 목적으로 사용됨.Kafka는 메세지 큐와 유사하나, 대용량 데이터 스트림을 저장하고 실시간으로 분석 및 처리하는 데 중점을 둠.역할대용량 데이터 실시간 처리데이터 통합내결함성 : 데이터 손실 없이 안정적인 데이터 저장 및 전송장점신뢰성(Reliability)데이터 복제 : 데이터를 여러 브로커에 복제해 저장해서 단일 브로커 장애시에도 데이터 손실 방지확인 메커니즘 : 소비자에게 데이터가 성공적으로 전달되었는지 확인하는 기능 제공유연성(Flexibility)다양한 소비자 패턴 : 여러 소비자가 동시에 데이터 구독 가능프로토콜 지원 : 기본적으로 Kafka의 프로토콜 사용 → 다양한 클라이언트를 통해 다른 언어에서도 사용 가능..
TIL19. RabbitMQ
·
TIL
1) RabbitMQ메세지 브로커 : 데이터(메세지)를 송신자(프로듀서)로부터 수신자(컨슈머)에게 전달하는 중간 매개체 역할RabbitMQ는 메세지를 큐(queue)에 저장하고 필요할 때 적절한 수신자에게 전달함.역할비동기 처리 : 데이터를 비동기적으로 처리하여 시스템의 응답성 증가부하 분산 : 여러 소비자에게 메시지를 분산시켜 시스템의 부하 분산내결함성 : 메시지를 안전하게 저장하여 시스템 장애 시 데이터 손실 방지장점신뢰성(Reliability)메세지 지속성 : 메세지를 디스크에 저장해 장애 발생시에도 손실 방지확인 메커니즘 : ACK 메커니즘을 지원하여 안정적인 메세지 전달 보장유연성(Flexibility)다양한 메세지 패턴 지원 : 단일 소비자, 다중 소비자, 라운드 로빈, 팬아웃, 주제 기반 등..