[WIL] 프로젝트 3주차
·
카테고리 없음
10/7 1. DB서버 분리 (data server 생성)2. upload시 feignclient 타도록 수정 10/8 1.서버 이름 더 명확하게 바꾸기internal → processingurl → fetch2.대용량 처리서버를 여러 개 띄워서..?쿠버네티스도커컴포즈 레플리카3.이미지 프로세싱 서버는 가능하면 목적별로 띄우는 게 좋다.(리사이징의 경우 부담이 큼)WebP convertor리사이징 서버등등10/9 이미지 업로드 실패 시 동작 구상@Retryable@Recover 10/10 1. 발표자료 정리 (트러블슈팅, 기술적 의사결정)2.이미지 업로드 시 originalUUID 넣는 로직 수정@PrePersist 제거 → Image 엔티티 클래스에서 메서드 생성하여 삽입 3. 업로드 실패 시 로직에 ..
파일 업로드 NoSuchFileException
·
카테고리 없음
https://girokeulhaja.tistory.com/55 CompletableFuture 비동기 처리로 응답 속도 향상 시키기기존 코드 Controller@PostMappingpublic ResponseEntity uploadImage(@RequestParam("file") MultipartFile file) { try { // 1. DB에 파일 메타데이터 저장 및 응답 ImageResponse imageResponse = uploadService.saveImageMetadata(file); // 2. 비동girokeulhaja.tistory.com 위 코드를 제대로 테스트 안 하고 응답 속도 개선만 확인했더니 대참사가 일어났다 ㅎㅎbaboㅠ 바로 NoSuchFileException 에러가 계속 ..
CompletableFuture 비동기 처리로 응답 속도 향상 시키기
·
카테고리 없음
기존 코드 Controller@PostMappingpublic ResponseEntity uploadImage(@RequestParam("file") MultipartFile file) { try { // 1. DB에 파일 메타데이터 저장 및 응답 ImageResponse imageResponse = uploadService.saveImageMetadata(file); // 2. 비동기적으로 MinIO에 파일 저장 uploadService.uploadImage(file, imageResponse); return ResponseEntity.ok(imageResponse.getOriginalFileUUID()); } catch (Exc..
[JMeter] 이미지 업로드 부하 테스트
·
카테고리 없음
1.https://jmeter.apache.org/download_jmeter.cgi Apache JMeter - Download Apache JMeterDownload Apache JMeter We recommend you use a mirror to download our release builds, but you must verify the integrity of the downloaded files using signatures downloaded from our main distribution directories. Recent releases (48 hours) may not yet be avajmeter.apache.org사이트에서 Binaries의 압축파일을 다운받아 압축을 해제 2. bi..
[WIL] 프로젝트 2주차
·
TIL
9/30   Image Upload Serverclient ➡️ 백엔드 서버로 이미지 업로드 요청이 들어온다.백엔드 서버 ➡️ 이미지 서버로 업로드 요청이 들어온다.원본 이미지를 minio/s3에 저장한다.3-1. 이미지 서버 데이터를 db에 저장한다.Queue에 작업을 넣은 후 비동기적으로 메타데이터 수정이나 리사이징 같은 추가 작업이 Internal Image Server에서 동작한다.Image URL Serverclient ➡️ 백엔드 서버로 이미지 조회/다운로드 요청이 들어온다.백엔드 서버 ➡️ 이미지 서버로 조회/다운로드 요청이 들어온다.요청 하는 이미지 정보를 db에서 가져온다.db에서 가져온 정보로 cdn을 확인한다.이미지가 없다면 minio/s3에서 이미지 url을 가져온다. 10/1 1...
[TIL 2024/10/01] docker db 연결 오류
·
TIL
매번 db 실행은 로컬에 직접 설치하여 진행했었는데이번 프로젝트에서는 docker로 실행해보고자 한다. docker-compose.ymlservices: server-data-db: container_name: server_data_db image: postgres restart: always ports: - "5432:5432" environment: POSTGRES_USER: server_data_db POSTGRES_PASSWORD: server_data_db POSTGRES_DB: server_data volumes: - server_data_db:/var/lib/postgresql/data  application.ym..
[TIL 2024/09/30] 이미지 서버 모듈
·
TIL
Image Upload Server1. client ➡️ 백엔드 서버로 이미지 업로드 요청이 들어온다.2. 백엔드 서버 ➡️ 이미지 서버로 업로드 요청이 들어온다.3. 원본 이미지를 minio/s3에 저장한다.3-1. 이미지 서버 데이터를 db에 저장한다.4. Queue에 작업을 넣은 후 비동기적으로 메타데이터 수정이나 리사이징 같은 추가 작업이 Internal Image Server에서 동작한다. Image URL Server1. client ➡️ 백엔드 서버로 이미지 조회/다운로드 요청이 들어온다.2. 백엔드 서버 ➡️ 이미지 서버로 조회/다운로드 요청이 들어온다.3. 요청 하는 이미지 정보를 db에서 가져온다.4. db에서 가져온 정보로 cdn을 확인한다.5. 이미지가 없다면 minio/s3에서 이..
삽질의 기록 :: FeignClient
·
카테고리 없음
MSA 프로젝트 중 gateway를 통해 다른 서비스를 호출 하는 과정에서 FeignClient를 사용했다. company 서비스에서 hub 서비스로 호출 중 401 에러가 났다.{ "resultCode": "ERROR", "result": "[401] during [GET] to [http://hub-service/api/hubs/3fa85f64-5717-4562-b3fc-2c963f66afa6] [HubClient#findHub(UUID)]: []"} 권한이... 왜 없지?생각하다가 hub 서비스를 호출 할 때 토큰이 없어서 접근을 못한다고 생각했다. - id: hub uri: lb://hub-service predicates: - Path=/api/hubs/**, /api/hub-pat..
[TIL 2024/09/12] 공공 데이터 API service Key
·
TIL
"Could not extract response: no suitable HttpMessageConverter found for response type [class com.three_iii.slack.application.WeatherResponse] and content type [text/xml;charset=UTF-8]" 분명 json으로 응답을 요청했는데 왜 xml로 반환이 되는지 찾아보니오류가 나면 xml 로 결과값을 주나보다. 대체 url을 어떻게 보내길래? 실체 요청 url을 확인 할 수 있는 방법을 찾다가.. 결국 반환값을 객체로 받는 것이 아닌 String으로 받아보기로 함 SERVICE ERROR SERVICE_KEY_IS_NOT_REGISTERED_ERROR 30  우려했던 ..
[TIL 2024/09/11] HTTP Interface
·
TIL
프로젝트 수행 중 gemini API를 연동하면서 HTTP 인터페이스를 새로이 알게되었다.옛날옛적에...약 4년전에 카카오나 네이버로 외부 api 연동할 때는 RestTemplate을 사용했었는데 ...... HTTP 인터페이스는 Spring6 에서 새롭게 추가 되었다고 한다. HTTP Interface를 호출하면 요청될 구현체 생성@Beanpublic RestClient geminiRestClient(@Value("${gemini.api.url}") String baseUrl, @Value("${gemini.api.key}") String apiKey) { return RestClient.builder() .baseUrl(baseUrl) .defaultHeader("..