Upgrade to Pro — share decks privately, control downloads, hide ads and more …

スケーラブルシステム / Scalable System

nrs
October 08, 2023

スケーラブルシステム / Scalable System

https://youtu.be/NhDj6Ep9SyA

PHP Conference Japan 2023
システムのスケーラビリティを着眼点としてマイクロサービスについて語ってます。
トーク前提の資料です。そのため、トークがないと理解が難しいかもしれません。

# Abstract
https://fortee.jp/phpcon-2023/proposal/d81f49cf-009c-4953-af24-1582a827edef

# URL
YouTube: https://www.youtube.com/c/narusemi
HomePage: https://nrslib.com
Twitter: https://twitter.com/nrslib

nrs

October 08, 2023
Tweet

More Decks by nrs

Other Decks in Programming

Transcript

  1. class OrderServiceEventListener
    {
    function handle(OrderCreated $event) {
    // do something
    }
    }

    View full-size slide

  2. class OrderServiceEventListener
    {
    function handle(OrderCreated $event) {
    // do something
    }
    }
    class EventServiceProvider extends ServiceProvider
    {
    /**
    * The event to listener mappings for the application.
    *
    * @var array>
    */
    protected $listen = [
    Registered::class => [
    SendEmailVerificationNotification::class,
    ],
    OrderCreated::class => [
    OrderServiceEventListener::class,
    ],
    ];

    View full-size slide

  3. class OrderServiceEventListener
    {
    function handle(OrderCreated $event) {
    // do something
    }
    }
    class EventServiceProvider extends ServiceProvider
    {
    /**
    * The event to listener mappings for the application.
    *
    * @var array>
    */
    protected $listen = [
    Registered::class => [
    SendEmailVerificationNotification::class,
    ],
    OrderCreated::class => [
    OrderServiceEventListener::class,
    ],
    ];

    View full-size slide

  4. class CreateOrder implements OrderCommand {
    /** @var int */
    private $itemId;
    /** @var int */
    private $nr;
    class OrderCreated implements OrderEvent {
    /** @var int */
    private $id;
    /** @var int */
    private $itemId;
    class OrderAggregate {
    function handleCreateOrder(CreateOrder $createOrder) {
    // publish event
    }
    }

    View full-size slide