developing network friendly applications
TRANSCRIPT
-
8/22/2019 Developing Network Friendly Applications
1/21
Developing Network-Friendly Applications
Tips on improving and optimising the user experience when
developing applications that connect via a mobile network.
Edited by: Paul Golding, Chief Disruptor, BlueVia Labs & James Parton, BlueVia Marketing
Developing Network-Friendly Applications by bluevia.com is licensed under aCreative Commons Attribution-NoDerivs 3.0 Unported License.
CC
BY ND
http://creativecommons.org/licenses/by-nd/3.0/http://creativecommons.org/licenses/by-nd/3.0/http://creativecommons.org/licenses/by-nd/3.0/http://creativecommons.org/licenses/by-nd/3.0/http://creativecommons.org/licenses/by-nd/3.0/http://bluevia.com/ -
8/22/2019 Developing Network Friendly Applications
2/21
Developing Network-Friendly Applications
The great news is that the boom in mobile apps development and smartphone proliferation has brought
a whole new generation of developers into the mobile world. The choice of applications has never been
better. The downside is that the dramatic increase in network usage can have a negative impact on the user
experience of connected applications. This document will outline strategies and techniques for trying to
improve the user experience through the best use of network resources and network friendly development
approaches at both the application and OS level.
-
8/22/2019 Developing Network Friendly Applications
3/21
Developing Network-Friendly Applications
Introducing Network Friendliness
Think UX, Think Network!
A good user experience is essential to the success
of any application, mobile or otherwise. Mobility
introduces additional challenges. For example, making
a user wait for a connection whilst one isnt available
would be a poor experience. On the other hand,
giving the user other options whilst the connection is
unavailable might improve the experience. As another
example; frequent updating, even when theres no
new data to download, can cause excessive battery
drain, resulting in a poor experience. Moreover, the
constant hammering of the network with new data
requests might hinder other users from getting the
best performance from the network.
With increasingly faster networks and faster devices,
it is common to see developers assuming that
anything goes, in terms of development, as if the
power of the network and device were unlimited, or
approaching that of desktop environments. This isnt
the case.
Your users are a lot more sensitive to a poorexperience on mobile devices and are a lot less
forgiving. You should pay attention to all aspects
of the application design that will have a positive
or negative impact on the user experience, which
includes thinking about the network connection.
Making a user wait for a
connection whilst one is not
available would be a poor
experience.
-
8/22/2019 Developing Network Friendly Applications
4/21
Developing Network-Friendly Applications
Network Friendliness
BlueVia encourages network friendly application
design. Connected applications share the same
network resources as other connected applications
in a given geographical area (i.e. within the coverage
area of a mobile cell). The behavior of one connected
application can impact other connected apps within
the same geographic area.
Network-friendly design is a principle of being a good
network citizen, which is something we want to
encourage at BlueVia. Network-friendly design is
about improving the mobile experience for all network
users, not just your applications users. Collectively,
you and your fellow developers can improve the
overall user experience of all connected applications
on the network. In this document, we focus on
approaches towards network-friendly application
design, taking into account the connection to the
network and how it inuences the user experience.
Network-friendly design is
a principle of being a good
network citizen.
-
8/22/2019 Developing Network Friendly Applications
5/21
Developing Network-Friendly Applications
More Than Just a Pipe
For the inexperienced mobile developer, it is easy to
assume that the network connection is just a pipe
its there and it works! This view is over-simplistic.
Network connections can exhibit a range of behaviors
that might affect application performance, as shown
in the illustration above.
Whether you are using a DSL, bre, LAN or mobile
networks, each of these networks has different
characteristics for maximum throughput, end-to-end
delay (latency), signaling overheads and available
capacity.
We could just ignore these characteristics and hope
for the best, but delivering an optimum experience for
your users (the people that matter the most) requires
that we understand these characteristics and build
the intelligence into our applications to accommodate
them.
You should also keep in mind that mobile operators
across the world are gradually switching to data
caps - i.e. maximum MBytes per day or month. This
places a responsibility on you to optimise application
trafc volumes. Every MB saved is a direct saving from
the customers usage bundle. And theyll love you for
it, especially if they choose to roam abroad.
Network connections can
exhibit a range of behaviors
that might affect application
performance.
-
8/22/2019 Developing Network Friendly Applications
6/21
Developing Network-Friendly Applications
Being Network-Friendly The Headlines
Heres a summary oftips for Application Developers that we will cover in more detail in this document.
Tips include:
Making as few connections as possible to the
network, both concurrently and temporally
Concatenating data transmissions in order to
lower connection chattiness
Closing open connections when they are nolonger being used
Where possible using a single TCP session for all
communications
Ensuring that all TCP sessions are torn down
correctly (i.e. with FINs)
Using light-weight protocols where possible (e.g.
REST instead of SOAP)
Enabling compression where possible
Supporting asynchronous messaging, (e.g. using
preferred PUSH mechanisms)
Caching frequently used assets
Using compressed image formats as much as
possible
Utilising optimised codecs to transmit audio and
video over mobile networks
Transmitting only information that a device is
subsequently able to process
Taking various measures to conserve battery life
-
8/22/2019 Developing Network Friendly Applications
7/21
Developing Network-Friendly Applications
Achieving Efcient Network Connections
Overview of Mobile Networks
Before getting into the details of how to achieve
efcient connections, a brief exploration of the nature
of cellular connections will highlight the fundamental
limitations.
Cellular networks optimise the available capacity
to allow many users to share the same physical
resource, namely the nite radio spectrum. In sharing
the same resources, mobiles essentially take
turns whenever there are more mobiles than radio
bandwidth available. This process involves reserving
resources on the network before a mobile can
transmit or receive data.
However, once resources are allocated to a mobile,
it is inefcient to release them immediately in case
the mobile needs them again a short while later.
Otherwise, the overhead of reserving and releasing
resources can overload the signaling channels on
the network, even though there might be enough
capacity to send the actual data. This results in
mobiles being blocked from the network. Indeed,
this is exactly what happened when the iPhone
became so successful and popular so quickly.
-
8/22/2019 Developing Network Friendly Applications
8/21
ZZ
ZZ
Z
Developing Network-Friendly Applications
When there is a period of inactivity in the
transmission of data (e.g. whilst reading a web page),
the radio network will detect this and move the
connection to a less active and less power hungry
state. The benet of this requirement is longer
battery life for the device. You can imagine how your
application design might affect these state changes.
For example, if an application polls for data too often,it might never achieve the less active state, even
though there is no data to transmit. In other words,
the business of constantly checking for data, even
when there isnt any, will still drain the battery and
hog network resources, thereby degrading the user
experience (including those in the cell who might be
blocked from getting network resources).
The process of moving between active and less active
states also consumes power in itself. However, there
is a potentially more pressing issue to consider, which
is that reconnecting to a more active state can also
take a few seconds (depending on the number of
users) so if the application is going to transmit and
receive data on a frequent basis its better to keep
the connection in an active state in order to avoid
delays in the user experience. This contradicts the
earlier advice of letting your application move to an
idle state in order to save power, so what should you
do? The answer is to avoid unnecessary polling or
communication that is not adding signicant value
to the user experience (e.g. polling too often for data
that doesnt change as often as the polling interval).
But, when you do need to use network resources,
try to concatenate sessions, but know that theres a
point at which keeping the session active versus re-
connecting will work against your users battery life.
The trick is to use a variable timer that you can easily
change if you start to hear about battery problems
from your users!
Most developers are unaware of these issuesand simply assume that the connection
behaves like a wired connection. As you can
see, this is not the case. So, lets now explore
some recommendations for achieving efcient
connections:
If an application polls for
data too often, it might never
achieve the less active state.
-
8/22/2019 Developing Network Friendly Applications
9/21
Developing Network-Friendly Applications
Recommendations for achieving efcient connections:
Make as few connections as possible to the network,
trying to concatenate communications in order
to lower the frequency of transmission instead of
sending data as and when it becomes available.
Automatically turning off applications during low
activity periods for those applications that are notcrucial for the user
The installation or removal of a connected
application should not cause any modication to the
device/OS network connectivity settings common to
the platform and all connected apps.
If user intervention is needed to congure connection
settings, then the application developer should offera wizard-type tool to simplify the process in order
to avoid user error that could interfere with proper
connection performance.
Make as few connections
as possible to the network,
trying to concatenate
communications.
-
8/22/2019 Developing Network Friendly Applications
10/21
Developing Network-Friendly Applications
Any open connections that are no longer being used should be closed properly You should use delay tolerant
techniques. For example, consider putting network access on a different (i.e. background) execution process
to the main user-interface process. In this way, if the network process becomes blocked or sluggish, it wont
necessarily have an impact on the user interface process. Your app should break content into small pieces that
can be downloaded separately and coded more efciently. Again, dont assume that the network will give the
application constant and consistent network performance for the duration of a download or session. Perhaps
a software update, for example, could be carried out in stages rather than one big download. You should
program your app to release connections as soon as possible, letting the radio layers of the software know assoon as possible that a connection resource can be released (for low-level device drive design, please see Fast
Dormancy - http://gsm.org/documents/TS18_v10_TSG_PRD_Fast_Dormancy_Best_Practices.pdf).
It hopefully goes without saying, but use mobile network connection only when there are no others available
(e.g. WiFi). This seems obvious, but an application might simply (and naively) use the current/available
connection, which might a 3G connection, just because thats the state the device is currently in even though a
WiFi connection might be available. Applications with heavy data requirements could remind the user to switch
back to WiFi (if possible).
Use mobile network
connection only when there
are no others available
-
8/22/2019 Developing Network Friendly Applications
11/21
Developing Network-Friendly Applications
Congure widgets or active icons so that they are updated on an infrequent basis in background. Although
the update frequency might be selectable by the user, it is down to the application developer to suggest
sensible settings and adopt friendly defaults.
Avoid coding an application to use a specic APN. Instead, use the information contained within the platform
APIs for the device to pick up the active data conguration, allowing the device platform to manage API
congurations where possible. This will ensure that more efcient APN settings can be applied globally for
all applications. However, for best exibility, the user should still be able to edit APN data associated with a
particular application.
Roaming users might want to enable data-roaming, but would like to be sure that only essential applicationsstart consuming network resources. Many devices can allow an application to check the roaming status of
the device. If so, you should take advantage of this in your design and adopt the default setting to avoid
connections whilst roaming unless granted by the user.
Radio connections and associated Data Context sessions can take several seconds to set up. Short delays do
not necessary mean failure. It could be that the session has been queued for resource allocation and will still
be serviced, or that the device is busy with another transaction. Remember that your application does not
have exclusive access to the device resources, sessions or bandwidth (e.g. be prepared to wait while other
transactions complete).
Consider putting network
access on a different
execution process to the
main user-interface process.
-
8/22/2019 Developing Network Friendly Applications
12/21
Developing Network-Friendly Applications
When a data session is set up, the radio system has a number of controlled states that should be observed. For
example, do ensure that timeout states are long enough - tearing down the session and retrying will just use
more power and take longer in the end.
If a session is going to transmit and receive data on a frequent basis, it is better to leave the session open.
Overall, try to optimise network requests by batching requests, throttling low-priority requests and backing off
during periods of inactivity. Instant-message presence updates are a classic example where throttling can have
a major impact on network performance and battery life. For example, if an IM client has 100 friends in theaddress book with active presence, then every status update for these users is going to ow from the IM server
to the client, even though the client might not be active in the foreground. Slowly, these updates will drain the
battery without offering any benet to the user.
Deploy design techniques at the application level to minimize the perceived latency due to network delays.
For example, when gathering data to update the application display, consider scheduling some partial updates
to the display before waiting for all of the data to be downloaded. A classic example is an e-mail client that
needs to download 50 e-mails. Why not download the rst few and display these in the client before waiting todownload the rest? In this way, even if the network is slow, the application itself can still seem responsive.
Too many IM updates will drain the
battery without offering any benet
to the user.
-
8/22/2019 Developing Network Friendly Applications
13/21
Developing Network-Friendly Applications
Application/widget updates and Network
Hammering
All applications require updates to improve or correct
bugs and some widgets are designed to collect and
receive data. In both cases developers can help users
by considering the frequency of interactions. Key
things developers should ask are:
Whens the best time to do the updates? Off peak
times means the user is likely to get a higher speed
and therefore faster update meaning less battery
consumption.
How often should updates occur? Frequent updates
could use more data so you might be better offbundling a number of updates and pushing these
out at the same time.
If the user has a monthly data allowance, is it
better to allow the user to decide when to do an
update rather than automatically updating?
Does the network support data voice and data calls
simultaneously? Many 2G networks dont allow
both to happen at the same time so if there is a
ow of data (automatically or otherwise) this can
result in voice calls being missed or failing. Nothing
worse than missing that important call, especially
if youre working for yourself!
Has the application and widget been thoroughly
tested? Nothing worse than nding your
monthly data bundle has been consumed or
your battery life reduced to minutes becausean application has a bug and keeps interacting
with a server.
-
8/22/2019 Developing Network Friendly Applications
14/21
Developing Network-Friendly Applications
Weve seen applications that have been poorly
designed and behave unexpectedly in the real world.
These applications get into an unplanned state and
then continuously set up and tear down connections
and consume battery. Runaway apps can potentially
deplete the battery in minutes! Grrrrr! Examples of
this include:
A fault or condition develops that stops the
app communicating to the origin server so it
keeps trying.
A users subscription to a service has ended but no
one told the app that so it keeps retrying. This is
a frequent problem with mobile clients, so ensure
that you have a proper mechanism for disabling
clients as part of the user deactivation process.
Users (whom you should always assume are
impatient) will repeatedly hit the button because
nothing happened.
Runaway apps can potentially
deplete the battery in minutes!
-
8/22/2019 Developing Network Friendly Applications
15/21
Developing Network-Friendly Applications
Instant Messaging and other Chatty Apps
Isnt IM just so yesterday? Well no, lots of people
still rely on IM and now the use of group chat
applications is growing. Moreover, many social
networking apps, or socially-enabled apps
increasingly exhibit chat-like trafc proles. Here at
Telefonic, weve seen a huge difference between goodand bad IM client applications. These are probably
some of the toughest apps to optimise and it will
always be a judgement call on the right trade-off
between the messaging performance and battery life.
Some of the best clients weve seen use
a co-ordination server, which the mobile
device connects for a single TCP/IP session.
The co-ordination server then handles
multiple IM sessions (conversations) via a
single TCP/IP socket.
-
8/22/2019 Developing Network Friendly Applications
16/21
Developing Network-Friendly Applications
Here are some guidelines that might apply to IM and Chatty clients (includingsocial networks):
Do not generate separate sessions for every
connection.
Do not use push for keep-alives (as this creates
unnecessary paging in the network).
Do not create a context for every keep- alive and tear
it down again.
If periodic keep-alives are necessary from the mobile,
current thinking is that the optimum is just under 30
mins.
Multiple sessions are often produced because somedevices do not close sessions, either because sessions
are intended to be used long term or an application
closed without properly ending the session.
Hence:
Do not open lots of TCP sessions if they are not going
to be actively used. This is a case of being careful
in your code design, avoiding things like setting upsessions as part of initialization only to nd that
the code pathways later on dont make use of the
initialized resources.
Close unwanted sessions elegantly, thus allowing the
network to keep valid (required) sessions open longer.
Avoid leaving server applications with hung sessions.
Always close sessions that are no longer in use or
needed.
Do not open lots of TCP
connections if they are not going to
be actively used
-
8/22/2019 Developing Network Friendly Applications
17/21
Developing Network-Friendly Applications
TCP Session Guidelines:
Where possible, use a single TCP session for all
communications.
Ensure all TCP sessions are torn down correctly with
FINs etc.
If TCP sessions exceed an hour, a push service is
recommended.
If a TCP keep alive mechanism is used outside of a
push environment the minimum duration should be
10 minutes.
Give preference to UDP over TCP.
With multiple application sessions, avoid opening
lots of TCP sessions. Instead, consider sharing a
single TCP connection between multiple application
sessions.
Sessions should be closed elegantly, closing all
unused or terminated TCP sessions. Please ensure
that your application logic manages connections
gracefully and carefully.
Protocols and Data Formats:
Use light-weight protocols and data formats where
possible (e.g. YAML instead of XML)
Advice about Content Handling andFormat:
Connected applications should utilize embedded
viewer capabilities on the device for displaying videos.
The app should use the mechanism (API) supplied by
the device to connect with the appropriate viewer.
Use compressed image formats as much as possible.
Consider the use of element or SVG for
dynamic graphics.
Use cookies sparingly.
Use optimised codecs to transmit audio and
video over the mobile network, adjusting as much
as possible to the network quality and devicecharacteristics.
Make assets as lightweight as possible.
Ensure errors are handled properly and gracefully,
including appropriate display of user messages.
If an application is going to reference sensitive
user information, then it is worth considering bestpractises in terms of protecting sensitive data,
especially if a SIM-swap is detected.
-
8/22/2019 Developing Network Friendly Applications
18/21
Developing Network-Friendly Applications
Processing Power Considerations:Transmit only the information the device is able to
handle and process in a timely fashion.
Use circular buffering to reuse the RAM at the
beginning when memory runs out, notwithstanding
the possibilities of overwriting other data.
Stating the obvious, but do not do work that you donot need to do, or until you need to do it. For example,
if a translation application downloads text to be
translated into another language, then dont do this
until the user needs it, and then only for the parts
that he or she reads. (Also, consider off-loading these
tasks to the server anyway.)
Be careful with memory allocation. Again, statingthe obvious: do not allocate memory unnecessarily,
perhaps as part of an overly zealous initialisation
procedure.
Asynchronous and Push Messaging:
When supporting asynchronous messaging (i.e.
asynchronous method invocation and asynchronous
method dispatching), consider the following:
Use e-MN (e-Mail Notication, which is an OMA
recommendation) so that whenever there is a new
e-Mail, the network sends a message (WAP push)
to the device. If the device is alive, it will connect
to get this new e-Mail. This way, the device is not
continuously sending messages to the network to
say: I am alive.
For clients that need to access a number of server-
side resources across different URIs, consider the use
of server-side aggregation, which co-ordinates access
to multiple TCP sessions in the network and presents
them as only one TCP session to the mobile client.
Use preferred PUSH mechanisms
instead of polling, or at least put
this under the users control.
-
8/22/2019 Developing Network Friendly Applications
19/21
Developing Network-Friendly Applications
Remember that users move between networks
and tariff
Users often now move between different networks and propositions on those networks. Some advice wed
offer is:
Dont hardcode the APN settings into your app. Rely on the device APIs to pick up the specic network settings.
As a last resort if you cant use the native device API then let the user manually change this in the application.
Respect your users condentiality If an application has information a user may deem sensitive then consider
deleting this data if the SIM has been swapped in the device or gure out some other way of protecting the
information.
-
8/22/2019 Developing Network Friendly Applications
20/21
Developing Network-Friendly Applications
Contributors
Mr. Eric Robotham
Head of Network Architecture, End to End Design and Data Access at O2 UK
Mr. Athar Meo
Senior Engineer Test (Radio Networks)
Ms. Esther ArellanooHead of Mobile Devices
Mr. Harald Heckmann
Technical Devices Vendor Manager
Mr. Javier Lorente
Head of Customer User Interface
Mr. Manuel CceresJob Title: NAS Competence Centre Engineer
Mr. Miguel Lira
New technologies manager
Mr. Neil Warren
Device Technology Manager
-
8/22/2019 Developing Network Friendly Applications
21/21
Developing Network-Friendly Applications
For Press and Media Enquiries:
33 Digital
+44 (0)20 7608 2500
Developing Network-Friendly Applications bybluevia.com is licensed under a CC
mailto:bluevia%4033-digital.com?subject=http://creativecommons.org/licenses/by-nd/3.0/http://creativecommons.org/licenses/by-nd/3.0/http://creativecommons.org/licenses/by-nd/3.0/http://creativecommons.org/licenses/by-nd/3.0/http://creativecommons.org/licenses/by-nd/3.0/http://creativecommons.org/licenses/by-nd/3.0/http://bluevia.com/mailto:bluevia%4033-digital.com?subject=