Laravel

Laravel Distributed Systems

queue 기반 통신, events, outbox pattern, 멱등성, retries, circuit breaker, API 계약, 버전 관리, Saga 기초

22 면접 질문·
Senior
1

Laravel 분산 시스템에서 outbox pattern이란 무엇입니까?

답변

outbox pattern은 비즈니스 데이터와 동일한 트랜잭션 내에서 messages/events를 database 테이블에 저장한 다음, 별도의 프로세스에서 비동기적으로 전송합니다. 이를 통해 DB commit 이후 시스템이 크래시되더라도 messages가 항상 전송되도록 보장합니다. Laravel의 ShouldQueueAfterCommit은 이 pattern의 부분적 구현으로, 트랜잭션 commit 이후에만 job을 dispatch하므로 데이터가 사용 가능해지기 전에 job이 실행되는 race condition을 방지합니다.

2

ShouldQueue와 ShouldQueueAfterCommit의 주요 차이점은 무엇입니까?

답변

ShouldQueue는 DB 트랜잭션이 아직 commit되지 않았더라도 job을 즉시 queue에 dispatch하므로 race condition을 유발할 수 있습니다. ShouldQueueAfterCommit은 job을 dispatch하기 전에 모든 DB 트랜잭션이 commit될 때까지 기다려 job 실행 시 데이터가 사용 가능하도록 보장합니다. 트랜잭션 내에서 새로 생성되거나 수정된 데이터에 의존하는 job, 예를 들어 주문 생성 후 email을 보내는 job에는 ShouldQueueAfterCommit을 사용하세요.

3

Laravel 분산 시스템 맥락에서 멱등성이란 무엇입니까?

답변

멱등성이란 어떤 연산을 여러 번 실행하더라도 첫 번째 실행 이후 결과가 변하지 않는 것을 의미합니다. Laravel에서는 이를 통해 job retries나 중복된 messages 동안 원치 않는 부작용을 방지합니다. 예를 들어 멱등한 주문 생성 job은 주문을 생성하기 전에 이미 존재하는지 확인하여, timeout 이후 job이 재시도되더라도 중복을 방지합니다. 멱등성을 보장하려면 ShouldBeUnique, WithoutOverlapping 또는 deduplicationId를 사용하세요.

4

서비스 간 통신에서 job을 직접 dispatch하는 대신 event를 사용하는 주요 이점은 무엇입니까?

5

어떤 상황에서 queued job에 ShouldBeEncrypted를 사용해야 합니까?

+19 면접 질문

다음 면접을 위해 Laravel을 마스터하세요

모든 질문, flashcards, 기술 테스트, 코드 리뷰 연습, 면접 시뮬레이터에 접근하세요.

무료로 시작하기