본문으로 건너뛰기
cccskills
무료GitHub에 공개

acc-create-bulkhead

Generates Bulkhead pattern for PHP 8.5. Creates resource isolation with semaphore-based concurrency limiting and thread pool isolation. Includes unit tests.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구Redis
설치 방법 보기

포함된 파일(1)

  • SKILL.md4.8 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Bulkhead Pattern Generator

Creates Bulkhead pattern infrastructure for resource isolation and fault containment.

When to Use

ScenarioExample
External API callsLimit concurrent requests to payment gateway
Database connectionsPool size limiting
CPU-intensive workLimit by CPU cores
Multi-instanceRedis-based coordination

Component Characteristics

BulkheadInterface

  • Common interface for all isolation strategies
  • Acquire and release semantics
  • Capacity monitoring

Strategies

  • Semaphore Bulkhead: Limits concurrent executions
  • Thread Pool Bulkhead: Isolates execution with dedicated pool
  • Queue-based Bulkhead: Limits with waiting queue

BulkheadFullException

  • Thrown when bulkhead capacity exhausted
  • Contains bulkhead name and capacity info

Generation Process

Step 1: Generate Core Components

Path: src/Infrastructure/Resilience/Bulkhead/

  1. BulkheadInterface.php — Common interface
  2. BulkheadConfig.php — Configuration value object
  3. BulkheadFullException.php — Exception with capacity info

Step 2: Generate Bulkhead Implementation

Choose based on use case:

  1. SemaphoreBulkhead.php — Local semaphore-based limiting
  2. DistributedSemaphoreBulkhead.php — Redis-based for multi-instance

Step 3: Generate Registry (Optional)

  1. BulkheadRegistry.php — Manages multiple bulkheads

Step 4: Generate Tests

  1. SemaphoreBulkheadTest.php — Bulkhead behavior tests
  2. BulkheadConfigTest.php — Configuration tests

File Placement

ComponentPath
All Classessrc/Infrastructure/Resilience/Bulkhead/
Unit Teststests/Unit/Infrastructure/Resilience/Bulkhead/

Naming Conventions

ComponentPatternExample
InterfaceBulkheadInterfaceBulkheadInterface
SemaphoreSemaphoreBulkheadSemaphoreBulkhead
DistributedDistributedSemaphoreBulkheadDistributedSemaphoreBulkhead
ConfigBulkheadConfigBulkheadConfig
RegistryBulkheadRegistryBulkheadRegistry
ExceptionBulkheadFullExceptionBulkheadFullException
Test{ClassName}TestSemaphoreBulkheadTest

Quick Template Reference

BulkheadInterface

interface BulkheadInterface
{
    public function execute(callable $operation): mixed;
    public function tryAcquire(): bool;
    public function release(): void;
    public function getAvailablePermits(): int;
    public function getActiveCount(): int;
    public function getName(): string;
}

BulkheadConfig

final readonly class BulkheadConfig
{
    public function __construct(
        public int $maxConcurrentCalls = 10,
        public int $maxWaitDuration = 0,
        public bool $fairness = true
    ) {}

    public static function default(): self;
    public static function forCpuBound(int $cpuCores): self;
    public static function forIoBound(int $cpuCores): self;
    public static function forExternalService(int $maxConnections): self;
}

Usage Example

// Create limiter
$bulkhead = new SemaphoreBulkhead(
    name: 'payment-gateway',
    config: BulkheadConfig::forExternalService(maxConnections: 20),
    logger: $logger
);

// Execute with isolation
try {
    $result = $bulkhead->execute(fn() => $client->charge($request));
} catch (BulkheadFullException $e) {
    return Result::serviceOverloaded();
}

Use Case Selection

Use CaseBulkhead TypeConfig
External API callsSemaphoreLimited by API rate limits
Database connectionsSemaphoreLimited by pool size
CPU-intensive workSemaphoreLimited by CPU cores
Multi-instanceDistributedRedis-based coordination
Mixed workloadsRegistryPer-service configuration

Anti-patterns to Avoid

Anti-patternProblemSolution
Global BulkheadSingle point of contentionPer-service bulkheads
No ReleasePermit leakAlways release in finally
Wrong SizeToo small = rejected, too large = no protectionRight-size per service
No MetricsCan't monitor usageTrack acquired/rejected
Infinite WaitThread starvationSet maxWaitDuration
No FallbackHard failure on fullProvide degraded response

References

For complete PHP templates and examples, see:

  • references/templates.md — BulkheadInterface, Config, SemaphoreBulkhead, DistributedSemaphoreBulkhead, Registry
  • references/examples.md — PaymentGatewayAdapter, ConnectionPool, OrderService examples and tests

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Master backend architectures, REST API design, microservices, and server-side development across multiple languages. Use this as a central index to access specialized sub-skills.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

MikeCheng1208/BattleTree22026년 7월 22일 업데이트

在每次回复中使用固定前缀并列出本次实际参考的指令/文件,便于校验是否遵循上下文与规则。

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

MikeCheng1208/BattleTree22026년 7월 22일 업데이트

Automate 21risk tasks via Rube MCP (Composio). Always search tools first for current schemas.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

MikeCheng1208/BattleTree22026년 7월 22일 업데이트

Automate 2chat tasks via Rube MCP (Composio). Always search tools first for current schemas.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

MikeCheng1208/BattleTree22026년 7월 22일 업데이트

Arquitecto de Soluciones Principal y Consultor Tecnológico de Andru.ia. Diagnostica y traza la hoja de ruta óptima para proyectos de IA en español.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

MikeCheng1208/BattleTree22026년 7월 22일 업데이트

[00] META. Orchestrate skills into dynamic chains for complex tasks. Analyzes the task, discovers available skills, builds an optimal chain, explains why each skill is needed, and executes step-by-step with user confirmation. Use for any complex task requiring multiple thinking/research/analysis steps. Triggers on "plan this", "how to approach", "what's the strategy", "build a plan", or any multi-step problem requiring skill orchestration.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

MikeCheng1208/BattleTree22026년 7월 22일 업데이트

MikeCheng1208의 스킬 모두 보기

이 스킬의 문제 신고