SlideShare a Scribd company logo
1 of 40
Download to read offline
Building Enterprise Mobile Backends
with Open Source Platforms
Antonio Calanducci
http://www.etnatraining.it
www.etnatraining.it
Agenda
!
Overview of mBaaS features
Enterprise requirements for mobility
DreamFactory, the open source REST API
platform
Demo
Build your own mobile backend with LoopBack
Demo
www.etnatraining.it
About me
Founder of EtnaTraining

Appcelerator Training Partner

Titanium Certified Instructor / Developer

Tecnologyst@National Institute of Nuclear Physics
and contract professor@University of Catania, Italy

Consultant at World Food Programme, Rome

@tcaland
antonio@etnatraining.it
www.etnatraining.it
BaaS Overview
Acronym of “Backend as a Service”

APIs that offer a set of predefined services out of
the box for application developers

Example of services:

Users, Files, Collections, Custom Objects,
Email, Photos, Social Integrations, Analytics

Push Notifications, Locations, Geofencing (m)

mBaaS: m stands for “mobile”
www.etnatraining.it
Benefits of mBaaS
Reduce server side coding (or in some simpler
cases, eliminate)

developers can focus on front-end development;
faster schedules 

often providers offer SDKs that wrap REST API
calls and handle in/out parameters:

both HTML/JS and native (iOS, Android,
Windows Phone)

No server setup hassle, ready to use

Deployed on the cloud, with built-in scalability
www.etnatraining.it
Popular mBaaS providers
Parse (acquired by Facebook)

JSON Objects, Social, Local Datastore, Custom server-side
login, Push

20Gb storage/2TB transfer/1M recipients/30req/s

Kinvey
AuthLinks/OAuth/Data encryption

100 active users/2Gb/5M push-emails

Appcelerator Cloud Services (ACS)
20built-in services, 5M API calls per month, 20Gb, 250k API
calls per day, Custom Server-side with Node.js
www.etnatraining.it
Commercial mBaaS for enterprise?
Generally data backed on NoSQL db

Enterprise requirements:

generally uses SQL db

integrate with legacy databases

access (structured) relational data with ACLs

Biggest problems: data privacy

where data is stored? who has access to it? is
data replicated? disaster recovery plans

Data lock-in
Any solution?
Build your OWN mBaaS
and deploy it on-premises
(or your virtual private cloud)
www.etnatraining.it
DreamFactory: enter the Service Platform
Provides access to backend services through a
standard REST APIs to:

local and remote SQL Services

storage services

NoSQL databases

No lock-in:

backend can be swapped while app is running or
switched easily from development, test,
production environments

no need to recode client apps
www.etnatraining.it
Cloud Lock-in
The API Jungle!
Developer!
Different interfaces, security
models, and!
user permissions!
NoSQL!
IaaS!
SQL!
External!Storage!
PaaS!
www.etnatraining.it
DreamFactory Service Platform
Client!
Developer!
Unified interface,!
security model, and!
user permissions!
NoSQL!
IaaS!
SQL!
External!Storage!
PaaS!
www.etnatraining.it
DreamFactory: features
Open Source		 

PHP/Symphony/Angular.JS

Deployable in the Cloud or on-premises

Amazon/VMWare/Azure VMs, BitNami installer

Packages for Linux Distros (RedHat, Ubuntu, Debian)

User management, user roles and permissions, and
secure password hashing

Flexible access control over applications, services, files,
and database CRUD permissions
www.etnatraining.it
DreamFactory: features
Supported SQL DBs:

MySQL, PostgreSQL, MSSql (Oracle soon)

Supported NoSQL DBs:

MongoDB, CouchDB, DynamoDB, Azure Tables

Storage Supported:

Amazon S3, LocalStorage, OpenStack, Azure BLOB

External WebService (SOAP/REST), OAuth supported with
Portal Service

Custom server side scripts with JavaScript (V8 engine)
www.etnatraining.it
DreamFactory architecture
www.etnatraining.it
DreamFactory: client SDK
Native Mobile Clients:

iOS, Android, Windows 8

HTML5/JavaScript

AngularJS, Sencha, jQuery, PhoneGap/Cordova

Titanium SDK since version 1.5

Titanium Classic, wrapper over HTTP with Promises
www.etnatraining.it
DreamFactory Demo
www.etnatraining.it
Getting started with DreamFactory
Download the Bitnami installer or VM images at:

https://bitnami.com/stack/dreamfactory
or sign up for the Free Hosted Edition at:

https://www.dreamfactory.com/user/register
Open you browser at:

http://localhost:8080
and login to the DSP LaunchPad with your admin credentials

Create a new App, create a new Table (Schema panel), populate the
table (Data panel), browse the table via API/SDK panel

!
www.etnatraining.it
DSP REST APIs
Create an User and a Role, assign the Role to the created App and assign the
Database service to the Role

Login the user with:

curl -X POST -d '{"email": "pippo@email.com", "password": "pippo1234"}'
http://localhost:8080/rest/user/session?app_name=Todo
Keep note of the returned session_id

Fetch all the records with:

curl -H "X-DreamFactory-Session-Token: 8rena0119llqjagvfdn08kh6f2"
http://localhost:8080/rest/db/todo2?app_name=todo
Add some records with:

curl -X POST -H "X-DreamFactory-Session-Token:
8rena0119llqjagvfdn08kh6f2" -d '{"title":"new todo", "location": "somewhere",
"completed": false}' http://localhost:8080/rest/db/todo2?app_name=todo
www.etnatraining.it
Access your existing SQL DB
Create a new service of type Remote SQL DB

API name is the REST endpoint

Set the Username and Password to your DB

Set the connection string to the DB:

mysql:host=localhost;dbname=etnatraining.it
Add the new created services to the previous created Role

Access your DB through REST APIs:

curl -H "X-DreamFactory-Session-Token:
gpapq4itp198g6c38sk3gvr9j3" ‘http://localhost:8080/rest/
etna/wp_posts?
app_name=Todo&limit=1&post_type=feedback'
www.etnatraining.it
Titanium DreamFactory
Simple wrapper over DSP REST APIs available here:

https://github.com/dreamfactorysoftware/titanium-dreamfactory

Use JS Promises to avoid callback hell

Provided as a Common.JS module:

include dreamfactory.js and Promises.js

A simple GET request looks like this:

!
www.etnatraining.it
Trainees app
Simple Titanium Alloy App that fetches Trainees that attend to
EtnaTraining classes on Titanium

DSP used to access the www.etnatraining.it

WordPress backend

Source code available at:

https://github.com/EtnaTraining/Trainees

!
www.etnatraining.it
DreamFactory features
App hosting for HTML5 apps
Lookup keys
Connect to existing users in SQL or NoSQL

Server Side Filters
Fine grained table permissions based on user, role, application

Server side events
events can trigger custom scripts on select, update, insert, delete,
describe

!
!
www.etnatraining.it
LoopBack
Open Source API framework powered by Node.js

Made by StrongLoop

Developers of a commercial version of Node.js with
clustering and monitoring support

contributors to Node.js and several npm packages

Allows to create REST APIs on top of enterprise data

Provides built-in services to handle:

Push Notifications, Geolocation, Offline replication and
synchronization, File Storage
www.etnatraining.it
LoopBack Models
REST APIs are based on Models

defined based on existing schema (both relational and no
relational)

open model (free form)

can be discovered automatically

can be synchronized if developer change model definition

can be defined in code with JavaScript APIs (both in the
client and in the server, isomorphic JS) and/or in JSON file
with LDL (LoopBack Definition Language)
www.etnatraining.it
LoopBack Connectors
Allows models to talk to different data sources. Available
connectors:

MySQL, PostgreSQL, Oracle, MSSql

In-memory

REST

NoSQL Db (MongoSQL)
www.etnatraining.it
LoopBack Architecture
www.etnatraining.it
LoopBack features
Model relations support

define hasMany, belongsTo, hasAndBelongsToMany
relationships

User authentication and authorization for models:

oAuth user and registration models

Fine grained Role-based access control list

offline support and data replication (new!)

custom remote method definition with events
www.etnatraining.it
Demo
www.etnatraining.it
Getting started with Loopback
Install with npm:

npm install -g strong-cli
Create a LoopBack project

slc lb project mybackend
Create a model interactively

cd mybackend
slc lb model todo -i
slc lb model anything 

(free form model)
Run your loopback app:

node app
Browse your REST API at:
http://localhost:3000/
explorer
www.etnatraining.it
Let’s play with the REST APIs
Our todos model is available at:

http://localhost:3000/api/todos
Create some todo model instances:

curl -X POST -H "Content-Type:application/json" -d
'{"title": "Buy the milk", "location": "Amsterdam",
"completed": false}' http://localhost:3000/api/todos
Retrieve all the completed todos:

GET to http://localhost:3000/api/todos?filter[where]
[completed]=true

curl 'http://localhost:3000/api/todos?filter%5Bwhere
%5D5Bcompleted%5D=true'
www.etnatraining.it
Make the model instances persistent
Create a datasource:

slc lb datasource mylocaldb --connector mysql
Install the loopback-connector-mysql

npm install loopback-connector-mysql
Edit the datasources.json:

!
Change models.json and set:

"dataSource": "mylocaldb"
PS: You have to had previously created the todo table into the db
www.etnatraining.it
Model discovery from SQL db
Loopback provides methods to create model from existing data:

Create first the datasource in datasources.json:

!
Call the method discoverSchema() or discoverAndBuildModels() on
the defined datasources:

run discovery.js:

!
!
node discovery.js >> wp_posts.json

add the discovered models to models.json
www.etnatraining.it
Some query example with filters
Limit the number of entries

http://localhost:3000/api/WpPosts?filter[limit]=5
Select only given fields:

http://localhost:3000/api/WpPosts?filter[fields]
[postContent]=true&filter[fields]
[postTitle]=true&filter[limit]=20
Select only fields with a given value:

http://localhost:3000/api/WpPosts?filter[where]
[postType]=feedback&filter[limit]=3
www.etnatraining.it
Model synchronization with SQL db
We have seen how to access pre-existing data on SQL DBs

But we can also define new models and Loopback can create or
update DB schema for us:

Define the datasource

Define the new schema

(you can also in code)

call the ds.automigrate() method

WARNING: if the schema already

exists in the DB, it will be dropped

and all data lost
www.etnatraining.it
Model synchronization with SQL db
We can also alter the model without destroying existing data, if we
change our Model:

Define the datasource

Define the new schema

(this can also be done in code)

call the ds.autoupdate() method

Loopback will calculate the

differences between the new model

and table schema definition
www.etnatraining.it
Loopback SDKs
Native Mobile SDKs:

iOS (Objective-C), Android (Java)

Browser SDKs:

Angular.JS (isomorphic LoopBack)

REST APIs

Titanium SDK?

Option 1: Use the REST API

Option 2: Alloy Wrapper (in progress) made by Aaron Saunders:

https://github.com/aaronksaunders/strongloopAlloy
www.etnatraining.it
DreamFactory vs LoopBack
DreamFactory LoopBack
No code required
CLI helps, but definitively
required
Super easy to use
Learning curve can be quite
steep
customization is limited (server
side scripts/events)
great customization of your
REST API: it’s a platform and
you build an app
Classical Horizontal scaling if
you deploy on the Cloud
(OpenShift)
easy to scale and monitor with
StrongLoop cluster support and
StrongOps
Currently not supported, but
soon available
Provide specific mobile
services: cross-platfom push
notification, geolocation
www.etnatraining.it
References
DreamFactory homepage

https://www.dreamfactory.com/ 

DreamFactory Documentation

http://dreamfactorysoftware.github.io

Loopback home page:

http://loopback.io/ 

Loopback documentation

http://docs.strongloop.com/display/LB/LoopBack
Thank you!

More Related Content

More from University of Catania

Lesson 02 - React Native Development Environment Setup
Lesson 02 - React Native Development Environment SetupLesson 02 - React Native Development Environment Setup
Lesson 02 - React Native Development Environment SetupUniversity of Catania
 
Abilità Informatiche - Lezione 01 introduzione al corso
Abilità Informatiche - Lezione 01   introduzione al corsoAbilità Informatiche - Lezione 01   introduzione al corso
Abilità Informatiche - Lezione 01 introduzione al corsoUniversity of Catania
 
LAP II - Lezione 01 Introduzione al corso
LAP II - Lezione 01   Introduzione al corsoLAP II - Lezione 01   Introduzione al corso
LAP II - Lezione 01 Introduzione al corsoUniversity of Catania
 
Lezione 02 React and React Native installation and Configuration
Lezione 02   React and  React Native installation and ConfigurationLezione 02   React and  React Native installation and Configuration
Lezione 02 React and React Native installation and ConfigurationUniversity of Catania
 
Presentazione Corso LAP 2 A.A. 2016/2017
Presentazione Corso LAP 2 A.A. 2016/2017Presentazione Corso LAP 2 A.A. 2016/2017
Presentazione Corso LAP 2 A.A. 2016/2017University of Catania
 
Sistemi lezione-iv-internet-e-posta-elettronica
Sistemi lezione-iv-internet-e-posta-elettronicaSistemi lezione-iv-internet-e-posta-elettronica
Sistemi lezione-iv-internet-e-posta-elettronicaUniversity of Catania
 
Sistemi lezione-iii-reti-di-calcolatori
Sistemi lezione-iii-reti-di-calcolatoriSistemi lezione-iii-reti-di-calcolatori
Sistemi lezione-iii-reti-di-calcolatoriUniversity of Catania
 
Sistemi lezione i - Presentazione - hardware
Sistemi   lezione i - Presentazione - hardwareSistemi   lezione i - Presentazione - hardware
Sistemi lezione i - Presentazione - hardwareUniversity of Catania
 
Sistemi lezione viii - google altri servizi
Sistemi   lezione viii - google altri serviziSistemi   lezione viii - google altri servizi
Sistemi lezione viii - google altri serviziUniversity of Catania
 
Sistemi lezione xi - picasa web album - social bookmarking - notizie 2
Sistemi   lezione xi - picasa web album - social bookmarking - notizie 2Sistemi   lezione xi - picasa web album - social bookmarking - notizie 2
Sistemi lezione xi - picasa web album - social bookmarking - notizie 2University of Catania
 
Sistemi lezione x - introduzione al web 2.0 - flickr
Sistemi   lezione x - introduzione al web 2.0 - flickrSistemi   lezione x - introduzione al web 2.0 - flickr
Sistemi lezione x - introduzione al web 2.0 - flickrUniversity of Catania
 
Sistemi di elaborazione dell'informazione - Google Docs basics
Sistemi di elaborazione dell'informazione - Google Docs basicsSistemi di elaborazione dell'informazione - Google Docs basics
Sistemi di elaborazione dell'informazione - Google Docs basicsUniversity of Catania
 

More from University of Catania (15)

Lezione 03 Introduzione a react
Lezione 03   Introduzione a reactLezione 03   Introduzione a react
Lezione 03 Introduzione a react
 
Lesson 02 - React Native Development Environment Setup
Lesson 02 - React Native Development Environment SetupLesson 02 - React Native Development Environment Setup
Lesson 02 - React Native Development Environment Setup
 
Abilità Informatiche - Lezione 01 introduzione al corso
Abilità Informatiche - Lezione 01   introduzione al corsoAbilità Informatiche - Lezione 01   introduzione al corso
Abilità Informatiche - Lezione 01 introduzione al corso
 
LAP II - Lezione 01 Introduzione al corso
LAP II - Lezione 01   Introduzione al corsoLAP II - Lezione 01   Introduzione al corso
LAP II - Lezione 01 Introduzione al corso
 
Lezione 02 React and React Native installation and Configuration
Lezione 02   React and  React Native installation and ConfigurationLezione 02   React and  React Native installation and Configuration
Lezione 02 React and React Native installation and Configuration
 
Presentazione Corso LAP 2 A.A. 2016/2017
Presentazione Corso LAP 2 A.A. 2016/2017Presentazione Corso LAP 2 A.A. 2016/2017
Presentazione Corso LAP 2 A.A. 2016/2017
 
Sistemi lezione-iv-internet-e-posta-elettronica
Sistemi lezione-iv-internet-e-posta-elettronicaSistemi lezione-iv-internet-e-posta-elettronica
Sistemi lezione-iv-internet-e-posta-elettronica
 
Sistemi lezione-iii-reti-di-calcolatori
Sistemi lezione-iii-reti-di-calcolatoriSistemi lezione-iii-reti-di-calcolatori
Sistemi lezione-iii-reti-di-calcolatori
 
Sistemi lezione-ii
Sistemi lezione-iiSistemi lezione-ii
Sistemi lezione-ii
 
Sistemi lezione xv - cenni su css
Sistemi   lezione xv - cenni su cssSistemi   lezione xv - cenni su css
Sistemi lezione xv - cenni su css
 
Sistemi lezione i - Presentazione - hardware
Sistemi   lezione i - Presentazione - hardwareSistemi   lezione i - Presentazione - hardware
Sistemi lezione i - Presentazione - hardware
 
Sistemi lezione viii - google altri servizi
Sistemi   lezione viii - google altri serviziSistemi   lezione viii - google altri servizi
Sistemi lezione viii - google altri servizi
 
Sistemi lezione xi - picasa web album - social bookmarking - notizie 2
Sistemi   lezione xi - picasa web album - social bookmarking - notizie 2Sistemi   lezione xi - picasa web album - social bookmarking - notizie 2
Sistemi lezione xi - picasa web album - social bookmarking - notizie 2
 
Sistemi lezione x - introduzione al web 2.0 - flickr
Sistemi   lezione x - introduzione al web 2.0 - flickrSistemi   lezione x - introduzione al web 2.0 - flickr
Sistemi lezione x - introduzione al web 2.0 - flickr
 
Sistemi di elaborazione dell'informazione - Google Docs basics
Sistemi di elaborazione dell'informazione - Google Docs basicsSistemi di elaborazione dell'informazione - Google Docs basics
Sistemi di elaborazione dell'informazione - Google Docs basics
 

Recently uploaded

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 

Recently uploaded (20)

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 

Building Enterprise Mobile Backends with Open Source Platforms

  • 1. Building Enterprise Mobile Backends with Open Source Platforms Antonio Calanducci http://www.etnatraining.it
  • 2. www.etnatraining.it Agenda ! Overview of mBaaS features Enterprise requirements for mobility DreamFactory, the open source REST API platform Demo Build your own mobile backend with LoopBack Demo
  • 3. www.etnatraining.it About me Founder of EtnaTraining Appcelerator Training Partner Titanium Certified Instructor / Developer Tecnologyst@National Institute of Nuclear Physics and contract professor@University of Catania, Italy Consultant at World Food Programme, Rome @tcaland antonio@etnatraining.it
  • 4. www.etnatraining.it BaaS Overview Acronym of “Backend as a Service” APIs that offer a set of predefined services out of the box for application developers Example of services: Users, Files, Collections, Custom Objects, Email, Photos, Social Integrations, Analytics Push Notifications, Locations, Geofencing (m) mBaaS: m stands for “mobile”
  • 5. www.etnatraining.it Benefits of mBaaS Reduce server side coding (or in some simpler cases, eliminate) developers can focus on front-end development; faster schedules often providers offer SDKs that wrap REST API calls and handle in/out parameters: both HTML/JS and native (iOS, Android, Windows Phone) No server setup hassle, ready to use Deployed on the cloud, with built-in scalability
  • 6. www.etnatraining.it Popular mBaaS providers Parse (acquired by Facebook) JSON Objects, Social, Local Datastore, Custom server-side login, Push 20Gb storage/2TB transfer/1M recipients/30req/s Kinvey AuthLinks/OAuth/Data encryption 100 active users/2Gb/5M push-emails Appcelerator Cloud Services (ACS) 20built-in services, 5M API calls per month, 20Gb, 250k API calls per day, Custom Server-side with Node.js
  • 7. www.etnatraining.it Commercial mBaaS for enterprise? Generally data backed on NoSQL db Enterprise requirements: generally uses SQL db integrate with legacy databases access (structured) relational data with ACLs Biggest problems: data privacy where data is stored? who has access to it? is data replicated? disaster recovery plans Data lock-in
  • 9. Build your OWN mBaaS and deploy it on-premises (or your virtual private cloud)
  • 10. www.etnatraining.it DreamFactory: enter the Service Platform Provides access to backend services through a standard REST APIs to: local and remote SQL Services storage services NoSQL databases No lock-in: backend can be swapped while app is running or switched easily from development, test, production environments no need to recode client apps
  • 11. www.etnatraining.it Cloud Lock-in The API Jungle! Developer! Different interfaces, security models, and! user permissions! NoSQL! IaaS! SQL! External!Storage! PaaS!
  • 12. www.etnatraining.it DreamFactory Service Platform Client! Developer! Unified interface,! security model, and! user permissions! NoSQL! IaaS! SQL! External!Storage! PaaS!
  • 13. www.etnatraining.it DreamFactory: features Open Source PHP/Symphony/Angular.JS Deployable in the Cloud or on-premises Amazon/VMWare/Azure VMs, BitNami installer Packages for Linux Distros (RedHat, Ubuntu, Debian) User management, user roles and permissions, and secure password hashing Flexible access control over applications, services, files, and database CRUD permissions
  • 14. www.etnatraining.it DreamFactory: features Supported SQL DBs: MySQL, PostgreSQL, MSSql (Oracle soon) Supported NoSQL DBs: MongoDB, CouchDB, DynamoDB, Azure Tables Storage Supported: Amazon S3, LocalStorage, OpenStack, Azure BLOB External WebService (SOAP/REST), OAuth supported with Portal Service Custom server side scripts with JavaScript (V8 engine)
  • 16. www.etnatraining.it DreamFactory: client SDK Native Mobile Clients: iOS, Android, Windows 8 HTML5/JavaScript AngularJS, Sencha, jQuery, PhoneGap/Cordova Titanium SDK since version 1.5 Titanium Classic, wrapper over HTTP with Promises
  • 18. www.etnatraining.it Getting started with DreamFactory Download the Bitnami installer or VM images at: https://bitnami.com/stack/dreamfactory or sign up for the Free Hosted Edition at: https://www.dreamfactory.com/user/register Open you browser at: http://localhost:8080 and login to the DSP LaunchPad with your admin credentials Create a new App, create a new Table (Schema panel), populate the table (Data panel), browse the table via API/SDK panel !
  • 19. www.etnatraining.it DSP REST APIs Create an User and a Role, assign the Role to the created App and assign the Database service to the Role Login the user with: curl -X POST -d '{"email": "pippo@email.com", "password": "pippo1234"}' http://localhost:8080/rest/user/session?app_name=Todo Keep note of the returned session_id Fetch all the records with: curl -H "X-DreamFactory-Session-Token: 8rena0119llqjagvfdn08kh6f2" http://localhost:8080/rest/db/todo2?app_name=todo Add some records with: curl -X POST -H "X-DreamFactory-Session-Token: 8rena0119llqjagvfdn08kh6f2" -d '{"title":"new todo", "location": "somewhere", "completed": false}' http://localhost:8080/rest/db/todo2?app_name=todo
  • 20. www.etnatraining.it Access your existing SQL DB Create a new service of type Remote SQL DB API name is the REST endpoint Set the Username and Password to your DB Set the connection string to the DB: mysql:host=localhost;dbname=etnatraining.it Add the new created services to the previous created Role Access your DB through REST APIs: curl -H "X-DreamFactory-Session-Token: gpapq4itp198g6c38sk3gvr9j3" ‘http://localhost:8080/rest/ etna/wp_posts? app_name=Todo&limit=1&post_type=feedback'
  • 21. www.etnatraining.it Titanium DreamFactory Simple wrapper over DSP REST APIs available here: https://github.com/dreamfactorysoftware/titanium-dreamfactory Use JS Promises to avoid callback hell Provided as a Common.JS module: include dreamfactory.js and Promises.js A simple GET request looks like this: !
  • 22. www.etnatraining.it Trainees app Simple Titanium Alloy App that fetches Trainees that attend to EtnaTraining classes on Titanium DSP used to access the www.etnatraining.it
 WordPress backend Source code available at: https://github.com/EtnaTraining/Trainees !
  • 23. www.etnatraining.it DreamFactory features App hosting for HTML5 apps Lookup keys Connect to existing users in SQL or NoSQL Server Side Filters Fine grained table permissions based on user, role, application Server side events events can trigger custom scripts on select, update, insert, delete, describe ! !
  • 24. www.etnatraining.it LoopBack Open Source API framework powered by Node.js Made by StrongLoop Developers of a commercial version of Node.js with clustering and monitoring support contributors to Node.js and several npm packages Allows to create REST APIs on top of enterprise data Provides built-in services to handle: Push Notifications, Geolocation, Offline replication and synchronization, File Storage
  • 25. www.etnatraining.it LoopBack Models REST APIs are based on Models defined based on existing schema (both relational and no relational) open model (free form) can be discovered automatically can be synchronized if developer change model definition can be defined in code with JavaScript APIs (both in the client and in the server, isomorphic JS) and/or in JSON file with LDL (LoopBack Definition Language)
  • 26. www.etnatraining.it LoopBack Connectors Allows models to talk to different data sources. Available connectors: MySQL, PostgreSQL, Oracle, MSSql In-memory REST NoSQL Db (MongoSQL)
  • 28. www.etnatraining.it LoopBack features Model relations support define hasMany, belongsTo, hasAndBelongsToMany relationships User authentication and authorization for models: oAuth user and registration models Fine grained Role-based access control list offline support and data replication (new!) custom remote method definition with events
  • 30. www.etnatraining.it Getting started with Loopback Install with npm: npm install -g strong-cli Create a LoopBack project slc lb project mybackend Create a model interactively cd mybackend slc lb model todo -i slc lb model anything 
 (free form model) Run your loopback app: node app Browse your REST API at: http://localhost:3000/ explorer
  • 31. www.etnatraining.it Let’s play with the REST APIs Our todos model is available at: http://localhost:3000/api/todos Create some todo model instances: curl -X POST -H "Content-Type:application/json" -d '{"title": "Buy the milk", "location": "Amsterdam", "completed": false}' http://localhost:3000/api/todos Retrieve all the completed todos: GET to http://localhost:3000/api/todos?filter[where] [completed]=true curl 'http://localhost:3000/api/todos?filter%5Bwhere %5D5Bcompleted%5D=true'
  • 32. www.etnatraining.it Make the model instances persistent Create a datasource: slc lb datasource mylocaldb --connector mysql Install the loopback-connector-mysql npm install loopback-connector-mysql Edit the datasources.json: ! Change models.json and set: "dataSource": "mylocaldb" PS: You have to had previously created the todo table into the db
  • 33. www.etnatraining.it Model discovery from SQL db Loopback provides methods to create model from existing data: Create first the datasource in datasources.json: ! Call the method discoverSchema() or discoverAndBuildModels() on the defined datasources: run discovery.js: ! ! node discovery.js >> wp_posts.json add the discovered models to models.json
  • 34. www.etnatraining.it Some query example with filters Limit the number of entries http://localhost:3000/api/WpPosts?filter[limit]=5 Select only given fields: http://localhost:3000/api/WpPosts?filter[fields] [postContent]=true&filter[fields] [postTitle]=true&filter[limit]=20 Select only fields with a given value: http://localhost:3000/api/WpPosts?filter[where] [postType]=feedback&filter[limit]=3
  • 35. www.etnatraining.it Model synchronization with SQL db We have seen how to access pre-existing data on SQL DBs But we can also define new models and Loopback can create or update DB schema for us: Define the datasource Define the new schema
 (you can also in code) call the ds.automigrate() method WARNING: if the schema already
 exists in the DB, it will be dropped
 and all data lost
  • 36. www.etnatraining.it Model synchronization with SQL db We can also alter the model without destroying existing data, if we change our Model: Define the datasource Define the new schema
 (this can also be done in code) call the ds.autoupdate() method Loopback will calculate the
 differences between the new model
 and table schema definition
  • 37. www.etnatraining.it Loopback SDKs Native Mobile SDKs: iOS (Objective-C), Android (Java) Browser SDKs: Angular.JS (isomorphic LoopBack) REST APIs Titanium SDK? Option 1: Use the REST API Option 2: Alloy Wrapper (in progress) made by Aaron Saunders: https://github.com/aaronksaunders/strongloopAlloy
  • 38. www.etnatraining.it DreamFactory vs LoopBack DreamFactory LoopBack No code required CLI helps, but definitively required Super easy to use Learning curve can be quite steep customization is limited (server side scripts/events) great customization of your REST API: it’s a platform and you build an app Classical Horizontal scaling if you deploy on the Cloud (OpenShift) easy to scale and monitor with StrongLoop cluster support and StrongOps Currently not supported, but soon available Provide specific mobile services: cross-platfom push notification, geolocation
  • 39. www.etnatraining.it References DreamFactory homepage https://www.dreamfactory.com/ DreamFactory Documentation http://dreamfactorysoftware.github.io Loopback home page: http://loopback.io/ Loopback documentation http://docs.strongloop.com/display/LB/LoopBack