In today’s day and age one does not have the luxury to build applications, which have release cycles beyond few months leave apart years like before. One needs to be super agile and focus on your core expertise, leverage whatever one can use and release the app at the earliest. Sticking to the non-invented-here syndrome, just might be a recipe for disaster.

今の時代ではアプリの開発に際して何年間もかける余裕はありません。わずかな期間で開発を完了し市場に出さなければなりません。より良いアジャイルモデルを用いてコアの専門に基づき、アプリをリリースしなければいけません。いわゆる「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は多数の開発により利用中です。発展するペースを参考にすることで無視できない技術と確信し、配慮しなければなりません。

Hoy en día nadie puede tener lujo para desarrollar aplicaciones, que tienen ciclos de lanzamiento mas allá de unos pocos meses, deja separado como antes. Uno tiene que ser sur ágil y concentrarse en su experiencia central, ventaja lo que uno se puede usar y lanzar la aplicación lo antes posible. Quedarse con un síndrome no inventado, podría ser una receta para gran desastre. Imagínese sobre una idea de aplicaciones, sea de móvil, red, videojuegos o aplicaciones sociales y probablemente uno se pueda encontrar en AppStore, si nadie trabaja en esta idea, probablemente algún garaje o alguna empresa este trabajando en la misma idea. El tiempo de comercialización es fundamental, lanzar el App tarde en el mercado, podría perder su relevancia en el mercado o ponerse al día con la competencia podría ser una tarea desalentadora.

El desarrollo de una aplicación no trivial requiere experiencia en diversas capas de la arquitectura y las plataformas.

Aparato- : iOS, Android, Windows 7/8, HTML5, J2ME para aparato de mobil.Lado del

servidor: Ruby, Python, Java, Scala, Groovy, Closure, .Net, Node.js etc.

Base de datos:- RDBMS, NoSQL, Embedded etc.

Computación de nube :-IaaS, Infraestructura como un servicio, Hospedara tradicional, PaaS

El desarrollador también debe tener conocimiento de la configuración adecuada para los puertos de Firewall, seguridad, parches, alta disponibilidad, escalabilidad, rendimiento, etc.

Monitorización del sistema y la Gestión-El estado de los servidores de backend y la gestión de los servidores y de los datos (por ejemplo respaldo) la redundancia geográfica, etc.

Para un programador la lista de actividades por hacer y las habilidades necesarias a través de plataformas y capas de arquitectura podría consumir mucho de su tiempo a pesar de concentrarse en las características principales. Una gran cantidad de tiempo se va en las actividades no básicas.

Al final los programadores podrían pensar que sus ideas para ver la luz del día quedarían un poco lejos de lo que ellos habían imaginado.

Aun si el programador es el experto, el tiempo absoluto y el esfuerzo que se necesita para lograrlo podrían ser más que el tiempo y presupuesto tengan.

-Puede que no sea rentable para ellos porque adquiriendo maquinas virtuales con el proveedor de IaaS es bastante caro que uno se imaginaria y pagándoles aun antes que sus apps se lanza en el mercado es algo que pueda afectar su presupuesto total significativamente.

-Desarrollar el lado de servidor lógica requiere habilidades diferentes, diferente que aparato tecnológicas y podría consumir gran cantidad de tiempo y esfuerzo. Aun si uno decide a desarrollar en casa que a su vez podría aumentar el costo.

-Para las empresas de servicios dedicadas en desarrollar la aplicación subcontratado. El desarrollo se lleva a cabo por dos equipos independientes, uno se dedica en desarrollar aparato/cliente y otro se ocupa en programar el lado del servidor. El equipo de aparato siempre depende del equipo del servidor y ellos siempre terminan peleando en la interfaz deseada o sus cambios frecuentes. Esta dependencia se suma a la presión innecesaria sobre el tiempo y la confianza en el equipo.

-Manejar sus servidores y infraestructura para los requerimientos no funcionales es complejo, por ejemplo, Escalabilidad, Disponibilidad de alto rendimiento, Seguridad etc también requiere mucho tiempo, esfuerzo y costo. No hay que olvidar conocimientos especializados, sobre todo, para la planificación de la capacidad, tamaño y configuración de la arquitectura física.

Qué pasa si algunos de los puntos principales ilustrado arriba toma cuidado por un proveedor de servicios externo. Alguien cuyo trabajo es para manejar aplicaciones de back-end.

-Continuamente sigue añadiendo nuevas características y mantener la última con interfaces públicas que están versionados.

-Mantiene el programador distraído a las complejidades de la implementación de la aplicación en la nube, la instalación del servidor y su gestión.

– se ofrece las características listo para usar para la mayoría de los casos comunes.

– Para los que requiere alguna lógica personalizada proporciona un entorno de ejecución de código personalizado que se despliega y se ejecutan en el servidor back-end junto con los servidores existentes.

– Proporciona SDK natal para todas las plataformas populares para el dispositivo y web.

-Hace que apoya más de una plataforma más fácil ya que el backend sigue siendo el mismo, sólo los SDK nativos, que tienen interfaz similar, tiene que ser cambiado.

– Proporciona una consola de administración que permite el acceso y la gestión de todos los datos generados a través del uso de los SDK

Backend como un servicio– Baas viene al rescate. Se trata de una evolución lógica de la Plataforma como Servicio- – PaaS, que trata de resolver los puntos principales y más. Baas es una capa que se asienta sobre PaaS. Muy a menudo proporciona una interfaz basada en REST para todos los servicios que pueda accederse a través de SDK nativo. Una plataforma adicional más específica para el desarrollo de fondo móvil es móvil backend como un servicio – MbaaS.

El desarrollador sólo tiene que añadir la biblioteca respectiva SDK basado en la tecnología en la que se está desarrollando, escribir unas pocas líneas de código para integrar y voila.

-Obtiene la funcionalidad original desde el primer día. No hay necesidad de administrar servidores, pasar tiempo en escribir el código de caldera placa.

– Tener flexibilidad para escribir código personalizado.

– No hay necesidad de aprender, alquilar o desarrollar la mayor parte de la funcionalidad del lado del servidor.

-Y con todo mencionado arriba, ahorra el tiempo, el esfuerzo y el costo.

Backend como un servicio se está evolucionando cada día. También se participa en la visión MEAP ayudando los programadores de aplicaciones para tener éxito que MEAP- Plataforma de aplicaciones móviles empresariales, un término acuñado por Gartner en su Cuadrante Mágico de Gartner.

Aplicar la regla de 80-20- La intención es cubrir el 80% de las características que se requiere en el lado del servidor para el desarrollo de las aplicaciones. Para el resto de las características del 20%, algunos proveedores de BaaS han comenzado a ofrecer disposición para ejecutar código personalizado en la nube. Uno se puede majar dos o más API y forjar una API de nivel más alta fachada.

Servicios más comunes que los Proveedores Baas ofrecemos son:

-Gestión Usuario

– Almacenamiento

-Empujar notificación

–Social

-Geo espacial

Algunos de ellos ofrecen muchos más servicios a través de dominios.

Ya Backend como servicio está siendo utilizado por muchos programadores en todas las plataformas. El ritmo al que está evolucionando, es sin duda una tecnología que no se puede ignorar y es para tener en cuenta.

You imagine about an App idea, be it Mobile, Web, Gaming or Social App and most likely you will find it in one of the AppStore, if not most likely someone, somewhere in some garage or a big company is working on the same idea. Time to market is essential, releasing the app late might just lose its relevance in the market or catching up with competition might become a daunting task.

Developing a non-trivial App requires expertise at various layers of the architecture and platforms.

Device : iOS, Android, Windows 7/8, HTML5, J2ME for Mobile devices

Server Side : PHP, Ruby, Python, Java, Scala, Groovy, Closure, .Net, Node.js etc

Databases : RDBMS, NoSQL, Embedded etc.

Cloud Computing : IaaS – Infrastructure as a Service, Traditional Hosting, PaaS etc.

The developer also needs to have knowledge on setting up the right configuration for Firewall ports, Security, patches, high availability, Scalability, Performance etc.

System Monitoring & Management – The health of the backend servers and managing the servers and data (e.g. Backups), geographical redundancy etc.

For a developers the list activities to be done and skills required across platforms and layers of architecture might consume too much of their time since instead of focusing on their core features. Lot of time goes into non-core activities.

Developers eventually might think that their idea to see the light of the day might be quite far from what they had imagined.

Even if the developer is an expert, the sheer time and effort it will take to achieve this might be more than the time and budget they have.

– It might not be cost effective for them because taking up virtual machines with IaaS provider is quite expensive than one imagines and paying them even before your App is released in the market itself is something which might effect his total budget significantly.

– Development of server side logic requires different skills, different than Device technologies and might consume lot of time and effort. Even if one decides to develop in-house, which in turn might inflate the cost.

– For Service companies engaged in outsourced App development. The development is done by two separate teams, one doing development on the device/client and the other specializing on the server side. The device team is always dependent on the server team and they always end up fighting on the desired interface or their frequent changing. This dependency adds on to un-necessary pressures on time lines and team morale.

– Managing your servers and infrastructure for Non-Functional requirements is complex e.g. Scalability, Performance High Availability, Security etc. Also requires lot of time, effort and cost. Not to forget specialized skills especially for capacity planning, sizing and setting up the Physical Architecture.

What if some of the pain points illustrated above is taken care by an external service provider. Somebody whose bread and butter is to manage backend apps.

– Continuously keeps on adding new features and maintaining current ones with public interfaces which are versioned.

– Keeps the developer oblivious of the complexities of the deployment of the app on the cloud, server installation and its management.

– Offers out of the box features for most of the common cases.

– For the ones which require some custom logic, gives an execution environment for custom code to be deployed and run on the backend server along with the existing servers.

– Provides native SDKs for all popular platforms for device and web.

– Makes supporting more than one platform easier since the backend remains the same, only the native SDKs which have similar interface has to be changed.

– Provides a Management Console, which allows access and management of all the data generated through the usage of the SDKs.

Backend as a Service – BaaS comes to the rescue. It is a logical evolution of Platform as a Service – PaaS, which tries to solve the above pain points and more. BaaS is a layer which sits over PaaS. Most often it provides a REST based interface to all its services which can be accessed through native SDKs. A further more specific platform for Mobile development is Mobile Backend as a Service – MBaaS

– The developer just needs to add the respective native SDK library based on the technology in which he is developing, write few lines of code to integrate and voila.

– Gets out of the box functionality from day one. No need to manage servers, spend time in writing boiler plate code.

– Have flexibility to write custom code.

– No need to learn, hire or develop most of the server side functionality.

– And with all of the above, save time, effort and cost.

Backend as a Service is getting evolved everyday. Its also participating in the MEAP vision helping app developers to become successful with MEAP – Mobile Enterprise Application Platform a term coined by Gartner in their Gartner Magic Quadrant.

Applying the cliched 80-20 rule. Intention is to cover 80% of the features which one requires on the server side for App development. For remaining 20% features, some BaaS Providers have started offering provision to run custom code on the cloud. One can even mash two or more APIs and carve out a higher level facade API.

Most Common services which the BaaS Providers offer are :

– User Management

– Storage

– Push Notification

– Gamification

– Cloud Code

– Recommendation

– Social

– Geo Spatial

Some of them provide many more services across domains. Get started today.

Already Backend as a Service is being used by many developers across platforms. The pace at which it is evolving, it is surely a technology which one cannot ignore and to reckon with.