목록Backend (14)
enginner_s2eojeong

문제)로컬 환경에서는 이미지 업로드가 정상적으로 작동하는걸 확인하고 배포를 했는데 레시피 업로드 과정에서 "요청 중 오류가 발생했습니다. load failed"라는 문구가 뜨면서 이미지 업로드가 되지 않는 문제가 발생했다. 예상 원인1. application.yml 파일 크기 제한혹시 용량을 너무 작게 설정했나 싶어 내가 업로드하려던 이미지 파일들의 크기를 다 계산해보았는데 충분히 넉넉했다. PASSservlet: multipart: max-file-size: 10MB max-request-size: 10MB 예상 원인 2) S3와의 연결 문제S3와의 연결 문제인지 확인하기 위해 로그를 찍어 보았다. 코드 상에서 s3Uploader.saveFile()메서드의 로그를 통해 S3에 정상적으로 이..

2025.02.13 - [Backend/Database] - JPA에서 Index 설정하는 방법 (feat. 쿼리 속도 향상 시키기) - 1편 JPA에서 Index 설정하는 방법 (feat. 쿼리 속도 향상 시키기) - 1편ReciGuard 프로젝트 회고ReciGuard는 알레르기를 가진 사용자에게 안전한 레시피를 추천하는 서비스다. 때문에 사용자별 알레르기 정보를 반영하기 위해 정규화된 데이터베이스 구조를 설계하였s2eojeong.tistory.com2025.02.13 - [Backend/Database] - JPA에서 Index 설정하는 방법 (feat. 쿼리 속도 향상 시키기) - 2편 JPA에서 Index 설정하는 방법 (feat. 쿼리 속도 향상 시키기) - 2편2025.02.13 - [Back..

2025.02.13 - [Backend/Database] - JPA에서 Index 설정하는 방법 (feat. 쿼리 속도 향상 시키기) - 1편 JPA에서 Index 설정하는 방법 (feat. 쿼리 속도 향상 시키기) - 1편ReciGuard 프로젝트 회고ReciGuard는 알레르기를 가진 사용자에게 안전한 레시피를 추천하는 서비스다. 때문에 사용자별 알레르기 정보를 반영하기 위해 정규화된 데이터베이스 구조를 설계하였s2eojeong.tistory.com 지난 시간에는 JPA로 Index를 설정하는 방법을 배웠다.이제 Index를 활용해서 기존 JPQL 쿼리를 리팩토링 해보자 ! RecipeRepository에는 DB에서 특정 레시피를 조회하는 함수들이 존재하는데,1. 모든 레시피 조회, 2. cuisin..

ReciGuard는 알레르기를 가진 사용자에게 안전한 레시피를 추천하는 서비스다. 때문에 사용자별 알레르기 정보를 반영하기 위해 정규화된 데이터베이스 구조를 설계하였으나, 레시피와 사용자의 알레르기 정보를 매칭하고 필터링하는 과정에서 Recipe, RecipeIngredient, Ingredient, UserIngredient, User 테이블 간에 빈번한 JOIN 연산이 발생하는 문제가 발생했다. 이러한 성능 저하로 인해 데이터 로딩 시간도 길어졌고 이는 곧 사용자 경험 저하로 이어질 우려가 있다. 이를 위해 해결 방법을 강구하던 중, 작년 데이터베이스 수업 시간에 배웠던 Index가 떠올랐다.Index란?: 특정 테이블에서 데이터를 더 빠르게 검색할 수 있도록 도와주는 보조 구조인덱스는 데이터를 복사..

1. 웹 서버 (Web Server)클라이언트의 요청을 받아 정적인 웹 페이지(HTML, CSS, JavaScript, 이미지 등)를 제공하는 서버정적 콘텐츠를 처리하는 역할1. 주요 기능정적 리소스 제공 (HTML, CSS, JavaScript, 이미지, 동영상 등)클라이언트의 HTTP 요청을 받아 응답리버스 프록시(Reverse Proxy) 역할 가능 (요청을 다른 서버로 전달)부하 분산 수행 가능2. 대표적인 웹 서버Apache HTTP ServerNginxIIS3. 웹 서버 동작 방식사용자가 브라우저에서 www.helloworld.com을 요청웹 서버가 요청된 URL에 해당하는 HTML, CSS, JS 파일을 찾아 응답사용자의 브라우저가 해당 파일을 해석하여 화면을 구성📌 웹 서버는 보통 정적인..

4. 회원 도메인 개발5. 상품 도메인 개발6. 주문 도메인 개발7. 웹 계층 개발작년 하반기에 스프링부트 스터디를 진행하며 노션에 정리해놓았던 내용들입니다. 최근 연합 프로젝트를 진행하면서 당시 공부한 내용을 실제로 적용해볼 수 있었고 덕분에 JPA와 스프링 부트에 대한 개념을 더욱 확실히 다질 수 있었습니다. 이번에는 그 경험을 복습할 겸 좀 더 다듬고 정리된 형태로 블로그에도 공유해보려 합니다. 1편" data-og-description="1. 들어가기 전 - 용어 정리2. 도메인 분석 설계3. 애플리케이션 구현 준비 작년 하반기에 스프링부트 스터디를 진행하며 노션에 정리해놓았던 내용들입니다. 최근 연합 프로젝트를 진행하면서 " data-og-host="s2eojeong.tistory.com" d..

1. 들어가기 전 - 용어 정리2. 도메인 분석 설계3. 애플리케이션 구현 준비 작년 하반기에 스프링부트 스터디를 진행하며 노션에 정리해놓았던 내용들입니다. 최근 연합 프로젝트를 진행하면서 당시 공부한 내용을 실제로 적용해볼 수 있었고 덕분에 JPA와 스프링 부트에 대한 개념을 더욱 확실히 다질 수 있었습니다. 이번에는 그 경험을 복습할 겸 좀 더 다듬고 정리된 형태로 블로그에도 공유해보려 합니다.1. 들어가기 전 - 용어 정리@Repositorypublic class MemberRepository { @PersistenceContext private EntityManager em; public Long save(Member member){ em.persist(member);..