📖 12주차: 도서 정산 아티산 CLI, 작업 스케줄링, 캐시 & 웹소켓 실시간 알림
실습 프로젝트: 지니샵(JinyShop) — 온라인 도서 쇼핑몰
주차 요약: 자정 미결제 취소 크론 스케줄러, Prompts 대화형 재고 보충 CLI, Redis 캐싱, Reverb 웹소켓 주문 실시간 알림, 다국어 지원
캐릭터: 🐱 지니(시니어 멘토), 👧 도로시(주니어 개발자), 🐶 토토(개발 보조)
💬 지니 & 도로시 & 토토의 개발 회의
👧 도로시: “지니! 매일 밤 12시에 24시간 동안 입금되지 않은 주문을 취소하고 도서 재고를 자동으로 원복해 줄 순 없을까? 그리고 신간 도서가 나오면 서점 관리자 화면에 새로고침 없이 띵동 알림을 띄우고 싶어!”
🐱 지니: “라라벨 스케줄러(Scheduler)에 크론 한 줄만 걸어두면 매일 자정 자동 배치가 작동한단다! 그리고 Reverb 웹소켓을 연결하면 새 주문이 들어올 때마다 관리자 모니터에 실시간 팝업이 뜨지. 인기 베스트셀러는 Redis 캐시에 담아 100배 빠르게 서빙하렴!”
🐶 토토: “멍멍! 창고 관리자가 터미널에서 화살표 키로 책을 골라 재고를 채우는 Laravel Prompts CLI 커맨드도 만들자멍! 해외 독자를 위해 영문 언어팩도 세팅하자멍!”
📑 12주차 상세 강의 목록 (Step-by-Step Lectures)
이번 12주차는 총 4개의 절차적 실습 강의로 구성되어 있습니다. 순서대로 학습을 진행해 주세요:
- 01강: 대화형 아티산(Artisan) 콘솔, 라라벨 프롬프트(Prompts) & 프로세스(Processes)
- 커스텀 아티산 커맨드(
shop:restock) 제작 및 시그니처/인자 설정 - Laravel Prompts: 방향키 검색(
search), 수량 검증(text), 컨펌(confirm), 로딩 스피너(spin), 요약 테이블(table) - 라라벨
Process파사드를 이용한 외부 CLI 유틸리티 비동기 실행 풀
- 커스텀 아티산 커맨드(
- 02강: 작업 스케줄링(Task Scheduling)과 자정 배치 자동화
- 라라벨 11 콘솔 스케줄러(
routes/console.php) 아키텍처 - 24시간 미결제 주문 일괄 취소 및 재고 원복 배치(
shop:cancel-unpaid-orders) - 중복 실행 방지(
withoutOverlapping), 백그라운드 병렬 실행, 단일 서버 실행(onOneServer) 및 리눅스 크론 등록
- 라라벨 11 콘솔 스케줄러(
- 03강: Redis 캐시 아키텍처, 캐시 태그(Cache Tags)와 병렬 동시성(Concurrency)
- Redis 캐시 드라이버 연동 및
Cache::remember()베스트셀러 고속 서빙 Cache::tags(['books', "category:{$id}"])를 통한 카테고리/베스트셀러 정밀 무효화- 라라벨 11 신기능
Concurrency::run()으로 외부 3대 택배사 배송 상태 병렬 동시 조회
- Redis 캐시 드라이버 연동 및
- 04강: 라라벨 리버브(Reverb) 웹소켓 실시간 알림 & 다국어(Localization)
php artisan install:broadcasting및 초고속 웹소켓 서버 Laravel Reverb 구동NewBookOrderPlaced이벤트와 프론트엔드 Laravel Echo 실시간 주문 토스트 알림 연동- 다국어 언어팩(
lang/ko,lang/en,lang/ja), 단수/복수형 번역(trans_choice) 및 언어 스위처 미들웨어
📚 연계 공식 문서 (한국어 번역본 대조 학습)
이번 주차 실습에서 다루는 기능의 공식 문서 원본 내용과 심화 레퍼런스입니다:
- 아티산 콘솔 (Artisan)
- 프롬프트 (Prompts)
- 작업 스케줄링 (Scheduling)
- 캐시 (Cache)
- Redis (레디스)
- 브로드캐스팅 (Broadcasting)
- Reverb (웹소켓 서버)
- 동시성 (Concurrency)
- 프로세스 (Processes)
- 다국어 지원 (Localization)
🐶 토토의 실무 꿀팁 & 에러 방지 가이드
🐶 토토의 알짜 팁!
“대화형 프롬프트(Prompts)는 크론탭이나 배포 파이프라인에서 돌리면 먹통이 되니--no-interaction처리를 꼭 해두어야 해! 스케줄러 중복 방지는 Redis 캐시가 있어야onOneServer()와 함께 안정적으로 작동한다멍!”
✅ 이번 주차 실습 완료 체크리스트
shop:restock대화형 CLI 커맨드 작성 및 스피너/테이블 출력 확인routes/console.php에 자정 미결제 주문 자동 취소 스케줄 등록 및schedule:list확인- Redis 기반 베스트셀러 캐싱 및 도서 수정 시
Cache::tags()자동 무효화 검증 Concurrency::run()으로 다중 택배사 배송 상태 병렬 조회 테스트- Laravel Reverb 웹소켓 서버 기동 및 주문 발생 시 실시간 토스트 알림 수신
- 한국어/영어 다국어 언어팩 번역 및 언어 스위칭 확인