분류 전체보기319 [AWS] API Gateway API Gateway 클라이언트 어플리케이션이 백엔드 서비스로부터 데이터를 요청하고 응답을 받을 수 있는 진입점. 웹 서비스, 마이크로 서비스, 서버리스 애플리케이션 등 다양한 백엔드 서비스의 API를 관리하고 보호하는 역할을 할 수 있다. * 리버스 프록시(reverse proxy) 리버스 프록시는 api gateway와 다른 개념이다. 리버스 프록시는 클라이언트와 서버 간의 통신을 중개하는 서버로 동작하며, 로드 밸런싱, 보안, 캐싱 등의 역할을 한다. 물론 API gateway가 리버스 프록시의 역할을 할 수는 있다. API Gateway의 기능을 간략하게 살펴보면 다음과 같다. 1. API 라우팅 클라이언트가 요청하는 API 엔드포인트와 백엔드 서비스 간의 연결 관리. 요청 API 경로에 따라 적.. 2023. 5. 30. MSA 간 데이터 동기화 MSA 구조로 아키텍쳐를 설계하면 다음과 같은 고민이 있다. 1. authService와 PostService가 있다고 존재한다. 2. authService는 유저들의 authentication, authorization을 해주는 서버로, 회원가입, 로그인, 유저 데이터 수정과 같은 역할을 한다. 3. PostService는 게시판 서비스로 유저들이 게시글을 올리고 다른 유저의 게시글을 조회하고 커멘트를 남기는 서비스이다. ---> 이때 authService와 PostService를 각각의 마이크로서비스로 나누어 운영한다면 PostService에서는 유저 데이터를 어떻게 사용할 수 있을까? 이다. 즉 PostService도 유저 데이터가 필요하다. 게시글을 작성하고 조회하고 코멘트를 남기는 등의 작업은 .. 2023. 5. 24. jpa 성능 최적화하기2 (update VS delete) 이전 글과 같은 상황에서, Ask를 삭제한다고 해보자. 이때 AskImage, Comment는 cascade = ALL 로 지정되어 있어서 Ask를 JPA의 CrudRepository를 사용하여 삭제한다면 AskImage, Comment가 자동으로 모두 삭제된다. @Entity public class Ask{ //... 중략 @OneToMany(mappedBy = "ask", cascade = ALL) private List askImages = new ArrayList(); @OneToMany(mappedBy = "ask", cascade = ALL) private List comments = new ArrayList(); } 그런데 만약 Ask가 2개의 이미지를 가지고 있고, 3개의 코멘트를 가지고 .. 2023. 3. 4. jpa 성능 최적화하기1 (하나의 엔티티에 두개의 toMany 연관관계) 한명의 User가 여러개의 Ask를 작성할 수 있고, 하나의 Ask는 여러개의 이미지와 여러개의 Comment를 가질 수 있다. Ask를 조회하는 API가 있는데, 해당 API 의 응답 객체는 Ask데이터, User 데이터, Ask의 이미지들(AskImage), Ask의 Comment들을 모두 필요로 한다. 이를 Ask Id를 가지고 조회하는 QueryDsl 코드는 다음과 같다. Ask ask = queryFactory .selectFrom(ask) .where(ask.id.eq(askId)) .fetchOne(); 하지만 이렇게 하면 Ask의 User, AskImage, Comment들은 모두 Lazy로 설정되어 있기 때문에 이들을 불러오는 쿼리가 발생한다. 즉 Ask select, User selec.. 2023. 3. 3. 이전 1 2 3 4 5 6 7 8 ··· 80 다음