본문 바로가기

전체 글48

캐시의 선택적 무효화 1. 배경.현재 Redis를 활용해 특정 가게의 상세 정보, 메뉴 리스트, 리뷰 데이터를 캐싱하여 성능을 최적화하고 있습니다. 하지만 데이터 변경 시 캐시 무효화 전략이 다음과 같은 문제를 야기할 수 있다.전체 캐시 삭제의 비효율성:가게 상세 정보나 메뉴의 일부 데이터가 변경되어도 전체 캐시를 무효화하는 방식으로 인해 필요 이상의 데이터가 삭제되고 재로드 된다.데이터 일관성 문제:여러 서버에서 동시 요청 시 캐시가 즉시 갱신되지 않아, 잘못된 데이터가 반환될 가능.TTL 기반 무효화 한계:리뷰 데이터는 TTL로 무효화하지만, 빈번한 데이터 갱신 시 TTL 만료 전까지 오래된 데이터가 유지될 수 있다.2. 문제캐시 무효화 범위의 비효율성:데이터 변경 시 필요 이상의 캐시가 무효화되거나, 일부 데이터가 잘못.. 2024. 12. 17.
Trouble SHOOTING (SPRING - PLUS) application.YML -> H2-CONSOLE 에 연결이 안되는 이슈 발생.  내가 알아본 문제점, 왜지? 라는 생각과 함께 h2에 대해서 다시 한번 알아보았다. spring: application: name: spring-plus h2: console: enabled: true path: /h2-console  datasource: driver-class-name: org.h2.Driver url: jdbc:h2:mem:db;MODE=MYSQL username: sa password:  전체 설정 목적은 다음과 같았다. H2 메모리 DB:빠른 테스트 및 개발 환경에서 사용.매번 초기화되므로 데이터 영구성은 없음.JPA/Hibernate:데이.. 2024. 11. 21.
Trouble Shooting 담당 일정 배치에 관하여  처음 일정 관리 프로그램을 설계할 때, "개인 일정 관리"에 초점을 맞춰 설계한 것이 문제점으로 떠올랐다. 이로 인해 팀 일정 관리 또는 여러 사용자가 같은 일정을 관리하는 시나리오를 제대로 고려하지 않았을 가능성이 있었다. 따라서, 엔티티 관계와 데이터 모델링에서 개인 일정 관리와 팀 일정 관리의 차이점을 반영할 필요가 있다. 문제점의 본질 인식 일정 작성 유저가 담당 유저들을 배치할 수 있는 기능이 구현되었는가? 라는 평가표의 일부를 보았기에 여기서 다대다 관계에 관해서 떠올릴 수 있었다. 기존의 데이터 모델링과 엔티티 관계가 1:1 또는 단순한 1관계를 기반으로 하고 있을 가능성이 있다. 하지만 팀 기반의 일정 관리에서는 N관계가 주로 발생하며, 각 유저의 역할에 따라 접.. 2024. 10. 31.
Serialize / Deserialize Serialize( 직렬화 ) 객체를 JSON이나 XML과 같은 문자열 형식으로 변환하는 과정을 직렬화Spring과 같은 웹 프레임워크에서 컨트롤러가 데이터를 내보내는 과정을 "직렬화"라고 표현하는 이유는, 컨트롤러가 객체를 특정 포맷(예: JSON, XML 등)으로 변환하여 클라이언트에게 전송하기 때문입니다. 이 과정은 프로그래밍에서 "직렬화(Serialization)"의 정의와 동일한 의미를 가집니다. 컨트롤러 메서드 정의@RestControllerpublic class UserController { @GetMapping("/user") public User getUser() { return new User("Alice", 25); }} User 객체 정의public cl.. 2024. 10. 25.
Transactional 의 이해 선언적 트랜잭션 설정 파일 or 어노테이션 방식으로 간편하게 트갠객션에 관한 행위를 정의하는 것임.  트랜잭션이란?데이터베이스 관리 시스템 or 유사한 시스템에서 상호작용하는 단위.여기서 유사한 시스템이란 트랜잭션이 성공과 실패가 분명하고 상호 독립적이며, 일관되고 믿을 수 있는 시스템을 의미.데이터의 정합성을 보장하기 위해 고안된 방법.A  - Atomicity 원자성C - Consistency 일관성I - Isolation 독립성D - Durability 영구 ?????? 세상의 이치 ) 아이폰을 사면 돈을 지불해야 함. 근데 아이폰을 들고 나르면 transaction을 어긴거임. 즉, transaction으로 묶는다는게 Autocommit을 없앤다는 거임.  !!!!!!! 목적오류로부터 복구를 허용.. 2024. 10. 21.
일정 관리 앱 develop 트러블 슈팅 트러블 슈팅  406 Not Acceptable 에러문제상황Spring 프로젝트에서 클라이언트 요청에 대한 응답을 보낼 때 , 갑자기 406 에러가 발생했다. '왜 응답을 보낼 수 없는 거지' property 문제인가 하고 한참을 고민했다. 해결방법406 에러 발생의 주된 요인은 3가지라고 한다. jackson 라이브러리가 없기 때문인 경우. 다만 SpringBoot 프로젝트는 spring-boot-starter-web 에 기본적으로 jackson 라이브러리가 포함되어 있으니 패스.Accept에 사용된 MediaType이 설정 내에 없는 경우. 이것도 아닌거 같았다.Getter 메서드가 없어서. 나의 해당 사항이다.@Getterpublic class UserResponseDto { private L.. 2024. 10. 17.