티스토리 뷰

배움/PHP

Laravel 의 Concurrency 기능

spaces25 2025. 4. 14. 09:46
반응형

Laravel에서 "Concurrency"는 동시에 여러 작업이 수행되는 것을 의미하며, 특히 웹 애플리케이션에서 여러 요청을 동시에 처리하거나 백그라운드 작업을 효율적으로 수행할 때 중요한 개념입니다. Laravel은 여러 가지 기능과 도구를 제공하여 동시성(Concurrency) 을 효과적으로 다룰 수 있게 해줍니다.


🔧 Laravel에서 Concurrency를 다루는 주요 기능

1. Queue (큐) 시스템

  • Laravel에서 동시성을 처리하는 가장 일반적인 방법.
  • 긴 처리 시간을 요하는 작업(ex. 이메일 전송, 영상 처리)을 백그라운드에서 비동기적으로 처리.
  • 큐 워커(worker)는 동시에 여러 개가 실행되어 병렬 처리 가능.

📌 큐 드라이버 예시: Redis, Database, Amazon SQS 등

php artisan queue:work --tries=3 --timeout=90

 

병렬성 높이기
Supervisor 같은 프로세스 관리 도구를 써서 여러 워커를 동시에 실행:

php artisan queue:work --daemon --queue=emails

2. Job Batching & Chaining

  • Batching: 여러 개의 작업을 그룹으로 묶어 처리 (동시에 여러 job 실행)
  • Chaining: 순차적으로 job을 연결해서 실행
Bus::batch([
    new ProcessPodcast,
    new OptimizePodcast,
    new ReleasePodcast,
])->dispatch();

3. Task Scheduling with Overlapping Prevention

스케줄러에서 동시 실행 방지 설정 가능:

$schedule->command('emails:send')->withoutOverlapping();
  • withoutOverlapping() 옵션을 주면 이전 작업이 아직 실행 중이면 새로 시작하지 않음.
  • 잠금(lock)을 사용하여 동시에 두 개의 작업이 실행되지 않도록 방지.

4. Redis와 Atomic Locks (원자적 락)

  • Laravel은 Redis를 이용해 락을 걸 수 있음.
  • 특정 작업이나 리소스를 동시에 두 작업이 접근하지 못하도록 제어.
Redis::throttle('key-name')
    ->allow(10)
    ->every(60)
    ->then(function () {
        // 작업 실행
    }, function () {
        // 대기 또는 실패 처리
    });

5. Database Transactions & Locking

  • 동시 데이터 접근 시 트랜잭션과 락으로 데이터 무결성 유지
DB::transaction(function () {
    // 데이터 삽입/업데이트
});

낙관적/비관적 락도 사용 가능:

DB::table('users')->where('id', 1)->lockForUpdate()->get();

🚀 추가 팁

  • Octane 사용 시 Laravel 앱의 퍼포먼스를 극대화하여 고성능 비동기 처리가 가능 (Swoole이나 RoadRunner 기반).
  • PHP의 pthreads, parallel, ReactPHP 같이 멀티스레딩 또는 비동기 I/O를 지원하는 하위 도구들과 통합도 가능 (조금 더 고급 활용법).
반응형

'배움 > PHP' 카테고리의 다른 글

Laravel 11 라라벨 스케줄링(Scheduling)  (0) 2025.04.16
Lavavel Console Command Argument 옵션  (0) 2025.04.15
PHP Carbon  (1) 2025.04.11
Laravel Command 기능  (0) 2025.04.11
Laravel의 Scope 기능  (0) 2025.04.11
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함