38
WebApp / SPA // /

WebApp / SPA @ AllFacebook Developer Conference

Embed Size (px)

DESCRIPTION

Vortrag "Facebook Apps als WebApp: Konzepte und Grundlagen zur Realisierung" von Florian Bergmann auf der AllFacebook Developer Conference in Berlin 2013. Mehr Informationen zur Konferenz und zum Slot: http://conference.allfacebook.de/devcon/berlin2013/programm/#8

Citation preview

Page 1: WebApp / SPA @ AllFacebook Developer Conference

WebApp  /  SPA  /  /  /  

Page 2: WebApp / SPA @ AllFacebook Developer Conference
Page 3: WebApp / SPA @ AllFacebook Developer Conference
Page 4: WebApp / SPA @ AllFacebook Developer Conference
Page 5: WebApp / SPA @ AllFacebook Developer Conference
Page 6: WebApp / SPA @ AllFacebook Developer Conference

Server  Side  Rendered  Applica3ons  

1.  Request  /user  

Page 7: WebApp / SPA @ AllFacebook Developer Conference

Server  Side  Rendered  Applica3ons  

1.  Request  /user  

2.  Webserver  Looking  for  correct  App,  Spawn  Processes  

Page 8: WebApp / SPA @ AllFacebook Developer Conference

Server  Side  Rendered  Applica3ons  

1.  Request  /user  

2.  Webserver  Looking  for  correct  App,  Spawn  Processes  

3.  Rou3ng  Controller  Database  Requests  Rendering  of  Response  

Page 9: WebApp / SPA @ AllFacebook Developer Conference

Server  Side  Rendered  Applica3ons  1.  Request  

/user  2.  Webserver  

Looking  for  correct  App,  Spawn  Processes  3.  Rou3ng  Controller  

Database  Requests  Rendering  of    User  List  Page  

4.  Response  User  receives  Result  à  HTML  Document  with  List  of  all  Users  

Page 10: WebApp / SPA @ AllFacebook Developer Conference

Server  Side  Rendered  Applica3ons  

1.  Request  /user/1  

Page 11: WebApp / SPA @ AllFacebook Developer Conference

Server  Side  Rendered  Applica3ons  

1.  Request  /user/1  

2.  Webserver  Looking  for  correct  App,  Spawn  Processes  

Page 12: WebApp / SPA @ AllFacebook Developer Conference

Server  Side  Rendered  Applica3ons  

1.  Request  /user/1  

2.  Webserver  Looking  for  correct  App,  Spawn  Processes  

3.  Rou3ng  Controller  Database  Requests  Rendering  of  User  Detail  Page  

Page 13: WebApp / SPA @ AllFacebook Developer Conference

Server  Side  Rendered  Applica3ons  

1.  Request  /user/1  

2.  Webserver  Looking  for  correct  App,  Spawn  Processes  

3.  Rou3ng  Controller  Database  Requests  Rendering  of  User  Detail  Page  

4.  Response  User  receives  Result  

Page 14: WebApp / SPA @ AllFacebook Developer Conference

But…  why?  

•  Current  user  •  User  rights  •  Friends  •  …  

Page 15: WebApp / SPA @ AllFacebook Developer Conference

What  if…  

•  The  Server  only  needs  to  send  data  that  changed?  

•  Business  Logic  and  Valida3ons  live  in  the  Browser?  

•  User  can  flawless  navigate  through  “pages”  without  sending  Server  requests?  

Page 16: WebApp / SPA @ AllFacebook Developer Conference

Benefits  

•  Shaky  Internet?  No  Problem!  •  Server  load  is  reduced  (which  means  costs  are  reduced…)  

•  Easy  to  scale  (CDN  for  Sta3c  Files)  •  Lot  of  content  is  cached  but  s3ll  dynamic  •  Eat  your  own  dogfood!  

Page 17: WebApp / SPA @ AllFacebook Developer Conference

Why  now?  

•  JavaScript  Performance  /  Acceptance  •  Web  Sockets  •  WebGL  •  FileReader  API  •  Web  Workers  

Page 18: WebApp / SPA @ AllFacebook Developer Conference

Frameworks:  AngularJS  

•  Backed  by  Google  

Page 19: WebApp / SPA @ AllFacebook Developer Conference
Page 20: WebApp / SPA @ AllFacebook Developer Conference

Frameworks:  EmberJS  

•  Backed  by  Yehuda  Katz  

Page 21: WebApp / SPA @ AllFacebook Developer Conference
Page 22: WebApp / SPA @ AllFacebook Developer Conference

Frameworks:  React  

•  Backed  by  Facebook  +  Instagram  

Page 23: WebApp / SPA @ AllFacebook Developer Conference
Page 24: WebApp / SPA @ AllFacebook Developer Conference

Rethink…  Databinding  

•  Data  is  mainly  processed  in  your  browser  

Page 25: WebApp / SPA @ AllFacebook Developer Conference

Rethink…  XHR  

•  Websockets  send  Data  “via  push”  •  No  Longpolling,  No  Interval  Polling  

•  à  Good  for  your  Server  

Page 26: WebApp / SPA @ AllFacebook Developer Conference

Rethink…  Storing  of  Data  

•  Vars  are  “always  available”  •  Web  Storage  – Your  new  BFF    

•  Backend  (hey…  it’s  his  job…)  – Lean  API  – Op3mized  Requests  

Page 27: WebApp / SPA @ AllFacebook Developer Conference

Rethink…  Authen3ca3on  

•  Crazy  People:  I  logout,  You  login…  – The  good:  Clear  the  environment  – The  bad:  Don’t  care…  – The  ugly:  Reload  on  logout  

•  Error  Handling  – 403  à  Alarm?  

Page 28: WebApp / SPA @ AllFacebook Developer Conference

Rethink…  URLs  

•  You  s3ll  need  URLs  – Deeplinks:  Sharing,  Likes  – User  need  them  (for  some  reason…)  

•  Rou3ng  via  JavaScript  

Page 29: WebApp / SPA @ AllFacebook Developer Conference

Rethink…  UX  

•  UI  is  very  fast…  •  Reac3on  could  be  unexpected  – Add  Loading  Behavior  – Don’t  forget  Error  Handling  

•  Messages  •  Offline  Mode?  

Page 30: WebApp / SPA @ AllFacebook Developer Conference

We  are  already  building  SPA!  

•  jQuery  •  “No  Flash”  •  AJAX  

Page 31: WebApp / SPA @ AllFacebook Developer Conference

Challenges:  SEO  

•  Google  can  read  /  execute  JavaScript…  

Page 32: WebApp / SPA @ AllFacebook Developer Conference

Challenges:  SEO  

“If  fancy  features  such  as  JavaScript,  cookies,  session  IDs,  frames,  DHTML,  or  Flash  keep  you  from  seeing  all  of  your  site  in  a  text  browser,  then  search  engine  spiders  may  have  trouble  crawling  your  

site”  

Page 33: WebApp / SPA @ AllFacebook Developer Conference

Challenges:  SEO  

•  AJAX…  (#!Hashbang)  

Page 34: WebApp / SPA @ AllFacebook Developer Conference

Challenges:  SEO  

•  phantomJS  •  Prerendered  HTML  •  Via  #!  à  escaped_fragment  

Page 35: WebApp / SPA @ AllFacebook Developer Conference

Challenges:  SEO  

•  phantomJS  •  Prerendered  HTML  •  Via  #!  à  escaped_fragment  

   Facbook  Open  Graph  

Page 36: WebApp / SPA @ AllFacebook Developer Conference

Challenges:  Backend  

•  Frontend  JavaScript  /  Backend  JavaScript  – Reuse  Modules  /  Business  Logic  

•  Fast  Architecture  à  Lightweight  – NGINX  – nodeJS  

•  API  Queries  via  JavaScript  /  Frontend  – Don’t  forget  to  use  Field  Expansion  – And  Batch  Requests  

Page 37: WebApp / SPA @ AllFacebook Developer Conference

Conclusion  

•  SPA  supercharge  your  Canvas  /  Tab  Apps  •  Reduce  server  costs  •  Can  reduce  development  costs  •  Are  JavaScript  (which  is  awesome…)  

Page 38: WebApp / SPA @ AllFacebook Developer Conference

/ CONTACT  /  /  [email protected] @FLOBBY