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

SaaSとしての基盤部分に影響を出さずに個社カスタマイズを行っていくための取り組み / C...

SaaSとしての基盤部分に影響を出さずに個社カスタマイズを行っていくための取り組み / Core-Safe Customization Strategies for SaaS Platforms

Yappli Tech Conference 2023 登壇資料

connpass:
https://yappli.connpass.com/event/295001/

セッション動画(YouTube:)
https://youtu.be/0Y5uwywVRl4?si=ss5KSL1VOqKSarlo

Yappli Developers

December 04, 2024
Tweet

More Decks by Yappli Developers

Other Decks in Technology

Transcript

  1. Speaker プロダクト開発本部 開発2部 サーバー1グループ Integration Engineer 岩永 晃範 SaaSプロバイダー、CRM/MA SIerのインフラから

    開発の全般に従事 2022年3 月 にヤプリにJoin、福岡を拠点に活動。 常に趣味の 魚 釣りの事しか考えていない。 https://github.com/akippe
  2. 01 02 03 04 05 Integration Engineer とは 開発 ・

    カスタマイズについて 品質担保 その他の取り組み まとめ
  3. 0 1 Integration Engineerとは Integration Engineerとは? • インプリメント部 門 のTechnical

    Account Manager(ҎԼTAM)チームと連携し Yappliサービスとクライアントのシステム間連携する為のAPI開発を 行 う • CMSやアプリなどのYappliサービスを開発する部 門 とは別で開発している部隊 • Integration Engineer(ҎԼIE)として様々なサービス ・ 部 門 と横断的に連携する
  4. 0 1 Integration Engineerとは どのような業務を 行 っている? • TAMチームと顧客要件のフィジビリティチェック •

    連携システムとどの様に繋ぎ込みを 行 うかの仕様検討 • 特にAPIを扱う開発になるので冪等性確認は重要 • プラットフォームに対するセキュリティ保守 ・ VersionUpも常に実施 • 様々なプロジェクト ・ プロダクトに対し横断して問題解決 ・ 改修対応を 行 う業務
  5. 0 1 Integration Engineerとは 開発業務に必要なスキル • 言 語:PHP / Go

    などの開発経験 • APIの 一 般知識 • AWS / GCPなどのクラウドサービス経験 • ヒューマンスキル • なぜ、これを必要とするのか?(可能性を考える 力 ) • トラブルシューティング 力 = 想像 力 フレームワークの経験もあれば尚良い! 認証の 方 式、CRUDの知識、フォーマット等
  6. 02 開発 ・ カスタマイズについて 会員連携システム概要 YappliαʔϏε Segment ձһ࿈ܞγεςϜ Segment ͓٬༷γεςϜ

    今何ポイント? 1 0 0 0 ポイント! API ઀ଓ API ઀ଓ 各セグメントに分離されており、API接続による連携を 行 っている IEが担当するのは会員連携システム ・自 社システム ・ ECシステム ・ CRM 等
  7. 02 開発 ・ カスタマイズについて 会員連携システム概要(イメージ) YappliαʔϏε Segment ձһ࿈ܞγεςϜ Segment ϙΠϯτͷ

    ৘ใΛԼ͍͞ͳʂ Jsonデータ返却 APIリクエスト ͓·ͨͤʂ ͜ͷ৘ใͩΑʔʂ ͓٬༷γεςϜ APIリクエスト データ返却 Xࣾ͞Μͷೝূ͸OAuthͰ ϑΥʔϚοτ͸XMLͰ͢Ͷ! <XML> … A͞Μͷ৘ใ ͪ͜ΒͰ͢Αʂ Yappli ͔Βґཔͩʂ ೝূ΋OKʂ ͋Γ͕ͱ͏ʂ YappliϑΥʔϚοτʹՃ޻ͯ͠…
  8. 02 開発 ・ カスタマイズについて どのようなAPIを扱っているのか 標準API Yappliの標準規格として汎 用 的にご利 用

    頂けるAPI 開発不要 カスタムAPI 標準APIのみでは要件を満たせない、特殊な認証、 暗号化、表 示 ロジックの独 自 カスタマイズ等が必要な場合 開発要 規模: 小 〜中 スーパーカスタム API カスタムAPIに加えて、個別のDB機能 ・ SAML認証、 独 自 のWebインターフェースが必要な場合 開発要 規模: 大 3छྨͷAPIγεςϜ͕༻ҙ͞Ε͍ͯ·͢
  9. 02 開発 ・ カスタマイズについて どれくらいの規模? • API数は約300本 • ファイル数 1000強

    ステップ:10万以上 • テストカバレッジは100%維持 • 開発スパン ※   • 小 規模:2〜5 日 • 中規模:5〜10 日 • 大 規模:0.5ヶ 月 〜数ヶ 月 単位 খن໛ͷ৔߹ɺYappliશମεέδϡʔϧͱͯ͠ ΫϥΠΞϯτ༷ͱΩοΫΦϑMTG→ཁ݅ఆٛ→࣮૷ →QA→ΞϓϦϦϦʔε·ͰͰɺ1ʙ2ϲ݄ఔͱͳΓ·͢ ※Tips
  10. I/Fが各機構で確 立 しており、各APIとして独 立 している コンフリクトは発 生 しない その為、完全に独 立

    したセクションとしての開発 ・ 構築が可能 また追加改善の機能要望としも社内での依頼がシームレスに依頼出来る 02 開発 ・ カスタマイズについて 別の部隊として動いているがコンフリクトは無いのか?
  11. • PJとしてチケットベースに動くアジャイルなYappliサービス開発チーム • 検収 日 をトリガーにしてウォーターフォールに動くIEチーム 開発スタイルが異なっても業務上 支 障は発 生

    しない The Model構想の組織編成になっているからの利点 02 開発 ・ カスタマイズについて 別の部隊として動いているがコンフリクトは無いのか?
  12. 03 品質担保 どの様に品質を担保しているのか 静的解析 PHP Stan を 用 いて静的解析テスト ユニットテスト

    クラスやメソッドを単体でテスト 及び、複数のクラスやメソッドをテストする APIは頂いている仕様書よりモック化されたもの コードカバレッジ 100%必達 インテグレーションテスト QAテスト(別部 門 ) 機能仕様、設計内容の確認と評価 ・ レビュー 個別のテストケース作成 ・ テストの実施 CI(GitHub Actions) で 自 動化されています ։ൃˠCIςετɻͦͷޙ͸QA෦໳ʹΑΔE2EςετΛߦ͍·͢
  13. 03 品質担保 常にリファクタリング • APIをリリースして終了ではなく、運 用 フェーズで常にリファクタリング • 機能改善 ・非

    冗 長 化を常に実施している • 品質もテストでカバレッジ100%を必守しているので機能要件は担保 常にアップデートし続けています!
  14. 04 その他の取り組み 今後やりたいこと • RESTfulに向けた改修 • Rest APIとしては動いているが、RESTful APIとしての進化を 目

    指したい • 将来的にはAPIの公開も視野に検討 ॻ͖͖Ε·ͤΜ͕ɺଞʹ΋΍Γ͍ͨࣄ͕੝Γ୔ࢁʂʂ
  15. 05 まとめ まとめ • IEとはYappliサービス開発とは別の基幹システムを繋ぐ開発をしている • テスト開発を主軸としており、I/Fも確 立 しているので迷うことが無い •

    常に改善を求めて、業務を 行 うことが可能 • 難易度はやや 高 めではあるが、裁量も 大 きく業務を 行 うことが出来る • 遊撃などで様々な課題に対し分野を問わず、アプローチすることが可能