0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

なぜBaas (Backend as Service)はアプリ開発する際に無視できないのか

Posted at

今の時代ではアプリの開発に際して何年間もかける余裕はありません。わずかな期間で開発を完了し市場に出さなければなりません。より良いアジャイルモデルを用いてコアの専門に基づき、アプリをリリースしなければいけません。いわゆる「non-invented-here 」シンドロームに拘ることは最悪な状況に至ります。

想像するアプリはいずれも、いずれかの「アップストア」に存在するか、どちらかの大手企業或いは小規模な会社で開発中であるかもしれません。Time-to-Marketは重要なパラメータであり、遅れて市場にアプリを出すことは関連性のないものになり、存在する競争相手にキャッチアップすることは大変になります。

単純でないアプリを開発する為にアーキテクチャ及びプラットホームの複数な層におきましては専門知識を持たなければなりません。

デバイス: モバイルデバイス用の
サーバ側 : その他
データベース: その他
クラウド•コンピューティング : その他
開発者はファイアウォールポート、セキュリティ、パッチ、高可用性、スケーラビリティ、パフォーマンスなどについて適切に設定する知識を持つ必要があります。

システム監視及び管理 – サーバのヘルスチェック及びサーバ管理・データ(即ちバックアップ)、地理的な冗長など

開発者が実行するタスクにおいては幅広いプラットホーム及びアーキテクチャ層のスキルの発育の為に多くの時間がかかり、コアの機能に集中する時間が短縮されてしまいます。
最終的に開発者の想像より開発期間が長引いてしまいます。

開発者は専門知識を持っていても想定予算と期間より莫大な工数が掛かってしまいます。
サービス提供者より提供される仮想マシンが高いということもあり、開発者においては費用効果のある解決法として見えません。なお、アプリが市場にリリースする前にその費用を負担することは全体予算に大きい影響を与えてしまいます。
- サーバ側の開発はデバイス開発と比較すると全く違う分野である為、特別なスキルを要するほか、莫大な工数及び期間がかかります。社内開発することを決定しても費用をつり上げることに繋がります。

  • アプリ開発を委託するサービス会社においてはデバイス・クライアント側とサーバ側の開発は別々のチームで実施することになります。クライアント側開発を実施するチームはサーバチームに依存することもあり要望するインタフェースを実現するために頻繁な仕様変更が実施されることで喧嘩に至る場合もあります。
    この依存性はスケジュールに間に合わせる為に必要のない圧力及びチームのやる気を低下することに繋がります。
  • 非機能要件を達成する為にサーバ及びインフラの管理は複雑すぎます。実例としては
    拡張性、性能、高可用性、セキュリティーなどに関連する非機能要件は莫大な工数及び時間がかかりますし、特別なスキルも必要となります。

サービスプロバイダは上記の面倒を見ることになるとどうなるでしょう。バックエンドアプリを管理するものはその面倒を見てくれるとどの程度楽になるでしょう。

- 継続的に新しい機能の追加及びバージョン管理されているインタフェースの保守は簡易にできます。
- クラウド環境においてはアプリの展開する複雑性、サーバインストール及び管理は開発者にとって気にしないことになります。
- 大抵の場面においては創造的な機能が提供可能になります。
- カスタムロジックが必要となる場合はカスタムソースの配置が可能になり、既存サーバと共に稼動可能になります。
- デバイスとウェブ用で人気のあるプラットホーム全てに対してネイティブSDKか提供可能になります。
- バックエンドが同一となり、同様なインタフェースを持つネイティブSDKのみの変更が必要とのことで一つ以上のプラットホームに対して簡易にサポートが可能になります。
- 管理コンソールを提供することでSDKを用いて生成された全データにアクセス及び管理が可能になります。

Backend as a Service – BaaSが救助にきます。Platform as a Service – PaaSの論理的発展であり、上記の弱点の解決法となります。BaaSはPaaS上に載せることになります。全てのサービスに対してRESTのインタフェースが提供される、ネイティブSDKを通してアクセス可能です。モバイル開発に対して更に特定のプラットフォームはMobile Backend as a Service – MBaaSとなります。

  • 開発者が開発する技術に該当するSDKライブラリを追加し、結合の為に僅かのソースコードを作成することで仕事完了です
  • 利用開始日よりその創造的な機能が使用可能になります。サーバ管理が不要ですし、ボイラプレートソースコードを作成する必要はありません。
  • カスタムソースコード作成の為に柔軟性を持ちます。
  • サーバ側の機能の必要となる勉強・募集・開発が入りません。
  • 上記と共に時間・工数・費用が確保できます

Backend as a Serviceは毎日のように発展していきます。「MEAP vision」に参加しアプリ開発者の成功に貢献します。MEAPは Mobile Enterprise Application Platformと略され、GartnerよりGartner Magic Quadrantにて造語されました。

使い古された80-20ルールを適用します。アプリ開発に際してサーバ側に必要となる80%の機能をカバーし、残りの20%については幾つかのBaaS提供者はクラウド上にカスタムソースコードを実行するセットアップの提供を開始しています。二つ以上のAPIをすりつぶすことで上位層のfaçade APIの作成は可能です。
BaaS提供者が提供する普段のサービスは以下となります。

  • ユーザ管理
  • ストレージ
  • プッシュ通知
  • ソーシャル
  • 地理空間(Geo Spatial)

複数のドメインの間、更に多いサービスを提供する提供者も存在します。
既にBackend as a Serviceは多数の開発により利用中です。発展するペースを参考にすることで無視できない技術と確信し、配慮しなければなりません。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?