「止まらないシステム」を実現するサーバレス設計の勘所

今回は、”「止まらないシステム」を実現するサーバレス設計の勘所 “と題して、サーバレス全盛の今のシステム設計に必要な考え方や注意点についての解説記事です。
特に、サーバレス設計ではシステム特性上どうしても発生してしまう「不確実性」への対応について詳しく解説していきたいと思います。
では、さっそくはじめていきましょう!
はじめに:サーバレス時代に避けられない「不確実性」
クラウド移行で期待されるスピードとコスト効率
近年、企業のDX(デジタルトランスフォーメーション)推進において、クラウドへの移行は必須の経営戦略となっています。特にサーバレスアーキテクチャは、従来のオンプレミス環境や仮想マシン管理から解放される選択肢として注目を集めています。
サーバレスの最大の魅力は、インフラ管理の負担を大幅に削減できる点にあります。
サーバのプロビジョニング、パッチ適用、スケーリング設定といった運用作業から開発チームが解放され、ビジネスロジックの実装に集中できる環境が実現するのです。
さらに、実際の処理時間に応じた従量課金モデルにより、アイドル状態のサーバに対するコストが発生しないため、スタートアップ企業から大企業まで、幅広い規模の組織でコスト最適化が可能になります。
AWS Lambdaを例に取ると、リクエストが発生した瞬間だけ計算リソースが割り当てられ、処理完了後は自動的に解放されます。
この仕組みにより、トラフィックの変動が激しいシステムでも、ピーク時に合わせた過剰なリソース確保が不要となり、運用コストを30〜50%削減できたという事例も報告されている程です。
サーバレスアーキテクチャ特有の課題:「1回だけ実行」の難しさ
しかし、サーバレスの利便性の裏側には、従来のアーキテクチャでは顕在化しにくかった課題が潜んでいます。
その最たるものが「処理が正確に1回だけ実行される保証がない」という問題です。
サーバレス環境では、関数の実行が分散システム上で管理されるため、ネットワークの一時的な不安定さや、クラウドプロバイダー側のインフラメンテナンス、タイムアウト設定などにより、処理が予期せず中断されることがあります。
クラウドサービスは高い可用性を実現するため、失敗した処理を自動的に再試行する仕組みを持っていますが、この再試行メカニズムが思わぬ副作用を生み出すのです。
具体的には、ECサイトの決済処理を考えてみましょう。
顧客が「購入確定」ボタンを押した瞬間、サーバレス関数が起動して決済APIを呼び出します。しかし、決済APIからのレスポンスを受け取る直前にネットワークが瞬断したらどうなるでしょうか。
クラウド側は「処理が失敗した」と判断し、自動的に同じ関数を再実行します。結果として、顧客のクレジットカードに二重請求が発生してしまう恐れがあります。
システム担当者が知っておくべきキーワード「冪等性(べきとうせい)」とは?
このような問題を解決する鍵となる概念が「冪等性(べきとうせい)」です。
冪等性とは、同じ操作を何度実行しても、1回だけ実行した場合と同じ結果になる性質を指します。
数学的な例で言えば、「絶対値を取る」操作は冪等性を持ちます。
|-5|=5 ですが、さらに絶対値を取っても |5|=5 となり、何度繰り返しても結果は変わりません。
一方、「2を掛ける」操作は冪等性を持ちません。
5×2=10、さらに10×2=20 と、実行するたびに結果が変わってしまいます。
システム設計においても同様に、「何度実行されても安全な処理」と「1回だけ実行されなければならない処理」を明確に区別し、後者については冪等性を確保する設計が不可欠です。
特にサーバレス環境では、再試行が自動的に行われる前提で設計しなければ、ビジネスに深刻な影響を及ぼすリスクが高まります。
「動けばいい」という発想から「何度実行されても正しく動く」という発想への転換が、サーバレス時代のシステム設計における最重要ポイントなのです。
解説記事「「止まらないシステム」を実現するサーバレス設計の勘所」の続きは
現在準備中です。
公開までお待ちください。
APPSWINGBYは、最先端の技術の活用と、お客様のビジネスに最適な形で実装する専門知識を有しております。サーバレスアーキテクチャ、クラウドネイティブなシステム開発、既存の業務システムへの統合などの他、リファクタリング、リアーキテクチャ、DevOps環境の構築、ハイブリッドクラウド環境の構築なからIT特化型のコンサルティングサービスなど提供しています。
貴社のセキュリティ対策等についてご相談されたい方は、お問い合わせフォームからお気軽にご連絡ください。システムの専門家が、貴社の課題解決をサポートいたします。

システム開発にお困りではありませんか?
もしも今現在、
- どのように開発を依頼したらよいかわからない
- どのように開発を依頼したらよいかわからない
- 企画や要件定義の段階から依頼できるのか知りたい
- システム開発費用がどれくらいかかるのか知りたい
- 見積りがほしい
など、システム開発に関するご相談・ご依頼がございましたら、お気軽にご相談ください。APPSWINGBYでは、「アプリでお客様のビジネスを加速し、お客様とともにビジネスの成功と未来を形作ること」をミッションとしています。大手SIerやR&D部門で培った経験やノウハウ、高度な技術力でお客様の「やりたい」を実現します。
この記事を書いた人

株式会社APPSWINGBY マーケティング
APPSWINGBY(アップスイングバイ)は、アプリケーション開発事業を通して、お客様のビジネスの加速に貢献することを目指すITソリューションを提供する会社です。
ご支援業種
情報・通信、医療、製造、金融(銀行・証券・保険・決済)、メディア、流通・EC・運輸 など多数

株式会社APPSWINGBY マーケティング
APPSWINGBY(アップスイングバイ)は、アプリケーション開発事業を通して、お客様のビジネスの加速に貢献することを目指すITソリューションを提供する会社です。
ご支援業種
情報・通信、医療、製造、金融(銀行・証券・保険・決済)、メディア、流通・EC・運輸 など多数
監修

株式会社APPSWINGBY CTO 川嶋秀一
動画系スタートアップや東証プライム上場企業のR&D部門を経て、2019年5月より株式会社APPSWINGBY 取締役兼CTO。
Webシステム開発からアプリ開発、AI導入、リアーキテクチャ、リファクタリングプロジェクトまで幅広く携わる。
C, C++, C#, JavaScript, TypeScript, Go, Python, PHP, Java などに精通し、Vue.js, React, Angular, Flutterを活用した開発経験を持つ。
特にGoのシンプルさと高パフォーマンスを好み、マイクロサービス開発やリファクタリングに強みを持つ。
「レガシーと最新技術の橋渡し」をテーマに、エンジニアリングを通じて事業の成長を支えることに情熱を注いでいる。

株式会社APPSWINGBY CTO 川嶋秀一
動画系スタートアップや東証プライム上場企業のR&D部門を経て、2019年5月より株式会社APPSWINGBY 取締役兼CTO。
Webシステム開発からアプリ開発、AI導入、リアーキテクチャ、リファクタリングプロジェクトまで幅広く携わる。
C, C++, C#, JavaScript, TypeScript, Go, Python, PHP, Java などに精通し、Vue.js, React, Angular, Flutterを活用した開発経験を持つ。
特にGoのシンプルさと高パフォーマンスを好み、マイクロサービス開発やリファクタリングに強みを持つ。
「レガシーと最新技術の橋渡し」をテーマに、エンジニアリングを通じて事業の成長を支えることに情熱を注いでいる。