Laravel Octane에서 샌드박스 인스턴스와 일반 인스턴스의 주요 차이점은 다음과 같습니다.
샌드박스 인스턴스
1. 복제된 애플리케이션 인스턴스: Octane은 원본 애플리케이션 인스턴스를 복제하여 각 수신 요청에 대해 샌드박스 인스턴스를 생성합니다. 이렇게 하면 각 요청에 자체 격리된 환경이 있으므로 요청 간의 상태 지속성 문제가 방지됩니다.2. 클린 구성: 샌드박스 인스턴스에는 새 샌드박스 인스턴스에서 복제된 구성 저장소의 깨끗한 복사본이 포함되어 있습니다. 이렇게 하면 구성에 대한 모든 변형이 샌드박스에만 영향을 미치게 됩니다.
3. 플러시된 캐시 및 세션: 샌드박스 인스턴스는 요청 전반에 걸쳐 데이터가 지속되지 않도록 캐시 및 세션 상태를 플러시합니다.
4. 현지화된 번역기: 샌드박스 인스턴스는 번역기 내부의 로케일을 원래 로케일로 설정하여 각 요청에 대해 번역기가 재설정되도록 합니다.
5. Auth Forget Guards: 샌드박스 인스턴스는 깨끗한 상태를 보장하기 위해 이전 요청 중에 설정된 모든 가드를 잊어버립니다.
일반 인스턴스
1. 원래 애플리케이션 인스턴스: 일반 인스턴스는 요청 전반에 걸쳐 지속되는 원본 애플리케이션 인스턴스입니다.2. 지속적 구성: 일반 인스턴스는 원래 구성 저장소를 사용하므로 요청 간에 상태 지속성 문제가 발생할 수 있습니다.
3. 영구 캐시 및 세션: 일반 인스턴스는 캐시 및 세션 상태를 플러시하지 않으므로 요청 전반에 걸쳐 데이터가 유지됩니다.
4. 현지화된 번역기 없음: 일반 인스턴스는 번역기 로케일을 재설정하지 않으므로 애플리케이션이 로케일별 설정에 의존하는 경우 문제가 발생할 수 있습니다.
5. 영구 인증 가드: 일반 인스턴스는 이전 요청 중에 설정된 가드를 잊지 않으므로 제대로 관리하지 않으면 보안 문제가 발생할 수 있습니다.
모범 사례
1. 애플리케이션 인스턴스 전달 방지: 애플리케이션 인스턴스를 서비스나 싱글톤에 직접 전달하지 마세요. 대신 `app()` 도우미 또는 `Container::getInstance()`를 사용하여 올바른 인스턴스가 사용되는지 확인하세요.2. 콜백 사용: 애플리케이션 인스턴스를 직접 전달하는 대신 콜백을 사용하여 샌드박스 인스턴스를 반환합니다.
이러한 차이점을 이해하고 모범 사례를 따르면 Octane[1][5]을 사용하여 애플리케이션이 효율적이고 안전하게 실행되도록 할 수 있습니다.
인용:[1] https://www.getoctane.io/sandbox
[2] https://salesforce.stackexchange.com/questions/42163/performance-difference-between-sandbox-and-production-instances
[3] https://otoy1473900221.zendesk.com/hc/en-us/articles/115001577606-Instances
[4] https://blog.octanesolutions.com.au/sandbox-analytic.delivered
[5] https://divinglaravel.com/laravel-octane-bootstrapping-the-application-and-handling-requests