TIL29. 내배캠 3차 프로젝트 WaitLess 회고
·
TIL
내일배움캠프를 하면서 TIL이 의무인 김에 매일매일 써보겠다고 다짐했는데...일정이 몰아치면서 결국 2차때부터 아슬아슬하더니 실패해버렸다. 사실 2차부터 내배캠 측에서 수강생들을 수준별 학습반을 나눴고 대충 상중하라 치면 나는 중반이 되었다.그리고 그 수준별 학습반끼리 팀이 랜덤 배정되었는데, 우리 팀은 아무도 팀장을 원하지 않았다.물론 프로젝트에 대한 열정이 없었던 것은 아니지만 솔직히 주도하는 사람이 있는 프로젝트를 하고싶다고 생각했다.3차 프로젝트도 팀 배정 방식이 같다고 해서 실망했다. 그런데 월반제도가 있다네?못해도 기술면접 함 보는 거고, 되면 뭐 손해볼 거 없지! 하고서 냅다 월반 신청을 해봤는데 월반에 성공해버렸다.그런데 마냥 기쁘지 않았다. 나는 그 때 수목금 아침 6시부터 10시까지 알..
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의 프로토콜 사용 → 다양한 클라이언트를 통해 다른 언어에서도 사용 가능..