Post

항해 플러스 백엔드 과정 6주차 회고

1. 문제 (과제, 프로젝트를 진행하면서 부딪혔던 기술적인 문제)

이번 주차를 지나며 겪었던 문제가 무엇이었나요?

  • 프로젝트를 진행하면서 동시성 제어와 관련된 문제에 부딪혔습니다. 특히, 여러 사용자가 동시에 좌석을 예약하거나 결제를 시도할 때 발생하는 충돌 문제를 해결하는 것이 어려웠습니다.

2. 시도

문제를 해결하기 위해 어떤 시도를 하셨나요?

  • 다양한 동시성 제어 방법을 검토했습니다. 비관적 락, 낙관적 락, Redis 기반의 분산 락, Kafka 등을 고려하여 각 방법의 장단점을 비교했습니다.

3. 해결

문제를 어떻게 해결하셨나요?

  • 최종적으로 비즈니스 로직에 따라 적절한 동시성 제어 방법을 선택했습니다. 좌석 예약의 경우 Redis를 이용한 분산 락을 적용했고, 결제 및 잔액 충전의 경우 비관적 락을 적용하여 데이터 무결성과 성능을 모두 만족시킬 수 있었습니다.

4. 알게된 것

문제를 해결하기 위해 시도하며 새롭게 알게된 것은 무엇인가요?

  • 각각의 동시성 제어 방법이 특정 상황에서 어떻게 최적화될 수 있는지를 알게 되었습니다. 비관적 락과 낙관적 락의 차이점, Redis와 같은 분산 시스템에서의 락 관리 방법 등을 깊이 이해하게 되었습니다.

Keep: 현재 만족하고 계속 유지할 부분

이번 주를 마무리 하며 나에게 만족했던 부분은 무엇인가요?

  • 다양한 동시성 제어 방법을 비교하고, 비즈니스 로직에 맞는 최적의 해결책을 찾아 적용한 부분에 만족합니다.

Problem: 개선이 필요하다고 생각하는 문제점

이번 주를 마무리 하며 개선이 필요하다고 생각했던 문제점은 무엇인가요?

  • 초기 설계 단계에서 동시성 문제를 충분히 고려하지 않았던 점이 아쉬웠습니다. 사전 계획이 부족하여 추가적인 수정 작업이 필요했습니다.

Try: 문제점을 해결하기 위해 시도해야 할 것

이 문제점을 해결하기 위해 다음 한 주간 시도 할 것은 무엇인가요?

  • 앞으로는 설계 단계에서부터 동시성 문제를 충분히 고려하여, 미리 예방할 수 있는 방안을 계획하고 적용해보려 합니다. 또한, 기존 코드에 대한 리팩토링을 통해 동시성 제어 로직을 더욱 견고하게 만들겠습니다.
This post is licensed under CC BY 4.0 by the author.