ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • WIL - 트랜잭션과 동시성 제어
    Develop 2025. 8. 10. 00:45

    주간 학습 회고 (Weekly I Learned)

    이번 주에는 동시성 이슈 해결을 위한 데이터베이스 트랜잭션 및 락(Lock) 메커니즘을 심도 있게 학습했습니다. 특히 여러 사용자의 동시 주문 요청 시 발생할 수 있는 데이터 정합성 문제를 해결하고, 안정적인 서비스를 구축하는 데 집중한 한 주였습니다.


    🧠 이번 주 학습 성과

    - 트랜잭션과 격리 수준: 데이터베이스 트랜잭션의 동작 원리와 격리 수준(Isolation Level)에 대해 학습하며, 데이터 무결성을 보장하는 기본 원리를 이해했습니다.

     

    - 동시성 제어: 실제 시나리오에서 발생하는 동시성 문제를 해결하기 위해 비관적 락(Pessimistic Lock)낙관적 락(Optimistic Lock)을 학습하고 코드에 직접 적용했습니다.

     

    - 복합 도메인 트랜잭션 관리: 재고 차감, 포인트 사용 등 여러 도메인이 얽힌 복잡한 흐름을 유스케이스 수준에서 하나의 트랜잭션으로 명확하게 정의하고 경계를 설정하는 방법을 익혔습니다.

     

    - 동시성 테스트 환경 구축: ExecutorService와 CountDownLatch를 활용하여 멀티 스레드 환경을 시뮬레이션하고, 작성한 코드의 동시성 문제를 검증하는 테스트 코드를 작성했습니다.

     

    🤔 아쉬웠던 점과 개선할 부분

    -  코드 리팩토링: 지난주에 작성했던 코드의 가독성과 유지보수성을 높이기 위한 리팩토링을 진행하지 못해 아쉬움이 남습니다.

     

    - 낙관적 락의 완성도: 낙관적 락 적용 시 충돌로 인한 실패 상황을 처리하는 재시도(Retry) 로직 구현 및 관련 테스트가 미비했습니다.

     

    - 데이터베이스 지식: 동시성 제어를 더 깊이 이해하기 위해서는 데이터베이스 자체에 대한 근본적인 지식이 더 필요하다고 느꼈습니다.

     

    - 팀 기여: 팀 동료들의 Pull Request에 대한 리뷰에 더 적극적으로 참여하지 못한 점이 아쉽습니다.

     

    🚀 다음 주 도전 과제

    - 성능 최적화: EXPLAIN을 활용한 쿼리 실행 계획 분석을 통해 인덱스 최적화를 진행하고, 쿼리 성능을 개선해 보고 싶습니다.

     

    - 데이터베이스 설계: 서비스 요구사항에 맞춰 데이터 무결성과 성능 사이의 균형을 맞추는 정규화(Normalization)비정규화(Denormalization) 전략을 학습하고 적용해 보겠습니다.

     

    - 캐시 전략 도입: 자주 사용되는 데이터의 응답 속도를 높이기 위한 캐시(Cache) 전략을 수립하고, Redis를 직접 설정하고 사용해 볼 계획입니다.

     

    - 부하 테스트: k6와 같은 도구를 활용하여 시스템이 어느 정도의 부하를 견딜 수 있는지 측정하는 부하 테스트 방법을 학습하고 싶습니다.

    댓글

Designed by Tistory.