저는 소프트웨어 제품 회사에서 일합니다. 우리는 제품을 구현하는 대기업 고객을 보유하고 있으며 고객을 지원합니다. 예를 들어, 결함이있는 경우 패치 등을 제공합니다. 즉, 이는 일반적인 설정입니다.
최근에, 우리 제품의 클러스터 구현에서 동시 데이터베이스 액세스와 관련된 로그 파일에서 고객이 발견 한 예외에 관한 티켓이 발행되어 나에게 할당되었습니다. 따라서이 버그가 발생하면이 고객의 특정 구성이 중요 할 수 있습니다. 고객으로부터 얻은 것은 로그 파일뿐입니다.
팀에 제안한 접근 방식은 고객과 유사한 구성 설정에서 버그를 재현하고 비슷한 로그를 얻는 것입니다. 그러나 시간이 많이 걸리고 VM에서 서버 클러스터를 시뮬레이트해야하므로 버그를 재현 할 필요가 없다는 접근 방식에 동의하지 않습니다. 팀은 스레드 코드 및 / 또는 트랜잭션이 안전하지 않은 코드의 위치를 확인하고 발생하는 환경과 같은 클러스터 구현이 아닌 간단한 로컬 개발로 변경 작업을 수행하기 위해 단순히 "코드를 따르십시오"라고 제안합니다. 버그의 근원.
나에게, 가시적이고 명백한 표현 (런타임 재현)이 아닌 추상 청사진 (프로그램 코드)으로 작업하는 것이 어려워 보이므로 일반적인 질문을하고 싶었습니다.
진단하고 수정하기 전에 모든 결함을 재현하고 디버깅하는 것이 합리적입니까?
또는:
수석 개발자 인 경우 멀티 스레드 코드를 읽고 응용 프로그램을 실행하고 다른 사용 사례 시나리오를 직접 테스트하고 단계별로 테스트하지 않고 모든 사용 사례 시나리오에서 수행하는 작업에 대한 정신적 인 그림을 만들 수 있어야합니다. 코드를 한 줄씩? 아니면 그런 종류의 작업 환경을 요구하는 가난한 개발자입니까?
sissies에 대한 디버깅입니까?
제 생각에는 인시던트 티켓에 대한 응답으로 제출 된 모든 수정 사항은 가능한 한 원래 환경에 가깝도록 시뮬레이션 된 환경에서 테스트해야합니다. 그것이 실제로 문제를 해결할 것이라는 것을 어떻게 알 수 있습니까? 그것은 에어백이 실제로 작동한다는 것을 입증하기 위해 더미로 차량을 충돌 테스트하지 않고 새로운 차량 모델을 출시하는 것과 같습니다.
마지막으로, 당신이 저에게 동의한다면 :
내 접근 방식이 합리적이고 보수적이며 방 탄성이 있음을 확신시키기 위해 팀과 어떻게 대화해야합니까?
new
. Java 메모리 모델 사양