[회고록] Spring Boot에서 JPA의 Soft Delete와 Cascade 연관관계
·
Spring/프로젝트 리팩토링 회고록
내가 사용한 SQL Delete방식에서 Cascade속성을 함께 사용하려 했을 때 발생했던 아래의 문제에 대해 다시는 발생하지 않도록 개념을 다잡기 위해 정리한다! 이전에는 Cascade를 왜 사용하는지 잘 몰랐으나 SoftDelete와 함께 무턱대고 사용하려고 하니 충돌이 나서 각각의 방식과 전략을 확실히하고 어떤 방법으로 SoftDelete를 사용하며 Cascade는 왜 피해야 하는지 알아보자.[발생한 예외]org.hibernate.ObjectDeletedException: deleted instance passed to merge[Soft Delete의 적합성]Soft Delete는 데이터베이스에서 데이터를 물리적으로 삭제하지 않고, "삭제됨" 상태를 표시하기 위해 추가적인 컬럼(e.g., dele..
Redis Pub/Sub을 활용한 채팅 구현의 여정 - Chat Domain(Entity ~ Controller)
·
Redis/Redis 채팅
[이전글]이전 글에는 Redis와 채팅을 사용하기 위한 Config파일들을 알아보았다.https://sunro1994.tistory.com/254 Redis Pub/Sub을 활용한 채팅 구현의 여정 - 환경설정https://sunro1994.tistory.com/253 Redis Pub/Sub을 활용한 채팅 구현의 여정 - 개념편수많은 우여곡절 끝에 배포된 서버에 채팅 기능을 적용하게 되었다!간단히 말하자면 원래 담당했던 백엔드 팀원이 던져sunro1994.tistory.com [소개]이전 글에서는 Config파일을 사용해서 어떻게 Redis의 Pub/Sub 그리고 Websocket설정을 하는지 알아보았다.이번에는 Chat 도메인을 어떻게 설계했는지 Entity부터 Service까지 하나한 알아보려고 한..
[Ngrinder/Java] 설치 및 환경 설정
·
Ngrinder/Ngrinder 문서 정리
NGrinder 문서 정리목차nGrinder 가이드 (설치방법 및 사용법)1 nGrinder란?1-1 nGrinder가 무엇인가?1-2 nGrinder의 특징1-3 nGrinder 아키텍처1-4 nGrinder는 부하를 어떻게 주는걸까?2 nGrinder 설치2-1 환경설정2-2 직접 설치 nGrinder 가이드nGrinder는 네이버가 Grinder를 바탕으로 개발한 오픈소스 소프트웨어이다.서버 부하 테스트를 할 수 있는 플랫폼으로 가상의 사용자를 생성하여 서버에 부하를 가한다.JVM에서 동작하는 python인 jython 혹은 Groovy로 작성된 스크립트를 통해 여러 대의 장비에 테스트를 동작시키는 원리이다.각 스레드마다 서버에 HttpClient 객체를 사용한다.이전에는 스레드 수가 많아질수록 부..
[Redis] 레디스의 읽기/쓰기 전략
·
Redis/Redis 읽기쓰기 전략
[필요성]레디스를 사용하기 위해서는 왜 이런 전략이 필요할까?데이터의 일관성이 필요하기 때문이다.아래처럼 어떠한 데이터를 가져올 때 빈번하게 가져와야 하는 데이터는 캐시 메모리에 저장하여 더 빠른 처리가 가능하다.만약 200을 가진 주소의 값을 300으로 바꿔야 한다면 어디부터 수정하고 어떤 방식으로 수정해야 할까?메모리만 200을 300으로 바꾼다면 일관성이 깨지기 때문에 두 값을 모두 변경해야 한다는 사실은 자연스럽게 들 것이다. 이때 어떤 방법으로 데이터를 읽고 써야 하는지 그 효율을 위한 전략에 대해서 알아보고자 한다.[캐시 히트/캐시 미스]우선 전략을 세우기 전에 이러한 개념을 알고 가야 한다.캐시 히트란 캐시 스토어(redis)에 데이터가 있을 경우 바로 가져오며 매우 빠른 속도를 보인다.캐시..
[컴퓨터 구조 + 캐시 ] 우리가 Redis를 사용해서 캐시 메모리를 쓰는 이유
·
면접 준비
[공부 주제]오늘 공부해 볼 내용은 컴퓨터의 전반적인 부품이다. 위 내용들에 대해 모두 다룰 것이지만 내가 사용하는 캐시처리에 대해서 조금 더 집중적으로 알아 보려고 한다.Redis를 사용하는 방법이 왜 Inmemory인지 그리고 왜 그게 RDB보다 더 빠른지 이번 기회에 확실하게 개념을 다잡고자 한다.   [주제1] CPU명령어를 이해하고 처리하는 동작을 수행하는 CPU는 아래 기능을 수행한다.명칭약어/fullName역할산술논리연산장치ALU / Arithmetic and Logic Unit사칙 연산, 논리 연산과 같은 우리 뇌에서 처리하는 역할이다. 실질적인 연산은 여기서 수행된다.제어장치CU / Control Unit명령어를 해석해서 제어 신호(전기 신호)로 내보낸다. CPU가 메모리를 향해 제어 신..
레이어 아키텍처 구조 개선하기
·
Spring/프로젝트 리팩토링 회고록
[문제점 성찰]현재 나의 프로젝트 구조는 신규 개발자가 대중적으로 사용하는 레이어 아키텍처를 사용 중이었다. 레이어 아키텍처는 가장 가시적이고 무언가 만들때 쉬운 방법이었다.하지만 단점이 존재한다. 첫 째, 모든 것이 영속성 계층을 기준으로 만들어진다. 우리가 개발을 시작하기 전에 가장 먼저 작성하는 것은 테이블 명세, ER 다이어그램이다. 각 엔티티의 관계를 고민하고 어떻게 연결하며, 어느정도 정규화를 통해 만들어낼지 고민하는 과정을 거치게 된다. 도메인을 먼저 고민하기보다 유스케이스를 통해 어떤 행위가 먼저 이뤄질지 고민하는게 맞는 것 같다는 어느 한 강의를 듣게 되었다. 다음 단점을 보며 내용을 이어나가겠다.둘 째, 계층형 아키텍처는 업무 도메인에 대해 어떠한 정보도 제공해주지 않는다.  실제로 모..