이 글은, 아키텍처의 변화에 따라 기존의 동시성 제어 방법을 개선하기 위한 Redis 도입 과정을 다룬다.🌱 들어가기 전이전 포스팅에서, 프로젝트의 중복 예약 문제를 해결하기 위해 MySQL의 네임드 락을 활용하여 동시성을 제어했었다.그 이후 프로젝트를 더 개선하며 아키텍처가 변화했다. 단일 서버를 다중 서버 환경으로 바꾸었고, DB 서버도 다중화하며 고려해야 할 사항들이 생겼다.그 중 동시성을 제어하는 분산락에 관련된 고민과 개선 경험을 공유한다. 'MySQL 네임드 락을 활용한 동시성 제어' 내용은 이전 포스팅에서 확인하실 수 있습니다!https://deeper-dev.tistory.com/3 [프로젝트] 네임드락을 통한 의자 예약 기능의 동시성 문제 해결🌱 들어가기 전이번 포스팅에서는 개발중인 ..
🌱 들어가기 전이번 포스팅에서는, 테스트에서 집중해야 하는 부분과 테스트 리팩토링 사항에 대해 살펴보자.- 김우근님의 'Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트'를 공부하고 정리한 글입니다. ✏️지난 포스팅과 이어집니다 !https://deeper-dev.tistory.com/19 [테스트 코드와 설계] 레이어 아키텍처 개선하기 - SOLID를 준수하고 Testability 높이기🌱 들어가기 전이번 포스팅에서는 레이어 아키텍처의 문제점을 알아보고, SOLID 준수하고 Testability를 높이는 방향으로의 아키텍처 개선 과정을 살펴보자. - 김우근님의 'Java/Spring 테스트를 추가deeper-dev.tistory.com🌱 테스트 범위💭 집중해야 하는 테스트집중해야 ..
🌱 들어가기 전이번 포스팅에서는 레이어 아키텍처의 문제점을 알아보고, SOLID 준수하고 Testability를 높이는 방향으로의 아키텍처 개선 과정을 살펴보자. - 김우근님의 'Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트'를 공부하고 정리한 글입니다. ✏️ 지난 포스팅과 이어집니다 ! https://deeper-dev.tistory.com/15 [테스트 코드와 설계] 프로젝트 Test Code 작성과 문제 해결🌱 들어가기 전이번 포스팅에서는 프로젝트 코드에 대해 테스트 코드를 작성하는 과정을 살펴보자.- 김우근님의 'Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트'를 공부하고 정리한 글deeper-dev.tistory.com 모든 Test가 h2를 필요로 한다는..
🌱 들어가기 전이번 포스팅에서는 동시성 제어 구현 및 테스트 코드 작성 과정에서 발생한, 아래의 세가지 문제를 분석하고 해결하는 과정을 다룹니다.1. profile분리 상황에 발생한 error2. ec2 metadata error3. 동시성 제어 과정에서 발생한 트랜잭션 문제❌ 에러 1 - 1 : profile분리 상황에 발생한 errorFailed to load ApplicationContextCaused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 's3Config': Injection of autowired dependencies failed; nested exception is ..
🌱 들어가기 전이번 포스팅에서는 테스트 코드를 작성하며 마주친 auto_increment 컬럼값 충돌 문제를 분석하고 해결하는 과정을 살펴보자. 포스팅 내용에 대한 자세한 코드는 Github에 올려두었습니다.https://github.com/benjaminuj/test-code-with-architecture/tree/main GitHub - benjaminuj/test-code-with-architecture: 아키텍처에 진화를 주는 테스트 코드에 대해 공부 및 실습아키텍처에 진화를 주는 테스트 코드에 대해 공부 및 실습합니다. Contribute to benjaminuj/test-code-with-architecture development by creating an account on GitHub..
🌱 들어가기 전이번 포스팅에서는 테스트 코드를 작성하며 마주친 데이터 충돌 및 트랜잭션에 관한 문제를 분석하고 해결하는 과정을 살펴보자. 포스팅 내용에 대한 자세한 코드는 Github에 올려두었습니다.https://github.com/benjaminuj/test-code-with-architecture/tree/main GitHub - benjaminuj/test-code-with-architecture: 아키텍처에 진화를 주는 테스트 코드에 대해 공부 및 실습아키텍처에 진화를 주는 테스트 코드에 대해 공부 및 실습합니다. Contribute to benjaminuj/test-code-with-architecture development by creating an account on GitHub.git..
🌱 들어가기 전이번 포스팅에서는 프로젝트 코드에 대해 테스트 코드를 작성하는 과정을 살펴보자.- 김우근님의 'Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트'를 공부하고 정리한 글입니다. ✏️지난 포스팅과 이어집니다 !https://deeper-dev.tistory.com/13 [테스트 코드와 설계] 빌더 패턴과 엔티티, 그리고 테스트에 대한 조언🌱 들어가기 전이번 포스팅에서는 빌더 패턴과 엔티티, 그리고 테스트에 대한 여러가지 조언의 내용을 살펴보자.- 김우근님의 'Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트'를 공부deeper-dev.tistory.com 포스팅 내용에 대한 자세한 코드는 Github에 올려두었습니다.https://github.com/benjam..
🌱 들어가기 전이번 포스팅에서는 수평적 규모 확장성을 위한 안정 해시 설계에 대해 알아보자. 수평적 규모 확장성 달성을 위해서는 요청 또는 데이터 서버를 균등하게 나누는 것이 중요하다.안정 해시는 이 목표를 달성하기 위해 보편적으로 사용하는 기술이다.🌱 해시 키 재배치(rehash) 문제N개의 서버가 있다고 하자. 이 서버들에 부하를 균등하게 나누기 위해 보통 아래의 해시 함수를 사용한다.servceIndex = hash(key) % N (N은 서버의 개수)💭 이 방법이 잘 동작하는 조건- 서버 풀이 고정되어 있을 때- 데이터 분포가 균등할 때 💭 문제가 생기는 상황- 서버가 추가되거나 기존 서버가 삭제될 때 ex) 서버가 4개 있었는데, 1번 서버가 장애를 일으켜 동작을 중단했다고 하자. 서버 ..