🔥

Webバックエンドの複雑さと負のスパイラル

に公開

Webバックエンドの 複雑さ(構成要素) とそれらを軽視した場合のビジネスリスクをまとめました。

まずは以下の図を見て下さい。
これは 「品質の低いリリース」 を起点としてチームやプロダクトにどのような悪影響が発生するかを図にしたものです。
悪影響は連鎖し究極的には最下部の 「ビジネスの失敗」に繋がる可能性があることを図示しています。
数年以上システム開発に関わった事がある方であれば、矢印を辿ってみると心当たりのある事象に行き着くかと思います。


「品質の低いリリース」から連鎖的に発生する悪影響の図

特に注意したいのが、以下の赤線です。この線によりこの図は循環しています。
これは「品質の低いリリース」が次の「品質の低いリリース」に繋がり、負のスパイラルに陥る可能性があることを示しています。


赤線によって循環することにより負のスパイラルに陥る可能性を示す図

この負のスパイラルを防ぐには、バックエンドの複雑さ(構成要素)と重要さを理解し、問題が表面化する前に先手で改善を進めることが重要です

以下はバックエンドの複雑さ(構成要素)を可視化した図です。
本記事では、これらの構成要素を軽視した場合のビジネスリスク(悪影響)について説明していきます。


バックエンドの複雑さ(構成要素)を可視化した図

なお、「バリデーションもドメインロジックだろ」や「ジョブ(バッチ処理)もあるだろ」といったツッコミはあると思いますが分かりやすさを優先しました。

🟦 認証・認可

  • 概要

    • ユーザーの本人確認と権限管理を行います。
  • 🔥 ビジネスリスク

    • 外部からの攻撃により顧客データ流出などが発生した場合、「顧客からの信用低下」「売上・収益率低下」に直結する可能性があります。
    • 障害の内容次第では「サービス停止期間」が長引く可能性があります。
    • 障害対応」「再設計・再実装」のコストも高くなる傾向があります

🟦 バリデーション

  • 概要

    • 入力データの妥当性チェックを行い、不整合なデータがシステムに混入することを防ぎます。
  • 🔥 ビジネスリスク

    • 永続化層(DB等)や外部サービスの整合性を損なう障害が発生すると、データ修復作業によって「障害対応」のコストが大きくなる傾向がある。

🟦 ドメインロジック

  • 概要

    • 業務を遂行するための本質的なロジックです。自社内で知識を整理・体系化・形式知化する必要がある最も重要な部分です。
  • 🌟 ビジネス価値

    • 他社との差別化要因であり、競争力の源泉となります。
  • 🔥 ビジネスリスク

    • ドメイン知識を体系化する術を持たない場合「ドメイン知識の喪失」→「品質の低いリリース」に直結します
    • 顧客の期待を満たせない」に繋がる
      • 再設計・再実装」のコストが発生する可能性があります。
    • 競合他社との差別化ができず、競争優位性を失う可能性があります。

🟦 スケーラビリティ・パフォーマンス

  • 概要

    • システムの規模拡大に対応し、快適なレスポンスを維持するための設計です。
    • 一定規模を超えると非同期処理や結果整合性、それに伴って冪等性の担保などが必要になり、一見単純な機能でも複雑なロジックになることがあります
  • 🔥 ビジネスリスク

    • 問題が顕在化したタイミングでこれらに対処するには根本的な設計を見直さないといけないケースが多く、「再設計・再実装」のコストが高くなる傾向があります。
    • トラフィック増加に耐えられないと「障害」に繋がる可能性があります。

🟦 ロギング・エラーハンドリング

  • 概要

    • システムの動作履歴を記録し、デバッグや監査、分析に活用します。
  • 🔥 ビジネスリスク

    • ログ出力が不適切だと、本番環境で障害発生時に原因を特定するのが困難になり、「サービス停止期間」が伸びる可能性があります

🟦 CI・テストコード

  • 概要

    • 継続的インテグレーションとテスト自動化により、品質を担保しながら開発速度を向上させます。
  • 🌟 ビジネス価値

    • バグの早期発見により「品質の低いリリース」を防げる可能性があります。
    • 開発者の心理的安全性の向上(チーム崩壊を防ぐ
    • 再設計・再実装」がやりやすくなる可能性があります。
    • リファクタリングによる技術的負債の削減が可能となります(開発効率の維持
  • 🔥 ビジネスリスク

    • 上記のメリットを教授できず、「品質の低いリリース」に繋がる可能性が高まります。

🟦 各種DB・ストレージ(データの永続化)

  • 概要

    • 永続化層(DB等)のデータの読み書きを行う
    • 永続化層のスキーマの設計・管理
    • データの整合性の維持
    • 既存データとの後方互換性の考慮
    • 排他制御
  • 🔥 ビジネスリスク

    • 永続化層の設計ミス・実装ミスは前述したパフォーマンスの問題に繋がりやすく、トラフィック増加に耐えられないと「障害」に繋がる可能性があります
    • 一度データが登録されると後方互換性の考慮等で「再設計・再実装」のコストが高くなる傾向がある。
    • 永続化層(DB等)の整合性を損なう障害が発生すると、データ修復作業によって「障害対応」のコストが大きくなる傾向がある。

🟦 外部サービス

  • 概要

    • 決済、メール送信、SMS、プッシュ通知など、外部サービスとの連携を管理します。
  • 🔥 ビジネスリスク

    • 外部サービスの障害が自社サービスの「障害発生」に繋がる可能性があります。
    • 外部サービスの仕様変更により「再設計・再実装」のコストが発生する可能性があります。
    • 外部サービスの整合性を損なう障害が発生すると、データ修復作業によって「障害対応」のコストが大きくなる傾向がある。

🟦 おわりに

Webバックエンドは、単なる「裏方」ではありません。システムの複雑さを引き受け、ドメイン知識を形にし、継続的な価値提供を支えるビジネスの中核です。

現実的には、最初から全てを完璧にこなすのは難しいでしょう。しかし、各要素の重要性とリスクを理解し、優先順位を付けて着実に改善していくことが重要です。

バックエンドを軽視すれば、負のスパイラルに陥り、究極的にはビジネスの失敗に繋がりかねません。
逆に、適切に投資し育てることで、それは競争力の源泉となります。

この記事が、バックエンドの複雑さと価値を理解し、より良いシステム開発につながる一助となれば幸いです。

(余談)最後まで読んで頂きありがとうございます!
内容に共感頂けたら いいね or SNSで共有 頂けると励みになります 🙏

Discussion