작성
·
17
0
안녕하세요
현재 섹션 5_4-9. 낙관적 락, 비관적 락 부분을 듣고 있는데요.
현재 공공SI 고도화 개발팀에서 개발을 하고 있는데
동시성 제어 부분이 있는것 같아서 질문드립니다.
레거시 코드로
Oracle/ iBatis DAO / XML 환경이며
담당자가 신청에 대해서 접수하는 기능에서
소스분석을 통해서 봤을 때 기존 소스 흐름은
1. 작업확인용 테이블에서 현재 작업중인 목록이 있는지 확인(Select)
2-1. 작업중 목록이 없다면
작업확인용 테이블에 작업중으로 insert
2-2. 작업중 목록이 있다면
Exception 발생(작업중입니다.)
3. 해당 신청건에 대한 insert/update 진행
4. 작업확인용 테이블의 insert 했던 값의 상태를
작업완료로 Update
* 작업중 상태가 있을 땐 다른 신청건에 대해서도 접수가 불가
입니다.
강의를 듣고 보았을 때 작업확인용 테이블의 존재 이유가 동시성 제어를 위함으로 보이는데
기존 흐름을 봤을 때
비관적락 > 배타락으로 적용하는것이 맞다고 생각이 드는데 맞는 접근일까요?
또한
비관적 락 적용시 작업확인용 테이블의 존재가 필요없어지는 걸까요?
해당부분을 건드리기에 부담이 가서 기존 방식대로 개발을 해놓은 상태이긴 한데
강의를 듣고 적용해볼 수 있지 않을까 생각이 들어 질문드립니다!
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. Jin K님.
현재 공공 SI 프로젝트에서 동시성 문제를 해결하기 위한 전략으로 낙관적 락과 비관적 락을 고려하고 계신 것 같습니다. 작성해주신 내용을 바탕으로 통찰을 제공해 드리겠습니다.
현재 레거시 시스템에서 동시성 제어를 위해 “작업확인용 테이블”을 사용하고 있는 구조로 보여집니다. 동시성 제어 방식은 주로 데이터베이스에서의 작업 흐름을 안전하게 관리하기 위해 사용되는 전략입니다.
기존 흐름에서:
1. 작업 확인 후 “작업중” 플래그를 설정하여 다른 작업의 수행을 방지하고,
2. 작업 완료 후 상태를 업데이트하면서 동시성을 제어하는 방식입니다.
비관적 락:
작업확인용 테이블의 필요성:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.