SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
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_	
  

Contenu connexe

Tendances

Shirly Ronen - Documenting an agile defect
Shirly Ronen - Documenting an agile defectShirly Ronen - Documenting an agile defect
Shirly Ronen - Documenting an agile defectAgileSparks
 
Automate your way to agility
Automate your way to agilityAutomate your way to agility
Automate your way to agilityYuval Yeret
 
Refactoring legacy code driven by tests - ITA
Refactoring legacy code driven by tests -  ITARefactoring legacy code driven by tests -  ITA
Refactoring legacy code driven by tests - ITALuca Minudel
 
Flavours of agile software engineering
Flavours of agile software engineeringFlavours of agile software engineering
Flavours of agile software engineeringZeeshan Masood S
 
Critical Capabilities to Shifting Left the Right Way
Critical Capabilities to Shifting Left the Right WayCritical Capabilities to Shifting Left the Right Way
Critical Capabilities to Shifting Left the Right WaySmartBear
 
Evolution of Software Engineering in NCTR Projects
Evolution of Software Engineering in NCTR  Projects   Evolution of Software Engineering in NCTR  Projects
Evolution of Software Engineering in NCTR Projects Mohammed Abbas
 
Agile Testing Introduction
Agile Testing IntroductionAgile Testing Introduction
Agile Testing IntroductionHai Tran Son
 
SystemVerilog Assertions (SVA) in the Design/Verification Process
SystemVerilog Assertions (SVA) in the Design/Verification ProcessSystemVerilog Assertions (SVA) in the Design/Verification Process
SystemVerilog Assertions (SVA) in the Design/Verification ProcessDVClub
 
Setting up Continuous Delivery Culture for a Large Scale Mobile App
Setting up Continuous Delivery Culture for a Large Scale Mobile AppSetting up Continuous Delivery Culture for a Large Scale Mobile App
Setting up Continuous Delivery Culture for a Large Scale Mobile AppNaresh Jain
 
Essential practices and thinking tools for Agile Adoption
Essential practices and thinking tools for Agile AdoptionEssential practices and thinking tools for Agile Adoption
Essential practices and thinking tools for Agile AdoptionSteven Mak
 
Why Test Driven Development?
Why Test Driven Development?Why Test Driven Development?
Why Test Driven Development?Naresh Jain
 
Test Driven Development by Denis Lutz
Test Driven Development by Denis LutzTest Driven Development by Denis Lutz
Test Driven Development by Denis Lutzjazzman1980
 
How Microsoft ALM Tools Can Improve Your Bottom Line
How Microsoft ALM Tools Can Improve Your Bottom LineHow Microsoft ALM Tools Can Improve Your Bottom Line
How Microsoft ALM Tools Can Improve Your Bottom LineImaginet
 
IP Reuse Impact on Design Verification Management Across the Enterprise
IP Reuse Impact on Design Verification Management Across the EnterpriseIP Reuse Impact on Design Verification Management Across the Enterprise
IP Reuse Impact on Design Verification Management Across the EnterpriseDVClub
 
Agile software development and extreme Programming
Agile software development and extreme Programming  Agile software development and extreme Programming
Agile software development and extreme Programming Fatemeh Karimi
 
Agile Maintenance
Agile MaintenanceAgile Maintenance
Agile MaintenanceNaresh Jain
 
BDD in Action – principles, practices and real-world application
BDD in Action – principles, practices and real-world applicationBDD in Action – principles, practices and real-world application
BDD in Action – principles, practices and real-world applicationJohn Ferguson Smart Limited
 
How To Fit Testing Into The Iteration
How To Fit Testing Into The IterationHow To Fit Testing Into The Iteration
How To Fit Testing Into The IterationRally Software
 
Facilitating Release Planning Event
Facilitating Release Planning EventFacilitating Release Planning Event
Facilitating Release Planning EventRavi Tadwalkar
 

Tendances (20)

Shirly Ronen - Documenting an agile defect
Shirly Ronen - Documenting an agile defectShirly Ronen - Documenting an agile defect
Shirly Ronen - Documenting an agile defect
 
Automate your way to agility
Automate your way to agilityAutomate your way to agility
Automate your way to agility
 
Refactoring legacy code driven by tests - ITA
Refactoring legacy code driven by tests -  ITARefactoring legacy code driven by tests -  ITA
Refactoring legacy code driven by tests - ITA
 
Flavours of agile software engineering
Flavours of agile software engineeringFlavours of agile software engineering
Flavours of agile software engineering
 
Critical Capabilities to Shifting Left the Right Way
Critical Capabilities to Shifting Left the Right WayCritical Capabilities to Shifting Left the Right Way
Critical Capabilities to Shifting Left the Right Way
 
Evolution of Software Engineering in NCTR Projects
Evolution of Software Engineering in NCTR  Projects   Evolution of Software Engineering in NCTR  Projects
Evolution of Software Engineering in NCTR Projects
 
Agile Testing Introduction
Agile Testing IntroductionAgile Testing Introduction
Agile Testing Introduction
 
SystemVerilog Assertions (SVA) in the Design/Verification Process
SystemVerilog Assertions (SVA) in the Design/Verification ProcessSystemVerilog Assertions (SVA) in the Design/Verification Process
SystemVerilog Assertions (SVA) in the Design/Verification Process
 
Setting up Continuous Delivery Culture for a Large Scale Mobile App
Setting up Continuous Delivery Culture for a Large Scale Mobile AppSetting up Continuous Delivery Culture for a Large Scale Mobile App
Setting up Continuous Delivery Culture for a Large Scale Mobile App
 
Essential practices and thinking tools for Agile Adoption
Essential practices and thinking tools for Agile AdoptionEssential practices and thinking tools for Agile Adoption
Essential practices and thinking tools for Agile Adoption
 
Why Test Driven Development?
Why Test Driven Development?Why Test Driven Development?
Why Test Driven Development?
 
Test Driven Development by Denis Lutz
Test Driven Development by Denis LutzTest Driven Development by Denis Lutz
Test Driven Development by Denis Lutz
 
How Microsoft ALM Tools Can Improve Your Bottom Line
How Microsoft ALM Tools Can Improve Your Bottom LineHow Microsoft ALM Tools Can Improve Your Bottom Line
How Microsoft ALM Tools Can Improve Your Bottom Line
 
IP Reuse Impact on Design Verification Management Across the Enterprise
IP Reuse Impact on Design Verification Management Across the EnterpriseIP Reuse Impact on Design Verification Management Across the Enterprise
IP Reuse Impact on Design Verification Management Across the Enterprise
 
Agile software development and extreme Programming
Agile software development and extreme Programming  Agile software development and extreme Programming
Agile software development and extreme Programming
 
Agile Maintenance
Agile MaintenanceAgile Maintenance
Agile Maintenance
 
BDD in Action – principles, practices and real-world application
BDD in Action – principles, practices and real-world applicationBDD in Action – principles, practices and real-world application
BDD in Action – principles, practices and real-world application
 
Manual testing1
Manual testing1Manual testing1
Manual testing1
 
How To Fit Testing Into The Iteration
How To Fit Testing Into The IterationHow To Fit Testing Into The Iteration
How To Fit Testing Into The Iteration
 
Facilitating Release Planning Event
Facilitating Release Planning EventFacilitating Release Planning Event
Facilitating Release Planning Event
 

Similaire à Building Mobile (app) Masterpiece with Distributed Agile

IBM MobileFirst - Hybrid Application Development with Worklight
IBM MobileFirst - Hybrid Application Development with WorklightIBM MobileFirst - Hybrid Application Development with Worklight
IBM MobileFirst - Hybrid Application Development with WorklightIBIZZ
 
OOW15 - Oracle E-Business Suite Technology: Latest Features and Roadmap
OOW15 - Oracle E-Business Suite Technology: Latest Features and RoadmapOOW15 - Oracle E-Business Suite Technology: Latest Features and Roadmap
OOW15 - Oracle E-Business Suite Technology: Latest Features and Roadmapvasuballa
 
Appmotives - Software Testing As Service
Appmotives - Software Testing As ServiceAppmotives - Software Testing As Service
Appmotives - Software Testing As ServiceKalyan Paluri
 
AppNotch Enterprise
AppNotch EnterpriseAppNotch Enterprise
AppNotch Enterpriseappnotch
 
Resume imran ansari ansari
Resume imran ansari ansariResume imran ansari ansari
Resume imran ansari ansariMd Imran Ansari
 
Gnana Prasuna B_5.5 years
Gnana Prasuna B_5.5 yearsGnana Prasuna B_5.5 years
Gnana Prasuna B_5.5 yearsGnana Bocha
 
Architect a Winning Mobile Application
Architect a Winning Mobile ApplicationArchitect a Winning Mobile Application
Architect a Winning Mobile ApplicationTechWell
 
Mastering the Art of Mobile Testing by Akshita Puram
Mastering the Art of Mobile Testing by Akshita PuramMastering the Art of Mobile Testing by Akshita Puram
Mastering the Art of Mobile Testing by Akshita PuramQA or the Highway
 
Inthiyaz-4.6Years-SharePoint
Inthiyaz-4.6Years-SharePointInthiyaz-4.6Years-SharePoint
Inthiyaz-4.6Years-SharePointInthiyaz Pathan
 
Proven strategy for testing pw as aus-agile_testers
Proven strategy for testing pw as aus-agile_testersProven strategy for testing pw as aus-agile_testers
Proven strategy for testing pw as aus-agile_testersPerfecto Mobile
 
Salesforce Mobile Developer Week
Salesforce Mobile Developer WeekSalesforce Mobile Developer Week
Salesforce Mobile Developer WeekJohn Stevenson
 
Oracle Mobile Cloud / Bot
Oracle Mobile Cloud / BotOracle Mobile Cloud / Bot
Oracle Mobile Cloud / BotMee Nam Lee
 
Testing Strategy for Progressive Web Apps
Testing Strategy for Progressive Web AppsTesting Strategy for Progressive Web Apps
Testing Strategy for Progressive Web AppsPerfecto by Perforce
 

Similaire à Building Mobile (app) Masterpiece with Distributed Agile (20)

SamSegalResume
SamSegalResumeSamSegalResume
SamSegalResume
 
IBM MobileFirst - Hybrid Application Development with Worklight
IBM MobileFirst - Hybrid Application Development with WorklightIBM MobileFirst - Hybrid Application Development with Worklight
IBM MobileFirst - Hybrid Application Development with Worklight
 
Madhusmita mohanty_MohantyCV
Madhusmita mohanty_MohantyCVMadhusmita mohanty_MohantyCV
Madhusmita mohanty_MohantyCV
 
OOW15 - Oracle E-Business Suite Technology: Latest Features and Roadmap
OOW15 - Oracle E-Business Suite Technology: Latest Features and RoadmapOOW15 - Oracle E-Business Suite Technology: Latest Features and Roadmap
OOW15 - Oracle E-Business Suite Technology: Latest Features and Roadmap
 
Appmotives - Software Testing As Service
Appmotives - Software Testing As ServiceAppmotives - Software Testing As Service
Appmotives - Software Testing As Service
 
Kumar kunal
Kumar kunalKumar kunal
Kumar kunal
 
AppNotch Enterprise
AppNotch EnterpriseAppNotch Enterprise
AppNotch Enterprise
 
Resume imran ansari ansari
Resume imran ansari ansariResume imran ansari ansari
Resume imran ansari ansari
 
Sam segal resume
Sam segal resumeSam segal resume
Sam segal resume
 
Gnana Prasuna B_5.5 years
Gnana Prasuna B_5.5 yearsGnana Prasuna B_5.5 years
Gnana Prasuna B_5.5 years
 
Resume
ResumeResume
Resume
 
Resume
ResumeResume
Resume
 
Resume
ResumeResume
Resume
 
Architect a Winning Mobile Application
Architect a Winning Mobile ApplicationArchitect a Winning Mobile Application
Architect a Winning Mobile Application
 
Mastering the Art of Mobile Testing by Akshita Puram
Mastering the Art of Mobile Testing by Akshita PuramMastering the Art of Mobile Testing by Akshita Puram
Mastering the Art of Mobile Testing by Akshita Puram
 
Inthiyaz-4.6Years-SharePoint
Inthiyaz-4.6Years-SharePointInthiyaz-4.6Years-SharePoint
Inthiyaz-4.6Years-SharePoint
 
Proven strategy for testing pw as aus-agile_testers
Proven strategy for testing pw as aus-agile_testersProven strategy for testing pw as aus-agile_testers
Proven strategy for testing pw as aus-agile_testers
 
Salesforce Mobile Developer Week
Salesforce Mobile Developer WeekSalesforce Mobile Developer Week
Salesforce Mobile Developer Week
 
Oracle Mobile Cloud / Bot
Oracle Mobile Cloud / BotOracle Mobile Cloud / Bot
Oracle Mobile Cloud / Bot
 
Testing Strategy for Progressive Web Apps
Testing Strategy for Progressive Web AppsTesting Strategy for Progressive Web Apps
Testing Strategy for Progressive Web Apps
 

Dernier

Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 

Dernier (20)

Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 

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_