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

Rails アプリケーションで複数認証方式を安全に扱う

Ai KATO
April 04, 2019

Rails アプリケーションで複数認証方式を安全に扱う

〜ハコベルコネクト サービスローンチ直前のリファクタ〜

継続的な開発効率を保つためサービスローンチ直前に、複数認証方式を扱うためのリファクタをしました。背景として、ラクスルの2つのサービスの位置付けを整理しつつリファクタの内容をご紹介しています。

Ai KATO

April 04, 2019
Tweet

Other Decks in Technology

Transcript

  1. 社外秘 CONFIDENTIAL © RakSul,Inc. All Rights Reserved. 自己紹介 加藤 あい 

    • 2017年3月 入社 印刷ECチームにジョイン • 2018年8月 ハコベルチームに異動 • Rails 歴: 2006年〜2011年とここ数年 サーバサイドエンジニア
  2. 社外秘 CONFIDENTIAL © RakSul,Inc. All Rights Reserved. 1. 会社・サービス紹介 2.

    新規事業でRailsの果たす役割 3. サービスローンチ直前のリファクタ ◦ アプリケーションで安全に複数認証を扱う 今日お話しすること
  3. 社外秘 CONFIDENTIAL © RakSul,Inc. All Rights Reserved. 2019年2月12日 リリース! ハコベルコネクト

    大手物流荷主と貨物事業者がつながるプラットフォーム
  4. 社外秘 CONFIDENTIAL © RakSul,Inc. All Rights Reserved. 新規事業におけるサービス開発 投資効率をよくしたい(= ニーズにタイムリーに応える)

    継続的な開発効率も保ちたい チームで明日を迎える! (死は突然来たりする) 成長させ続けられるか 図: ラクスルIR資料より
  5. 社外秘 CONFIDENTIAL © RakSul,Inc. All Rights Reserved. 新規事業におけるRails の果たす役割(1) •

    少人数のチームで立ち上げ時期におけるたくさんのニーズに 素早く応えられる = 「チームで明日を迎える」 ◦ ゲームやコンシューマーサイトのようなアクセスがないサービスでは、ロジック を組むことが初期の開発のメイン ◦ にのっかることで早くて綺麗に書く ◦ ノウハウや便利に使えるものがたくさん ▪ 車輪の再発明をしなくて済む 「投資効率をよくする」には応えられる 「継続的な開発効率を保つ」には?
  6. • システム規模が違ったらアーキテクチャに求められる要件は異なる ◦ アーキテクチャの変更が必要になるのは当たり前 • 初期フェーズでは、システム全体の見通しをよくしておく ◦ 中規模以降のアーキテクチャを見据えつつも、無駄に頑張らない ◦ エンジニアが技術負債を感じずに開発できる期間を長くすることにフォーカス

    • アプリ分割やマイクロサービス化などアーキテクチャの変更をしていく段階 では、技術の選択肢が増える ◦ 求められる要件や組織的なリソースの確保や学習コストとの兼ね合い ◦ 資金的にも余裕が出てくる ◦ エンジニアの好奇心を満たしチャレンジを促すのも大事 ◦ Rails でも結構いける (ラクスルの自動データチェック ※3) 継続的な開発効率を保つために
  7. 社外秘 CONFIDENTIAL © RakSul,Inc. All Rights Reserved. ハコベルコネクト サービスローンチ直前のリファクタ -

    継続的な開発効率を保つために - Rails アプリケーションで安全に複数認証方式を扱う
  8. 社外秘 CONFIDENTIAL © RakSul,Inc. All Rights Reserved. ハコベルコネクトの開発経緯 • 実証実験の実施

    • 企業管理 配車 担当画面 ドライバーアプリ • • 機能の妥当性検証 • 数人 • サービスローンチ • 企業管理 配車 担当画面 ドライバーアプリ • オフライン対応 • デザインリファイン &アーキテクチャ変更 • の倍 Phase 1, 2 Phase 3
  9. 社外秘 CONFIDENTIAL © RakSul,Inc. All Rights Reserved. • 接続してくるものたち ◦

    企業管理者 ◦ 配車担当者 ◦ 内部のオペレーター ◦ ドライバーアプリ ◦ ◦ 外部システム(システム連携) • 認証:オーソドックスに Devise & Doorkeeper を使っています ◦ パスワード認証(ユーザ画面) ◦ 認証 (管理画面) ◦ (アプリ 外部システム) ハコベルコネクトの接続元と認証 /api/v1/ のAPI たち... このエンドポイントどこから使 われているの? 見通し悪くて走っている途中 でコードベースがカオスになり そう それぞれの認証ちゃんとでき てるの?
  10. 社外秘 CONFIDENTIAL © RakSul,Inc. All Rights Reserved. • 認証方式ごとにルーティングで を分ける

    ◦ エンドポイントも変わるし、やるならローンチ前に ◦ (ビジネスサイドの理解も得られた) ◦ ユーザ種別 認証方式 で整理 ◦ ごとに を作成して 認証をハンドリング • メリット ◦ 日常の機能開発で意識しなく済む ◦ 大事なところを変更させない! ◦ 通知で問題箇所がすぐわかる ◦ システムの見通しが良く設計しやすい 複数の認証方式を安全に扱えるようにしよう! - mobile/ … アプリからの接続 - group/ … 配車担当者の機能群 - web/ … slim, pdf を返す - api/ - external/ … 外部システムからの接続 - internal/ … Vue で利用 - ops/ … 管理画面 - web/ - api/ ...
  11. 社外秘 CONFIDENTIAL © RakSul,Inc. All Rights Reserved. • 事業のフェーズによって求められることは変わる ◦

    は初期フェーズのチームの強い味方 ◦ 先のフェーズをいくアプリを参考にすると、最小限の継続的な開発効率 を保つ工夫ができる • 複数認証を適切に扱うためのリファクタをローンチ直前に実施 ◦ 継続的な開発効率を保つ工夫の一つ ◦ ローンチ後はビジネスロジックの開発に集中できる ◦ まとめ
  12. 社外秘 CONFIDENTIAL © RakSul,Inc. All Rights Reserved. 1. 『そうだ、ラクスルを作り直そう! 』

    ◦ 『一枚岩なレガシーシステムを ラクスルではどのように しているの か 』 ◦ 『スピードチェック入稿リリース秘話』 ◦ 参考資料