내가 일하고있는 곳은 몇 가지 기본 규칙을 세우려고 노력하고 있으며 현재 우리가 겪고있는 논쟁은 코드 재사용을위한 로컬 라이브러리 대 웹 서비스입니다. 웹 서비스는 대부분의 회사에서 인기있는 것으로 보이며, 여기에서 대부분의 개발자가 기대하는 것입니다.
심각한 작업에 웹 서비스를 효과적으로 사용하는 방법을 알 수 없습니다. 트랜잭션을 사용할 수없는 경우 어떻게 여러 서비스 호출을 안전하게 실행할 수 있습니까?
알림을 받아야하는 특정 조건을 충족하는 데이터베이스에서 고객을 확보하는 크론 작업이 있다고 가정하겠습니다. 팩스, 이메일이 발송되고 내부적으로 문제를 추적하기 위해 티켓이 생성됩니다. 이는 for 루프에서 각 고객에 대해 발생하는 3 가지 서비스 호출입니다.
예를 들어, 팩스 및 전자 메일이 고객에게 전송되지만 티켓이 생성되지 않는 등의 오류가 발생할 수 있습니다. 또는이 크론 작업에 버그가 포함되어 매번 같은 시점에 실패하고 동일한 고객에게 반복적으로 이메일을 보냅니다. 라이브러리가 모두 로컬 인 경우 모든 것이 트랜잭션으로 랩핑 될 수 있으며 그 중 어느 것도 발생하지 않습니다. 그러나이 예제에서는 웹 서비스를 사용하고 있습니다.
이메일 및 팩스 방법은 실제로 데이터를 데이터베이스 지원 큐 테이블에 삽입하며,이 테이블은 별도의 cron 작업 프로세스에 의해 처리됩니다. 따라서 "이메일 보내기"및 "팩스 보내기"서비스 방법에 대한 호출은 필요한 경우 부작용없이 중단 될 수 있습니다.
옵션은이 전체 코드를 웹 서비스 자체에 넣는 것이므로 웹 서비스 자체는 트랜잭션에서 이메일, 팩스 및 티켓 작성 메소드를 호출합니다. 그러나 우리는 트랜잭션 사용을위한 웹 서비스 방법을 만들고 있습니다. 우리가 실제로이 하나의 cron 스크립트를 제외하고 어디에서나이 메소드를 호출해야 할 정당한 이유는 없습니다.
이 방법을 일반적으로 어떻게 처리 하시겠습니까?