SlideShare a Scribd company logo
1 of 50
Download to read offline
© 2013 The Qt Company 
A Solid Back End for a Solid 
Qt Mobile Application
© 2014 The Qt Company 
About Me
© 2014 The Qt Company 
Lauri Nevala 
nevalau nevalla nevalla 
• Over ten years of experience 
in creating web and mobile 
based applications 
• Working in Qt Cloud Services 
team at The Qt Company
© 2014 The Qt Company 
Awesome mobile applications…
© 2014 The Qt Company 
…and they all need back-end systems!
How do you implement your 
© 2014 The Qt Company 
back end solution?
© 2014 The Qt Company 
You have an idea 
X 
BUY AND SETUP 
HARDWARE 
INSTALL OS 
INSTALL 
SOFTWARE 
DEFINE ACCESS 
CONTROL 
SETUP ANALYTICS 
BUILD 
JUST START BUILDING 
APP APP
© 2014 The Qt Company 
PaaS 
Platform as a Service
© 2014 The Qt Company 
What is PaaS? 
On#Premises# 
Applica'on* 
Data* 
Run'me* 
Middleware* 
OS* 
Virtualiza'on* 
Servers* 
Storage* 
Networking* 
You*Manage* 
IaaS$ 
Applica'on* 
Data* 
Run'me* 
Middleware* 
OS* 
Virtualiza'on* 
Servers* 
Storage* 
Networking* 
Vendor*Provides* You*Manage* 
PaaS$ 
Applica'on* 
Data* 
Run'me* 
Middleware* 
OS* 
Virtualiza'on* 
Servers* 
Storage* 
Networking* 
Vendor*Provides* You*Manage* 
SaaS# 
Applica'on* 
Data* 
Run'me* 
Middleware* 
OS* 
Virtualiza'on* 
Servers* 
Storage* 
Networking* 
Vendor*Provides* 
With PaaS, developer can focus just on building great apps. No need to worry about 
servers, operating system, loadbalancing, network or infrastructure.
Illustra(on 
by 
Rouge 
Group 
© 2014 The Qt Company 
PaaS
“We believe PaaS will enable organizations 
“Organizations who are late, don't adopt PaaS 
© 2014 The Qt Company 
become more agile and responsive” 
will fall behind” 
– Yefim Natis, Gartner
© 2014 The Qt Company 
Modern Application 
Development 
1. Mobile First Approach - Factoring applications into many apps. 
2. Cloud-Backed - Adopting more abstract and machine-independent application models for back 
ends in the form of PaaS. 
3. Agile Teams - Rapid iterations, frequent releases, integration of users 
4. Continuously Integrated and Delivered - No downtimes 
5. DevOps-Enabled - Developers own deployments 
6. User Experience-Centric - Focusing on the design and appearance of the application 
7. Service Oriented Architecture - Use of micro services to compose application 
8. Lightweight - Less complex software that is less time-consuming to install, learn and use 
9. Socially Oriented - UX patterns from social networks (timelines, event streams etc), Data is 
updated using event-based push-oriented patterns. Integrated search functionality. 
10.API Factored and Surfaced - Componentize and granularize back-end software in order to achieve 
composable and easy-to-evolve back-end platforms.
© 2014 The Qt Company
Managed Application Runtime 
© 2014 The Qt Company 
(MAR) 
Scalable, 
Multi-language, 
Multi-database, 
Application Platform as a Service
© 2014 The Qt Company 
Supported Frameworks 
Supported frameworks by 3rd party build packs 
Scala, Clojure, Play, Gradle, Grails, PHP, Go, Meteorite, Perl, Dart, Nginx, Apache, Jekyll
© 2014 The Qt Company 
Built-In Services
© 2014 The Qt Company 
Add Ons 
Enginio Data Storage (EDS) 
Managed WebSocket (MWS)
Enginio Data Storage (EDS) 
© 2014 The Qt Company 
Flexible and powerful cloud 
data storage 
with built-in user and data 
access control
Managed WebSocket (MWS) 
© 2014 The Qt Company 
Fully managed service 
implementing a bi-directional, 
real-time 
communication gateway 
for WebSockets.
Developer Friendly Deployment 
© 2014 The Qt Company 
Deploy using Git – the most common VCS 
among developers 
> 
git 
push 
qtc 
master
© 2014 The Qt Company 
Scalable Architecture 
Redis MongoDB 
Your Application 
Built-­‐In 
Services 
Applica2on 
Instances End Users 
Configure 
Deploy 
Scale With Your Business 
Git Push API 
MySQL 
Environment Variables 
Load Balancer 
myawesome.com 
Scaling
© 2014 The Qt Company 
Web Console
© 2014 The Qt Company 
Command Line Tool
© 2014 The Qt Company 
I Have an Idea 
$$$
© 2014 The Qt Company 
Mobile application that 
shows tweets in real 
time
© 2014 The Qt Company 
Back End 
• DB where to store tweets 
• Worker that retrieves/receives tweets from Twitter 
• API that offers tweets to client app 
• WebSocket server that push new tweets to client 
app
© 2014 The Qt Company 
• Enginio Data Storage 
+ Schemaless 
+ REST API 
Database
© 2014 The Qt Company 
WebSocket Server 
• Managed WebSocket 
+ Easy to start 
+ REST API
© 2014 The Qt Company 
Worker + API 
• Managed Application Runtime 
+ PaaS 
+ Just build the app
© 2014 The Qt Company 
1. get initial tweets 
2. new tweet 
3. save tweet 
4. send WebSocket message
© 2014 The Qt Company 
Worker - Ruby 
require 
'tweetstream' 
require 
'qtc-­‐sdk' 
! 
TweetStream.configure 
do 
|config| 
config.consumer_key 
= 
ENV['CONSUMER_KEY'] 
config.consumer_secret 
= 
ENV['CONSUMER_SECRET'] 
config.oauth_token 
= 
ENV['OAUTH_TOKEN'] 
config.oauth_token_secret 
= 
ENV['OAUTH_SECRET'] 
config.auth_method 
= 
:oauth 
end 
eds 
= 
Qtc::Eds::Client.new(ENV['EDS_BACKEND_ID']) 
mws 
= 
Qtc::Mws::Client.new(ENV['MWS_GATEWAY_ID'], 
{access_token: 
ENV['MWS_SECURITY_TOKEN']}) 
tweets 
= 
eds.collection('tweets') 
daemon 
= 
TweetStream::Daemon.new('tracker', 
:multiple 
=> 
true, 
:no_pidfiles 
=> 
true) 
daemon.track('#QtDD14') 
do 
|status| 
if 
!status.text.start_with?('RT 
@') 
tweet 
= 
{ 
created: 
status.created_at, 
tweet_id: 
status.id, 
text: 
status.text, 
name: 
status.user.name, 
screen_name: 
status.user.screen_name, 
profile_img_url: 
status.user.profile_image_uri, 
hashtags: 
status.hashtags.map{|h| 
h.text.downcase 
} 
} 
tweets.insert(tweet) 
mws.send_message(tweet.to_json, 
{sockets: 
nil, 
tags: 
['QtDD14']}) 
end 
end
© 2014 The Qt Company 
API - Ruby / Sinatra 
require 
'sinatra' 
require 
'qtc-­‐sdk' 
! 
set 
:port, 
ENV['PORT'] 
get 
'/tweets/:hashtag' 
do 
eds 
= 
Qtc::Eds::Client.new(ENV['EDS_BACKEND_ID']) 
tweets 
= 
eds.collection('tweets') 
query 
= 
{ 
:q 
=> 
{ 
'hashtags' 
=> 
{'$in' 
=> 
[params[:hashtag]] 
} 
}, 
:limit 
=> 
50, 
:sort 
=> 
[{"sortBy" 
=> 
"createdAt","direction" 
=> 
"desc"}] 
} 
content_type 
:json, 
'charset' 
=> 
'utf-­‐8' 
result 
= 
tweets.find(query) 
result.to_json 
end 
get 
'/websocket_uri' 
do 
mws 
= 
Qtc::Mws::Client.new(ENV['MWS_GATEWAY_ID'], 
{access_token: 
ENV['MWS_SECURITY_TOKEN']}) 
socket 
= 
mws.create_socket(["QtDD14"]) 
content_type 
:json,'charset' 
=> 
'utf-­‐8' 
socket.to_json 
end
© 2014 The Qt Company 
Procfile 
• When using most common 
frameworks, MAR can 
automatically detect the 
executable. 
• You can explicitly declare 
what can be executed in a 
Procfile. 
• Each line declares a process 
type - a command that can be 
executed from your built 
application 
worker: 
ruby 
./worker.rb 
run 
web: 
rackup 
-­‐p 
$PORT 
-­‐E 
production
© 2014 The Qt Company 
> git push qtc master
© 2014 The Qt Company 
lanevala@it-­‐l-­‐m0015 
~/projects/qtdd-­‐twitter-­‐stream[master*]$ 
git 
push 
qtc 
master 
Counting 
objects: 
9, 
done. 
Delta 
compression 
using 
up 
to 
8 
threads. 
Compressing 
objects: 
100% 
(8/8), 
done. 
Writing 
objects: 
100% 
(9/9), 
1.46 
KiB 
| 
0 
bytes/s, 
done. 
Total 
9 
(delta 
6), 
reused 
0 
(delta 
0) 
-­‐-­‐-­‐-­‐-­‐> 
Ruby 
app 
detected 
-­‐-­‐-­‐-­‐-­‐> 
Compiling 
Ruby/Rack 
-­‐-­‐-­‐-­‐-­‐> 
Using 
Ruby 
version: 
ruby-­‐2.1.2 
-­‐-­‐-­‐-­‐-­‐> 
Installing 
dependencies 
using 
1.6.3 
Running: 
bundle 
install 
-­‐-­‐without 
development:test 
-­‐-­‐path 
vendor/bundle 
-­‐-­‐binstubs 
vendor/bundle/bin 
-­‐j4 
-­‐-­‐deployment 
Fetching 
gem 
metadata 
from 
https://rubygems.org/........ 
Using 
eventmachine 
1.0.3 
Using 
json 
1.8.1 
Using 
thread_safe 
0.3.4 
Using 
multi_json 
1.10.1 
Using 
naught 
1.0.0 
Using 
rack 
1.5.2 
Using 
bundler 
1.6.3 
Using 
em-­‐socksify 
0.3.0 
Using 
http 
0.6.1 
Using 
faraday 
0.9.0 
Using 
em-­‐twitter 
0.3.3 
Installing 
httpclient 
2.5.2 
Installing 
inifile 
3.0.0 
Using 
memoizable 
0.4.2 
Using 
puma 
2.9.1 
Using 
rails_12factor 
0.0.3 
Using 
em-­‐http-­‐request 
1.1.2 
Using 
twitter 
5.11.0 
Using 
sinatra 
1.4.5 
Using 
tweetstream 
2.6.1 
Installing 
faye-­‐websocket 
0.7.5 
Using 
qtc-­‐sdk 
0.0.5 
from 
https://github.com/nevalla/qtc-­‐sdk-­‐ruby.git 
(at 
master) 
Your 
bundle 
is 
complete! 
Gems 
in 
the 
groups 
development 
and 
test 
were 
not 
installed. 
It 
was 
installed 
into 
./vendor/bundle 
Bundle 
completed 
(9.04s) 
Cleaning 
up 
the 
bundler 
cache. 
Removing 
httpclient 
(2.4.0) 
Removing 
qtc-­‐sdk-­‐ruby 
(8e7a9e3858e8) 
-­‐-­‐-­‐-­‐-­‐> 
Discovering 
process 
types 
Procfile 
declares 
types 
-­‐> 
worker, 
web 
Default 
process 
types 
for 
Ruby 
-­‐> 
rake, 
console, 
web 
-­‐-­‐-­‐-­‐-­‐> 
Compiled 
slug 
size 
is 
17M 
-­‐-­‐-­‐-­‐-­‐> 
Deploying 
app 
Uploading 
app 
container 
.. 
done. 
mar-­‐eu-­‐1-­‐13viqrf8 
deployed 
to 
http://mar-­‐eu-­‐1-­‐13viqrf8.qtcloudapp.com 
To 
git@git-­‐mar-­‐eu-­‐1.qtc.io:mar-­‐eu-­‐1-­‐13viqrf8 
36e9190..b237ec8 
master 
-­‐> 
master 
lanevala@it-­‐l-­‐m0015 
~/projects/qtdd-­‐twitter-­‐stream[master*]$
© 2014 The Qt Company 
Demo
© 2014 The Qt Company 
Buildpacks 
• When you deploy your Application, MAR slug 
compiler uses buildpack to prepares your code for 
execution. 
• Each programming language and framework 
support is implemented as buildpack. 
• Buildpack script will build the runtime environment 
on top of the Stack Image, a mini Linux distribution, 
and install everything that is needed.
© 2014 The Qt Company 
• Stack Image is a mini Linux distribution which 
defines the core operating system and runtime 
environment. MAR Stack Images are based on 
following Linux distributions: 
• Lucid based on Ubuntu 10.04 LTS Lucid Lynx 
• Trusty based on Ubuntu 14.04 LTS Trusty Tahr 
will be available soon!
How to scale the application? 
• MAR application processes can be scaled up or 
down dynamically. 
• A typical web application has at least web process 
type declared in Procfile. 
• You can set wanted concurrency level for process 
by issuing scale command using qtc-cli: 
© 2014 The Qt Company
© 2014 The Qt Company 
$ qtc-cli mar scale web=2 
$ qtc-cli mar scale worker=4 
$ qtc-cli mar scale worker=0
© 2014 The Qt Company 
Configuration Variables 
• When developing server-side applications, it is very 
often required to have a configuration for 
application that is varying between environments. 
For example staging, production, testing, etc. 
• Configuration to some external systems like 
database addresses, credentials or other 
environment variables might be required.
© 2014 The Qt Company 
• This configuration data is not included in your 
application code and can be changed 
independently. 
• The configuration is exposed to a running 
application via environment variables. 
• You can manage environment variables using the 
qtc-cli command line tool: 
• qtc-cli mar envs:set SECRET_CODE=donotsharethis
© 2014 The Qt Company 
Ports 
Application 
instances Load Balancer Client 
Application 
GET /index.html:47435 GET your-mar-address/index.html:80 
GET /index.html:47487
© 2014 The Qt Company 
Logging 
• Logs are a stream of time-ordered events 
aggregated from the output streams of all your 
application instance processes. 
• MAR logger routes log streams from all these 
sources into single stream. 
• Anything written to standard out (stdout) or 
standard error (stderr) is captured into application 
instance logs.
© 2014 The Qt Company 
• Qt/C++: qDebug() << "Log me to stdout”; 
• QML & Node.js: console.log("Log me to stdout”); 
• Ruby: puts "Log me to stdout” 
! 
• $ qtc-cli mar logs
© 2014 The Qt Company 
Qt Backend 
• Qt support is activated when application has one or 
more qmake project files in the root folder. 
• If you set QMAKE_ARGS environment variable it 
will be passed to qmake command 
• You must specify web process manually in Procfile: 
• web: ./hello-world/server --port $PORT
© 2014 The Qt Company 
Supported Qt Versions 
• New applications will default to the latest stable version of Qt (currently 
5.3.2). 
• You can specify any supported Qt runtime version to be used to run your 
application. This functionality is enabled when your project has .qt_runtime 
file. 
• Available Qt runtimes: 
• qt-5.3.0 
• qt-5.3.1 
• qt-5.3.2 
• qt-5.4.0-beta
© 2014 The Qt Company
© 2014 The Qt Company 
Further Actions 
• Visit qtcloudservices.com 
• Sign-up 
• Use it 
• Give us feedback 
• Qt forum 
• info@qtcloudservices.com
© 2014 The Qt Company 
Thank you! 
http://www.qtcloudservices.com

More Related Content

Recently uploaded

Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersMoving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersDamian Radcliffe
 
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$kojalkojal131
 
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort ServiceEnjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort ServiceDelhi Call girls
 
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...APNIC
 
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445ruhi
 
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRLLucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRLimonikaupta
 
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts servicesonalikaur4
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607dollysharma2066
 
How is AI changing journalism? (v. April 2024)
How is AI changing journalism? (v. April 2024)How is AI changing journalism? (v. April 2024)
How is AI changing journalism? (v. April 2024)Damian Radcliffe
 
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...Neha Pandey
 
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine ServiceHot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Servicesexy call girls service in goa
 
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024APNIC
 
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call GirlVIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girladitipandeya
 

Recently uploaded (20)

Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
 
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersMoving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
 
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
 
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort ServiceEnjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
 
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
 
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
 
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRLLucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
 
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
 
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
 
How is AI changing journalism? (v. April 2024)
How is AI changing journalism? (v. April 2024)How is AI changing journalism? (v. April 2024)
How is AI changing journalism? (v. April 2024)
 
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
 
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
 
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine ServiceHot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
 
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
 
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
 
Call Girls In South Ex 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
Call Girls In South Ex 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICECall Girls In South Ex 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
Call Girls In South Ex 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
 
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
 
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call GirlVIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
 

Featured

PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...DevGAMM Conference
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationErica Santiago
 

Featured (20)

PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy Presentation
 

A Solid Backend for a Solid Mobile Application

  • 1. © 2013 The Qt Company A Solid Back End for a Solid Qt Mobile Application
  • 2. © 2014 The Qt Company About Me
  • 3. © 2014 The Qt Company Lauri Nevala nevalau nevalla nevalla • Over ten years of experience in creating web and mobile based applications • Working in Qt Cloud Services team at The Qt Company
  • 4. © 2014 The Qt Company Awesome mobile applications…
  • 5. © 2014 The Qt Company …and they all need back-end systems!
  • 6. How do you implement your © 2014 The Qt Company back end solution?
  • 7. © 2014 The Qt Company You have an idea X BUY AND SETUP HARDWARE INSTALL OS INSTALL SOFTWARE DEFINE ACCESS CONTROL SETUP ANALYTICS BUILD JUST START BUILDING APP APP
  • 8. © 2014 The Qt Company PaaS Platform as a Service
  • 9. © 2014 The Qt Company What is PaaS? On#Premises# Applica'on* Data* Run'me* Middleware* OS* Virtualiza'on* Servers* Storage* Networking* You*Manage* IaaS$ Applica'on* Data* Run'me* Middleware* OS* Virtualiza'on* Servers* Storage* Networking* Vendor*Provides* You*Manage* PaaS$ Applica'on* Data* Run'me* Middleware* OS* Virtualiza'on* Servers* Storage* Networking* Vendor*Provides* You*Manage* SaaS# Applica'on* Data* Run'me* Middleware* OS* Virtualiza'on* Servers* Storage* Networking* Vendor*Provides* With PaaS, developer can focus just on building great apps. No need to worry about servers, operating system, loadbalancing, network or infrastructure.
  • 10. Illustra(on by Rouge Group © 2014 The Qt Company PaaS
  • 11. “We believe PaaS will enable organizations “Organizations who are late, don't adopt PaaS © 2014 The Qt Company become more agile and responsive” will fall behind” – Yefim Natis, Gartner
  • 12. © 2014 The Qt Company Modern Application Development 1. Mobile First Approach - Factoring applications into many apps. 2. Cloud-Backed - Adopting more abstract and machine-independent application models for back ends in the form of PaaS. 3. Agile Teams - Rapid iterations, frequent releases, integration of users 4. Continuously Integrated and Delivered - No downtimes 5. DevOps-Enabled - Developers own deployments 6. User Experience-Centric - Focusing on the design and appearance of the application 7. Service Oriented Architecture - Use of micro services to compose application 8. Lightweight - Less complex software that is less time-consuming to install, learn and use 9. Socially Oriented - UX patterns from social networks (timelines, event streams etc), Data is updated using event-based push-oriented patterns. Integrated search functionality. 10.API Factored and Surfaced - Componentize and granularize back-end software in order to achieve composable and easy-to-evolve back-end platforms.
  • 13. © 2014 The Qt Company
  • 14. Managed Application Runtime © 2014 The Qt Company (MAR) Scalable, Multi-language, Multi-database, Application Platform as a Service
  • 15. © 2014 The Qt Company Supported Frameworks Supported frameworks by 3rd party build packs Scala, Clojure, Play, Gradle, Grails, PHP, Go, Meteorite, Perl, Dart, Nginx, Apache, Jekyll
  • 16. © 2014 The Qt Company Built-In Services
  • 17. © 2014 The Qt Company Add Ons Enginio Data Storage (EDS) Managed WebSocket (MWS)
  • 18. Enginio Data Storage (EDS) © 2014 The Qt Company Flexible and powerful cloud data storage with built-in user and data access control
  • 19. Managed WebSocket (MWS) © 2014 The Qt Company Fully managed service implementing a bi-directional, real-time communication gateway for WebSockets.
  • 20. Developer Friendly Deployment © 2014 The Qt Company Deploy using Git – the most common VCS among developers > git push qtc master
  • 21. © 2014 The Qt Company Scalable Architecture Redis MongoDB Your Application Built-­‐In Services Applica2on Instances End Users Configure Deploy Scale With Your Business Git Push API MySQL Environment Variables Load Balancer myawesome.com Scaling
  • 22. © 2014 The Qt Company Web Console
  • 23. © 2014 The Qt Company Command Line Tool
  • 24. © 2014 The Qt Company I Have an Idea $$$
  • 25. © 2014 The Qt Company Mobile application that shows tweets in real time
  • 26. © 2014 The Qt Company Back End • DB where to store tweets • Worker that retrieves/receives tweets from Twitter • API that offers tweets to client app • WebSocket server that push new tweets to client app
  • 27. © 2014 The Qt Company • Enginio Data Storage + Schemaless + REST API Database
  • 28. © 2014 The Qt Company WebSocket Server • Managed WebSocket + Easy to start + REST API
  • 29. © 2014 The Qt Company Worker + API • Managed Application Runtime + PaaS + Just build the app
  • 30. © 2014 The Qt Company 1. get initial tweets 2. new tweet 3. save tweet 4. send WebSocket message
  • 31. © 2014 The Qt Company Worker - Ruby require 'tweetstream' require 'qtc-­‐sdk' ! TweetStream.configure do |config| config.consumer_key = ENV['CONSUMER_KEY'] config.consumer_secret = ENV['CONSUMER_SECRET'] config.oauth_token = ENV['OAUTH_TOKEN'] config.oauth_token_secret = ENV['OAUTH_SECRET'] config.auth_method = :oauth end eds = Qtc::Eds::Client.new(ENV['EDS_BACKEND_ID']) mws = Qtc::Mws::Client.new(ENV['MWS_GATEWAY_ID'], {access_token: ENV['MWS_SECURITY_TOKEN']}) tweets = eds.collection('tweets') daemon = TweetStream::Daemon.new('tracker', :multiple => true, :no_pidfiles => true) daemon.track('#QtDD14') do |status| if !status.text.start_with?('RT @') tweet = { created: status.created_at, tweet_id: status.id, text: status.text, name: status.user.name, screen_name: status.user.screen_name, profile_img_url: status.user.profile_image_uri, hashtags: status.hashtags.map{|h| h.text.downcase } } tweets.insert(tweet) mws.send_message(tweet.to_json, {sockets: nil, tags: ['QtDD14']}) end end
  • 32. © 2014 The Qt Company API - Ruby / Sinatra require 'sinatra' require 'qtc-­‐sdk' ! set :port, ENV['PORT'] get '/tweets/:hashtag' do eds = Qtc::Eds::Client.new(ENV['EDS_BACKEND_ID']) tweets = eds.collection('tweets') query = { :q => { 'hashtags' => {'$in' => [params[:hashtag]] } }, :limit => 50, :sort => [{"sortBy" => "createdAt","direction" => "desc"}] } content_type :json, 'charset' => 'utf-­‐8' result = tweets.find(query) result.to_json end get '/websocket_uri' do mws = Qtc::Mws::Client.new(ENV['MWS_GATEWAY_ID'], {access_token: ENV['MWS_SECURITY_TOKEN']}) socket = mws.create_socket(["QtDD14"]) content_type :json,'charset' => 'utf-­‐8' socket.to_json end
  • 33. © 2014 The Qt Company Procfile • When using most common frameworks, MAR can automatically detect the executable. • You can explicitly declare what can be executed in a Procfile. • Each line declares a process type - a command that can be executed from your built application worker: ruby ./worker.rb run web: rackup -­‐p $PORT -­‐E production
  • 34. © 2014 The Qt Company > git push qtc master
  • 35. © 2014 The Qt Company lanevala@it-­‐l-­‐m0015 ~/projects/qtdd-­‐twitter-­‐stream[master*]$ git push qtc master Counting objects: 9, done. Delta compression using up to 8 threads. Compressing objects: 100% (8/8), done. Writing objects: 100% (9/9), 1.46 KiB | 0 bytes/s, done. Total 9 (delta 6), reused 0 (delta 0) -­‐-­‐-­‐-­‐-­‐> Ruby app detected -­‐-­‐-­‐-­‐-­‐> Compiling Ruby/Rack -­‐-­‐-­‐-­‐-­‐> Using Ruby version: ruby-­‐2.1.2 -­‐-­‐-­‐-­‐-­‐> Installing dependencies using 1.6.3 Running: bundle install -­‐-­‐without development:test -­‐-­‐path vendor/bundle -­‐-­‐binstubs vendor/bundle/bin -­‐j4 -­‐-­‐deployment Fetching gem metadata from https://rubygems.org/........ Using eventmachine 1.0.3 Using json 1.8.1 Using thread_safe 0.3.4 Using multi_json 1.10.1 Using naught 1.0.0 Using rack 1.5.2 Using bundler 1.6.3 Using em-­‐socksify 0.3.0 Using http 0.6.1 Using faraday 0.9.0 Using em-­‐twitter 0.3.3 Installing httpclient 2.5.2 Installing inifile 3.0.0 Using memoizable 0.4.2 Using puma 2.9.1 Using rails_12factor 0.0.3 Using em-­‐http-­‐request 1.1.2 Using twitter 5.11.0 Using sinatra 1.4.5 Using tweetstream 2.6.1 Installing faye-­‐websocket 0.7.5 Using qtc-­‐sdk 0.0.5 from https://github.com/nevalla/qtc-­‐sdk-­‐ruby.git (at master) Your bundle is complete! Gems in the groups development and test were not installed. It was installed into ./vendor/bundle Bundle completed (9.04s) Cleaning up the bundler cache. Removing httpclient (2.4.0) Removing qtc-­‐sdk-­‐ruby (8e7a9e3858e8) -­‐-­‐-­‐-­‐-­‐> Discovering process types Procfile declares types -­‐> worker, web Default process types for Ruby -­‐> rake, console, web -­‐-­‐-­‐-­‐-­‐> Compiled slug size is 17M -­‐-­‐-­‐-­‐-­‐> Deploying app Uploading app container .. done. mar-­‐eu-­‐1-­‐13viqrf8 deployed to http://mar-­‐eu-­‐1-­‐13viqrf8.qtcloudapp.com To git@git-­‐mar-­‐eu-­‐1.qtc.io:mar-­‐eu-­‐1-­‐13viqrf8 36e9190..b237ec8 master -­‐> master lanevala@it-­‐l-­‐m0015 ~/projects/qtdd-­‐twitter-­‐stream[master*]$
  • 36. © 2014 The Qt Company Demo
  • 37. © 2014 The Qt Company Buildpacks • When you deploy your Application, MAR slug compiler uses buildpack to prepares your code for execution. • Each programming language and framework support is implemented as buildpack. • Buildpack script will build the runtime environment on top of the Stack Image, a mini Linux distribution, and install everything that is needed.
  • 38. © 2014 The Qt Company • Stack Image is a mini Linux distribution which defines the core operating system and runtime environment. MAR Stack Images are based on following Linux distributions: • Lucid based on Ubuntu 10.04 LTS Lucid Lynx • Trusty based on Ubuntu 14.04 LTS Trusty Tahr will be available soon!
  • 39. How to scale the application? • MAR application processes can be scaled up or down dynamically. • A typical web application has at least web process type declared in Procfile. • You can set wanted concurrency level for process by issuing scale command using qtc-cli: © 2014 The Qt Company
  • 40. © 2014 The Qt Company $ qtc-cli mar scale web=2 $ qtc-cli mar scale worker=4 $ qtc-cli mar scale worker=0
  • 41. © 2014 The Qt Company Configuration Variables • When developing server-side applications, it is very often required to have a configuration for application that is varying between environments. For example staging, production, testing, etc. • Configuration to some external systems like database addresses, credentials or other environment variables might be required.
  • 42. © 2014 The Qt Company • This configuration data is not included in your application code and can be changed independently. • The configuration is exposed to a running application via environment variables. • You can manage environment variables using the qtc-cli command line tool: • qtc-cli mar envs:set SECRET_CODE=donotsharethis
  • 43. © 2014 The Qt Company Ports Application instances Load Balancer Client Application GET /index.html:47435 GET your-mar-address/index.html:80 GET /index.html:47487
  • 44. © 2014 The Qt Company Logging • Logs are a stream of time-ordered events aggregated from the output streams of all your application instance processes. • MAR logger routes log streams from all these sources into single stream. • Anything written to standard out (stdout) or standard error (stderr) is captured into application instance logs.
  • 45. © 2014 The Qt Company • Qt/C++: qDebug() << "Log me to stdout”; • QML & Node.js: console.log("Log me to stdout”); • Ruby: puts "Log me to stdout” ! • $ qtc-cli mar logs
  • 46. © 2014 The Qt Company Qt Backend • Qt support is activated when application has one or more qmake project files in the root folder. • If you set QMAKE_ARGS environment variable it will be passed to qmake command • You must specify web process manually in Procfile: • web: ./hello-world/server --port $PORT
  • 47. © 2014 The Qt Company Supported Qt Versions • New applications will default to the latest stable version of Qt (currently 5.3.2). • You can specify any supported Qt runtime version to be used to run your application. This functionality is enabled when your project has .qt_runtime file. • Available Qt runtimes: • qt-5.3.0 • qt-5.3.1 • qt-5.3.2 • qt-5.4.0-beta
  • 48. © 2014 The Qt Company
  • 49. © 2014 The Qt Company Further Actions • Visit qtcloudservices.com • Sign-up • Use it • Give us feedback • Qt forum • info@qtcloudservices.com
  • 50. © 2014 The Qt Company Thank you! http://www.qtcloudservices.com