SlideShare a Scribd company logo
API ARCHITECTURE FOR MOBILE
APPS
ROD HEMPHILL
MELBOURNE APP DEVELOPMENT
PROBLEM STATEMENT
• Management Advantage Pty Ltd provides administration and other solutions
for aged care facilities in Australia.
• There core system is an Entity Framework desktop Aged Care administration
system.
• They had an existing API built for their staff mobile app and needed to:
• provide an API to a new mobile app to support family members of clients, and
• an API to support third parties to provide other solutions such as catering and
maintenance.
• How do you do this?
THE CORE SYSTEM
• An extensive solution providing:
• client administration,
• ACFI appraisals,
• Medicare claims,
• client care,
• client assessments,
• care planning,
• progress management,
• graphical charting,
• client, management and healthcare professional communications,
• facilities maintenance,
• compliance audits,
• employee management,
• police checks,
• courses and certificate management,
• invoicing,
• banking
….. It’s big and comprehensive.
• Entity Framework .Net system using Forms, SQL Server with about 1500 tables.
STAFF APP
• Intended for client support staff to provide the following services:
• Record chart information (e.g. blood glucose level, heart rate etc)
• Provide staff with client personal information (e.g. life story, family details)
• Evacuation Aid
• ACFI reporting
• Activity events management (e.g. Bingo attendance)
• Xamarin Forms, Android and iPhone, oAuth session based authentication.
• Uses the camera.
• 60 pages, 3 graphic charts using telerix.
• Sqlite database with 117 tables.
• Designed to work offline hence keeps a copy of large amounts of operational data.
One medium sized client has 27,800 records stored locally and kept in sync.
FAMILY APP
• For family members of clients to communciate with health care professions, see
what their parents activities, provide feedback and maintenance request.
• Xamarin Forms, 17 pages.
• Social media and standard session based oAuth authetication.
• Push notifications, camera support.
• Sqlite with 20 tables, and a small volume of data.
• Firebase Deep Linking onboarding.
API FOR THIRD PARTY ACCESS
• Generic API for third party access to data.
• Uses: Catering services, facilities maintenance.
• Issued encrypted security key access.
• Continually growing.
DIFFERING REQUIREMENTS
Staff App Family App 3rd Party Access
Speed of transfer ✔ ✔
Volume of data optimisation ✔
Data synchronisation (always in sync) ✔ ✔
Simplistic flat data formats ✔
Ever evolving functionality ✔
New interfaces ✔
Require stable interfaces ✔
Maintainability ✔ ✔ ✔
API DESIGN CONSIDERATIONS
1. Maintainability, extensibility, expandability.
2. Security
3. Version control.
4. Data volume optimisation.
5. Speed performance.
1. MAINTAINABILITY
Single or many API’s?
• Originally one for apps and one for 3rd party API.
• Now a single API.
• The architecture is complex, but the real maintenance is the functional changes.
REST
• Inherently flexible.
• Supports flat and hierarchic data.
• Internal systems can compromise flexibility for redundant data.
• You will need to pass parameters to handle complexity. We use “App-Name”.
2. SECURITY
Differing options:
• Flat private key.
• Hashed private / public key. (Used for high security currency transations).
• Username/Password session based.
• Username/Password initiated oAuth, with sessions.
Management Advantage Chose:
• Flat private key for 3rd party
• Username/Password initiated oAuth with sessions.
• Use Https.
3. VERSION CONTROL
Servers architecture:
1. Central server per client.
2. Centralised, single version, multi-
tenanted cloud based system.
Problem:
• You don’t have any control when the user
downloads an app.
• The app version could be behind or
ahead of your API.
• Your API could be ahead or behind your
app.
• i.e. your API needs to allow for App
versions that haven’t been written yet.
3. VERSION CONTROL - IMPLEMENTATION
• Learnings:
• Don’t store app versions as strings. Use the inbuilt C# Version class.
• Pass the version of each system in the Request and Response headers.
(e.g. “X-API-VER” and “X-APP-VER”)
• Remember that the App will not know the API version when it first starts a session.
• Default to REST and Json wherever possible. Very forgiving.
• You will need to hard code ‘if tests’ for version numbers in both the API and App.
Ensure you use the [Obsolete] attribute with the version number where possible.
• Where not possible make sure you throw out debug messages when the ‘if tests’ should be
cleaned up.
• Have auto-updating database version control in your apps.
Naming our connection string as “/V1/xxxx” had little value. We use “/API/xxxx”.
4. DATA VOLUME OPTIMISATION
• App needs to separate business logic from data transfer:
• Models support full business logic. (e.g. Client, Address, HCP)
• DTO’s optimised for data transfer. (e.g. ClientDto, AddressDto, HCPDto)
• Optimise Json with “DefaultValueHandling” – don’t transmit nulls.
• LastChangeDate.
https://manad.com.au/api/client?lastChangeDate=20180715T13:10:31.102
• We use a generic process.
Only use server side UTC dates. Never app device dates.
• Server should always send the “RunDate” – don’t rely on record LastUpdatedTimestamp.
4. DATA VOLUME OPTIMISATION (CONT)
• For complex data structures, don’t resend data if already sent.
We created a “DtoSession” class.
ClientDto (recursive structure)
• AddressDto Address
• AddressDto MailingAddress
• List<HCPDto> HCPs
• AddressDto Address
• List<ClientDto> ClientContacts
• AddressDto Address
• (etc)
5. SPEED PERFORMANCE
Considerations:
• Http overhead: A call per record type? One call and fully cascade data?
• Decision came down to what we could run on background threads:
• Initial startup you need data before show a page.
• Ongoing you can show last data and update with ObservableCollections.
• Do you have the Apache “KeepAlive” option?
• Reduced data has marginal effect on transmission performance:
• (802.11b should get at least 100 Mbytes per second)
• Real impact on speed is:
• Optimising your server enquiries.
• Optimising your app processing.
• Minimising the data usually reduces the app processing time.
• ... But may not reduce the server processing time.
5. SPEED PERFORMANCE (CONT)
• We use NewtonSoft JSON which is fully functional:
• Supports streaming for http content.
• Allows us performance tuning options through scheme definitions and direct coding (if required in
the future).
• Compression or not?
• Overhead to compress and decompress outweigh benefits?
• Our research (not tested) said https you get better performance overall.
• We had to do https anyway, but we did not turn on http compression.
QUESTIONS / DISCUSSION
ROD HEMPHILL - MELBOURNE APP DEVELOPMENT

More Related Content

PPTX
What is Serverless Computing?
PPTX
Whats New in SBM 10.1.5
PDF
SAP #BOBJ #BI 4.1 Upgrade Webcast Series 6: User Authentication and SSO
PPTX
Fundamentals of software 2 | Test Case | Test Suite | Test Plan | Test Scenario
PPTX
RPI Lawson 10x Tech
PPT
I3 - for Web & J2EE
PPT
IIS 6.0 and asp.net
PDF
309675745
What is Serverless Computing?
Whats New in SBM 10.1.5
SAP #BOBJ #BI 4.1 Upgrade Webcast Series 6: User Authentication and SSO
Fundamentals of software 2 | Test Case | Test Suite | Test Plan | Test Scenario
RPI Lawson 10x Tech
I3 - for Web & J2EE
IIS 6.0 and asp.net
309675745

What's hot (18)

PPTX
SharePoint Saturday Silicon Valley - Upgrading from SharePoint 2010 to 2013
PPTX
Middleware monitoring with Applications Manager
PPTX
Hanover Wireless Update Manager
PPTX
Winter16 release overview of Salesforce
DOC
JohnMcAnespieResume2015
PDF
Solution Manager 7.2 SAP Monitoring - Part 3 - Managed System Configuration
PPTX
Mainframe VUG Presentation April 2016
PPTX
Ladies Be Architects - Integration - Multi-Org, Security, JSON, Backup & Restore
PDF
(ATS4-PLAT03) Balancing Security with access for Development
PDF
[UC4] Version and Automate Everything
PDF
S/4HANA Installation Quickstart Guide and Monitoring S/4HANA
PDF
Pune meetup 16 feb 2019
PPTX
Advanced Motion Control: Using the New 1500TF Processor and Siemens LAxis Lib...
PPTX
SAP License Audit Process
PPTX
External identity
PPT
Showcase_Intern
PPTX
PPTX
E business suite r12.2 changes for database administrators
SharePoint Saturday Silicon Valley - Upgrading from SharePoint 2010 to 2013
Middleware monitoring with Applications Manager
Hanover Wireless Update Manager
Winter16 release overview of Salesforce
JohnMcAnespieResume2015
Solution Manager 7.2 SAP Monitoring - Part 3 - Managed System Configuration
Mainframe VUG Presentation April 2016
Ladies Be Architects - Integration - Multi-Org, Security, JSON, Backup & Restore
(ATS4-PLAT03) Balancing Security with access for Development
[UC4] Version and Automate Everything
S/4HANA Installation Quickstart Guide and Monitoring S/4HANA
Pune meetup 16 feb 2019
Advanced Motion Control: Using the New 1500TF Processor and Siemens LAxis Lib...
SAP License Audit Process
External identity
Showcase_Intern
E business suite r12.2 changes for database administrators
Ad

Similar to Architectural considerations when building an API (20)

PDF
Mobile apps & Server Apis, the weak link? par Emanuele Pecorari
PPTX
Rapid Application Development with MEAN Stack
PPT
API Architecture Summit 2014- APIs: A Mobile Developer's Perspective
PDF
Chris Mathias Presents Advanced API Design Considerations at LA CTO Forum
PDF
Project Presentation - First Spring
PPTX
A great api is hard to find
PDF
Designing your API Server for mobile apps
PPTX
Mobile Devices and SharePoint - Sahil Malik
PPTX
Mobile devices and SharePoint
PPTX
mobile application project for software engineering student
PPTX
First spring
DOC
Amit Kumar Architect with Web and Angular JS
PPTX
Our practice of designing and implementing REST-service API for existing system
PDF
Mobilizing your Existing Enterprise Applications
PPTX
Codestrong 2012 breakout session mobile platform and infrastructure
PDF
TU-Charts Project - First Spring
PPTX
Dev days. windows phone development
PPTX
WebAppseqweqweqweqwewqeqweqweReImagined.pptx
PPTX
Scaling APIs: Predict, Prepare for, Overcome the Challenges
PPT
Incorporating Web Services in Mobile Applications - Web 2.0 San Fran 2009
Mobile apps & Server Apis, the weak link? par Emanuele Pecorari
Rapid Application Development with MEAN Stack
API Architecture Summit 2014- APIs: A Mobile Developer's Perspective
Chris Mathias Presents Advanced API Design Considerations at LA CTO Forum
Project Presentation - First Spring
A great api is hard to find
Designing your API Server for mobile apps
Mobile Devices and SharePoint - Sahil Malik
Mobile devices and SharePoint
mobile application project for software engineering student
First spring
Amit Kumar Architect with Web and Angular JS
Our practice of designing and implementing REST-service API for existing system
Mobilizing your Existing Enterprise Applications
Codestrong 2012 breakout session mobile platform and infrastructure
TU-Charts Project - First Spring
Dev days. windows phone development
WebAppseqweqweqweqwewqeqweqweReImagined.pptx
Scaling APIs: Predict, Prepare for, Overcome the Challenges
Incorporating Web Services in Mobile Applications - Web 2.0 San Fran 2009
Ad

Recently uploaded (20)

PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
A Presentation on Artificial Intelligence
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Empathic Computing: Creating Shared Understanding
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPT
Teaching material agriculture food technology
PDF
cuic standard and advanced reporting.pdf
PPTX
Big Data Technologies - Introduction.pptx
PPTX
Cloud computing and distributed systems.
PDF
Chapter 3 Spatial Domain Image Processing.pdf
“AI and Expert System Decision Support & Business Intelligence Systems”
Digital-Transformation-Roadmap-for-Companies.pptx
A Presentation on Artificial Intelligence
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Empathic Computing: Creating Shared Understanding
The Rise and Fall of 3GPP – Time for a Sabbatical?
NewMind AI Weekly Chronicles - August'25 Week I
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Diabetes mellitus diagnosis method based random forest with bat algorithm
Dropbox Q2 2025 Financial Results & Investor Presentation
Advanced methodologies resolving dimensionality complications for autism neur...
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
20250228 LYD VKU AI Blended-Learning.pptx
Teaching material agriculture food technology
cuic standard and advanced reporting.pdf
Big Data Technologies - Introduction.pptx
Cloud computing and distributed systems.
Chapter 3 Spatial Domain Image Processing.pdf

Architectural considerations when building an API

  • 1. API ARCHITECTURE FOR MOBILE APPS ROD HEMPHILL MELBOURNE APP DEVELOPMENT
  • 2. PROBLEM STATEMENT • Management Advantage Pty Ltd provides administration and other solutions for aged care facilities in Australia. • There core system is an Entity Framework desktop Aged Care administration system. • They had an existing API built for their staff mobile app and needed to: • provide an API to a new mobile app to support family members of clients, and • an API to support third parties to provide other solutions such as catering and maintenance. • How do you do this?
  • 3. THE CORE SYSTEM • An extensive solution providing: • client administration, • ACFI appraisals, • Medicare claims, • client care, • client assessments, • care planning, • progress management, • graphical charting, • client, management and healthcare professional communications, • facilities maintenance, • compliance audits, • employee management, • police checks, • courses and certificate management, • invoicing, • banking ….. It’s big and comprehensive. • Entity Framework .Net system using Forms, SQL Server with about 1500 tables.
  • 4. STAFF APP • Intended for client support staff to provide the following services: • Record chart information (e.g. blood glucose level, heart rate etc) • Provide staff with client personal information (e.g. life story, family details) • Evacuation Aid • ACFI reporting • Activity events management (e.g. Bingo attendance) • Xamarin Forms, Android and iPhone, oAuth session based authentication. • Uses the camera. • 60 pages, 3 graphic charts using telerix. • Sqlite database with 117 tables. • Designed to work offline hence keeps a copy of large amounts of operational data. One medium sized client has 27,800 records stored locally and kept in sync.
  • 5. FAMILY APP • For family members of clients to communciate with health care professions, see what their parents activities, provide feedback and maintenance request. • Xamarin Forms, 17 pages. • Social media and standard session based oAuth authetication. • Push notifications, camera support. • Sqlite with 20 tables, and a small volume of data. • Firebase Deep Linking onboarding.
  • 6. API FOR THIRD PARTY ACCESS • Generic API for third party access to data. • Uses: Catering services, facilities maintenance. • Issued encrypted security key access. • Continually growing.
  • 7. DIFFERING REQUIREMENTS Staff App Family App 3rd Party Access Speed of transfer ✔ ✔ Volume of data optimisation ✔ Data synchronisation (always in sync) ✔ ✔ Simplistic flat data formats ✔ Ever evolving functionality ✔ New interfaces ✔ Require stable interfaces ✔ Maintainability ✔ ✔ ✔
  • 8. API DESIGN CONSIDERATIONS 1. Maintainability, extensibility, expandability. 2. Security 3. Version control. 4. Data volume optimisation. 5. Speed performance.
  • 9. 1. MAINTAINABILITY Single or many API’s? • Originally one for apps and one for 3rd party API. • Now a single API. • The architecture is complex, but the real maintenance is the functional changes. REST • Inherently flexible. • Supports flat and hierarchic data. • Internal systems can compromise flexibility for redundant data. • You will need to pass parameters to handle complexity. We use “App-Name”.
  • 10. 2. SECURITY Differing options: • Flat private key. • Hashed private / public key. (Used for high security currency transations). • Username/Password session based. • Username/Password initiated oAuth, with sessions. Management Advantage Chose: • Flat private key for 3rd party • Username/Password initiated oAuth with sessions. • Use Https.
  • 11. 3. VERSION CONTROL Servers architecture: 1. Central server per client. 2. Centralised, single version, multi- tenanted cloud based system. Problem: • You don’t have any control when the user downloads an app. • The app version could be behind or ahead of your API. • Your API could be ahead or behind your app. • i.e. your API needs to allow for App versions that haven’t been written yet.
  • 12. 3. VERSION CONTROL - IMPLEMENTATION • Learnings: • Don’t store app versions as strings. Use the inbuilt C# Version class. • Pass the version of each system in the Request and Response headers. (e.g. “X-API-VER” and “X-APP-VER”) • Remember that the App will not know the API version when it first starts a session. • Default to REST and Json wherever possible. Very forgiving. • You will need to hard code ‘if tests’ for version numbers in both the API and App. Ensure you use the [Obsolete] attribute with the version number where possible. • Where not possible make sure you throw out debug messages when the ‘if tests’ should be cleaned up. • Have auto-updating database version control in your apps. Naming our connection string as “/V1/xxxx” had little value. We use “/API/xxxx”.
  • 13. 4. DATA VOLUME OPTIMISATION • App needs to separate business logic from data transfer: • Models support full business logic. (e.g. Client, Address, HCP) • DTO’s optimised for data transfer. (e.g. ClientDto, AddressDto, HCPDto) • Optimise Json with “DefaultValueHandling” – don’t transmit nulls. • LastChangeDate. https://manad.com.au/api/client?lastChangeDate=20180715T13:10:31.102 • We use a generic process. Only use server side UTC dates. Never app device dates. • Server should always send the “RunDate” – don’t rely on record LastUpdatedTimestamp.
  • 14. 4. DATA VOLUME OPTIMISATION (CONT) • For complex data structures, don’t resend data if already sent. We created a “DtoSession” class. ClientDto (recursive structure) • AddressDto Address • AddressDto MailingAddress • List<HCPDto> HCPs • AddressDto Address • List<ClientDto> ClientContacts • AddressDto Address • (etc)
  • 15. 5. SPEED PERFORMANCE Considerations: • Http overhead: A call per record type? One call and fully cascade data? • Decision came down to what we could run on background threads: • Initial startup you need data before show a page. • Ongoing you can show last data and update with ObservableCollections. • Do you have the Apache “KeepAlive” option? • Reduced data has marginal effect on transmission performance: • (802.11b should get at least 100 Mbytes per second) • Real impact on speed is: • Optimising your server enquiries. • Optimising your app processing. • Minimising the data usually reduces the app processing time. • ... But may not reduce the server processing time.
  • 16. 5. SPEED PERFORMANCE (CONT) • We use NewtonSoft JSON which is fully functional: • Supports streaming for http content. • Allows us performance tuning options through scheme definitions and direct coding (if required in the future). • Compression or not? • Overhead to compress and decompress outweigh benefits? • Our research (not tested) said https you get better performance overall. • We had to do https anyway, but we did not turn on http compression.
  • 17. QUESTIONS / DISCUSSION ROD HEMPHILL - MELBOURNE APP DEVELOPMENT