SlideShare une entreprise Scribd logo
1  sur  4
Télécharger pour lire hors ligne
 
©	
  2013	
  Typesafe,	
  Inc
info@typesafe.com	
  
Typesafe gives Klout more Klout!
Before Klout could branch out into an important new market, they needed to
ensure that they could overcome a rapidly growing technical hurdle first - data
aggregation across several social networks and data stores in real time, with results
instantaneously presented to end-users. Klout turned to the Typesafe Platform for
the solution to its Big-Data problem.
About Klout
Klout’s mission is to empower every person by unlocking his or her influence. Klout measures influence
across several social networks and shows users how they impact the people connected to them. As social
networks evolve, it’s important for Klout to understand the new ways in which users are communicating
with their audiences and update their analytical methods to integrate new features easily.
The Problem
At its inception, an elegant web-based interface was the only way end-users could interact with Klout. That
all changed early in 2012 when the decision was made to expand the services reach into the mobile
application realm. However, Klout’s engineering team knew before they could attack this new marketplace
their existing infrastructure needed some modernization. This infrastructure, which had served them well
to this point consisted of a number of PHP servers that served up their website, along with Servlet, Spring
and Java based applications that served up their legacy API. Since this architecture consisted of a set of
Bringing Reactive Applications
to the Java Virtual Machine
 
©	
  2013	
  Typesafe,	
  Inc
info@typesafe.com	
  
one-off API servers, each with its own set of clients, a key goal was to unify the platform, as well as perform
a technology upgrade to ensure a guaranteed level of performance as the platform scaled out. This goal
also meant ensuring that the API layer was accessible not only from Klout’s internal, web and mobile
applications, but partner-based applications too - which broadened its potential user base substantially. It
was clear that the infrastructure would have to be significantly re-architected to ensure that the scalability
and consistency demands required of the infrastructure could be met.
Evaluating Solutions
Given the magnitude of the project at hand, combined with aggressive delivery schedules Klout did not
have the luxury of time to conduct an extensive evaluation of available solutions. Thankfully, the
engineering team brought with them a wealth of experience from prior work. Specifically the mobile
project architect had experience using two technologies: Play Web Framework 1.0 for Java, and the Scala
programming language. Play Framework is a very productive framework that is based on a lightweight,
stateless, web friendly architecture that features predictable and minimal resource consumption for highly
scalable applications. Scala is an elegant and concise programming language that integrates both
functional and object oriented paradigms. Combining these two JVM based technologies would meet their
requirements admirably.
Needing to look no further, with their platform chosen - all that was left to do was jump in and start
building!
Crafting an Architecture
The Klout API is essentially a huge data mashup between a number of different data stores consisting of
big data stored in HBase, along with user generated content in stored in MySQL.
Our legacy collection framework was written in Java and built on the
java.util.concurrent library. As a consequence, data collection consisted of isolated
nodes fetching user data sequentially with convoluted succeed-or-retry semantics in
blocking threads. As our datasets grew with an ever-increasing user base, the
inefficiencies of the system started to become apparent.
Naveen Gattu, Senior Software Engineer
Iteratees have become the cornerstones to Klout’s new data collection architecture. Iteratees are the
functional way to model producers and consumers of streams of data, and are easily parallelizable and
highly asynchronous. Naveen furnished an excellent example of the kind of data collection done by the
Klout service in a recent blog post. A user may post “I love Pop-Tarts® for breakfast!” to Facebook and
receive 20 comments and 200 likes. This one activity consists of three components; the status message, 20
comments and 200 likes; these three components are independent of each other and can be collected
asynchronously and in parallel. While a simple example, one can see value of performing this work in
parallel when the volumes reach millions of users, with an ever-increasing number of posts across
numerous social networks.
Having launched the API with Play 1.x, Klout quickly migrated to Play 2.0 as Typesafe announced its general
availability shortly after the API launch. Play 2.0 offered the productivity of Play 1.0, along with the
significant benefit of being built natively in Scala.
 
©	
  2013	
  Typesafe,	
  Inc
info@typesafe.com	
  
Today, the Klout service has four main codebases:
The API written in Scala.
The website written with Node.JS utilizing RESTful JSON served up via the API.
A Data Processing Pipeline written in Hive and Hadoop.
An iOS based mobile application written in Objective-C.
While the initial API project utilized Scala and Play, Klout has expanded their utilization of the Typesafe
Platform to include Akka too. Akka is a toolkit and runtime for building highly concurrent, distributed, fault
tolerant and event-driven applications on the JVM. Since Play was built on, and leverages Akka, many of its
concepts were already familiar to the Klout team. Akka’s Actors provide an elegant way to express
business logic, without having to worry about the complexities of using Java concurrency. Typesafe’s sbt
plays a key role at Klout too, simplifying build management by tightly integrating the build process with the
coding process.
sbt allows us to unify our codebase and avoids dealing with the Maven craziness; all of
Klout’s projects are multi-module builds, which also saves us from Maven hell!
David Ross, Senior Software Engineer
If Iteratees are the cornerstones of the Klout architecture, then Futures are its foundation. A Future is a
data structure used to retrieve the result of some concurrent operation. This result can be accessed
synchronously (blocking) or asynchronously (non-blocking). The Klout team simply loves Future
composition in Play, as rendering a typical page can rely on hundreds of distinct data store lookups that
need their results composed quickly and efficiently. This is one of the most important features that
enables Klout to meet their massive scalability requirements.
At Klout, everything needs to happen asynchronously.
The Team
The initial team building out the infrastructure consisted of three developers building the API’s, however
that team has since expanded to about a dozen Scala developers. Like many companies, the team uses a
mix of developer tools with some preferring Eclipse while others prefer Sublime. This team is currently
managing a code-base that is 1½ years old that consists of approximately 100,000 lines of Scala code
(including tests).
 
©	
  2013	
  Typesafe,	
  Inc
info@typesafe.com	
  
Obviously hiring talent is a concern for many companies, however at Klout, not many engineers have
joined with Scala expertise. Scala knowledge and skills are obviously an added benefit, but Klout is happy
to train smart, energetic engineers who are eager to learn.
Metrics and the Future
Klout’s David Ross shared some interesting facts about their environment:
Klout serves up an amazing 1 billion API calls per day.
Klout harvests about 1 terabyte of data per day using Iteratees. Check out Naveen Gattu’s
fascinating blog post on how Klout uses Iteratees here.
The Klout infrastructure currently consists of twenty or so stateless machines running the API
service.
Always eager to ensure that they are doing things the right way, the Klout engineering team recently held a
hackathon where the team decided to “do things the easy way” to solve a complex problem. It actually
turned out that using Futures was the easy way.
The functional programming aspects of Play make it easy to get high performance out of
the system.
David Ross, Senior Software Engineer
The Typesafe Platform has proven to be so successful at Klout that most projects built there now utilize it;
Play is even used for non-web projects as it's so easy to get something going quickly.
The Typesafe Platform is a modern software platform that makes it easy for developers to build scalable
software applications. It combines Play Framework, Akka runtime, the Scala programming language, and
robust developer tools in a simple package that integrates seamlessly with existing Java infrastructure.
Commercial support and maintenance is available for the Typesafe Platform through the Typesafe
Subscription.

Contenu connexe

Tendances

WSO2Con-Asia-2014 : Build a Connected Business (final keynote)
WSO2Con-Asia-2014 : Build a Connected Business (final keynote)WSO2Con-Asia-2014 : Build a Connected Business (final keynote)
WSO2Con-Asia-2014 : Build a Connected Business (final keynote)Asanka Abeysinghe
 
A Decentralized Reference Architecture for Cloud-native Applications V2.0
A Decentralized Reference Architecture for Cloud-native Applications  V2.0A Decentralized Reference Architecture for Cloud-native Applications  V2.0
A Decentralized Reference Architecture for Cloud-native Applications V2.0Asanka Abeysinghe
 
New Capabilities and Product Strategy for .NET on PCF
New Capabilities and Product Strategy for .NET on PCF New Capabilities and Product Strategy for .NET on PCF
New Capabilities and Product Strategy for .NET on PCF VMware Tanzu
 
State of microservices 2020 by tsh
State of microservices 2020 by tshState of microservices 2020 by tsh
State of microservices 2020 by tshmustafa sarac
 
A Decentralized Reference Architecture for Cloud-native Applications
A Decentralized Reference Architecture for Cloud-native Applications A Decentralized Reference Architecture for Cloud-native Applications
A Decentralized Reference Architecture for Cloud-native Applications Asanka Abeysinghe
 
Roadmap to a Connected Business
Roadmap to a Connected BusinessRoadmap to a Connected Business
Roadmap to a Connected BusinessAsanka Abeysinghe
 
EdgeX Foundry - Open Interop Platform for the IoT Edge.
EdgeX  Foundry - Open Interop Platform for the IoT Edge. EdgeX  Foundry - Open Interop Platform for the IoT Edge.
EdgeX Foundry - Open Interop Platform for the IoT Edge. Barton George
 
A use case with cloud foundry deployment
A use case with cloud foundry deploymentA use case with cloud foundry deployment
A use case with cloud foundry deploymentKrishna-Kumar
 
Cloud Native Applications Containers Microservices Platforms CICD Oh my
Cloud Native Applications Containers Microservices Platforms CICD Oh myCloud Native Applications Containers Microservices Platforms CICD Oh my
Cloud Native Applications Containers Microservices Platforms CICD Oh myFabio Chiodini
 
A Decentralized Reference Architecture for Cloud-native Applications
A Decentralized Reference Architecture for Cloud-native Applications A Decentralized Reference Architecture for Cloud-native Applications
A Decentralized Reference Architecture for Cloud-native Applications Asanka Abeysinghe
 
Tried and True Approach to Cloud Native Design - An Experienced Based Method
Tried and True Approach to Cloud Native Design - An Experienced Based MethodTried and True Approach to Cloud Native Design - An Experienced Based Method
Tried and True Approach to Cloud Native Design - An Experienced Based MethodVMware Tanzu
 

Tendances (12)

WSO2Con-Asia-2014 : Build a Connected Business (final keynote)
WSO2Con-Asia-2014 : Build a Connected Business (final keynote)WSO2Con-Asia-2014 : Build a Connected Business (final keynote)
WSO2Con-Asia-2014 : Build a Connected Business (final keynote)
 
A Decentralized Reference Architecture for Cloud-native Applications V2.0
A Decentralized Reference Architecture for Cloud-native Applications  V2.0A Decentralized Reference Architecture for Cloud-native Applications  V2.0
A Decentralized Reference Architecture for Cloud-native Applications V2.0
 
New Capabilities and Product Strategy for .NET on PCF
New Capabilities and Product Strategy for .NET on PCF New Capabilities and Product Strategy for .NET on PCF
New Capabilities and Product Strategy for .NET on PCF
 
State of microservices 2020 by tsh
State of microservices 2020 by tshState of microservices 2020 by tsh
State of microservices 2020 by tsh
 
A Decentralized Reference Architecture for Cloud-native Applications
A Decentralized Reference Architecture for Cloud-native Applications A Decentralized Reference Architecture for Cloud-native Applications
A Decentralized Reference Architecture for Cloud-native Applications
 
Roadmap to a Connected Business
Roadmap to a Connected BusinessRoadmap to a Connected Business
Roadmap to a Connected Business
 
EdgeX Foundry - Open Interop Platform for the IoT Edge.
EdgeX  Foundry - Open Interop Platform for the IoT Edge. EdgeX  Foundry - Open Interop Platform for the IoT Edge.
EdgeX Foundry - Open Interop Platform for the IoT Edge.
 
A use case with cloud foundry deployment
A use case with cloud foundry deploymentA use case with cloud foundry deployment
A use case with cloud foundry deployment
 
Cloud Native Applications Containers Microservices Platforms CICD Oh my
Cloud Native Applications Containers Microservices Platforms CICD Oh myCloud Native Applications Containers Microservices Platforms CICD Oh my
Cloud Native Applications Containers Microservices Platforms CICD Oh my
 
A Decentralized Reference Architecture for Cloud-native Applications
A Decentralized Reference Architecture for Cloud-native Applications A Decentralized Reference Architecture for Cloud-native Applications
A Decentralized Reference Architecture for Cloud-native Applications
 
Tried and True Approach to Cloud Native Design - An Experienced Based Method
Tried and True Approach to Cloud Native Design - An Experienced Based MethodTried and True Approach to Cloud Native Design - An Experienced Based Method
Tried and True Approach to Cloud Native Design - An Experienced Based Method
 
MySQL
MySQLMySQL
MySQL
 

En vedette

Pildimäng
PildimängPildimäng
Pildimängrixrix
 
California Energy Presentation
California Energy Presentation California Energy Presentation
California Energy Presentation Energy Provider
 
Digital media planning: progettare gli investimenti online - Federico Gavazzi
Digital media planning: progettare gli investimenti online - Federico GavazziDigital media planning: progettare gli investimenti online - Federico Gavazzi
Digital media planning: progettare gli investimenti online - Federico GavazziYoung Digital Lab
 
Taller webcongress // Publicidad en buscadores
Taller webcongress // Publicidad en buscadoresTaller webcongress // Publicidad en buscadores
Taller webcongress // Publicidad en buscadoresNicola Picasso
 
Gessica Bicego – La comunicazione su Facebook ai tempi della decadenza
Gessica Bicego – La comunicazione su Facebook ai tempi della decadenzaGessica Bicego – La comunicazione su Facebook ai tempi della decadenza
Gessica Bicego – La comunicazione su Facebook ai tempi della decadenzaYoung Digital Lab
 
Web Monitoring: l’ascolto e la comprensione prima di tutto - Stefano Besana
Web Monitoring: l’ascolto e la comprensione prima di tutto - Stefano Besana Web Monitoring: l’ascolto e la comprensione prima di tutto - Stefano Besana
Web Monitoring: l’ascolto e la comprensione prima di tutto - Stefano Besana Young Digital Lab
 

En vedette (8)

ASFA 2010
ASFA 2010ASFA 2010
ASFA 2010
 
Pildimäng
PildimängPildimäng
Pildimäng
 
Intro To Library Research
Intro To Library ResearchIntro To Library Research
Intro To Library Research
 
California Energy Presentation
California Energy Presentation California Energy Presentation
California Energy Presentation
 
Digital media planning: progettare gli investimenti online - Federico Gavazzi
Digital media planning: progettare gli investimenti online - Federico GavazziDigital media planning: progettare gli investimenti online - Federico Gavazzi
Digital media planning: progettare gli investimenti online - Federico Gavazzi
 
Taller webcongress // Publicidad en buscadores
Taller webcongress // Publicidad en buscadoresTaller webcongress // Publicidad en buscadores
Taller webcongress // Publicidad en buscadores
 
Gessica Bicego – La comunicazione su Facebook ai tempi della decadenza
Gessica Bicego – La comunicazione su Facebook ai tempi della decadenzaGessica Bicego – La comunicazione su Facebook ai tempi della decadenza
Gessica Bicego – La comunicazione su Facebook ai tempi della decadenza
 
Web Monitoring: l’ascolto e la comprensione prima di tutto - Stefano Besana
Web Monitoring: l’ascolto e la comprensione prima di tutto - Stefano Besana Web Monitoring: l’ascolto e la comprensione prima di tutto - Stefano Besana
Web Monitoring: l’ascolto e la comprensione prima di tutto - Stefano Besana
 

Similaire à Klout case-study-v1.0

Nyc mule soft_meetup_13_march_2021
Nyc mule soft_meetup_13_march_2021Nyc mule soft_meetup_13_march_2021
Nyc mule soft_meetup_13_march_2021NeerajKumar1965
 
Un Microsystem Company Analysis Essay
Un Microsystem Company Analysis EssayUn Microsystem Company Analysis Essay
Un Microsystem Company Analysis EssayRikki Wright
 
A Brief Note On Asp.Net And Cloud Computing Essay
A Brief Note On Asp.Net And Cloud Computing EssayA Brief Note On Asp.Net And Cloud Computing Essay
A Brief Note On Asp.Net And Cloud Computing EssayLanate Drummond
 
Managing Large Flask Applications On Google App Engine (GAE)
Managing Large Flask Applications On Google App Engine (GAE)Managing Large Flask Applications On Google App Engine (GAE)
Managing Large Flask Applications On Google App Engine (GAE)Emmanuel Olowosulu
 
locotalk-whitepaper-2016
locotalk-whitepaper-2016locotalk-whitepaper-2016
locotalk-whitepaper-2016Anthony Wijnen
 
NET vs Java Which Technology Is Better for Website Development
NET vs Java Which Technology Is Better for Website DevelopmentNET vs Java Which Technology Is Better for Website Development
NET vs Java Which Technology Is Better for Website DevelopmentVirtual Employee Pvt. Ltd.
 
The Architecture Of Software Defined Radios Essay
The Architecture Of Software Defined Radios EssayThe Architecture Of Software Defined Radios Essay
The Architecture Of Software Defined Radios EssayDivya Watson
 
Accelerating Innovation with Java: The Future is Today
Accelerating Innovation with Java: The Future is TodayAccelerating Innovation with Java: The Future is Today
Accelerating Innovation with Java: The Future is TodayJohn Duimovich
 
Cloud Application Development Lifecycle
Cloud Application Development LifecycleCloud Application Development Lifecycle
Cloud Application Development LifecycleSuhas Kelkar
 
Micro services may not be the best idea
Micro services may not be the best ideaMicro services may not be the best idea
Micro services may not be the best ideaSamuel ROZE
 
Oracle E2.0 WebCenter Portal Strategy
Oracle E2.0 WebCenter Portal StrategyOracle E2.0 WebCenter Portal Strategy
Oracle E2.0 WebCenter Portal StrategyFumiko Yamashita
 
MuleSoft Surat Virtual Meetup#16 - Anypoint Deployment Option, API and Operat...
MuleSoft Surat Virtual Meetup#16 - Anypoint Deployment Option, API and Operat...MuleSoft Surat Virtual Meetup#16 - Anypoint Deployment Option, API and Operat...
MuleSoft Surat Virtual Meetup#16 - Anypoint Deployment Option, API and Operat...Jitendra Bafna
 
How .NET Framework Supports Cost-Effective Application Development
How .NET Framework Supports Cost-Effective Application DevelopmentHow .NET Framework Supports Cost-Effective Application Development
How .NET Framework Supports Cost-Effective Application DevelopmentSara Suarez
 
10 Best Web Development Frameworks for Your Business Needs
10 Best Web Development Frameworks for Your Business Needs10 Best Web Development Frameworks for Your Business Needs
10 Best Web Development Frameworks for Your Business NeedsSofiaCarter4
 
IT TRENDS AND PERSPECTIVES 2016
IT TRENDS AND PERSPECTIVES 2016IT TRENDS AND PERSPECTIVES 2016
IT TRENDS AND PERSPECTIVES 2016Vaidheswaran CS
 
Vue Or React - Which One is the Best_.pptx
Vue Or React - Which One is the Best_.pptxVue Or React - Which One is the Best_.pptx
Vue Or React - Which One is the Best_.pptx75waytechnologies
 

Similaire à Klout case-study-v1.0 (20)

Nyc mule soft_meetup_13_march_2021
Nyc mule soft_meetup_13_march_2021Nyc mule soft_meetup_13_march_2021
Nyc mule soft_meetup_13_march_2021
 
Un Microsystem Company Analysis Essay
Un Microsystem Company Analysis EssayUn Microsystem Company Analysis Essay
Un Microsystem Company Analysis Essay
 
A Brief Note On Asp.Net And Cloud Computing Essay
A Brief Note On Asp.Net And Cloud Computing EssayA Brief Note On Asp.Net And Cloud Computing Essay
A Brief Note On Asp.Net And Cloud Computing Essay
 
Managing Large Flask Applications On Google App Engine (GAE)
Managing Large Flask Applications On Google App Engine (GAE)Managing Large Flask Applications On Google App Engine (GAE)
Managing Large Flask Applications On Google App Engine (GAE)
 
locotalk-whitepaper-2016
locotalk-whitepaper-2016locotalk-whitepaper-2016
locotalk-whitepaper-2016
 
NET vs Java Which Technology Is Better for Website Development
NET vs Java Which Technology Is Better for Website DevelopmentNET vs Java Which Technology Is Better for Website Development
NET vs Java Which Technology Is Better for Website Development
 
The Architecture Of Software Defined Radios Essay
The Architecture Of Software Defined Radios EssayThe Architecture Of Software Defined Radios Essay
The Architecture Of Software Defined Radios Essay
 
Accelerating Innovation with Java: The Future is Today
Accelerating Innovation with Java: The Future is TodayAccelerating Innovation with Java: The Future is Today
Accelerating Innovation with Java: The Future is Today
 
Cloud Application Development Lifecycle
Cloud Application Development LifecycleCloud Application Development Lifecycle
Cloud Application Development Lifecycle
 
Micro services may not be the best idea
Micro services may not be the best ideaMicro services may not be the best idea
Micro services may not be the best idea
 
Oracle E2.0 WebCenter Portal Strategy
Oracle E2.0 WebCenter Portal StrategyOracle E2.0 WebCenter Portal Strategy
Oracle E2.0 WebCenter Portal Strategy
 
MuleSoft Surat Virtual Meetup#16 - Anypoint Deployment Option, API and Operat...
MuleSoft Surat Virtual Meetup#16 - Anypoint Deployment Option, API and Operat...MuleSoft Surat Virtual Meetup#16 - Anypoint Deployment Option, API and Operat...
MuleSoft Surat Virtual Meetup#16 - Anypoint Deployment Option, API and Operat...
 
How .NET Framework Supports Cost-Effective Application Development
How .NET Framework Supports Cost-Effective Application DevelopmentHow .NET Framework Supports Cost-Effective Application Development
How .NET Framework Supports Cost-Effective Application Development
 
10 Best Web Development Frameworks for Your Business Needs
10 Best Web Development Frameworks for Your Business Needs10 Best Web Development Frameworks for Your Business Needs
10 Best Web Development Frameworks for Your Business Needs
 
IT TRENDS AND PERSPECTIVES 2016
IT TRENDS AND PERSPECTIVES 2016IT TRENDS AND PERSPECTIVES 2016
IT TRENDS AND PERSPECTIVES 2016
 
Resume _ios
Resume _iosResume _ios
Resume _ios
 
Full Stack Development
Full Stack DevelopmentFull Stack Development
Full Stack Development
 
Vue Or React - Which One is the Best_.pptx
Vue Or React - Which One is the Best_.pptxVue Or React - Which One is the Best_.pptx
Vue Or React - Which One is the Best_.pptx
 
GraphQL for Native Apps
GraphQL for Native AppsGraphQL for Native Apps
GraphQL for Native Apps
 
Qnx html5 hmi
Qnx html5 hmiQnx html5 hmi
Qnx html5 hmi
 

Dernier

Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
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
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
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
 
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
 
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
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
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
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 

Dernier (20)

Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
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
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
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
 
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?
 
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
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
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
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 

Klout case-study-v1.0

  • 1.   ©  2013  Typesafe,  Inc info@typesafe.com   Typesafe gives Klout more Klout! Before Klout could branch out into an important new market, they needed to ensure that they could overcome a rapidly growing technical hurdle first - data aggregation across several social networks and data stores in real time, with results instantaneously presented to end-users. Klout turned to the Typesafe Platform for the solution to its Big-Data problem. About Klout Klout’s mission is to empower every person by unlocking his or her influence. Klout measures influence across several social networks and shows users how they impact the people connected to them. As social networks evolve, it’s important for Klout to understand the new ways in which users are communicating with their audiences and update their analytical methods to integrate new features easily. The Problem At its inception, an elegant web-based interface was the only way end-users could interact with Klout. That all changed early in 2012 when the decision was made to expand the services reach into the mobile application realm. However, Klout’s engineering team knew before they could attack this new marketplace their existing infrastructure needed some modernization. This infrastructure, which had served them well to this point consisted of a number of PHP servers that served up their website, along with Servlet, Spring and Java based applications that served up their legacy API. Since this architecture consisted of a set of Bringing Reactive Applications to the Java Virtual Machine
  • 2.   ©  2013  Typesafe,  Inc info@typesafe.com   one-off API servers, each with its own set of clients, a key goal was to unify the platform, as well as perform a technology upgrade to ensure a guaranteed level of performance as the platform scaled out. This goal also meant ensuring that the API layer was accessible not only from Klout’s internal, web and mobile applications, but partner-based applications too - which broadened its potential user base substantially. It was clear that the infrastructure would have to be significantly re-architected to ensure that the scalability and consistency demands required of the infrastructure could be met. Evaluating Solutions Given the magnitude of the project at hand, combined with aggressive delivery schedules Klout did not have the luxury of time to conduct an extensive evaluation of available solutions. Thankfully, the engineering team brought with them a wealth of experience from prior work. Specifically the mobile project architect had experience using two technologies: Play Web Framework 1.0 for Java, and the Scala programming language. Play Framework is a very productive framework that is based on a lightweight, stateless, web friendly architecture that features predictable and minimal resource consumption for highly scalable applications. Scala is an elegant and concise programming language that integrates both functional and object oriented paradigms. Combining these two JVM based technologies would meet their requirements admirably. Needing to look no further, with their platform chosen - all that was left to do was jump in and start building! Crafting an Architecture The Klout API is essentially a huge data mashup between a number of different data stores consisting of big data stored in HBase, along with user generated content in stored in MySQL. Our legacy collection framework was written in Java and built on the java.util.concurrent library. As a consequence, data collection consisted of isolated nodes fetching user data sequentially with convoluted succeed-or-retry semantics in blocking threads. As our datasets grew with an ever-increasing user base, the inefficiencies of the system started to become apparent. Naveen Gattu, Senior Software Engineer Iteratees have become the cornerstones to Klout’s new data collection architecture. Iteratees are the functional way to model producers and consumers of streams of data, and are easily parallelizable and highly asynchronous. Naveen furnished an excellent example of the kind of data collection done by the Klout service in a recent blog post. A user may post “I love Pop-Tarts® for breakfast!” to Facebook and receive 20 comments and 200 likes. This one activity consists of three components; the status message, 20 comments and 200 likes; these three components are independent of each other and can be collected asynchronously and in parallel. While a simple example, one can see value of performing this work in parallel when the volumes reach millions of users, with an ever-increasing number of posts across numerous social networks. Having launched the API with Play 1.x, Klout quickly migrated to Play 2.0 as Typesafe announced its general availability shortly after the API launch. Play 2.0 offered the productivity of Play 1.0, along with the significant benefit of being built natively in Scala.
  • 3.   ©  2013  Typesafe,  Inc info@typesafe.com   Today, the Klout service has four main codebases: The API written in Scala. The website written with Node.JS utilizing RESTful JSON served up via the API. A Data Processing Pipeline written in Hive and Hadoop. An iOS based mobile application written in Objective-C. While the initial API project utilized Scala and Play, Klout has expanded their utilization of the Typesafe Platform to include Akka too. Akka is a toolkit and runtime for building highly concurrent, distributed, fault tolerant and event-driven applications on the JVM. Since Play was built on, and leverages Akka, many of its concepts were already familiar to the Klout team. Akka’s Actors provide an elegant way to express business logic, without having to worry about the complexities of using Java concurrency. Typesafe’s sbt plays a key role at Klout too, simplifying build management by tightly integrating the build process with the coding process. sbt allows us to unify our codebase and avoids dealing with the Maven craziness; all of Klout’s projects are multi-module builds, which also saves us from Maven hell! David Ross, Senior Software Engineer If Iteratees are the cornerstones of the Klout architecture, then Futures are its foundation. A Future is a data structure used to retrieve the result of some concurrent operation. This result can be accessed synchronously (blocking) or asynchronously (non-blocking). The Klout team simply loves Future composition in Play, as rendering a typical page can rely on hundreds of distinct data store lookups that need their results composed quickly and efficiently. This is one of the most important features that enables Klout to meet their massive scalability requirements. At Klout, everything needs to happen asynchronously. The Team The initial team building out the infrastructure consisted of three developers building the API’s, however that team has since expanded to about a dozen Scala developers. Like many companies, the team uses a mix of developer tools with some preferring Eclipse while others prefer Sublime. This team is currently managing a code-base that is 1½ years old that consists of approximately 100,000 lines of Scala code (including tests).
  • 4.   ©  2013  Typesafe,  Inc info@typesafe.com   Obviously hiring talent is a concern for many companies, however at Klout, not many engineers have joined with Scala expertise. Scala knowledge and skills are obviously an added benefit, but Klout is happy to train smart, energetic engineers who are eager to learn. Metrics and the Future Klout’s David Ross shared some interesting facts about their environment: Klout serves up an amazing 1 billion API calls per day. Klout harvests about 1 terabyte of data per day using Iteratees. Check out Naveen Gattu’s fascinating blog post on how Klout uses Iteratees here. The Klout infrastructure currently consists of twenty or so stateless machines running the API service. Always eager to ensure that they are doing things the right way, the Klout engineering team recently held a hackathon where the team decided to “do things the easy way” to solve a complex problem. It actually turned out that using Futures was the easy way. The functional programming aspects of Play make it easy to get high performance out of the system. David Ross, Senior Software Engineer The Typesafe Platform has proven to be so successful at Klout that most projects built there now utilize it; Play is even used for non-web projects as it's so easy to get something going quickly. The Typesafe Platform is a modern software platform that makes it easy for developers to build scalable software applications. It combines Play Framework, Akka runtime, the Scala programming language, and robust developer tools in a simple package that integrates seamlessly with existing Java infrastructure. Commercial support and maintenance is available for the Typesafe Platform through the Typesafe Subscription.