SlideShare une entreprise Scribd logo
1  sur  26
Components of Social Platform Challenges Technology API Engineering Process
User Profile Relationships Activity Streams
Basic user information Extended information based on the context Player Cards Bragging rights  Points, levels Achievements, badges Activities
Friending Unidirectional (the Twitter model) Bidirectional (the Facebok model)  Association Comments Ratings, Thumbs Bookmarking/favoriting Recommendations
Who is doing what and when All about Actors, Actions, Objects and Targets Activitystrea.ms  standard vs. OpenSocial Commentable
Authentication Performance ActivityStrems Integration Flexibility Testing
People are tired of creating accounts on every site Need to support existing login method if the platform caters to an existing audience Existing auth may not work well with Open API initiatives Open API and Oauth 2 legged: Service to Service 3 legged: User to App to Service
Identify the bottlenecks  Measure everything Use CDNs for all static content Front end optimization via async loading Database optimization via indexes, sharding Caching  Scaling the sorts Scaling up vs. Scaling out CAP theorem Relational vs. NOSQL storage Read vs. Write heaviness
Query vs. Propagation Queries are read heavy Propagation is write heavy Deletion is a pain with propagation Activity Aggregation Aggregation on actor vs. object Normalized vs. Denormalized storage Comments Decorating the activities on each request
Integration with legacy touchpoints Opening up the API More channels like Mobile More independent applications Rate limiting and access control Don’t forget existing data Data outlives code
Flexibility in the code to adapt changing requirements quickly and seamlessly Good design DRY SOCs Flexibility in the infrastructure to adapt changing traffic and behavior Virtualization Heavy replication Flexibility in the team to respond to changes Process
Automated Testing wherever possible Developer Focus on test coverage (80+%) Continuous Integration and Deployment Cucumber + Hudson Cross browser testing (yes, including IE)
Java services Tomcat with Shindig 1.1, 4 nodes REST/JSON Ruby  Rails Admin App for moderation and points/levels Migration Scripts Twitter bot for routing #myign tweets to the platform Misc. scripts to invalidate memache keys and test service endpoints
Memcached Extremely trivial to set up and maintain Almost never dies Massive scale out Careful with Cache hotspots Concurrent writes On the fly scale-out Key/Value size limits
MySQL Proven, cheap to develop and operate Maslow’s hammer Easy scale out Hard to store (and retrieve) network graphs Write scaling with single master Not the best choice for activitystreams Schema changes lock the table(s)
Awesome write scaling Great for activity propagation model In place updates Using $push and $set Excellent for storing social relationships as documents Very easy to cluster We are running replica pairs, plan to move to replica sets Schema-less No need to run alter scripts on 18M-row table
Queryable Rich Query language ($in, $size, $exists, $slice) MapReduce for heavy data crunching Supports Indexing You can even index collections inside a document Storage  ~4x storage compared to relational data Emerging technology Index defragmentation  $or and indexing (to be supported in 1.7) Load balancing support in the driver (coming soon)
RabbitMQ for messaging Ease of clustering Written in Erlang for high performance and availability Used for Propagation of activities Sending out email alerts Indexing data in Solr
Person GET @self, @friends, @followers, @all, PUT/POST @self, @friends Activities GET @global, @self, @friends, POST @self  MediaItems GET @self, @all and POST @self AppData For applications to store/retrieve data as key-value pairs GET/POST @self Status  GET @friends, @self, @followers , POST @self
Must have for any Java/Ruby webapp Monitoring and troubleshooting Save a ton of $ and time by efficient root cause analysis tools Agents for Ruby and Java IGN Engineers helped write PHP and Memcached agents
Social Applications and community Check the pulse of the community UserVoice (http://ign.uservoice.com) Less is more Distinguish yourself and focus on your niche Be Agile - Release early, release often Do not shock your audience Announce the changes/features on a blog Eat your own dog food http://people.ign.com/ign-labs
Released July 2010 as beta Daily API requests ~25M Daily page views ~30K Daily Uniques ~12K 6ms response times Expected traffic 8-10x with more integration and mobile platform
Manish Pandit Engineering Manager, Social Platform at IGN Email: pandit.manish-at-gmail.com Twitter: @lobster1234 LinkedIn: http://www.linkedin.com/in/mpandit Blog: http://contrarianwisdom.blogspot.com MyIGN: http://people.ign.com/mpanditign
http://corp.ign.com http://labs.ign.com http://my.ign.com http://people.ign.com/ign-labs

Contenu connexe

Tendances

Simseer - A Software Similarity Web Service
Simseer - A Software Similarity Web ServiceSimseer - A Software Similarity Web Service
Simseer - A Software Similarity Web ServiceSilvio Cesare
 
Webinar: Building Customer-Targeted Search with Fusion
Webinar: Building Customer-Targeted Search with FusionWebinar: Building Customer-Targeted Search with Fusion
Webinar: Building Customer-Targeted Search with FusionLucidworks
 
Webinar: Fusion 3.1 - What's New
Webinar: Fusion 3.1 - What's NewWebinar: Fusion 3.1 - What's New
Webinar: Fusion 3.1 - What's NewLucidworks
 
Webinar: Personalized Retail Search & Recommendations with Fusion
Webinar: Personalized Retail Search & Recommendations with FusionWebinar: Personalized Retail Search & Recommendations with Fusion
Webinar: Personalized Retail Search & Recommendations with FusionLucidworks
 
Measure your teams sentiment
Measure your teams sentimentMeasure your teams sentiment
Measure your teams sentimentStefano Tempesta
 
Webinar: Building Conversational Search with Fusion
Webinar: Building Conversational Search with FusionWebinar: Building Conversational Search with Fusion
Webinar: Building Conversational Search with FusionLucidworks
 
Ml ops deployment choices
Ml ops   deployment choicesMl ops   deployment choices
Ml ops deployment choicesAvinash Patil
 
Webinar: Site Search in an Hour with Fusion
Webinar: Site Search in an Hour with FusionWebinar: Site Search in an Hour with Fusion
Webinar: Site Search in an Hour with FusionLucidworks
 
Harnessing the Crowds for Automating the Identification of Web APIs
Harnessing the Crowds for Automating the Identification of Web APIsHarnessing the Crowds for Automating the Identification of Web APIs
Harnessing the Crowds for Automating the Identification of Web APIsCarlos Pedrinaci
 
Career Pathing
Career PathingCareer Pathing
Career PathingHRIntranet
 
DataEngConf SF16 - Three lessons learned from building a production machine l...
DataEngConf SF16 - Three lessons learned from building a production machine l...DataEngConf SF16 - Three lessons learned from building a production machine l...
DataEngConf SF16 - Three lessons learned from building a production machine l...Hakka Labs
 
Getting Started With the TFS Object Model
Getting Started With the TFS Object ModelGetting Started With the TFS Object Model
Getting Started With the TFS Object ModelJeff Bramwell
 

Tendances (17)

Simseer - A Software Similarity Web Service
Simseer - A Software Similarity Web ServiceSimseer - A Software Similarity Web Service
Simseer - A Software Similarity Web Service
 
Meghana_Resume_FullTime_May_2016
Meghana_Resume_FullTime_May_2016Meghana_Resume_FullTime_May_2016
Meghana_Resume_FullTime_May_2016
 
Webinar: Building Customer-Targeted Search with Fusion
Webinar: Building Customer-Targeted Search with FusionWebinar: Building Customer-Targeted Search with Fusion
Webinar: Building Customer-Targeted Search with Fusion
 
Webinar: Fusion 3.1 - What's New
Webinar: Fusion 3.1 - What's NewWebinar: Fusion 3.1 - What's New
Webinar: Fusion 3.1 - What's New
 
Webinar: Personalized Retail Search & Recommendations with Fusion
Webinar: Personalized Retail Search & Recommendations with FusionWebinar: Personalized Retail Search & Recommendations with Fusion
Webinar: Personalized Retail Search & Recommendations with Fusion
 
Measure your teams sentiment
Measure your teams sentimentMeasure your teams sentiment
Measure your teams sentiment
 
Webinar: Building Conversational Search with Fusion
Webinar: Building Conversational Search with FusionWebinar: Building Conversational Search with Fusion
Webinar: Building Conversational Search with Fusion
 
Mayank Wadhawan RESUME
Mayank Wadhawan RESUMEMayank Wadhawan RESUME
Mayank Wadhawan RESUME
 
SagarKamat
SagarKamatSagarKamat
SagarKamat
 
Ml ops deployment choices
Ml ops   deployment choicesMl ops   deployment choices
Ml ops deployment choices
 
Resume-Pavana-Venkataswamy
Resume-Pavana-VenkataswamyResume-Pavana-Venkataswamy
Resume-Pavana-Venkataswamy
 
Mythbusters
MythbustersMythbusters
Mythbusters
 
Webinar: Site Search in an Hour with Fusion
Webinar: Site Search in an Hour with FusionWebinar: Site Search in an Hour with Fusion
Webinar: Site Search in an Hour with Fusion
 
Harnessing the Crowds for Automating the Identification of Web APIs
Harnessing the Crowds for Automating the Identification of Web APIsHarnessing the Crowds for Automating the Identification of Web APIs
Harnessing the Crowds for Automating the Identification of Web APIs
 
Career Pathing
Career PathingCareer Pathing
Career Pathing
 
DataEngConf SF16 - Three lessons learned from building a production machine l...
DataEngConf SF16 - Three lessons learned from building a production machine l...DataEngConf SF16 - Three lessons learned from building a production machine l...
DataEngConf SF16 - Three lessons learned from building a production machine l...
 
Getting Started With the TFS Object Model
Getting Started With the TFS Object ModelGetting Started With the TFS Object Model
Getting Started With the TFS Object Model
 

En vedette

Ενδεικτική πρόταση για τη Φυσικη β ΕΠΑΛ για το διάστημα Φεβρουάριος- Μαϊος
Ενδεικτική πρόταση για τη Φυσικη β ΕΠΑΛ για το διάστημα Φεβρουάριος- ΜαϊοςΕνδεικτική πρόταση για τη Φυσικη β ΕΠΑΛ για το διάστημα Φεβρουάριος- Μαϊος
Ενδεικτική πρόταση για τη Φυσικη β ΕΠΑΛ για το διάστημα Φεβρουάριος- ΜαϊοςChristos Gotzaridis
 
Future Agenda Future Of Food
Future Agenda   Future Of FoodFuture Agenda   Future Of Food
Future Agenda Future Of FoodFuture Agenda
 
Mole η μονάδα χημικής ποσότητας
Mole η μονάδα χημικής ποσότηταςMole η μονάδα χημικής ποσότητας
Mole η μονάδα χημικής ποσότηταςChristos Gotzaridis
 
C Level Client Presentation
C Level Client PresentationC Level Client Presentation
C Level Client PresentationThomas Noon
 
Future Agenda Future Of Work
Future Agenda   Future Of WorkFuture Agenda   Future Of Work
Future Agenda Future Of WorkFuture Agenda
 
Material Girl Magazine
Material Girl MagazineMaterial Girl Magazine
Material Girl Magazinejestrada127
 
20131111 slides for crowd funding
20131111 slides for crowd funding20131111 slides for crowd funding
20131111 slides for crowd fundingdbyhundred
 
socials
socialssocials
socialsaiiida
 
Tet Poweroint
Tet PowerointTet Poweroint
Tet PowerointAmber08
 
Introduction To Tcf
Introduction To TcfIntroduction To Tcf
Introduction To Tcfguestf23716
 
Bahia Grande Detached House - Mallorca
Bahia Grande Detached House - MallorcaBahia Grande Detached House - Mallorca
Bahia Grande Detached House - MallorcaPamela Adam
 
20130904 splash maps
20130904 splash maps20130904 splash maps
20130904 splash mapsdbyhundred
 
Dossier robotica Albert Claveria
Dossier robotica Albert ClaveriaDossier robotica Albert Claveria
Dossier robotica Albert Claveriaalbert
 
Powerpoint Activity
Powerpoint ActivityPowerpoint Activity
Powerpoint Activitycchannasch
 
Whatisa Trillion
Whatisa TrillionWhatisa Trillion
Whatisa Trillionguest276365
 
20120512 php カンファレンス関西 2012
20120512 php カンファレンス関西 201220120512 php カンファレンス関西 2012
20120512 php カンファレンス関西 2012Kaz Watanabe
 
ΕΚΦΕ Παρουσιαση της ιδεας του πακετου εργαστηριακων ασκησεων
ΕΚΦΕ Παρουσιαση της ιδεας του πακετου εργαστηριακων ασκησεωνΕΚΦΕ Παρουσιαση της ιδεας του πακετου εργαστηριακων ασκησεων
ΕΚΦΕ Παρουσιαση της ιδεας του πακετου εργαστηριακων ασκησεωνChristos Gotzaridis
 

En vedette (20)

Ενδεικτική πρόταση για τη Φυσικη β ΕΠΑΛ για το διάστημα Φεβρουάριος- Μαϊος
Ενδεικτική πρόταση για τη Φυσικη β ΕΠΑΛ για το διάστημα Φεβρουάριος- ΜαϊοςΕνδεικτική πρόταση για τη Φυσικη β ΕΠΑΛ για το διάστημα Φεβρουάριος- Μαϊος
Ενδεικτική πρόταση για τη Φυσικη β ΕΠΑΛ για το διάστημα Φεβρουάριος- Μαϊος
 
Future Agenda Future Of Food
Future Agenda   Future Of FoodFuture Agenda   Future Of Food
Future Agenda Future Of Food
 
Mole η μονάδα χημικής ποσότητας
Mole η μονάδα χημικής ποσότηταςMole η μονάδα χημικής ποσότητας
Mole η μονάδα χημικής ποσότητας
 
C Level Client Presentation
C Level Client PresentationC Level Client Presentation
C Level Client Presentation
 
Acacia Research and Learning Forum Tutorial 2
Acacia Research and Learning Forum Tutorial 2Acacia Research and Learning Forum Tutorial 2
Acacia Research and Learning Forum Tutorial 2
 
Future Agenda Future Of Work
Future Agenda   Future Of WorkFuture Agenda   Future Of Work
Future Agenda Future Of Work
 
Higher Ground Constructors
Higher Ground ConstructorsHigher Ground Constructors
Higher Ground Constructors
 
Material Girl Magazine
Material Girl MagazineMaterial Girl Magazine
Material Girl Magazine
 
E newsletter
E newsletterE newsletter
E newsletter
 
20131111 slides for crowd funding
20131111 slides for crowd funding20131111 slides for crowd funding
20131111 slides for crowd funding
 
socials
socialssocials
socials
 
Tet Poweroint
Tet PowerointTet Poweroint
Tet Poweroint
 
Introduction To Tcf
Introduction To TcfIntroduction To Tcf
Introduction To Tcf
 
Bahia Grande Detached House - Mallorca
Bahia Grande Detached House - MallorcaBahia Grande Detached House - Mallorca
Bahia Grande Detached House - Mallorca
 
20130904 splash maps
20130904 splash maps20130904 splash maps
20130904 splash maps
 
Dossier robotica Albert Claveria
Dossier robotica Albert ClaveriaDossier robotica Albert Claveria
Dossier robotica Albert Claveria
 
Powerpoint Activity
Powerpoint ActivityPowerpoint Activity
Powerpoint Activity
 
Whatisa Trillion
Whatisa TrillionWhatisa Trillion
Whatisa Trillion
 
20120512 php カンファレンス関西 2012
20120512 php カンファレンス関西 201220120512 php カンファレンス関西 2012
20120512 php カンファレンス関西 2012
 
ΕΚΦΕ Παρουσιαση της ιδεας του πακετου εργαστηριακων ασκησεων
ΕΚΦΕ Παρουσιαση της ιδεας του πακετου εργαστηριακων ασκησεωνΕΚΦΕ Παρουσιαση της ιδεας του πακετου εργαστηριακων ασκησεων
ΕΚΦΕ Παρουσιαση της ιδεας του πακετου εργαστηριακων ασκησεων
 

Similaire à Silicon Valley Code Camp 2010: Social Platforms : What goes on under the hood

Venkata Sateesh_BigData_Latest-Resume
Venkata Sateesh_BigData_Latest-ResumeVenkata Sateesh_BigData_Latest-Resume
Venkata Sateesh_BigData_Latest-Resumevenkata sateeshs
 
Python + MPP Database = Large Scale AI/ML Projects in Production Faster
Python + MPP Database = Large Scale AI/ML Projects in Production FasterPython + MPP Database = Large Scale AI/ML Projects in Production Faster
Python + MPP Database = Large Scale AI/ML Projects in Production FasterPaige_Roberts
 
The Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs PublicThe Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs PublicDavid Solivan
 
Modern Application Development v1-0
Modern Application Development  v1-0Modern Application Development  v1-0
Modern Application Development v1-0Greg Hoelzer
 
Handling Data in Mega Scale Systems
Handling Data in Mega Scale SystemsHandling Data in Mega Scale Systems
Handling Data in Mega Scale SystemsDirecti Group
 
Sfeldman performance bb_worldemea07
Sfeldman performance bb_worldemea07Sfeldman performance bb_worldemea07
Sfeldman performance bb_worldemea07Steve Feldman
 
Nagarjuna Reddy_Java (1+ Experience)
Nagarjuna Reddy_Java (1+ Experience)Nagarjuna Reddy_Java (1+ Experience)
Nagarjuna Reddy_Java (1+ Experience)Nagarjun Reddy
 
Short reference architecture
Short reference architectureShort reference architecture
Short reference architectureSteve Feldman
 
Architecting an Open Source AI Platform 2018 edition
Architecting an Open Source AI Platform   2018 editionArchitecting an Open Source AI Platform   2018 edition
Architecting an Open Source AI Platform 2018 editionDavid Talby
 
oct-2016-Prem-ProfessionalProfile
oct-2016-Prem-ProfessionalProfileoct-2016-Prem-ProfessionalProfile
oct-2016-Prem-ProfessionalProfilePrem Bist
 

Similaire à Silicon Valley Code Camp 2010: Social Platforms : What goes on under the hood (20)

RamaRaju
RamaRajuRamaRaju
RamaRaju
 
Shruti Kulkarni (1)
Shruti Kulkarni (1)Shruti Kulkarni (1)
Shruti Kulkarni (1)
 
Venkata Sateesh_BigData_Latest-Resume
Venkata Sateesh_BigData_Latest-ResumeVenkata Sateesh_BigData_Latest-Resume
Venkata Sateesh_BigData_Latest-Resume
 
Python + MPP Database = Large Scale AI/ML Projects in Production Faster
Python + MPP Database = Large Scale AI/ML Projects in Production FasterPython + MPP Database = Large Scale AI/ML Projects in Production Faster
Python + MPP Database = Large Scale AI/ML Projects in Production Faster
 
Resume
ResumeResume
Resume
 
Saloni_Tyagi
Saloni_TyagiSaloni_Tyagi
Saloni_Tyagi
 
The Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs PublicThe Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs Public
 
SelvaResume
SelvaResumeSelvaResume
SelvaResume
 
Modern Application Development v1-0
Modern Application Development  v1-0Modern Application Development  v1-0
Modern Application Development v1-0
 
Handling Data in Mega Scale Systems
Handling Data in Mega Scale SystemsHandling Data in Mega Scale Systems
Handling Data in Mega Scale Systems
 
Rajesh Ramasamy
Rajesh RamasamyRajesh Ramasamy
Rajesh Ramasamy
 
ABHAY_SHUKLA
ABHAY_SHUKLAABHAY_SHUKLA
ABHAY_SHUKLA
 
Sfeldman performance bb_worldemea07
Sfeldman performance bb_worldemea07Sfeldman performance bb_worldemea07
Sfeldman performance bb_worldemea07
 
Nagarjuna Reddy_Java (1+ Experience)
Nagarjuna Reddy_Java (1+ Experience)Nagarjuna Reddy_Java (1+ Experience)
Nagarjuna Reddy_Java (1+ Experience)
 
Rajeev_Resume
Rajeev_ResumeRajeev_Resume
Rajeev_Resume
 
Short reference architecture
Short reference architectureShort reference architecture
Short reference architecture
 
SelvaResume
SelvaResumeSelvaResume
SelvaResume
 
Architecting an Open Source AI Platform 2018 edition
Architecting an Open Source AI Platform   2018 editionArchitecting an Open Source AI Platform   2018 edition
Architecting an Open Source AI Platform 2018 edition
 
Apache phoenix
Apache phoenixApache phoenix
Apache phoenix
 
oct-2016-Prem-ProfessionalProfile
oct-2016-Prem-ProfessionalProfileoct-2016-Prem-ProfessionalProfile
oct-2016-Prem-ProfessionalProfile
 

Plus de Manish Pandit

Disaster recovery - What, Why, and How
Disaster recovery - What, Why, and HowDisaster recovery - What, Why, and How
Disaster recovery - What, Why, and HowManish Pandit
 
Serverless Architectures on AWS in practice - OSCON 2018
Serverless Architectures on AWS in practice - OSCON 2018Serverless Architectures on AWS in practice - OSCON 2018
Serverless Architectures on AWS in practice - OSCON 2018Manish Pandit
 
Disaster Recovery and Reliability
Disaster Recovery and ReliabilityDisaster Recovery and Reliability
Disaster Recovery and ReliabilityManish Pandit
 
Immutable AWS Deployments with Packer and Jenkins
Immutable AWS Deployments with Packer and JenkinsImmutable AWS Deployments with Packer and Jenkins
Immutable AWS Deployments with Packer and JenkinsManish Pandit
 
AWS Lambda with Serverless Framework and Java
AWS Lambda with Serverless Framework and JavaAWS Lambda with Serverless Framework and Java
AWS Lambda with Serverless Framework and JavaManish Pandit
 
AWS Primer and Quickstart
AWS Primer and QuickstartAWS Primer and Quickstart
AWS Primer and QuickstartManish Pandit
 
Securing your APIs with OAuth, OpenID, and OpenID Connect
Securing your APIs with OAuth, OpenID, and OpenID ConnectSecuring your APIs with OAuth, OpenID, and OpenID Connect
Securing your APIs with OAuth, OpenID, and OpenID ConnectManish Pandit
 
Silicon Valley 2014 - API Antipatterns
Silicon Valley 2014 - API AntipatternsSilicon Valley 2014 - API Antipatterns
Silicon Valley 2014 - API AntipatternsManish Pandit
 
Scalabay - API Design Antipatterns
Scalabay - API Design AntipatternsScalabay - API Design Antipatterns
Scalabay - API Design AntipatternsManish Pandit
 
OSCON 2014 - API Ecosystem with Scala, Scalatra, and Swagger at Netflix
OSCON 2014 - API Ecosystem with Scala, Scalatra, and Swagger at NetflixOSCON 2014 - API Ecosystem with Scala, Scalatra, and Swagger at Netflix
OSCON 2014 - API Ecosystem with Scala, Scalatra, and Swagger at NetflixManish Pandit
 
API Design Antipatterns - APICon SF
API Design Antipatterns - APICon SFAPI Design Antipatterns - APICon SF
API Design Antipatterns - APICon SFManish Pandit
 
Motivation : it Matters
Motivation : it MattersMotivation : it Matters
Motivation : it MattersManish Pandit
 
Building Apis in Scala with Playframework2
Building Apis in Scala with Playframework2Building Apis in Scala with Playframework2
Building Apis in Scala with Playframework2Manish Pandit
 
Introducing Scala to your Ruby/Java Shop : My experiences at IGN
Introducing Scala to your Ruby/Java Shop : My experiences at IGNIntroducing Scala to your Ruby/Java Shop : My experiences at IGN
Introducing Scala to your Ruby/Java Shop : My experiences at IGNManish Pandit
 
Evolving IGN’s New APIs with Scala
 Evolving IGN’s New APIs with Scala Evolving IGN’s New APIs with Scala
Evolving IGN’s New APIs with ScalaManish Pandit
 
Object Oriented Programming
Object Oriented ProgrammingObject Oriented Programming
Object Oriented ProgrammingManish Pandit
 

Plus de Manish Pandit (20)

Disaster recovery - What, Why, and How
Disaster recovery - What, Why, and HowDisaster recovery - What, Why, and How
Disaster recovery - What, Why, and How
 
Serverless Architectures on AWS in practice - OSCON 2018
Serverless Architectures on AWS in practice - OSCON 2018Serverless Architectures on AWS in practice - OSCON 2018
Serverless Architectures on AWS in practice - OSCON 2018
 
Disaster Recovery and Reliability
Disaster Recovery and ReliabilityDisaster Recovery and Reliability
Disaster Recovery and Reliability
 
OAuth2 primer
OAuth2 primerOAuth2 primer
OAuth2 primer
 
Immutable AWS Deployments with Packer and Jenkins
Immutable AWS Deployments with Packer and JenkinsImmutable AWS Deployments with Packer and Jenkins
Immutable AWS Deployments with Packer and Jenkins
 
AWS Lambda with Serverless Framework and Java
AWS Lambda with Serverless Framework and JavaAWS Lambda with Serverless Framework and Java
AWS Lambda with Serverless Framework and Java
 
AWS Primer and Quickstart
AWS Primer and QuickstartAWS Primer and Quickstart
AWS Primer and Quickstart
 
Securing your APIs with OAuth, OpenID, and OpenID Connect
Securing your APIs with OAuth, OpenID, and OpenID ConnectSecuring your APIs with OAuth, OpenID, and OpenID Connect
Securing your APIs with OAuth, OpenID, and OpenID Connect
 
Silicon Valley 2014 - API Antipatterns
Silicon Valley 2014 - API AntipatternsSilicon Valley 2014 - API Antipatterns
Silicon Valley 2014 - API Antipatterns
 
Scalabay - API Design Antipatterns
Scalabay - API Design AntipatternsScalabay - API Design Antipatterns
Scalabay - API Design Antipatterns
 
OSCON 2014 - API Ecosystem with Scala, Scalatra, and Swagger at Netflix
OSCON 2014 - API Ecosystem with Scala, Scalatra, and Swagger at NetflixOSCON 2014 - API Ecosystem with Scala, Scalatra, and Swagger at Netflix
OSCON 2014 - API Ecosystem with Scala, Scalatra, and Swagger at Netflix
 
API Design Antipatterns - APICon SF
API Design Antipatterns - APICon SFAPI Design Antipatterns - APICon SF
API Design Antipatterns - APICon SF
 
Motivation : it Matters
Motivation : it MattersMotivation : it Matters
Motivation : it Matters
 
Building Apis in Scala with Playframework2
Building Apis in Scala with Playframework2Building Apis in Scala with Playframework2
Building Apis in Scala with Playframework2
 
Scala at Netflix
Scala at NetflixScala at Netflix
Scala at Netflix
 
Introducing Scala to your Ruby/Java Shop : My experiences at IGN
Introducing Scala to your Ruby/Java Shop : My experiences at IGNIntroducing Scala to your Ruby/Java Shop : My experiences at IGN
Introducing Scala to your Ruby/Java Shop : My experiences at IGN
 
Evolving IGN’s New APIs with Scala
 Evolving IGN’s New APIs with Scala Evolving IGN’s New APIs with Scala
Evolving IGN’s New APIs with Scala
 
IGN's V3 API
IGN's V3 APIIGN's V3 API
IGN's V3 API
 
Java and the JVM
Java and the JVMJava and the JVM
Java and the JVM
 
Object Oriented Programming
Object Oriented ProgrammingObject Oriented Programming
Object Oriented Programming
 

Dernier

Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
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
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
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
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 

Dernier (20)

DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
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)
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
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
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 

Silicon Valley Code Camp 2010: Social Platforms : What goes on under the hood

  • 1.
  • 2. Components of Social Platform Challenges Technology API Engineering Process
  • 3. User Profile Relationships Activity Streams
  • 4. Basic user information Extended information based on the context Player Cards Bragging rights Points, levels Achievements, badges Activities
  • 5. Friending Unidirectional (the Twitter model) Bidirectional (the Facebok model) Association Comments Ratings, Thumbs Bookmarking/favoriting Recommendations
  • 6. Who is doing what and when All about Actors, Actions, Objects and Targets Activitystrea.ms standard vs. OpenSocial Commentable
  • 7. Authentication Performance ActivityStrems Integration Flexibility Testing
  • 8. People are tired of creating accounts on every site Need to support existing login method if the platform caters to an existing audience Existing auth may not work well with Open API initiatives Open API and Oauth 2 legged: Service to Service 3 legged: User to App to Service
  • 9. Identify the bottlenecks Measure everything Use CDNs for all static content Front end optimization via async loading Database optimization via indexes, sharding Caching Scaling the sorts Scaling up vs. Scaling out CAP theorem Relational vs. NOSQL storage Read vs. Write heaviness
  • 10. Query vs. Propagation Queries are read heavy Propagation is write heavy Deletion is a pain with propagation Activity Aggregation Aggregation on actor vs. object Normalized vs. Denormalized storage Comments Decorating the activities on each request
  • 11. Integration with legacy touchpoints Opening up the API More channels like Mobile More independent applications Rate limiting and access control Don’t forget existing data Data outlives code
  • 12. Flexibility in the code to adapt changing requirements quickly and seamlessly Good design DRY SOCs Flexibility in the infrastructure to adapt changing traffic and behavior Virtualization Heavy replication Flexibility in the team to respond to changes Process
  • 13. Automated Testing wherever possible Developer Focus on test coverage (80+%) Continuous Integration and Deployment Cucumber + Hudson Cross browser testing (yes, including IE)
  • 14.
  • 15. Java services Tomcat with Shindig 1.1, 4 nodes REST/JSON Ruby Rails Admin App for moderation and points/levels Migration Scripts Twitter bot for routing #myign tweets to the platform Misc. scripts to invalidate memache keys and test service endpoints
  • 16. Memcached Extremely trivial to set up and maintain Almost never dies Massive scale out Careful with Cache hotspots Concurrent writes On the fly scale-out Key/Value size limits
  • 17. MySQL Proven, cheap to develop and operate Maslow’s hammer Easy scale out Hard to store (and retrieve) network graphs Write scaling with single master Not the best choice for activitystreams Schema changes lock the table(s)
  • 18. Awesome write scaling Great for activity propagation model In place updates Using $push and $set Excellent for storing social relationships as documents Very easy to cluster We are running replica pairs, plan to move to replica sets Schema-less No need to run alter scripts on 18M-row table
  • 19. Queryable Rich Query language ($in, $size, $exists, $slice) MapReduce for heavy data crunching Supports Indexing You can even index collections inside a document Storage ~4x storage compared to relational data Emerging technology Index defragmentation $or and indexing (to be supported in 1.7) Load balancing support in the driver (coming soon)
  • 20. RabbitMQ for messaging Ease of clustering Written in Erlang for high performance and availability Used for Propagation of activities Sending out email alerts Indexing data in Solr
  • 21. Person GET @self, @friends, @followers, @all, PUT/POST @self, @friends Activities GET @global, @self, @friends, POST @self MediaItems GET @self, @all and POST @self AppData For applications to store/retrieve data as key-value pairs GET/POST @self Status GET @friends, @self, @followers , POST @self
  • 22. Must have for any Java/Ruby webapp Monitoring and troubleshooting Save a ton of $ and time by efficient root cause analysis tools Agents for Ruby and Java IGN Engineers helped write PHP and Memcached agents
  • 23. Social Applications and community Check the pulse of the community UserVoice (http://ign.uservoice.com) Less is more Distinguish yourself and focus on your niche Be Agile - Release early, release often Do not shock your audience Announce the changes/features on a blog Eat your own dog food http://people.ign.com/ign-labs
  • 24. Released July 2010 as beta Daily API requests ~25M Daily page views ~30K Daily Uniques ~12K 6ms response times Expected traffic 8-10x with more integration and mobile platform
  • 25. Manish Pandit Engineering Manager, Social Platform at IGN Email: pandit.manish-at-gmail.com Twitter: @lobster1234 LinkedIn: http://www.linkedin.com/in/mpandit Blog: http://contrarianwisdom.blogspot.com MyIGN: http://people.ign.com/mpanditign