Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

Speaker プロダクト開発本部 開発2部 サーバー1グループ Integration Engineer 岩永 晃範 SaaSプロバイダー、CRM/MA SIerのインフラから 開発の全般に従事 2022年3 月 にヤプリにJoin、福岡を拠点に活動。 常に趣味の 魚 釣りの事しか考えていない。 https://github.com/akippe

Slide 3

Slide 3 text

01 02 03 04 05 Integration Engineer とは 開発 ・ カスタマイズについて 品質担保 その他の取り組み まとめ

Slide 4

Slide 4 text

01 Integration Engineer とは

Slide 5

Slide 5 text

0 1 Integration Engineerとは 様々なシステムとの連携のニーズが増える Yappliサービスとお客様の会員システムと連携するに当たって、標準的に 用 意されている インターフェースだけでは、昨今の様々な基幹DBやSaaSサービスの多態化により 柔軟な対応が出来るサービスの必要性が出てきた。 A DB B SaaS C ج൫ D EC

Slide 6

Slide 6 text

0 1 Integration Engineerとは Integration Engineerとは? • インプリメント部 門 のTechnical Account Manager(ҎԼTAM)チームと連携し Yappliサービスとクライアントのシステム間連携する為のAPI開発を 行 う • CMSやアプリなどのYappliサービスを開発する部 門 とは別で開発している部隊 • Integration Engineer(ҎԼIE)として様々なサービス ・ 部 門 と横断的に連携する

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

0 1 Integration Engineerとは 開発業務に必要なスキル • 言 語:PHP / Go などの開発経験 • APIの 一 般知識 • AWS / GCPなどのクラウドサービス経験 • ヒューマンスキル • なぜ、これを必要とするのか?(可能性を考える 力 ) • トラブルシューティング 力 = 想像 力 フレームワークの経験もあれば尚良い! 認証の 方 式、CRUDの知識、フォーマット等

Slide 9

Slide 9 text

02 開発 ・ カスタマイズについて

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

02 開発 ・ カスタマイズについて 会員連携システム概要(イメージ) YappliαʔϏε Segment ձһ࿈ܞγεςϜ Segment ϙΠϯτͷ ৘ใΛԼ͍͞ͳʂ Jsonデータ返却 APIリクエスト ͓·ͨͤʂ ͜ͷ৘ใͩΑʔʂ ͓٬༷γεςϜ APIリクエスト データ返却 Xࣾ͞Μͷೝূ͸OAuthͰ ϑΥʔϚοτ͸XMLͰ͢Ͷ! … A͞Μͷ৘ใ ͪ͜ΒͰ͢Αʂ Yappli ͔Βґཔͩʂ ೝূ΋OKʂ ͋Γ͕ͱ͏ʂ YappliϑΥʔϚοτʹՃ޻ͯ͠…

Slide 12

Slide 12 text

02 開発 ・ カスタマイズについて どのようなAPIを扱っているのか 標準API Yappliの標準規格として汎 用 的にご利 用 頂けるAPI 開発不要 カスタムAPI 標準APIのみでは要件を満たせない、特殊な認証、 暗号化、表 示 ロジックの独 自 カスタマイズ等が必要な場合 開発要 規模: 小 〜中 スーパーカスタム API カスタムAPIに加えて、個別のDB機能 ・ SAML認証、 独 自 のWebインターフェースが必要な場合 開発要 規模: 大 3छྨͷAPIγεςϜ͕༻ҙ͞Ε͍ͯ·͢

Slide 13

Slide 13 text

02 開発 ・ カスタマイズについて どれくらいの規模? • API数は約300本 • ファイル数 1000強 ステップ:10万以上 • テストカバレッジは100%維持 • 開発スパン ※   • 小 規模:2〜5 日 • 中規模:5〜10 日 • 大 規模:0.5ヶ 月 〜数ヶ 月 単位 খن໛ͷ৔߹ɺYappliશମεέδϡʔϧͱͯ͠ ΫϥΠΞϯτ༷ͱΩοΫΦϑMTG→ཁ݅ఆٛ→࣮૷ →QA→ΞϓϦϦϦʔε·ͰͰɺ1ʙ2ϲ݄ఔͱͳΓ·͢ ※Tips

Slide 14

Slide 14 text

I/Fが各機構で確 立 しており、各APIとして独 立 している コンフリクトは発 生 しない その為、完全に独 立 したセクションとしての開発 ・ 構築が可能 また追加改善の機能要望としも社内での依頼がシームレスに依頼出来る 02 開発 ・ カスタマイズについて 別の部隊として動いているがコンフリクトは無いのか?

Slide 15

Slide 15 text

• PJとしてチケットベースに動くアジャイルなYappliサービス開発チーム • 検収 日 をトリガーにしてウォーターフォールに動くIEチーム 開発スタイルが異なっても業務上 支 障は発 生 しない The Model構想の組織編成になっているからの利点 02 開発 ・ カスタマイズについて 別の部隊として動いているがコンフリクトは無いのか?

Slide 16

Slide 16 text

03 品質担保

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

03 品質担保 常にリファクタリング • APIをリリースして終了ではなく、運 用 フェーズで常にリファクタリング • 機能改善 ・非 冗 長 化を常に実施している • 品質もテストでカバレッジ100%を必守しているので機能要件は担保 常にアップデートし続けています!

Slide 19

Slide 19 text

04 その他の取り組み

Slide 20

Slide 20 text

04 その他の取り組み 「遊撃」部隊 様々なプロジェクトやプロダクトの中で、タスクフォースとして活動 チケットや問い合わせをベースに困っていること、改修したいこと等 所属する部署 ・ チームを横断し、解決する為に結成されている部隊 ・ CRM遊撃 ・ 問合せ遊撃 など、各所で担当が集まり、問題を解決していく活動を 行 う

Slide 21

Slide 21 text

04 その他の取り組み 今後やりたいこと • PHPからGoプラットフォームへのリプレイス • Yappliは現在メインプラットフォームをGoにて運 用 • Goならではの堅牢性 ・高 速化処理を実現できる

Slide 22

Slide 22 text

04 その他の取り組み 今後やりたいこと • RESTfulに向けた改修 • Rest APIとしては動いているが、RESTful APIとしての進化を 目 指したい • 将来的にはAPIの公開も視野に検討 ॻ͖͖Ε·ͤΜ͕ɺଞʹ΋΍Γ͍ͨࣄ͕੝Γ୔ࢁʂʂ

Slide 23

Slide 23 text

05 まとめ

Slide 24

Slide 24 text

05 まとめ まとめ • IEとはYappliサービス開発とは別の基幹システムを繋ぐ開発をしている • テスト開発を主軸としており、I/Fも確 立 しているので迷うことが無い • 常に改善を求めて、業務を 行 うことが可能 • 難易度はやや 高 めではあるが、裁量も 大 きく業務を 行 うことが出来る • 遊撃などで様々な課題に対し分野を問わず、アプローチすることが可能