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

SmartHRにおけるアカウントモデルの移行のはなし/Story of migration of account model in SmartHR - Rails Developers Meetup 2018 Day 4 Nouvelle Vague -

Takumi KANZAKI
December 08, 2018

SmartHRにおけるアカウントモデルの移行のはなし/Story of migration of account model in SmartHR - Rails Developers Meetup 2018 Day 4 Nouvelle Vague -

Takumi KANZAKI

December 08, 2018
Tweet

More Decks by Takumi KANZAKI

Other Decks in Technology

Transcript

  1. SmartHRʹ͓͚ΔΞΧ
    ΢ϯτϞσϧͷҠߦͷ
    ͸ͳ͠
    SmartHR, Inc Takumi Kanzaki (@tknzk)

    View Slide

  2. ͓࿩͢Δ͜ͱ
    B2B SaaS Ͱ͋ΔSmartHR ͕ϓϩμΫτͷ੒௕ʹͱ
    ΋ͳͬͯཁ͕݅มΘ͍͖ͬͯ
    B2B αʔϏεͷΞΧ΢ϯτϞσϧ͕ B2C αʔϏεͷ
    ΞΧ΢ϯτϞσϧʹҠߦͭͭ͋͠Δ࿩

    View Slide

  3. SamrtHR ʹ͍ͭͯ
    • SmartHR͸ਓࣄɾ࿑຿ͷखଓ͖ΛΧϯλϯʹ͢Δ
    Ϋϥ΢υܕιϑτ΢ΣΞͰ͢
    • Ϛϧνςφϯτ΢ΣϒΞϓϦέʔγϣϯ (MTWA)
    • SmartHR ຊମ͸ Rails ͷϞϊϦγοΫͳΞϓϦ
    έʔγϣϯ

    View Slide

  4. SamrtHR ʹ͍ͭͯ
    • ਓࣄ৘ใͷऩू
    • ೖୀࣾ࣌ͳͲͷ༷ʑͳॻྨͷ࡞੒
    • e-Gov APIΛར༻ͯ͠ͷ༷ʑͳॻྨͷఏग़
    • ޏ༻ܖ໿ػೳ
    • ೥຤ௐ੔ػೳ
    • ैۀһDB
    • etc
    • ར༻ऀ: ਓࣄ࿑຿୲౰ऀ (ͱ ސ໰ࣾ࿑࢜) ͱ ैۀһ

    View Slide

  5. View Slide

  6. MTWA ʹ͓͚ΔΞΧ΢ϯτϞ
    σϧ
    • αʔϏεશମͰΞΧ΢ϯτΛڞ༗͢Δ
    • GitHub
    • EMAIL ͳͲͰҰҙͷΞΧ΢ϯτ͕ൃߦ͞Ε
    Δ
    • org ʹ͸ট଴ͳͲͰඥ͚ͮ

    View Slide

  7. MTWA ʹ͓͚ΔΞΧ΢ϯτϞ
    σϧ
    • ςφϯτ͝ͱʹΞΧ΢ϯτΛ࡞੒͢Δ
    • Slack, Kibela
    • ςφϯτ͝ͱʹΞΧ΢ϯτ͕ൃߦ͞ΕΔ
    • ςφϯτͷ੾Γସ͑ = ΞΧ΢ϯτͷ੾Γସ
    ͑

    View Slide

  8. SmartHR ʹ͓͚ΔΞΧ΢ϯτ
    ͱςφϯτͷؔ܎
    • σʔλߏ଄తʹ͸αʔϏεશମͰΞΧ΢ϯτΛڞ

    • ςφϯτͱϢʔβʔ͸੾Γ཭͞Ε͍ͯΔΑ͏ʹݟ
    ͑Δ͕ɺ࣮ଶ͸ີ݁߹
    • Tenant ͱ User ͕ user.tenant_id ʹΑͬͯϦ
    Ϩʔγϣϯ
    • ͜ΕʹΑΓςφϯτʹΞΫηεͰ͖ΔΞΧ΢ϯ
    τΛ੍ޚ

    View Slide

  9. SmartHR ʹ͓͚ΔΞΧ΢ϯτ
    ͱςφϯτͷؔ܎
    • ݖݶ؅ཧ
    • user.role_id Ͱݖݶ΋ઃఆ

    View Slide

  10. SmartHR ʹ͓͚ΔΞΧ΢ϯτ
    ͱςφϯτͷؔ܎
    • ཁ͢Δʹ
    • user ʹςφϯτ৘ใͱݖݶ৘ใΛ͍࣋ͬͯΔঢ়ଶ

    View Slide

  11. B2BαʔϏεʹ͓͚ΔΞΧ΢
    ϯτ
    • ςφϯτ؅ཧऀ͕ൃߦͯ͠؅ཧ͢Δ
    • ैۀһͷΞΧ΢ϯτ
    • AD ͱ͔ SSO ͱ͔ SAML ͱ͔ IdP Ͱ؅ཧ͍ͨ͠
    • ୀ৬ͨ͠Βണୣ/࡟আ
    • ୀ৬ޙʹࣾ಺ͷυΩϡϝϯτͱ͔ΈΕΔͱ·ͣ
    ͍Ͱ͢ΑͶ?

    View Slide

  12. SmartHRͷΞΧ΢ϯτ
    • ୀ৬ͨ͠Βണୣ?
    • ൱

    View Slide

  13. SmartHRͷΞΧ΢ϯτ
    • ਓࣄ࿑຿୲౰ऀ͸
    • ୀ৬ऀʹ཭৬ථ΍ݯઘ௃ऩථΛൃߦͨ͠Γɺڅ
    ༩໌ࡉΛൃߦͨ͠Γ͍ͨ͠
    • ୀ৬ऀ΋ɺ
    • աڈͷڅ༩໌ࡉ΍ݯઘ௃ऩථΛӾཡͨ͠Γͨ͠
    ͍

    View Slide

  14. SmartHRͷΞΧ΢ϯτ
    • ࣮͸ձ͕ࣾ؅ཧ͢Δͱ͍͏ΑΓɺݸਓʹൃߦͯ͠
    ͍Δ΋ͷͱߟ͑Δ΄͏Α͍͔΋͠Εͳ͍
    • B2CαʔϏεͷཁ͕݅Ͱ͖ͯͭͭ͋Δ

    View Slide

  15. ൃੜͨ͠໰୊
    • ͓͔͛͞·Ͱ ϦϦʔε͔Β3೥ܦա͠ SmartHR Λ
    ͝ར༻͍ͨͩ͘اۀ͕ॱௐʹ૿Ճ
    • స৬ઌͰ΋ SmartHR Λར༻͍ͯ͠Δέʔε
    • ෳ਺ͷόΠτઌͰ SmartHR Λ͝ར༻௖͍ͯΔ
    έʔε

    View Slide

  16. ൃੜͨ͠໰୊
    • SmartHR ͷΞΧ΢ϯτ͸ϝΞυΛ ID ͱͯ͠ΞΧ
    ΢ϯτΛൃߦ
    • ϝʔϧΞυϨε͕ॏෳ͢Δ໰୊͕ൃੜ
    • ձࣾͷϝʔϧΞυϨε͕ൃߦ͞ΕΔΑΓલʹ
    SmartHR ΞΧ΢ϯτ͕ൃߦ͞ΕΔͨΊɺݸਓ
    ͷϝΞυΛ࢖͏έʔε΋͋Δ
    • ΞϧόΠτͷ৔߹ɺݸਓͷϝʔϧΞυϨεΛར
    ༻͢Δέʔε͕ଟ͍

    View Slide

  17. ϝΞυॏෳ໰୊ʹରԠ
    • ҰͭͷϝΞυͰ ෳ਺ͷςφϯτʹΞΫηεͰ͖Ε
    ͹Ϥαι΢

    View Slide

  18. ϚϧνϩάΠϯ
    • Ұͭͷ SmartHR ΞΧ΢ϯτͰෳ਺ͷςφϯτʹ
    ΞΫηεͰ͖Δػೳ
    • ΋ͱ΋ͱ͸ɺࣾ࿑࢜޲͚ʹ࣮૷
    • ෳ਺ͷސ໰ઌͷςφϯτͰ؅ཧऀͱͯ͠ϩάΠ
    ϯ͍ͨ͠ͱ͍͏ཁ݅
    • ݖݶ؅ཧ͸ಛʹߟྀ͍ͯ͠ͳ͔ͬͨ(؅ཧऀݖ
    ݶͷΈͩͬͨͨΊ)

    View Slide

  19. ϚϧνϩάΠϯ
    • ࣾ࿑࢜޲͚ͷػೳͰ͋ͬͨͷͰɺಛఆͷϨίʔυ
    Λ͍࣋ͬͯΔ͔Ͱ൑ఆ͢Δ࣮૷
    • ͜ΕΛશମ (ैۀһ޲͚ͷݖݶ) ʹ։์ͯ͠ɺϝΞ
    υͷॏෳ໰୊Λղܾ͢Δ(ͨ͠)

    View Slide

  20. ϚϧνϩάΠϯͷશମެ։
    • user.tenant_id, user.role_id ͷͻ΋෇͖Λ΍
    ΊΔ
    • தؒςʔϒϧ (user_role) ʹஔ͖׵͑
    • ΞΧ΢ϯτ͕ςφϯτʹͲͷݖݶͰΞΫηεͰ
    ͖Δ͔ͷ৘ใΛ࣋ͭ
    • user.user_role ͕ ςφϯτઐ༻ͷσʔλʹอ࣋
    ͞ΕΔ

    View Slide

  21. ϚϧνϩάΠϯͷશମެ։
    • user ͕ tenant ͔Β੾Γ཭͞ΕΔ͜ͱʹͳΔ
    • ΞΧ΢ϯτ͕ςφϯτ΋ͷ͔Βݸਓͷ΋ͷ΁
    • B2C αʔϏεʹ͍͔ۙͨͪ΁

    View Slide

  22. ࣮૷
    • Ϛϧνςφϯτͷϛυϧ΢ΣΞͱͯ͠
    • activerecord-multi-tenant gem Λར༻
    • https:/
    /github.com/citusdata/activerecord-multi-
    tenant/
    • (Ҏલ͸ apartment gem Λར༻͍ͯ͠·͕ͨ͠ࠓ೥
    ͷ6݄ʹҠߦ)

    View Slide

  23. ࣮૷
    • ϚϧνϩάΠϯͷͨΊͷ੾Γସ͑ͷΤϯυϙΠϯ
    τ͸ https://app.smarthr.jp Ͱఏڙ
    • app ͸ಛผͳαϒυϝΠϯͰɺςφϯτΛ੾Γସ
    ͑ͳ͍ঢ়ଶͱ͍͏ѻ͍
    • ϩάΠϯ΍ɺϚϧνϩάΠϯͷςφϯτ੾Γସ͑
    ͳͲΛߦ͏

    View Slide

  24. ࣮૷࣌ʹى͖ͨ͜ͱ
    • user.user_role ͕ṖʹΩϟογϡ͞Εͯ͠·͏
    • app ഑ԼͰ user.user_role Λ৮ͬͯ͠·͏ͱ
    active-record ͕ΩϟογϡΛ࣋ͬͯ͠·͍
    • ຊདྷΞΫηε͢΂͖Ͱͳ͍σʔλΛऔͬͯ͠·͍
    ςφϯτ੾Γସ͑ޙͷڍಈ͕͓͔͘͠ͳΔ

    View Slide

  25. ࣮૷࣌ʹى͖ͨ͜ͱ
    • ͜ΕΒ͸ɺ active-record/multi-tenant ͷվम
    • ͦ΋ͦ΋ ςφϯτΛ੾Γସ͍͑ͯͳ͍ঢ়ଶͰ
    user.user_role Λ৮Βͳ͍ͳͲͷमਖ਼Λͯ͠ղ
    ܾ

    View Slide

  26. SmartHR ʹ͓͚ΔΞΧ΢ϯτ
    ͱςφϯτͷؔ܎(ݱࡏ)
    • σʔλߏ଄తʹ͸αʔϏεશମͰΞΧ΢ϯτΛڞ

    • ςφϯτͱΞΧ΢ϯτ͸੾Γ཭͞Εͨؔ܎
    • ςφϯτͷதͰͲͷݖݶΛ͍࣋ͬͯΔ͔Λ൑ఆ

    View Slide

  27. ͜Ε͔Β
    • SmartHR::ID ߏ૝
    • B2CϕʔεͳΞΧ΢ϯτϞσϧ + ݸਓ৘ใαʔϏ
    ε

    View Slide

  28. View Slide

  29. View Slide

  30. View Slide

  31. SmartHR::ID ߏ૝
    • SmartHR ͷΞΧ΢ϯτΛ͍࣋ͬͯΕ͹స৬΍స੶
    Λͨ͋͠ͱͰ΋ɺաڈͷࣗ෼ͷैۀһ৘ใͳͲΛ
    ӾཡͰ͖Δ
    • څ༩໌ࡉͱ͔ݯઘ௃ऩථͱ͔
    • ैۀһ৘ใΛաڈॴଐ͍ͯͨ͠اۀ͔Βస৬ઌ
    ʹ 1 click Πϯϙʔτͨ͠Γ
    • ϚΠφϯόʔͷ༬͔Γอ؅ (๏཯্͋Εͳ໰୊
    ͸͋Γ·͢.. )

    View Slide

  32. SmartHR::ID ߏ૝
    • ࣾձΠϯϑϥ(ͷՄೳੑ)ͱͯ͠΍͍͖ͬͯ

    View Slide

  33. We are hiring!
    • Ұॹʹࣾձج൫ΛϋοΫ͢Δ஥ؒืूதͰ͢
    • དྷ೥ SmartHR::ID ߏ૝Λ۩ମԽͤ͞Δ༧ఆͳͷͰ
    Ұॹʹ΍Γ·ͤΜ͔ʂ
    • ࢲ͕த৺ͳΔ༧ఆͰ͢ʂ
    • SSO ͱ͔ SAML ͱ͔AD ͱ͔ৄ͍͠ํ͜ͷ͋ͱ͓
    ࿩͠·ͤΜ͔ʂ

    View Slide

  34. Who
    • @tknzk ( Takumi Kanzaki )
    • SmartHR ιϑτ΢ΣΞΤϯ
    δχΞ

    View Slide