SlideShare a Scribd company logo
Building	
  Mobile	
  Masterpiece	
  	
  
with	
  Distributed	
  Agile	
  

Weerasak	
  (Wee)	
  Witthawaskul	
  
October	
  22,	
  2013	
  
First,	
  thanks	
  to…	
  
!  

@weera	
  for	
  making	
  the	
  meetup	
  possible	
  

!  

Agile66	
  Facebook	
  page	
  

!  

Geeky	
  Base	
  for	
  location	
  and	
  facility	
  

!  

And	
  all	
  of	
  you,	
  curious	
  smart	
  minds	
  
Who	
  am	
  I?	
  
Who	
  am	
  I?	
  
Why	
  should	
  you	
  listen	
  to	
  me?	
  
!  

You	
  already	
  know	
  agile	
  and	
  want	
  to	
  know	
  
how	
  I	
  adopted	
  distributed	
  agile	
  

!  

You	
  want	
  to	
  know	
  why	
  mobile	
  development	
  
has	
  more	
  challenges	
  than	
  web	
  development	
  

!  

How	
  you	
  can	
  apply	
  agility	
  to	
  your	
  projects	
  
Case	
  Study	
  
Morningstar	
  for	
  iPad	
  
!  

Portfolio	
  management	
  and	
  
financial	
  research	
  app	
  

!  

Shipped	
  in	
  September	
  2013	
  

!  

Top	
  10	
  in	
  Finance	
  free	
  app	
  in	
  
US	
  store	
  as	
  of	
  October	
  2013	
  
Demo	
  time	
  
Project	
  History	
  
!  

Initiated	
  in	
  2011	
  as	
  an	
  incubator	
  project	
  to	
  experiment	
  and	
  
complement	
  morningstar.com's	
  user	
  experience	
  using	
  
tablets	
  

!  

The	
  company	
  already	
  had	
  smartphone	
  apps	
  on	
  iPhone,	
  
Android,	
  Blackberry	
  from	
  a	
  China	
  team	
  

!  

I	
  joined	
  the	
  company	
  in	
  April	
  2011	
  as	
  the	
  first	
  Chicago	
  
developer	
  

!  

Zero	
  professional	
  experience	
  with	
  mobile,	
  how	
  to	
  start?	
  
Initial	
  Observations	
  
•  Management	
  buy-­‐in	
  to	
  use	
  Agile	
  methods	
  
•  Young,	
  energetic	
  team	
  
•  Lack	
  of	
  process	
  &	
  automation	
  
•  UI	
  Design	
  work	
  was	
  not	
  in	
  the	
  same	
  sprints	
  
•  Ambitious	
  cross	
  platform	
  architecture	
  
•  Lack	
  of	
  OO	
  Design	
  &	
  Clean	
  Code	
  discipline	
  
Action	
  Items	
  
•  Communication,	
  communication,	
  communication	
  
•  Architectural	
  and	
  Process	
  Analysis	
  
•  Continuous	
  Integration	
  Setup	
  
•  Product,	
  Design	
  and	
  Development	
  Sprint	
  Alignment	
  
•  Agile	
  Practice	
  Training	
  &	
  TDD	
  
	
  
Tools	
  
•  JIRAs	
  for	
  distributed	
  team	
  whiteboards	
  
•  Jenkins	
  for	
  automated	
  build	
  &	
  deployment	
  
•  TestFlight	
  for	
  iOS	
  app	
  internal	
  distribution	
  
Build	
  Pipeline	
  –	
  iOS	
  Client	
  
Unit	
  Test	
  
Build
	
  

Main	
  
Build
	
  

Client	
  code	
  checkins	
  
UI	
  
Automati
on	
  Build
	
  
Automated	
  User	
  
Acceptance	
  Tests	
  

TestFlight
	
  
Build	
  Pipeline	
  –	
  Server	
  
Unit	
  Test	
  
Build
	
  
Server	
  code	
  checkins	
  

	
  
Manual	
  deploy	
   Sanity	
  Test
Builds	
  with	
  
Main	
  Build
	
  
SoapUI
	
  

Auto	
  deploy	
  
Internal	
  
Dev	
  Server
	
  

Stable	
  Dev	
  
Server
	
  
Continuous	
  Integration	
  
•  Morningstar	
  app	
  for	
  iPad	
  
–  7,300+	
  (client)	
  and	
  2,600+	
  (server)	
  commits	
  
–  4,000+	
  automated	
  iPad	
  builds	
  &	
  deployments	
  
–  1,000+	
  automated	
  server	
  builds	
  &	
  deployments	
  
–  Code	
  checkins	
  à	
  Test	
  builds	
  à	
  Deploy	
  builds	
  

10/22/13

Mobile Solutions Development
Team

15
Past	
  Internal	
  Environments	
  
Build	
  &	
  Auto	
  	
  
Deploy	
  

Build	
  &	
  Auto	
  	
  
Deploy	
  

Build	
  &	
  Auto	
  	
  
Deploy	
  

Dev	
  Server	
  
Manual	
  1-­‐click	
  Deploy	
  
Stable	
  Dev	
  	
  
Server	
  
OK	
  

iOS	
  Devices	
  
10/22/13	
  

OK	
  

OK	
  

Mobile	
  Solutions	
  
Development	
  Team
	
  

16	
  
Current	
  Environments	
  
Build	
  &	
  Auto	
  	
  
Deploy	
  

Build	
  &	
  Auto	
  	
  
Deploy	
  

Build	
  &	
  Auto	
  	
  
Deploy	
  

Dev	
  Server	
  
Stable	
  Dev	
  	
  
Server	
  
QA	
  Server	
  
Staging	
  	
  
Server	
  
Live	
  
Server	
  
iOS	
  Devices	
  

Manual	
  1-­‐click	
  Deploy	
  with	
  approval	
  
Test	
  Driven	
  Development	
  
•  Client	
  
–  400+	
  Classes,	
  72,000+	
  LOC,	
  160+	
  XIBs	
  
–  600+	
  Unit	
  Tests	
  
–  GHUnit	
  for	
  testing,	
  OCMock	
  for	
  mocking	
  
–  User	
  Acceptance	
  Testing	
  
•  Behavior	
  Driven	
  Test	
  with	
  Frank	
  (retired)	
  
•  Apple	
  UIAutomation	
  (under	
  development)	
  

10/22/13

Mobile Solutions Development
Team

18
Test	
  Driven	
  Development	
  
•  Server	
  
–  230+	
  classes,	
  20K+	
  LOC	
  
–  180+	
  test	
  classes,	
  20K+	
  LOC	
  
–  86%	
  line	
  coverage	
  
–  65%	
  conditionals	
  coverage	
  
–  JUnit	
  for	
  testing	
  
–  JMockIt	
  for	
  mocking	
  
10/22/13

Mobile Solutions Development
Team

19
Full	
  Stack	
  Mobile	
  Development	
  
•  Concurrent	
  client	
  (iPad)	
  and	
  server	
  (Java)	
  
development	
  
•  Multi-­‐version	
  support	
  
•  Client	
  or	
  server	
  logic	
  
•  Skillsets	
  
Evolving	
  Architectures	
  
Request/
Response
	
  
Client-­‐side	
  
Publish/
Subscribe
	
  
Async	
  Server-­‐
side	
  Publish/
Subscribe
	
  

Past	
  

Present
	
  

Future
	
  
Gateway	
  Architecture	
  
Apple	
  iTunes	
  	
  
In	
  App	
  Purchase
	
  
Login	
  

Morningstar
	
  
iPad	
  app
	
  

REST/JSON	
  over	
  HTTPS	
  

Morningstar
Mobile	
  
Server
	
  

Portfolio	
  
API
	
  

Others	
  

UIWebView	
  over	
  HTTPS	
  
HTML	
  pages	
  
Reusable	
  Components	
  

Popover	
  with	
  
bottom	
  fade	
  
effect
	
  

Securities	
  labels	
  
with	
  ratings	
  

Security	
  Charts	
  
Publish/Subscribe	
  Architecture	
  
Based	
  on	
  Event	
  subscription/notification	
  from	
  NSNotificationCenter	
  

User	
  taps	
  to	
  see	
  mini-­‐quote	
  

Each	
  row	
  subscribes	
  to	
  its	
  security	
  object	
  

When	
  the	
  app	
  receives	
  updates	
  to	
  a	
  security	
  
object,	
  all	
  subscribers	
  get	
  latest	
  data	
  and	
  
update	
  views
	
  
Internal	
  Features	
  
•  Feature	
  Toggles	
  
•  Internal	
  Server	
  Connection	
  
•  “Shake”	
  Feedback	
  
•  Logging	
  &	
  Performance	
  Monitoring	
  
Feature	
  Toggles	
  
•  Allow	
  us	
  to	
  experiment	
  with	
  new	
  features	
  
•  Can	
  be	
  used	
  to	
  enable/disable	
  features	
  based	
  on	
  
context	
  

Mobile Solutions Development
10/22/13
Team
RESTful	
  APIs	
  
•  Since	
  we	
  cannot	
  control	
  published	
  app	
  
customer	
  upgrades*,	
  we	
  have	
  to	
  make	
  sure	
  
the	
  server	
  supports	
  multiple	
  client	
  app	
  
versions,	
  different	
  locales,	
  multiple	
  products.	
  
–  REST	
  with	
  JSON	
  over	
  HTTPS	
  
–  Cacheability,	
  CDN	
  friendly	
  (Akamai/Varnish)	
  
RESTful	
  API	
  Examples	
  
•  HTTPS	
  GET/PUT/POST/DELETE/OPTIONS	
  
•  Endpoint	
  convention	
  
–  Format:	
  https://{dns}/{ServicePrefix}/{resources}	
  
–  ServicePrefix	
  
•  /service/1.0/locales/en-­‐US/products/RT/	
  

–  REST	
  resources	
  
•  /securities/USA:MORN/news	
  
•  /securities/USA:MORN/quotes	
  
•  /securities/USA:MORN/info	
  

•  Example	
  	
  
–  GET	
  https://mobileservice.morningstar.com/service/1.0/locales/en-­‐US/products/
RT/securities/USA:MORN/news	
  
Standard	
  Data	
  Formats	
  
•  “Glue”	
  between	
  client/server	
  
•  Standard	
  formats	
  for	
  Security,	
  
Holding,	
  Portfolio,	
  News	
  etc.	
  
•  Reusable	
  parsers	
  
•  JSON	
  data	
  types	
  
•  DateTime	
  in	
  UTC	
  (ISO8601)	
  
•  Regardless	
  of	
  data	
  formats	
  from	
  
different	
  data	
  sources,	
  mobile	
  
server	
  and	
  app	
  share	
  one	
  
common	
  format	
  
Async	
  I/O	
  	
  

Promise<HttpResponse>,	
  WS.getAsync	
  and	
  Promise.waitAll	
  
Server	
  
Chained	
  of	
  	
  
HTTP	
  	
  
response	
  	
  
Promises	
  
	
  
waitAll	
  
	
  
Thread	
  	
  yield	
  
	
  
transform	
  &	
  
serialize	
  
results	
  

Security	
  Data	
   Portfolio	
  API	
  
Async	
  calls	
  

CMS	
  
Launch	
  Results	
  
•  Public	
  launched	
  on	
  Sep	
  16,	
  2013	
  
•  5,000	
  app	
  downloads	
  in	
  1	
  week	
  
•  1M	
  web	
  service	
  calls	
  in	
  1	
  week;	
  4M	
  calls	
  in	
  3	
  
weeks	
  
•  Average	
  web	
  service	
  response	
  time	
  is	
  ~712ms	
  
Rome	
  was	
  not	
  built	
  in	
  a	
  day	
  
•  Agile	
  is	
  more	
  a	
  guideline.	
  Mix	
  &	
  match	
  for	
  your	
  team	
  
•  Focus	
  on	
  working	
  software	
  
•  Iterate,	
  iterate	
  and	
  iterate	
  
•  Internal	
  feedback	
  is	
  good;	
  external	
  feedback	
  is	
  great	
  
•  Deadline	
  vs	
  Feature	
  dilemma	
  
•  Continual	
  improvements	
  and	
  releases	
  are	
  key	
  to	
  
improve	
  user	
  engagement	
  &	
  satisfaction	
  
First	
  release	
  is	
  just	
  the	
  beginning	
  
Creating	
  masterpiece	
  is	
  the	
  end	
  goal	
  

Thanks	
  &	
  Questions?	
  
@_wee_	
  

More Related Content

What's hot (20)

PDF
Shirly Ronen - Documenting an agile defect
AgileSparks
 
PDF
Automate your way to agility
Yuval Yeret
 
PPTX
Refactoring legacy code driven by tests - ITA
Luca Minudel
 
PPTX
Flavours of agile software engineering
Zeeshan Masood S
 
PPTX
Critical Capabilities to Shifting Left the Right Way
SmartBear
 
PPTX
Evolution of Software Engineering in NCTR Projects
Mohammed Abbas
 
PDF
Agile Testing Introduction
Hai Tran Son
 
PDF
SystemVerilog Assertions (SVA) in the Design/Verification Process
DVClub
 
PDF
Setting up Continuous Delivery Culture for a Large Scale Mobile App
Naresh Jain
 
KEY
Essential practices and thinking tools for Agile Adoption
Steven Mak
 
PDF
Why Test Driven Development?
Naresh Jain
 
PDF
Test Driven Development by Denis Lutz
jazzman1980
 
PPTX
How Microsoft ALM Tools Can Improve Your Bottom Line
Imaginet
 
PDF
IP Reuse Impact on Design Verification Management Across the Enterprise
DVClub
 
PPTX
Agile software development and extreme Programming
Fatemeh Karimi
 
PDF
Agile Maintenance
Naresh Jain
 
PDF
BDD in Action – principles, practices and real-world application
John Ferguson Smart Limited
 
PPTX
Manual testing1
Raghu Sirka
 
PDF
How To Fit Testing Into The Iteration
Rally Software
 
PPTX
Facilitating Release Planning Event
Ravi Tadwalkar
 
Shirly Ronen - Documenting an agile defect
AgileSparks
 
Automate your way to agility
Yuval Yeret
 
Refactoring legacy code driven by tests - ITA
Luca Minudel
 
Flavours of agile software engineering
Zeeshan Masood S
 
Critical Capabilities to Shifting Left the Right Way
SmartBear
 
Evolution of Software Engineering in NCTR Projects
Mohammed Abbas
 
Agile Testing Introduction
Hai Tran Son
 
SystemVerilog Assertions (SVA) in the Design/Verification Process
DVClub
 
Setting up Continuous Delivery Culture for a Large Scale Mobile App
Naresh Jain
 
Essential practices and thinking tools for Agile Adoption
Steven Mak
 
Why Test Driven Development?
Naresh Jain
 
Test Driven Development by Denis Lutz
jazzman1980
 
How Microsoft ALM Tools Can Improve Your Bottom Line
Imaginet
 
IP Reuse Impact on Design Verification Management Across the Enterprise
DVClub
 
Agile software development and extreme Programming
Fatemeh Karimi
 
Agile Maintenance
Naresh Jain
 
BDD in Action – principles, practices and real-world application
John Ferguson Smart Limited
 
Manual testing1
Raghu Sirka
 
How To Fit Testing Into The Iteration
Rally Software
 
Facilitating Release Planning Event
Ravi Tadwalkar
 

Similar to Building Mobile (app) Masterpiece with Distributed Agile (20)

DOCX
SamSegalResume
samuel segal
 
PDF
IBM MobileFirst - Hybrid Application Development with Worklight
IBIZZ
 
DOC
Madhusmita mohanty_MohantyCV
madhusmita mohanty
 
PDF
OOW15 - Oracle E-Business Suite Technology: Latest Features and Roadmap
vasuballa
 
PPTX
Appmotives - Software Testing As Service
Kalyan Paluri
 
DOC
Kumar kunal
kumar kunal
 
PPTX
AppNotch Enterprise
appnotch
 
DOC
Resume imran ansari ansari
Md Imran Ansari
 
PDF
Sam segal resume
samuel segal
 
DOCX
Gnana Prasuna B_5.5 years
Gnana Bocha
 
DOC
Resume
kiran kumar
 
DOC
Resume
kiran kumar
 
DOC
Resume
kiran kumar
 
PDF
Architect a Winning Mobile Application
TechWell
 
PDF
Mastering the Art of Mobile Testing by Akshita Puram
QA or the Highway
 
DOC
Inthiyaz-4.6Years-SharePoint
Inthiyaz Pathan
 
PPTX
Proven strategy for testing pw as aus-agile_testers
Perfecto Mobile
 
PPTX
Salesforce Mobile Developer Week
John Stevenson
 
PDF
Oracle Mobile Cloud / Bot
Mee Nam Lee
 
PPTX
Testing Strategy for Progressive Web Apps
Perfecto by Perforce
 
SamSegalResume
samuel segal
 
IBM MobileFirst - Hybrid Application Development with Worklight
IBIZZ
 
Madhusmita mohanty_MohantyCV
madhusmita mohanty
 
OOW15 - Oracle E-Business Suite Technology: Latest Features and Roadmap
vasuballa
 
Appmotives - Software Testing As Service
Kalyan Paluri
 
Kumar kunal
kumar kunal
 
AppNotch Enterprise
appnotch
 
Resume imran ansari ansari
Md Imran Ansari
 
Sam segal resume
samuel segal
 
Gnana Prasuna B_5.5 years
Gnana Bocha
 
Resume
kiran kumar
 
Resume
kiran kumar
 
Resume
kiran kumar
 
Architect a Winning Mobile Application
TechWell
 
Mastering the Art of Mobile Testing by Akshita Puram
QA or the Highway
 
Inthiyaz-4.6Years-SharePoint
Inthiyaz Pathan
 
Proven strategy for testing pw as aus-agile_testers
Perfecto Mobile
 
Salesforce Mobile Developer Week
John Stevenson
 
Oracle Mobile Cloud / Bot
Mee Nam Lee
 
Testing Strategy for Progressive Web Apps
Perfecto by Perforce
 
Ad

Recently uploaded (20)

PDF
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PPT
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
PDF
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PDF
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
DOCX
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
PDF
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
PDF
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PDF
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
PDF
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
PPTX
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
PDF
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
PDF
Transcript: Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PDF
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
PPTX
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
PDF
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
PDF
ICONIQ State of AI Report 2025 - The Builder's Playbook
Razin Mustafiz
 
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
Transcript: Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
ICONIQ State of AI Report 2025 - The Builder's Playbook
Razin Mustafiz
 
Ad

Building Mobile (app) Masterpiece with Distributed Agile

  • 1. Building  Mobile  Masterpiece     with  Distributed  Agile   Weerasak  (Wee)  Witthawaskul   October  22,  2013  
  • 2. First,  thanks  to…   !   @weera  for  making  the  meetup  possible   !   Agile66  Facebook  page   !   Geeky  Base  for  location  and  facility   !   And  all  of  you,  curious  smart  minds  
  • 5. Why  should  you  listen  to  me?   !   You  already  know  agile  and  want  to  know   how  I  adopted  distributed  agile   !   You  want  to  know  why  mobile  development   has  more  challenges  than  web  development   !   How  you  can  apply  agility  to  your  projects  
  • 7. Morningstar  for  iPad   !   Portfolio  management  and   financial  research  app   !   Shipped  in  September  2013   !   Top  10  in  Finance  free  app  in   US  store  as  of  October  2013  
  • 9. Project  History   !   Initiated  in  2011  as  an  incubator  project  to  experiment  and   complement  morningstar.com's  user  experience  using   tablets   !   The  company  already  had  smartphone  apps  on  iPhone,   Android,  Blackberry  from  a  China  team   !   I  joined  the  company  in  April  2011  as  the  first  Chicago   developer   !   Zero  professional  experience  with  mobile,  how  to  start?  
  • 10. Initial  Observations   •  Management  buy-­‐in  to  use  Agile  methods   •  Young,  energetic  team   •  Lack  of  process  &  automation   •  UI  Design  work  was  not  in  the  same  sprints   •  Ambitious  cross  platform  architecture   •  Lack  of  OO  Design  &  Clean  Code  discipline  
  • 11. Action  Items   •  Communication,  communication,  communication   •  Architectural  and  Process  Analysis   •  Continuous  Integration  Setup   •  Product,  Design  and  Development  Sprint  Alignment   •  Agile  Practice  Training  &  TDD    
  • 12. Tools   •  JIRAs  for  distributed  team  whiteboards   •  Jenkins  for  automated  build  &  deployment   •  TestFlight  for  iOS  app  internal  distribution  
  • 13. Build  Pipeline  –  iOS  Client   Unit  Test   Build   Main   Build   Client  code  checkins   UI   Automati on  Build   Automated  User   Acceptance  Tests   TestFlight  
  • 14. Build  Pipeline  –  Server   Unit  Test   Build   Server  code  checkins     Manual  deploy   Sanity  Test Builds  with   Main  Build   SoapUI   Auto  deploy   Internal   Dev  Server   Stable  Dev   Server  
  • 15. Continuous  Integration   •  Morningstar  app  for  iPad   –  7,300+  (client)  and  2,600+  (server)  commits   –  4,000+  automated  iPad  builds  &  deployments   –  1,000+  automated  server  builds  &  deployments   –  Code  checkins  à  Test  builds  à  Deploy  builds   10/22/13 Mobile Solutions Development Team 15
  • 16. Past  Internal  Environments   Build  &  Auto     Deploy   Build  &  Auto     Deploy   Build  &  Auto     Deploy   Dev  Server   Manual  1-­‐click  Deploy   Stable  Dev     Server   OK   iOS  Devices   10/22/13   OK   OK   Mobile  Solutions   Development  Team   16  
  • 17. Current  Environments   Build  &  Auto     Deploy   Build  &  Auto     Deploy   Build  &  Auto     Deploy   Dev  Server   Stable  Dev     Server   QA  Server   Staging     Server   Live   Server   iOS  Devices   Manual  1-­‐click  Deploy  with  approval  
  • 18. Test  Driven  Development   •  Client   –  400+  Classes,  72,000+  LOC,  160+  XIBs   –  600+  Unit  Tests   –  GHUnit  for  testing,  OCMock  for  mocking   –  User  Acceptance  Testing   •  Behavior  Driven  Test  with  Frank  (retired)   •  Apple  UIAutomation  (under  development)   10/22/13 Mobile Solutions Development Team 18
  • 19. Test  Driven  Development   •  Server   –  230+  classes,  20K+  LOC   –  180+  test  classes,  20K+  LOC   –  86%  line  coverage   –  65%  conditionals  coverage   –  JUnit  for  testing   –  JMockIt  for  mocking   10/22/13 Mobile Solutions Development Team 19
  • 20. Full  Stack  Mobile  Development   •  Concurrent  client  (iPad)  and  server  (Java)   development   •  Multi-­‐version  support   •  Client  or  server  logic   •  Skillsets  
  • 21. Evolving  Architectures   Request/ Response   Client-­‐side   Publish/ Subscribe   Async  Server-­‐ side  Publish/ Subscribe   Past   Present   Future  
  • 22. Gateway  Architecture   Apple  iTunes     In  App  Purchase   Login   Morningstar   iPad  app   REST/JSON  over  HTTPS   Morningstar Mobile   Server   Portfolio   API   Others   UIWebView  over  HTTPS   HTML  pages  
  • 23. Reusable  Components   Popover  with   bottom  fade   effect   Securities  labels   with  ratings   Security  Charts  
  • 24. Publish/Subscribe  Architecture   Based  on  Event  subscription/notification  from  NSNotificationCenter   User  taps  to  see  mini-­‐quote   Each  row  subscribes  to  its  security  object   When  the  app  receives  updates  to  a  security   object,  all  subscribers  get  latest  data  and   update  views  
  • 25. Internal  Features   •  Feature  Toggles   •  Internal  Server  Connection   •  “Shake”  Feedback   •  Logging  &  Performance  Monitoring  
  • 26. Feature  Toggles   •  Allow  us  to  experiment  with  new  features   •  Can  be  used  to  enable/disable  features  based  on   context   Mobile Solutions Development 10/22/13 Team
  • 27. RESTful  APIs   •  Since  we  cannot  control  published  app   customer  upgrades*,  we  have  to  make  sure   the  server  supports  multiple  client  app   versions,  different  locales,  multiple  products.   –  REST  with  JSON  over  HTTPS   –  Cacheability,  CDN  friendly  (Akamai/Varnish)  
  • 28. RESTful  API  Examples   •  HTTPS  GET/PUT/POST/DELETE/OPTIONS   •  Endpoint  convention   –  Format:  https://{dns}/{ServicePrefix}/{resources}   –  ServicePrefix   •  /service/1.0/locales/en-­‐US/products/RT/   –  REST  resources   •  /securities/USA:MORN/news   •  /securities/USA:MORN/quotes   •  /securities/USA:MORN/info   •  Example     –  GET  https://mobileservice.morningstar.com/service/1.0/locales/en-­‐US/products/ RT/securities/USA:MORN/news  
  • 29. Standard  Data  Formats   •  “Glue”  between  client/server   •  Standard  formats  for  Security,   Holding,  Portfolio,  News  etc.   •  Reusable  parsers   •  JSON  data  types   •  DateTime  in  UTC  (ISO8601)   •  Regardless  of  data  formats  from   different  data  sources,  mobile   server  and  app  share  one   common  format  
  • 30. Async  I/O     Promise<HttpResponse>,  WS.getAsync  and  Promise.waitAll   Server   Chained  of     HTTP     response     Promises     waitAll     Thread    yield     transform  &   serialize   results   Security  Data   Portfolio  API   Async  calls   CMS  
  • 31. Launch  Results   •  Public  launched  on  Sep  16,  2013   •  5,000  app  downloads  in  1  week   •  1M  web  service  calls  in  1  week;  4M  calls  in  3   weeks   •  Average  web  service  response  time  is  ~712ms  
  • 32. Rome  was  not  built  in  a  day   •  Agile  is  more  a  guideline.  Mix  &  match  for  your  team   •  Focus  on  working  software   •  Iterate,  iterate  and  iterate   •  Internal  feedback  is  good;  external  feedback  is  great   •  Deadline  vs  Feature  dilemma   •  Continual  improvements  and  releases  are  key  to   improve  user  engagement  &  satisfaction  
  • 33. First  release  is  just  the  beginning   Creating  masterpiece  is  the  end  goal   Thanks  &  Questions?   @_wee_