비관적 락 vs 낙관적 락: 이름부터 알아보며 상황에 맞게 선택하기
낙관적/비관적 락의 이름 유래부터 동작 방식, 선택 기준까지 정리. 1979년 Kung & Robinson 논문에서 시작된 개념을 바탕으로 포인트 차감과 좋아요 기능 구현 시 어떤 락을 선택했는지 실무 관점에서 공유합니다.
낙관적/비관적 락의 이름 유래부터 동작 방식, 선택 기준까지 정리. 1979년 Kung & Robinson 논문에서 시작된 개념을 바탕으로 포인트 차감과 좋아요 기능 구현 시 어떤 락을 선택했는지 실무 관점에서 공유합니다.
여러 도메인을 조합하는 객체를 Domain 레이어에 두었다가 Application 레이어로 옮긴 과정. 도메인 객체와 조회 모델의 경계를 구분하고, 레이어 간 책임을 명확히 분리하는 설계 기준을 정리했습니다.
루퍼스 2주차에서 배운 내용과 얻은 인사이트를 정리했습니다.
OrderItem을 설계하면서 Value Object와 Entity 사이에서 고민한 과정. 동등성, 라이프사이클, 불변성이라는 세 가지 기준으로 두 개념을 구분하고, 도메인 특성에 따라 Entity로 결정한 이유를 담았습니다.
루퍼스 1주차에서 배운 내용과 얻은 인사이트를 정리했습니다.
테스트 없이 개발하던 환경에서 1년간 단위 테스트와 통합 테스트를 배우고 적용하며 얻은 인사이트. 좋은 테스트 4대 요소, 단위/통합 테스트의 차이, 테스트 더블 활용법까지 실무 경험을 담았습니다.
병원 통계에 AI 분석 기능을 추가하며 겪은 시행착오와 개선 과정. 동기 방식에서 이벤트 기반 비동기로 전환하고, 프롬프트 엔지니어링과 UX 개선까지의 경험을 담았습니다.
통계-진료 테이블 수치 불일치 문제를 DRY 원칙으로 해결한 경험. 신규/이탈 판정 로직을 서비스로 분리하고 단일 데이터 소스로 통합해 불일치 문의 0건, 개발 시간 절반 단축을 달성한 과정을 공유합니다.
병원 예약 시스템의 중복 예약 문제를 해결하기 위해 비관적 락, 낙관적 락, Redis 분산 락을 비교하고, 실시간 슬롯 계산 구조에서 Redis 분산 락을 선택한 이유와 AOP 기반 구현 경험을 담았습니다.
사소한 수정에도 처음부터 다시 빌드되던 문제를 Docker 레이어 캐시로 해결한 경험. 빌드 시간을 2분에서 1분 30초로 단축하며, 매일 반복되는 배포 효율을 높인 경험을 담았습니다.