📍QueryDSL JPA에서 제공하는 객체지향쿼리인 JPQL(Java Persistence Query Language)을 통해 동적 쿼리를 구성하면 코드가 굉장히 난잡해진다는 것을 느낄 수 있다. JPQL은 문자열을 사용한다. 문자열을 조건에 따라 이어붙이는 형식으로
Server Sent Event
실시간 채팅 구현하기
LongPolling 약간의 딜레이가 있어 아쉬운 부분이다. > 채팅을 전송 시간 기준 관리자에게 알람이 전송되어 화면에 나타날 때까지의 시간을 측정했다. -> 평균 179ms SSE > 채팅을 전송 시간 기준 관리자에게 알람이 전송되어 화면에 나타날 때까지의
DB 성능 개선할 때 ‘SQL 튜닝’을 가장 먼저 해야 하는 이유 >1. SQL 튜닝을 제외한 나머지 방법은 추가적인 시스템을 구축해야 한다. 따라서 금전적, 시간적 비용이 추가적으로 발생한다. 조금 더 복잡해진 시스템 구조로 인해 관리 비용이 늘어난다. 그에 비해 S
💡 Redis는 데이터 처리 속도가 엄청 빠른 NoSQL 데이터베이스NoSQL 데이터베이스를 풀어서 얘기하자면 Key-Value의 형태로 저장하는 데이터베이스레디스(Redis)는 인메모리(in-memory)에 모든 데이터를 저장한다. 그래서 데이터의 처리 성능이 굉장
낙관적 락은 읽기 작업이 많을 경우 성능상 이점이 있습니다. 데이터를 읽을 때 DB 레벨에서 락을 걸지 않기 때문입니다. 이로 인해 데드락 또한 발생할 여지가 없습니다. 하지만 가정 자체가 트랜잭션 간 충돌이 발생하지 않는 것이기 때문에, 쓰기 작업에 대한 동시성 처리
결제하지 않은 주문 목록 다음 주문할 때 삭제되도록 하였지만 → 다음 주문하지 않으면 저장된 주문데이터가 그대로 남아있는 문제가 있습니다.주문 데이터 삭제하면 주문에 딸린 주문상품목록도 함께 삭제된다.\-> order가 100만개 - order item이 order당
문제상황 : 알림생성 및 통보와 관련된 기능에 댓글 기능 또한 의존성을 가지게 되어 알림영역에서의 문제가 발생 시 문의사항이 정상적으로 작성되지 않을 수 있습니다. 수정 사항은 Kafka 이벤트를 사용하여 문의사항 답변 생성 시 알림을 비동기적으로 처리하는 것입니다.
도메인 생성 <img s
Docker를 왜 배우는 걸까? > 이식성 : 특정 프로그램을 다른 곳으로 쉽게 옮겨서 설치 및 실행할 수 있는 특성 Docker를 사용하면 아래와 같은 장점이 있다. 매번 귀찮은 설치 과정을 일일이 거치지 않아도 된다. 항상 일관되게 프로그램을 설치할 수 있다.
Jenkins 이용하여 CICD 구축
nGrinder > nGrinder 는 Grinder 라는 내부 엔진을 사용하며 nGrinder 는 이 엔진을 controller 와 agent로 감싸 다수의 테스트를 병렬처리할 수 있도록 한다. controller 와 agent 는 nGrinder 의 주요 요소이다.
아키텍처 > 레디스 캐싱 상태로 진행하겠습니다. Local Mac M1 Pro (CPU : 8코어 / RAM : 16GB) 100명 Vuser 증가 500명 -> 에러 발생 > 500명 이상으로 사용자를 늘릴수록 에러가 급증하고 서버에서 Read Time Ou