내가 그린

재고 시스템으로 배우는 동시성 이슈 해결 전략: Synchronized, DB Lock, Redis 비교 분석

최상용님의 재고시스템으로 알아보는 동시성이슈 해결 방법에서 학습한 내용을 정리한 글입니다. 1. 쓰레드를 사용하여 재고 감소 테스트 하기 동시성을 고려하지 않고 재고 감소 기능을 구현할 할 경우, 경쟁상태 문제가 발생한다 @DisplayName("동시에 재고 감소를 요청한다.") @Test void decreaseWi...

실용적인 테스트 코드 작성법: 스프링 애플리케이션 테스트 전략

박우빈님의 Practical Testing: 실용적인 테스트 가이드 를 정리한 내용입니다. 테스트는 왜 필요할까 테스트 코드를 작성하지 않고 수동으로 테스트를 하면 아래와 같은 단점들이 있다. 테스트에 누락이 있을 수 있다. 경험과 감에 의존한다. 피드백이 늦다 소프트웨어의 신뢰도가 낮아진다 테스트 코드 작성도 중요하지...

모비닥 진료 프로세스 개선 프로젝트 회고: 코드 품질과 성능 최적화 개선기

모비닥은 환자 본인 뿐만 아니라 가족 구성원과 함께 병원 진료 신청 할 수 있는 “함께 진료” 기능이 있습니다. 하지만 이 “함께 진료” 는 여러 환자를 하나의 그룹으로 묶어 처리하기 때문에 몇 가지 문제점이 있었습니다. 가장 큰 문제점은 하나의 증상 & 문진표만 작성한 구조입니다. 만약 자녀A는 타박상, 자녀B는 기침 증상이 있는 경우 대표...

MySQL 인덱스의 원리와 구조 이해하기

Real MySQL 8.0 8장 “인덱스”를 학습한 내용입니다. B-Tree 인덱스 최사위에 하나의 루트노드가 존재하고 그 하위에는 브랜치 노드, 가장 말단에는 리프노드가 붙어 있다. 데이터베이스에서 인덱스와 실제 데이터가 저장된 데이터는 따로 관리되는데 인덱스 리프 노드에 항상 실제 데이터 레코드를 찾아가기 위한 주솟값이 저장된다. 인...