Pro Yearly is on sale from $80 to $50! »

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

941d3ec0c92d7b43d43c1baa81d4d82d?s=47 Takumi KANZAKI
December 08, 2018

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

941d3ec0c92d7b43d43c1baa81d4d82d?s=128

Takumi KANZAKI

December 08, 2018
Tweet

Transcript

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

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

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

    ຊମ͸ Rails ͷϞϊϦγοΫͳΞϓϦ έʔγϣϯ
  4. SamrtHR ʹ͍ͭͯ • ਓࣄ৘ใͷऩू • ೖୀࣾ࣌ͳͲͷ༷ʑͳॻྨͷ࡞੒ • e-Gov APIΛར༻ͯ͠ͷ༷ʑͳॻྨͷఏग़ •

    ޏ༻ܖ໿ػೳ • ೥຤ௐ੔ػೳ • ैۀһDB • etc • ར༻ऀ: ਓࣄ࿑຿୲౰ऀ (ͱ ސ໰ࣾ࿑࢜) ͱ ैۀһ
  5. None
  6. MTWA ʹ͓͚ΔΞΧ΢ϯτϞ σϧ • αʔϏεશମͰΞΧ΢ϯτΛڞ༗͢Δ • GitHub • EMAIL ͳͲͰҰҙͷΞΧ΢ϯτ͕ൃߦ͞Ε

    Δ • org ʹ͸ট଴ͳͲͰඥ͚ͮ
  7. MTWA ʹ͓͚ΔΞΧ΢ϯτϞ σϧ • ςφϯτ͝ͱʹΞΧ΢ϯτΛ࡞੒͢Δ • Slack, Kibela • ςφϯτ͝ͱʹΞΧ΢ϯτ͕ൃߦ͞ΕΔ

    • ςφϯτͷ੾Γସ͑ = ΞΧ΢ϯτͷ੾Γସ ͑
  8. SmartHR ʹ͓͚ΔΞΧ΢ϯτ ͱςφϯτͷؔ܎ • σʔλߏ଄తʹ͸αʔϏεશମͰΞΧ΢ϯτΛڞ ༗ • ςφϯτͱϢʔβʔ͸੾Γ཭͞Ε͍ͯΔΑ͏ʹݟ ͑Δ͕ɺ࣮ଶ͸ີ݁߹ •

    Tenant ͱ User ͕ user.tenant_id ʹΑͬͯϦ Ϩʔγϣϯ • ͜ΕʹΑΓςφϯτʹΞΫηεͰ͖ΔΞΧ΢ϯ τΛ੍ޚ
  9. SmartHR ʹ͓͚ΔΞΧ΢ϯτ ͱςφϯτͷؔ܎ • ݖݶ؅ཧ • user.role_id Ͱݖݶ΋ઃఆ

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

  11. B2BαʔϏεʹ͓͚ΔΞΧ΢ ϯτ • ςφϯτ؅ཧऀ͕ൃߦͯ͠؅ཧ͢Δ • ैۀһͷΞΧ΢ϯτ • AD ͱ͔ SSO

    ͱ͔ SAML ͱ͔ IdP Ͱ؅ཧ͍ͨ͠ • ୀ৬ͨ͠Βണୣ/࡟আ • ୀ৬ޙʹࣾ಺ͷυΩϡϝϯτͱ͔ΈΕΔͱ·ͣ ͍Ͱ͢ΑͶ?
  12. SmartHRͷΞΧ΢ϯτ • ୀ৬ͨ͠Βണୣ? • ൱

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

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

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

    Λར༻͍ͯ͠Δέʔε • ෳ਺ͷόΠτઌͰ SmartHR Λ͝ར༻௖͍ͯΔ έʔε
  16. ൃੜͨ͠໰୊ • SmartHR ͷΞΧ΢ϯτ͸ϝΞυΛ ID ͱͯ͠ΞΧ ΢ϯτΛൃߦ • ϝʔϧΞυϨε͕ॏෳ͢Δ໰୊͕ൃੜ •

    ձࣾͷϝʔϧΞυϨε͕ൃߦ͞ΕΔΑΓલʹ SmartHR ΞΧ΢ϯτ͕ൃߦ͞ΕΔͨΊɺݸਓ ͷϝΞυΛ࢖͏έʔε΋͋Δ • ΞϧόΠτͷ৔߹ɺݸਓͷϝʔϧΞυϨεΛར ༻͢Δέʔε͕ଟ͍
  17. ϝΞυॏෳ໰୊ʹରԠ • ҰͭͷϝΞυͰ ෳ਺ͷςφϯτʹΞΫηεͰ͖Ε ͹Ϥαι΢

  18. ϚϧνϩάΠϯ • Ұͭͷ SmartHR ΞΧ΢ϯτͰෳ਺ͷςφϯτʹ ΞΫηεͰ͖Δػೳ • ΋ͱ΋ͱ͸ɺࣾ࿑࢜޲͚ʹ࣮૷ • ෳ਺ͷސ໰ઌͷςφϯτͰ؅ཧऀͱͯ͠ϩάΠ

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

  20. ϚϧνϩάΠϯͷશମެ։ • user.tenant_id, user.role_id ͷͻ΋෇͖Λ΍ ΊΔ • தؒςʔϒϧ (user_role) ʹஔ͖׵͑

    • ΞΧ΢ϯτ͕ςφϯτʹͲͷݖݶͰΞΫηεͰ ͖Δ͔ͷ৘ใΛ࣋ͭ • user.user_role ͕ ςφϯτઐ༻ͷσʔλʹอ࣋ ͞ΕΔ
  21. ϚϧνϩάΠϯͷશମެ։ • user ͕ tenant ͔Β੾Γ཭͞ΕΔ͜ͱʹͳΔ • ΞΧ΢ϯτ͕ςφϯτ΋ͷ͔Βݸਓͷ΋ͷ΁ • B2C

    αʔϏεʹ͍͔ۙͨͪ΁
  22. ࣮૷ • Ϛϧνςφϯτͷϛυϧ΢ΣΞͱͯ͠ • activerecord-multi-tenant gem Λར༻ • https:/ /github.com/citusdata/activerecord-multi-

    tenant/ • (Ҏલ͸ apartment gem Λར༻͍ͯ͠·͕ͨ͠ࠓ೥ ͷ6݄ʹҠߦ)
  23. ࣮૷ • ϚϧνϩάΠϯͷͨΊͷ੾Γସ͑ͷΤϯυϙΠϯ τ͸ https://app.smarthr.jp Ͱఏڙ • app ͸ಛผͳαϒυϝΠϯͰɺςφϯτΛ੾Γସ ͑ͳ͍ঢ়ଶͱ͍͏ѻ͍

    • ϩάΠϯ΍ɺϚϧνϩάΠϯͷςφϯτ੾Γସ͑ ͳͲΛߦ͏
  24. ࣮૷࣌ʹى͖ͨ͜ͱ • user.user_role ͕ṖʹΩϟογϡ͞Εͯ͠·͏ • app ഑ԼͰ user.user_role Λ৮ͬͯ͠·͏ͱ active-record

    ͕ΩϟογϡΛ࣋ͬͯ͠·͍ • ຊདྷΞΫηε͢΂͖Ͱͳ͍σʔλΛऔͬͯ͠·͍ ςφϯτ੾Γସ͑ޙͷڍಈ͕͓͔͘͠ͳΔ
  25. ࣮૷࣌ʹى͖ͨ͜ͱ • ͜ΕΒ͸ɺ active-record/multi-tenant ͷվम • ͦ΋ͦ΋ ςφϯτΛ੾Γସ͍͑ͯͳ͍ঢ়ଶͰ user.user_role Λ৮Βͳ͍ͳͲͷमਖ਼Λͯ͠ղ

    ܾ
  26. SmartHR ʹ͓͚ΔΞΧ΢ϯτ ͱςφϯτͷؔ܎(ݱࡏ) • σʔλߏ଄తʹ͸αʔϏεશମͰΞΧ΢ϯτΛڞ ༗ • ςφϯτͱΞΧ΢ϯτ͸੾Γ཭͞Εͨؔ܎ • ςφϯτͷதͰͲͷݖݶΛ͍࣋ͬͯΔ͔Λ൑ఆ

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

  28. None
  29. None
  30. None
  31. SmartHR::ID ߏ૝ • SmartHR ͷΞΧ΢ϯτΛ͍࣋ͬͯΕ͹స৬΍స੶ Λͨ͋͠ͱͰ΋ɺաڈͷࣗ෼ͷैۀһ৘ใͳͲΛ ӾཡͰ͖Δ • څ༩໌ࡉͱ͔ݯઘ௃ऩථͱ͔ •

    ैۀһ৘ใΛաڈॴଐ͍ͯͨ͠اۀ͔Βస৬ઌ ʹ 1 click Πϯϙʔτͨ͠Γ • ϚΠφϯόʔͷ༬͔Γอ؅ (๏཯্͋Εͳ໰୊ ͸͋Γ·͢.. )
  32. SmartHR::ID ߏ૝ • ࣾձΠϯϑϥ(ͷՄೳੑ)ͱͯ͠΍͍͖ͬͯ

  33. We are hiring! • Ұॹʹࣾձج൫ΛϋοΫ͢Δ஥ؒืूதͰ͢ • དྷ೥ SmartHR::ID ߏ૝Λ۩ମԽͤ͞Δ༧ఆͳͷͰ Ұॹʹ΍Γ·ͤΜ͔ʂ

    • ࢲ͕த৺ͳΔ༧ఆͰ͢ʂ • SSO ͱ͔ SAML ͱ͔AD ͱ͔ৄ͍͠ํ͜ͷ͋ͱ͓ ࿩͠·ͤΜ͔ʂ
  34. Who • @tknzk ( Takumi Kanzaki ) • SmartHR ιϑτ΢ΣΞΤϯ

    δχΞ