➿ 서비스 아키텍처

스크린샷 2023-04-15 오후 7.35.16.png

  1. SQL의 사용이유 :

  2. 리액트 쿼리의 사용이유(FE) :

✅ 기술적 의사결정

🔸 QueryDsl 적용

  1. 사용이유 : 복잡한 조합을 이용하는 경우의 수가 많은 상황에서 필요.

  2. 문제상황 : 검색기능을 구현할 때 일반적으로 Spring Data JPA에서 제공하는 기능으로는 구현하기 어렵다고 판단.

  3. 적용방법

    1. QueryDsl을 이용해서 동적으로 쿼리를 생성
  4. 의견조율

  5. 의견 결정

    1. 검색기능 구현을 위해서 QueryDsl을 적용
    2. cqrs패턴

🔸 S3 이미지 저장 및 리사이징

  1. 사용이유 : 이미지를 저장할 공간이 필요하며, 이미지를 리사이즈 할 필요가 있음 (프론트 랜더링시 무거워지는 현상을 방지하기 위함)
  2. 문제상황 : 이미지를 어디에 저장할것인가? 어떻게 리사징할 것인가?
  3. 적용방법
    1. 1안 : AWS S3를 이용해서 버킷에 이미지를 저장하고 S3 url을 DB에 저장, 조회
    2. 2안 : 파일자체를 받아서 서버에 저장하고 호출하는 방식.
    3. 3안 : 이미지 리사이징 방법중 AWS LAMDA를 이용해 이미지 크기를 줄이는 방법.
    4. 4안 : 코드를 이용하여 이미지 리사이징
  4. 의견조율
    1. S3를 사용한 이유 : 비용, 안정성을 고려해서
    2. 파일자체를 서버에 저장하는 경우 구현하기 쉽지만 서버의 용량이 늘어나고 안정성이 떨어진다
    3. 이미지 리사이징을 LAMDA의 함수를 통해서 진행하는 경우 자동으로 리사이즈 이미지가 s3에 저장되는 장점이 있지만 람다 함수가 실행되는 시간이 걸리고 S3사용비용이 증가할수 있고 이미지 크기를 유연하게 처리할수없는 단점이있다.
    4. 이미지 리사이징을 코드상에서 타입을 변환해서 축소하는 경우 원하는 사이즈로 리사이징 하기 편리하며 비용이 적게들지만 단점으로 이미지가 매우 커지거나 많은경우 람다함수를 이용할때보다 성능이 떨어 질수있다.