728x90 전체 글149 [Project] 분산환경에서 캐시는 어떻게 적용해야할까? 우리가 보통 어플리케이션 레벨 기준으로 캐시를 적용한다고 하면 2가지로 나뉜다. 왼쪽 그림과 같은 로컬 캐시와 오른쪽 그림과 같은 글로벌 캐시로 나뉜다. 로컬 캐시와 글로벌 캐시는 각각 장, 단점을 가진다. 구분로컬 캐시 장점로컬 캐시 단점분산 캐시 장점분산 캐시 단점응답속도JVM 메모리 직접 접근으로 초저지연인스턴스 당 메모리 제한 (수백 MB~수 GB)네트워크 홉이 있지만 여전히 빠른 조회 (ms 단위)네트워크 비용·레이턴시(수십~수백 μs) 발생일관성단일 인스턴스 내 강력 일관성노드 간 데이터 불일치 가능단일 소스(클러스터)에서 일관성 관리 가능클러스터 복제 지연 시 일시적 불일치확장성애플리케이션 인스턴스 늘리면 캐시 미스 증가스케일아웃해도 캐시 데이터 공유되지 않음노드 추가로 무제한 수평 확장 .. 2025. 4. 23. [Project] 인스턴스 서버에 너무 많은 부하가 쏠리다면? 지금부터 우리 서비스의 아키텍쳐를 우선 설명하겟다. 초기 아키텍쳐고 서버에선 jwt을 엑세스토큰과 리프레쉬토큰로 검증해서 사용하고 있는데 문제점이 발생했다.토큰이 유효한지 확인하려면 아래와 같이 계속해서 데이터베이스를 조회하는 과정이 있었다. 이렇게 계속해서 데이터베이스를 거치는 과정은 비용이 클 뿐만 아니라 사용자에게 안좋은 영향을 끼치고 있었다.이러한 문제점을 데이터베이스를 거치는 대신 아래와 같이 Redis를 사용하여 서비스 로직을 단축시키는 아이디어 적용해 우리 서비스에 적용할 수 있었다. 그래서 그다음 아키텍쳐 구조는 아래와 같이 진화할 수 있었다. 우리 서버에서는 자주 조회되는 데이터에 대해서 로컬캐시로 저장하고 있었다. 캐싱전략은 Cash Aside 전략을 사용해 아래와 같은 흐름으로 동.. 2025. 4. 17. [CS] 데이터베이스 트랜잭션 격리 수준과 낙관적 락, 비관적 락의 비교 트랜젝션에 대해서 아직 정확히 모르는 것 같아 정리하고자 한다. 우선 트랜젝션은 무엇일까?? 데이터베이스 트랜잭션(Database Transaction)은 데이터베이스에서 수행되는 작업의 논리적인 단위라고 한다. 이렇게 정의로만 들으면 이해가 잘 안된다. 논리적인 단위? 차라리 사전적 의미인 거래라고 생각하면 편할 것 같다.내가 다른사람한테 송금할때 내 계좌에서 돈이 빠져나가고 다른 사람 계좌에 입금이 되는 작업이 하나로 이루어져야되기에 이런 것을 트랜잭션으로 이해하면 좋은 것 같다. 그래서 이러한 트랜잭션은 4가지 특성이 있는데 아주 유명한 ACID 특성이다. Atomicity (원자성)트랜잭션의 작업들이 모두 수행되거나 전혀 수행되지 않아야 함중간에 오류가 나면 모든 작업이 취소(Rollback).. 2025. 3. 28. [Project] Spring 직렬화, 역직렬화 문제 - getWriter() has already been called for this response 프로젝트 진행 중 처음 보는 새로운 에러이다. 정보도 많이 없어서 게시물을 작성한다.2025-02-28T09:25:04.226Z WARN 1 --- [sejong-auth] [io-8080-exec-10] .m.m.a.ExceptionHandlerExceptionResolver : Failure in @ExceptionHandler org.example.backend.common.exception.ExceptionControllerAdvice#handleException(HttpServletRequest, Exception)java.lang.IllegalStateException: getWriter() has already been called for this response at org.apache... 2025. 2. 28. 이전 1 2 3 4 ··· 38 다음 728x90