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

運用中の Rails アプリをマルチテナント対応して新規サービスをリリースするまでの道のり

運用中の Rails アプリをマルチテナント対応して新規サービスをリリースするまでの道のり

2022/08/25 開催
【Railsエンジニア集合!】身近だけど知らないtoBサービスの裏側をのぞく

https://estie.connpass.com/event/255928/

Yuta Takahashi

August 25, 2022
Tweet

More Decks by Yuta Takahashi

Other Decks in Programming

Transcript

  1. Rails


    2
    022
    .
    8
    .
    2
    5
    Thu

    toB

    View Slide

  2. yt-tkhs yt_hizi
    Android

    2021 7


    Flutter / Rails

    View Slide

  3. : atohama

    SaaS


    View Slide


  4. UUUO

    atohama
    1 Rails
    ߪೖऀ༻ΞϓϦ ग़඼༻ΞϓϦ ߪೖऀ༻ΞϓϦ
    αʔόʔ

    View Slide

  5. ( )



    View Slide

  6. : https://d
    1
    .awsstatic.com/whitepapers/ja_JP/saas-tenant-isolation-strategies.pdf

    View Slide

  7. : https://d
    1
    .awsstatic.com/whitepapers/ja_JP/saas-tenant-isolation-strategies.pdf

    View Slide

  8. citusdata/activerecord-multi-tenant gem


    User.all
    SELECT *
    FROM users;
    SELECT *
    FROM users
    WHERE tenant_id = 1;

    View Slide




  9. ID (Push )




    View Slide



  10. ID (Push )




    View Slide



  11. ID
    class Organization
    UUUO_ID = 1.freeze
    def uuuo?
    id == UUUO_ID
    end
    end

    View Slide



  12. ID


    :

    View Slide

  13. ( )


    ( )


    ( )


    View Slide

  14. View Slide







  15. ( )

    View Slide

  16. Before
    1
    .


    2
    .
    1
    .


    2
    .


    3
    .
    After

    View Slide

  17. Before
    1
    .


    2
    .
    1
    .


    2
    .


    3
    .
    After

    View Slide

  18. class Organization
    def tenant_owner?
    id == tenant.owner_organization_id
    end
    def tenant_admin?
    is_admin
    end
    end

    View Slide

  19. class Organization
    def tenant_owner?
    id == tenant.owner_organization_id
    end
    def tenant_admin?
    is_admin
    end
    end
    ID

    View Slide

  20. class Organization
    def tenant_owner?
    id == tenant.owner_organization_id
    end
    def tenant_admin?
    is_admin
    end
    end

    View Slide

  21. :
    ID





    View Slide

  22. ID
    ID

    UUUO

    atohama
    ߪೖऀ༻ΞϓϦ ग़඼༻ΞϓϦ ߪೖऀ༻ΞϓϦ
    αʔόʔ

    View Slide

  23. ID
    Push ID


    Push
    UUUO


    jp.uuuo.maehama


    jp.uuuo.atohama
    A


    jp.uuuo.atohama.xxx

    View Slide

  24. ID

    ID

    ( DB )

    ID

    View Slide

  25. ID :
    ID






    View Slide




  26. ID (Push )




    View Slide

  27. View Slide

  28. citusdata/activerecord-multi-tenant



    
 


    View Slide

  29. Thank you!
    microsoft/fluentui-emoji: https://github.com/microsoft/fluentui-emoji/blob/main/LICENSE

    View Slide