본문 바로가기

프로젝트7

핀테크 서비스 - 인덱스 사용 개인 프로젝트인 핀테크 서비스를 개발하고 피드백 받은 내용 중 인덱스를 사용해보는것이 있어 적용해보았다 인덱스 인덱스는 책뒤의 색인과 비슷하다 즉 어느 페이지에 어떤 단어가 있는지 대략적으로 파악할수 있게 하는것이다 아래가 그 예 이다 위 그림에서 "Gad"라는 인덱스 키를 갖는 레코드를 찾는다고 가정해보자. 부모 노드에서 "Gad"라는 인덱스 키가 있는지 찾아본다. Aamer는 자식 노드 2번이고, Jaana는 자식노드 3번인 것을 확인할 수 있다. 즉, "Gad"는 없는 것 처럼 보인다. 그러나 기본적으로 정렬되어 있으므로 "Aamer"와 "Jaana" 사이에 "Gad"가 있을 수 있다는 것을 알 수 있다. "Aamer"가 가리키는 자식 노드 2번 페이지로 가서 다시 탐색하는게 적절하다. ("Jaan.. 2024. 4. 10.
매장 예약 - Redis 캐시 적용 매장 예약 서비스에도 성능 개선을 해보기 위해 Redis 캐시를 적용해 보기로 했다 그래서 생각해보니 특정 매장의 예약 조회 이부분이 사용자의 요청이 많을 것 같아 캐시를 적용 하기로 했다 캐시 적용위와 같이 @Cacheable 어노테이션을 붙여주어 캐시를 저장하도록 했다 캐시 적용 결과캐시를 적용해봤더니 응답속도를 939ms -> 26ms 로 개선하였다 이렇게 보니까 확실히 체감되는것 같다   하지만 아래와 같이 동작했을때 문제가 발생한다 1. 특정 매장의 예약 정보를 조회한다 (이때 캐시가 저장됨)2. 그 매장에 예약 요청을 한다 (저장)3. 다시 그 매장의 예약 정보를 조회한다 이렇게 되면 3번에서는 2번에서 요청한 예약 정보는 조회되지 않는다 왜냐하면 캐시에 이미 해당 키로 저장되어 있기 때문에 .. 2024. 2. 22.
매장 예약 서비스 - 동시성 문제 매장 예약 서비스를 개발하면서 중요하다고 생각한 제약사항 중 하나는 예약 가능 여부가 중요하다고 생각했었다 그래서 해당 매장에서 예약 하려는 시간대의 남아있는 테이블 수를 계산해 예약 가능 여부를 체크했었다 하지만 문제는 동시에 예약 요청이 들어오는 경우는 전혀 생각하지 않았었다.. 동시성 문제두개의 요청 중 하나의 요청만 예약 가능하다고 할때 매장에다 동시에 예약 요청을 보내게 되면 둘다 예약에 성공한다 예시로 총 테이블 6개를 보유한 매장이 있다 예약 하려는 시간대에 이미 5개의 테이블이 예약되어 있는 상황 즉 테이블 1개만 예약 가능한 상황이다 1개의 테이블 예약 요청을 동시에(같은 시간대에) 보내게 되면 첫번째 요청은 성공해야하고 두번째 요청을 실패해야 하지만 둘다 예약에 성공한다이런일은 발생하면.. 2024. 2. 19.
매장 예약 서비스 - Spring Jpa 연관 관계 이번에 매장 예약 서비스를 개발할때  Spring data jpa로 개발하다보니 연관 관계에 대해 처음 알게되어 정리하고자 작성해보려고 한다 연관 관계DB의 테이블은 외래키를 사용해서 방향의 개념 없이 연관 관계를 맺을수 있다 생각해보면 외래키로 연결되어 있는 테이블들은 서로 조인해서 조회할수 있다하지만 객체는 다르다객체의 연관관계는 참조용 필드를 가지고 있는 객체만 연관된 객체를 조회 할수 있다 방향의 개념이 있는 것이다  단방향과 양방향객체 관계에 한쪽만 반대쪽을 참조하는 관계를 단방향 양쪽 모두 서로를 참조하는 관계를 양방향이라고 한다단방향인경우 참조용 필드를 갖고 있는 객체에선 연관된 객체를 조회가 가능하지만 반대로 가지고 있지 않는 객체쪽에서는 조회되지 않는다  내 프로젝트에서 살펴보면 Rese.. 2024. 2. 18.