SlideShare una empresa de Scribd logo
1 de 33
Descargar para leer sin conexión
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_	
  

Más contenido relacionado

La actualidad más candente

Shirly Ronen - Documenting an agile defect
Shirly Ronen - Documenting an agile defectShirly Ronen - Documenting an agile defect
Shirly Ronen - Documenting an agile defect
AgileSparks
 
Flavours of agile software engineering
Flavours of agile software engineeringFlavours of agile software engineering
Flavours of agile software engineering
Zeeshan Masood S
 
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
DVClub
 
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
DVClub
 
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
 
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
John Ferguson Smart Limited
 

La actualidad más candente (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
 

Similar a Building Mobile (app) Masterpiece with Distributed Agile

Gnana Prasuna B_5.5 years
Gnana Prasuna B_5.5 yearsGnana Prasuna B_5.5 years
Gnana Prasuna B_5.5 years
Gnana Bocha
 
Inthiyaz-4.6Years-SharePoint
Inthiyaz-4.6Years-SharePointInthiyaz-4.6Years-SharePoint
Inthiyaz-4.6Years-SharePoint
Inthiyaz Pathan
 

Similar a 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
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Último (20)

Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 

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_