SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
JRuby at LinkedIn
                                   in three acts




Baq Haidri | @baqhaidri
Wednesday, August 3rd 2011

           Recruiting Solutions
            professional hacking
Me
• Generalist
• Background in Java, not Ruby




     professional hacking        2
100M+
LinkedIn                                                               90


• Over one user added per second
• Mostly Java
                                                                55
• Strong product focus
                                                         32


                                                  17

                                            8
                            2      4


                           2004   2005    2006   2007   2008   2009    2010
                                         LinkedIn Members (Millions)

    professional hacking
Act I: The Data




    professional hacking   4
source:	
  Mathieu	
  Bas/an	
  using	
  Gephi	
  on	
  LinkedIn	
  skill	
  data
            professional hacking                                                    5
professional hacking
source:	
  Mathieu	
  Bas/an	
  using	
  Gephi	
  on	
  LinkedIn	
  skill	
  data   6
Rails Prototype




    professional hacking   7
Act II: The Challenge




    professional hacking   8
oldemort




professional hacking              9
Service	
  Call


                                                      Security,	
  Auth,	
  Iden5ty
            Naviga5on	
  Bar




                                                      Interna5onaliza5on
                                                      Qui	
  a	
  consulté	
  votre	
  profil?
       Unified	
  URL	
  genera5on




professional hacking                                                                            10
Tomcat
                        LinkedIn	
  Spring	
  MVC
                              SiteMesh
Request                           JRuby-­‐Rack

                                       Sinatra
                                          get ‘/hello’ do
                                            erb :layout
                                          end


                                           <html>
                                             <head>
                                               <title>Hi</title>
                                             </head>
                                             <body>
                                                Hello from JRuby!
                                             </body>
                                           </html>
Response




 professional hacking                                               11
Hello from JRuby!




               professional hacking   12
Service Calls
 Pre-existing library for parallel, de-duplicating async
  data operations, loosely based on REST
 Clunky abstractions in Java, but wrapped by Ruby:




      professional hacking                                  13
Ruby’s simplicity
 Some Ruby wrappers were created to mimic Java
  APIs but Ruby made them more expressive:




     professional hacking                         14
Act III: To Production




    professional hacking   15
#winning!




     huh?




professional hacking           16
Deployment
 Ops knows nothing
  ‣ Configuration
  ‣ Deployment
  ‣ Monitoring
 Standard monitoring already available via JMX:
  ‣ Latency
  ‣ Requests/Second
  ‣ Memory and CPU usage


  source:	
  LinkedIn	
  internal	
  performance	
  graph



              professional hacking                          17
Gotchas
      Unpack wars on deployment
      Watch out for PermGen usage:



                                             Leak!        Restart

                                                                    Fixed




source:	
  LinkedIn	
  internal	
  performance	
  graph




                            professional hacking                       18
Flags
 JVM:
 ‣ -XX:PermSize=256m
 ‣ -XX:MaxPermSize=256m
 ‣ -XX:+CMSClassUnloadingEnabled
 JRuby:
 ‣ None, but still use 1.8.7
 ‣ JRuby 1.6.2




     professional hacking          19
Performance
 Internal latency is averaging 700ms

                                                            Time	
  spent	
  in	
  Ruby
                                                            <=	
  ~50	
  ms	
  




  source:	
  LinkedIn	
  internal	
  performance	
  graph



              professional hacking                                                        20
Conclusion




   professional hacking   21
Happily Ever After
 Adoption of JRuby is growing internally
 Open-minded, polyglot culture




      professional hacking                  22
JRubyConf Swag Contest
 Visit linkedin.com/skills/skill/JRuby
 Tweet-share the page
 Be sure to include link back to JRuby Skills page,
  with the #in tag and a #jrubyconf tag.
 First 40 users to tweet will win a prize
 Winners announced at lunch tomorrow




      professional hacking                             23
Questions?




    professional hacking   24

Mais conteúdo relacionado

Semelhante a JRuby At LinkedIn

State of Developer Tools (WDS09)
State of Developer Tools (WDS09)State of Developer Tools (WDS09)
State of Developer Tools (WDS09)bgalbs
 
RMI and CORBA Why both are valuable tools
RMI and CORBA Why both are valuable toolsRMI and CORBA Why both are valuable tools
RMI and CORBA Why both are valuable toolselliando dias
 
Dynamic Languages & Web Frameworks in GlassFish
Dynamic Languages & Web Frameworks in GlassFishDynamic Languages & Web Frameworks in GlassFish
Dynamic Languages & Web Frameworks in GlassFishIndicThreads
 
Ruby on rails探索
Ruby on rails探索Ruby on rails探索
Ruby on rails探索Mu Chun Wang
 
Neo4 + Grails
Neo4 + GrailsNeo4 + Grails
Neo4 + Grailsstasimus
 
Monkeybars in the Manor
Monkeybars in the ManorMonkeybars in the Manor
Monkeybars in the Manormartinbtt
 
JRuby - Programmer's Best Friend on JVM
JRuby - Programmer's Best Friend on JVMJRuby - Programmer's Best Friend on JVM
JRuby - Programmer's Best Friend on JVMRaimonds Simanovskis
 
Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009Arun Gupta
 
GR8Conf 2011: Adopting Grails
GR8Conf 2011: Adopting GrailsGR8Conf 2011: Adopting Grails
GR8Conf 2011: Adopting GrailsGR8Conf
 
Adopting Grails - GR8Conf Europe
Adopting Grails - GR8Conf EuropeAdopting Grails - GR8Conf Europe
Adopting Grails - GR8Conf EuropeKlausBaumecker
 
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::SynchronyFast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::SynchronyKyle Drake
 
What is new and cool j2se & java
What is new and cool j2se & javaWhat is new and cool j2se & java
What is new and cool j2se & javaEugene Bogaart
 
Log everything!
Log everything!Log everything!
Log everything!ICANS GmbH
 
Building robust REST APIs
Building robust REST APIsBuilding robust REST APIs
Building robust REST APIsNejc Zupan
 
Abusing bleeding edge web standards for appsec glory
Abusing bleeding edge web standards for appsec gloryAbusing bleeding edge web standards for appsec glory
Abusing bleeding edge web standards for appsec gloryPriyanka Aash
 
Groovy & Grails for Spring/Java developers
Groovy & Grails for Spring/Java developersGroovy & Grails for Spring/Java developers
Groovy & Grails for Spring/Java developersPeter Ledbrook
 

Semelhante a JRuby At LinkedIn (20)

State of Developer Tools (WDS09)
State of Developer Tools (WDS09)State of Developer Tools (WDS09)
State of Developer Tools (WDS09)
 
RMI and CORBA Why both are valuable tools
RMI and CORBA Why both are valuable toolsRMI and CORBA Why both are valuable tools
RMI and CORBA Why both are valuable tools
 
Dynamic Languages & Web Frameworks in GlassFish
Dynamic Languages & Web Frameworks in GlassFishDynamic Languages & Web Frameworks in GlassFish
Dynamic Languages & Web Frameworks in GlassFish
 
Ruby on rails探索
Ruby on rails探索Ruby on rails探索
Ruby on rails探索
 
Neo4 + Grails
Neo4 + GrailsNeo4 + Grails
Neo4 + Grails
 
Monkeybars in the Manor
Monkeybars in the ManorMonkeybars in the Manor
Monkeybars in the Manor
 
JRuby - Programmer's Best Friend on JVM
JRuby - Programmer's Best Friend on JVMJRuby - Programmer's Best Friend on JVM
JRuby - Programmer's Best Friend on JVM
 
Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009
 
Neo4J and Grails
Neo4J and GrailsNeo4J and Grails
Neo4J and Grails
 
Real World Technologies
Real World TechnologiesReal World Technologies
Real World Technologies
 
Euruko 2012 - JRuby
Euruko 2012 - JRubyEuruko 2012 - JRuby
Euruko 2012 - JRuby
 
GR8Conf 2011: Adopting Grails
GR8Conf 2011: Adopting GrailsGR8Conf 2011: Adopting Grails
GR8Conf 2011: Adopting Grails
 
Adopting Grails - GR8Conf Europe
Adopting Grails - GR8Conf EuropeAdopting Grails - GR8Conf Europe
Adopting Grails - GR8Conf Europe
 
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::SynchronyFast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony
 
What is new and cool j2se & java
What is new and cool j2se & javaWhat is new and cool j2se & java
What is new and cool j2se & java
 
Log everything!
Log everything!Log everything!
Log everything!
 
Building robust REST APIs
Building robust REST APIsBuilding robust REST APIs
Building robust REST APIs
 
Abusing bleeding edge web standards for appsec glory
Abusing bleeding edge web standards for appsec gloryAbusing bleeding edge web standards for appsec glory
Abusing bleeding edge web standards for appsec glory
 
Guides To Analyzing WebKit Performance
Guides To Analyzing WebKit PerformanceGuides To Analyzing WebKit Performance
Guides To Analyzing WebKit Performance
 
Groovy & Grails for Spring/Java developers
Groovy & Grails for Spring/Java developersGroovy & Grails for Spring/Java developers
Groovy & Grails for Spring/Java developers
 

Último

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
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
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
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
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
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
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
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
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
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 

Último (20)

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
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
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?
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
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
 
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
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
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)
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
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
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 

JRuby At LinkedIn

  • 1. JRuby at LinkedIn in three acts Baq Haidri | @baqhaidri Wednesday, August 3rd 2011 Recruiting Solutions professional hacking
  • 2. Me • Generalist • Background in Java, not Ruby professional hacking 2
  • 3. 100M+ LinkedIn 90 • Over one user added per second • Mostly Java 55 • Strong product focus 32 17 8 2 4 2004 2005 2006 2007 2008 2009 2010 LinkedIn Members (Millions) professional hacking
  • 4. Act I: The Data professional hacking 4
  • 5. source:  Mathieu  Bas/an  using  Gephi  on  LinkedIn  skill  data professional hacking 5
  • 6. professional hacking source:  Mathieu  Bas/an  using  Gephi  on  LinkedIn  skill  data 6
  • 7. Rails Prototype professional hacking 7
  • 8. Act II: The Challenge professional hacking 8
  • 10. Service  Call Security,  Auth,  Iden5ty Naviga5on  Bar Interna5onaliza5on Qui  a  consulté  votre  profil? Unified  URL  genera5on professional hacking 10
  • 11. Tomcat LinkedIn  Spring  MVC SiteMesh Request JRuby-­‐Rack Sinatra get ‘/hello’ do erb :layout end <html> <head> <title>Hi</title> </head> <body> Hello from JRuby! </body> </html> Response professional hacking 11
  • 12. Hello from JRuby! professional hacking 12
  • 13. Service Calls  Pre-existing library for parallel, de-duplicating async data operations, loosely based on REST  Clunky abstractions in Java, but wrapped by Ruby: professional hacking 13
  • 14. Ruby’s simplicity  Some Ruby wrappers were created to mimic Java APIs but Ruby made them more expressive: professional hacking 14
  • 15. Act III: To Production professional hacking 15
  • 16. #winning! huh? professional hacking 16
  • 17. Deployment  Ops knows nothing ‣ Configuration ‣ Deployment ‣ Monitoring  Standard monitoring already available via JMX: ‣ Latency ‣ Requests/Second ‣ Memory and CPU usage source:  LinkedIn  internal  performance  graph professional hacking 17
  • 18. Gotchas  Unpack wars on deployment  Watch out for PermGen usage: Leak! Restart Fixed source:  LinkedIn  internal  performance  graph professional hacking 18
  • 19. Flags  JVM: ‣ -XX:PermSize=256m ‣ -XX:MaxPermSize=256m ‣ -XX:+CMSClassUnloadingEnabled  JRuby: ‣ None, but still use 1.8.7 ‣ JRuby 1.6.2 professional hacking 19
  • 20. Performance  Internal latency is averaging 700ms Time  spent  in  Ruby <=  ~50  ms   source:  LinkedIn  internal  performance  graph professional hacking 20
  • 21. Conclusion professional hacking 21
  • 22. Happily Ever After  Adoption of JRuby is growing internally  Open-minded, polyglot culture professional hacking 22
  • 23. JRubyConf Swag Contest  Visit linkedin.com/skills/skill/JRuby  Tweet-share the page  Be sure to include link back to JRuby Skills page, with the #in tag and a #jrubyconf tag.  First 40 users to tweet will win a prize  Winners announced at lunch tomorrow professional hacking 23
  • 24. Questions? professional hacking 24