SlideShare ist ein Scribd-Unternehmen logo
1 von 34
Downloaden Sie, um offline zu lesen
What Is This
                             NetKernel Thing
                                Anyway?

                                                    Darren Cruse
                                                   August 5, 2010
                               (for the Lambda Lounge of St. Louis)
Wednesday, August 11, 2010
Preface
              (one slide answers all)



Wednesday, August 11, 2010
What’s This NetKernel Thing?
        ‱ A “REST Based Microkernel”
        ‱ Written in Java
        ‱ Originally developed at HP Labs over 10 years ago
        ‱ Started life as an XML framework ala Cocoon
        ‱ Generalized over 4 versions into a general purpose
          “Resource Oriented Computing” framework (though
          it maintains esp. strong XML support).
        ‱ The main guys split off from HP and formed their
          own company called 1060 Research Limited
        ‱ It’s sold under a dual source license - i.e. free for open
          source projects, paid for commercial projects.
Wednesday, August 11, 2010
(that was the short answer -
                                 now the longer one)




Wednesday, August 11, 2010
Chapter 1:
                             Lots of Computers
                                  (macro)


Wednesday, August 11, 2010
In the Beginning There
                      Was One Computer

         ‱ Plus a 300 baud modem
         ‱ I had hair
         ‱ Things were simple then
           (BASIC built in the ROM!)




Wednesday, August 11, 2010
State Of The Art


      ‱ 0.89 MHz Processor
      ‱ 4K RAM
      ‱ 192 x 128 Screen
        Resolution
      ‱ Audio Cassette Storage




Wednesday, August 11, 2010
And That Computer
                  Begat Other Computers




Wednesday, August 11, 2010
And They Begat Some
                                   More...




Wednesday, August 11, 2010
And so on...




Wednesday, August 11, 2010
And so on...




Wednesday, August 11, 2010
And The World Became Awash
          (in computers)




Wednesday, August 11, 2010
They Climbed Into Our
                            Pockets




Wednesday, August 11, 2010
And A Lot Had Changed.
                  (Since The Time That I Had Hair)




Wednesday, August 11, 2010
But Not So Much About
                    The Way We Program




Wednesday, August 11, 2010
Chapter 2:
                             Lots of Computers
                                  (micro)


Wednesday, August 11, 2010
http://www.drdobbs.com/architecture-and-design/184405990




Wednesday, August 11, 2010
                                                                                        Dude -What Happened To 4 GHz?
Moore No More?
          (nope - but it’s a different world)




Wednesday, August 11, 2010
“The Multi-Core Problem”
   What This Means For Software: The Next Revolution
   The revolution in mainstream software development from structured programming
   to object-oriented programming was the greatest such change in the past 20 years,
   and arguably in the past 30 years. There have been other changes, including the
   most recent (and genuinely interesting) naissance of web services, but nothing that
   most of us have seen during our careers has been as fundamental and as far-reaching
   a change in the way we write software as the object revolution.

   Until now.

   Starting today, the performance lunch isn’t free any more. [...] But if you want your
   application to beneïŹt from the continued exponential throughput advances in new
   processors, it will need to be a well-written concurrent (usually multithreaded)
   application. And that’s easier said than done, because not all problems are inherently
   parallelizable and because concurrent programming is hard.


                             Edited from: “The Free Lunch is Over”, Herb Sutter
                             (http://www.drdobbs.com/architecture-and-design/184405990)

Wednesday, August 11, 2010
Postscript to Chapters 1 & 2
    (in case it’s not obvious)


     What’s the connection between “lots of computers on
     the network” (chapter 1) and “lots of cores on a cpu
     die” (chapter 2)?



     The answer:             Stuff running in Parallel



Wednesday, August 11, 2010
Chapter 3a:
                              The Web



Wednesday, August 11, 2010
Chapter 3a:
                                   The Web
                             (of Lies and Deceit)


Wednesday, August 11, 2010
“Oh yeah the guys are using this new thing Service Oriented
          Architecture.

          They put their software on a whole bunch of servers. That
          means it’s guaranteed to scale and have good performance
          and be like super super reliable.

          It’s really simple it uses this new thing called SOAP. That
          stands for simple something or other. All they have to do is
          connect up these “service” things how hard could that be.

          And they said something called REST I don’t what that is but
          it sounds easy too I guess it’s so easy the developers get to
          rest.

          It’s going to save us lots of time and money it really sounds
          great.”
                                                    Actual made up conversation
                                            between Product Managers, Circa 2003
Wednesday, August 11, 2010
Chapter 3b:
                               The Web
                         (for real this time)


Wednesday, August 11, 2010
The Web is a Very Successful
   “Distributed System”
                                                                    (with some very nice qualities)

               ✓ Flexibility
                    ★        It's fairly easy to rearrange things at the server/network level, e.g.
                             move a document (or dynamic “service”) from one node to another.

               ✓ Heterogenous Technologies
                    ★        Different servers can easily use different technologies (e.g. different
                             languages).

               ✓ Scalability
                    ★        In general, services scale easily, if they're stateless and placed behind
                             multiple machine clusters with load balancers.

               ✓ Availability / Ease of Deployment
                    ★        As long as you have at least two servers running the service, you can
                             hot deploy services leaving the old service running for a time while
                             you're starting the new service ("rolling restart").
Wednesday, August 11, 2010
RESTful HTTP Based Services
    (bring the web’s benefits between servers)
                                             b
                                             a
                                             l   Service 1
                                             a
                             l
                                  App        n
                             o
                                             c
                             a   Server
                                             e   Service 1
                             d
                                             r
         Browser
                             b
                             a
                             l               b
                             a               a
                             n               l   Service 1
                             c               a
                                  App
                             e               n
                                 Server      c
                             r
                                             e   Service 2
                                             r
Wednesday, August 11, 2010
NetKernel Modules and “Micro-Services”
    (bring the web’s benefits inside servers, as well as between)
                                               b
                                               a
                                               l
                                               a
                             l
                                               n
                             o
                                               c
                             a
                                               e
                             d
                                               r
         Browser
                             b
                             a
                             l                 b
                             a                 a
                             n                 l
                             c                 a
                             e                 n
                             r                 c
                                               e
                                               r
Wednesday, August 11, 2010
So what are these granular services doing
   “inside” my program?
                                                        (revisiting those nice web qualities)




      ✓ More Flexibility
           ★       Now there’s more opportunities to easily change things (e.g. change your
                   persistance strategy for some resource), often with just a conïŹguration change.
           ★       And more opportunities to rearrange things on the network, e.g. moving a
                   module to a different server and talking to it with some remote protocol instead
                   of NetKernel’s in memory protocol.
           ★       Partly this is possible because of NetKernel’s caching which replicates local
                   representations of remote resources just like a browser would (the reason it’s
                   called “REpresentational State Transfer”! :).




Wednesday, August 11, 2010
So what are these granular services doing
   “inside” my program?
                                                        (revisiting those nice web qualities)

   ✓ More Heterogenous Technologies
         ★      Easily use and intermix many of the popular JVM languages within a single
                application. Java, Javascript, Groovy, JRuby, Scala, Clojure (experimental), Beanshell,
                XSLT, XQuery, etc.
         ★      Add support for other languages if you’d like. Each language is supported by a
                module called a “language runtime” and you can write your own as an “adapter” for
                an existing tool. e.g. I added support for the Jakarta Velocity templating language
                and it wasn’t hard.
         ★      Language runtimes follow the same REST principles which the rest of the system
                does. e.g. In NetKernel, an XML ïŹle transformed to an HTML ïŹle via an XSLT is
                much the same as a Groovy source ïŹle transformed to a class ïŹle by the Groovy
                compiler runtime. Your groovy code will automatically be recompiled when you
                modify it just as your html will be updated when you modify the xml. This applies
                to any and all of NetKernel’s supported scripting languages.
         ★      As a consequence, under the new NetKernel Protocol you can even execute code on
                a remote NetKernel server that physically resides on your local server. This is not a
                feature “added on” to NetKernel so much as a natural consequence of it’s design.
Wednesday, August 11, 2010
So what are these granular services doing
   “inside” my program?
                                                          (revisiting those nice web qualities)

         ✓ More Scalability
              ★       NetKernel’s internal multi-threaded scheduler is to internal requests, as a
                      load balancer is to a web or application server.
              ★       Resource “representations” are immutable.
              ★       Accessor methods should be coded to be thread safe i.e. stateless.
              ★       More cpu cores mean more throughput / more simultaneous requests
                      processed.
              ★       For faster response times, developers incorporate asynchronous requests to
                      run sub-requests in parallel.
              ★       Third party libraries that are not thread safe can be wrapped in a module
                      marked as such - in which case NetKernel will single thread them.
              ★       Representations that are not immutable can be locked explicitly - but this is
                      not typical usage of NetKernel (it’s more of an escape hatch for bad code :).


Wednesday, August 11, 2010
So what are these granular services doing
   “inside” my program?
                                                         (revisiting those nice web qualities)




       ✓ More Availability / Easier Deployment
             ★      Modules can be hot deployed via the “Apposite” tool while a system is live and
                    running.
             ★      If problems are encountered the deployed module can be rolled back leaving
                    just the original module.
             ★      Modules are versioned and clients to services can indicate the version(s) they
                    desire.
             ★      This allows that multiple versions of the same module can be deployed
                    simultaneously. e.g. A “stable version” and a “release candidate” version.




Wednesday, August 11, 2010
The network really is the computer...
                               (and URIs are a sort of “machine independent” memory address)




                                       “CLOUD         OF RESOURCES”
                                                         N
                                                         E
                                                         T
                                                         W
                                                         O
                                                         R
                                                         K

                             NETKERNEL CACHE (IN-              NETKERNEL CACHE (IN-
                                  MEMORY)                           MEMORY)
                                       B                                  B
                                       U                                  U
                                       S                                  S

                              CORE 1       CORE “N”              CORE 1       CORE “N”




Wednesday, August 11, 2010
You sound like a used car salesman.
                              (is this some kind of infomercial?)
  “Just a note that I was skeptical of NetKernel until I tried it and got used to it a little
  bit.

  It helped me see some things I hadn’t realized before which is how many lost
  opportunities I’d created in my “service oriented” system design because of how
  different I was doing things inside my code from the way things are done between the
  services.

  To give a simple example, if I need to read a ïŹle in a program in java I typically write
  some code and use the File object to read the ïŹle. I don't use "ïŹle://" like we do from
  our browser. As a result, if I want to change where that information comes from, say
  read it from a blob in Oracle, or read it from an XML database, or maybe a better
  example: read it from another machine RESTFully using HTTP - each of those feel
  like a fairly serious change, but not when everything has a URI like in NetKernel.”


                                                                               Darren Cruse,
                                                              NetKernel Advocate (seriously)
                                and inventor of the “Ultra-Toe” Toe Nail Brightening System,
                                     the only toe nail brightening system with Toe-nail-isol!!
Wednesday, August 11, 2010
Thanks for listening.
                       Reach me at:
                                  darren.cruse@gmail.com


                       Watch me blab at:
                             http://bangthekeyboard.wordpress.com



Wednesday, August 11, 2010

Weitere Àhnliche Inhalte

Ähnlich wie What's this NetKernel Thing Anyway?

node.js for front-end developers
node.js for front-end developersnode.js for front-end developers
node.js for front-end developersGarann Means
 
Railsconf 2010
Railsconf 2010Railsconf 2010
Railsconf 2010John Woodell
 
Aegir one drupal to rule them all
Aegir one drupal to rule them allAegir one drupal to rule them all
Aegir one drupal to rule them allDevelopment Seed
 
PHP Architect Virtual Cloud summit
PHP Architect Virtual Cloud summitPHP Architect Virtual Cloud summit
PHP Architect Virtual Cloud summitKirsten Hunter
 
From 1 to 1000 Nodes
From 1 to 1000 NodesFrom 1 to 1000 Nodes
From 1 to 1000 NodesRonny
 
real world web services
real world web servicesreal world web services
real world web servicesdominion
 
Opscode Lightning Talk - Operations as Code
Opscode Lightning Talk - Operations as CodeOpscode Lightning Talk - Operations as Code
Opscode Lightning Talk - Operations as CodeJohn Willis
 
Strata lightening-talk
Strata lightening-talkStrata lightening-talk
Strata lightening-talkDanny Yuan
 
Ruby conf2010 OpenPaaS
Ruby conf2010 OpenPaaSRuby conf2010 OpenPaaS
Ruby conf2010 OpenPaaSDerek Collison
 
IUT presentation - English
IUT presentation - EnglishIUT presentation - English
IUT presentation - EnglishRaymond Gao
 
Sneak Peek of Nuxeo 5.4
Sneak Peek of Nuxeo 5.4Sneak Peek of Nuxeo 5.4
Sneak Peek of Nuxeo 5.4Nuxeo
 
The histories of microservices
The histories of microservicesThe histories of microservices
The histories of microservicesSteve Upton
 
2019 05-28 SRE Consul Criteo Meetup
2019 05-28 SRE Consul Criteo Meetup2019 05-28 SRE Consul Criteo Meetup
2019 05-28 SRE Consul Criteo MeetupPierre Souchay
 
Service design for the cloud of diverse devices
Service design for the cloud of diverse devicesService design for the cloud of diverse devices
Service design for the cloud of diverse devicesClaire Rowland
 
epoll() - The I/O Hero
epoll() - The I/O Heroepoll() - The I/O Hero
epoll() - The I/O HeroMohsin Hijazee
 
Modern web application model
Modern web application modelModern web application model
Modern web application modelMichal Taberski
 
Local development using telepresence
Local development using telepresenceLocal development using telepresence
Local development using telepresenceIrvi Aini
 

Ähnlich wie What's this NetKernel Thing Anyway? (20)

node.js for front-end developers
node.js for front-end developersnode.js for front-end developers
node.js for front-end developers
 
Railsconf 2010
Railsconf 2010Railsconf 2010
Railsconf 2010
 
Aegir one drupal to rule them all
Aegir one drupal to rule them allAegir one drupal to rule them all
Aegir one drupal to rule them all
 
PHP Architect Virtual Cloud summit
PHP Architect Virtual Cloud summitPHP Architect Virtual Cloud summit
PHP Architect Virtual Cloud summit
 
From 1 to 1000 Nodes
From 1 to 1000 NodesFrom 1 to 1000 Nodes
From 1 to 1000 Nodes
 
real world web services
real world web servicesreal world web services
real world web services
 
Vagrant at LA Ruby
Vagrant at LA RubyVagrant at LA Ruby
Vagrant at LA Ruby
 
Opscode Lightning Talk - Operations as Code
Opscode Lightning Talk - Operations as CodeOpscode Lightning Talk - Operations as Code
Opscode Lightning Talk - Operations as Code
 
Reef - ESUG 2010
Reef - ESUG 2010Reef - ESUG 2010
Reef - ESUG 2010
 
Strata lightening-talk
Strata lightening-talkStrata lightening-talk
Strata lightening-talk
 
Ruby conf2010 OpenPaaS
Ruby conf2010 OpenPaaSRuby conf2010 OpenPaaS
Ruby conf2010 OpenPaaS
 
IUT presentation - English
IUT presentation - EnglishIUT presentation - English
IUT presentation - English
 
Sneak Peek of Nuxeo 5.4
Sneak Peek of Nuxeo 5.4Sneak Peek of Nuxeo 5.4
Sneak Peek of Nuxeo 5.4
 
The histories of microservices
The histories of microservicesThe histories of microservices
The histories of microservices
 
2019 05-28 SRE Consul Criteo Meetup
2019 05-28 SRE Consul Criteo Meetup2019 05-28 SRE Consul Criteo Meetup
2019 05-28 SRE Consul Criteo Meetup
 
Introduction to Kubernetes
Introduction to KubernetesIntroduction to Kubernetes
Introduction to Kubernetes
 
Service design for the cloud of diverse devices
Service design for the cloud of diverse devicesService design for the cloud of diverse devices
Service design for the cloud of diverse devices
 
epoll() - The I/O Hero
epoll() - The I/O Heroepoll() - The I/O Hero
epoll() - The I/O Hero
 
Modern web application model
Modern web application modelModern web application model
Modern web application model
 
Local development using telepresence
Local development using telepresenceLocal development using telepresence
Local development using telepresence
 

KĂŒrzlich hochgeladen

Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 

KĂŒrzlich hochgeladen (20)

Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 

What's this NetKernel Thing Anyway?

  • 1. What Is This NetKernel Thing Anyway? Darren Cruse August 5, 2010 (for the Lambda Lounge of St. Louis) Wednesday, August 11, 2010
  • 2. Preface (one slide answers all) Wednesday, August 11, 2010
  • 3. What’s This NetKernel Thing? ‱ A “REST Based Microkernel” ‱ Written in Java ‱ Originally developed at HP Labs over 10 years ago ‱ Started life as an XML framework ala Cocoon ‱ Generalized over 4 versions into a general purpose “Resource Oriented Computing” framework (though it maintains esp. strong XML support). ‱ The main guys split off from HP and formed their own company called 1060 Research Limited ‱ It’s sold under a dual source license - i.e. free for open source projects, paid for commercial projects. Wednesday, August 11, 2010
  • 4. (that was the short answer - now the longer one) Wednesday, August 11, 2010
  • 5. Chapter 1: Lots of Computers (macro) Wednesday, August 11, 2010
  • 6. In the Beginning There Was One Computer ‱ Plus a 300 baud modem ‱ I had hair ‱ Things were simple then (BASIC built in the ROM!) Wednesday, August 11, 2010
  • 7. State Of The Art ‱ 0.89 MHz Processor ‱ 4K RAM ‱ 192 x 128 Screen Resolution ‱ Audio Cassette Storage Wednesday, August 11, 2010
  • 8. And That Computer Begat Other Computers Wednesday, August 11, 2010
  • 9. And They Begat Some More... Wednesday, August 11, 2010
  • 10. And so on... Wednesday, August 11, 2010
  • 11. And so on... Wednesday, August 11, 2010
  • 12. And The World Became Awash (in computers) Wednesday, August 11, 2010
  • 13. They Climbed Into Our Pockets Wednesday, August 11, 2010
  • 14. And A Lot Had Changed. (Since The Time That I Had Hair) Wednesday, August 11, 2010
  • 15. But Not So Much About The Way We Program Wednesday, August 11, 2010
  • 16. Chapter 2: Lots of Computers (micro) Wednesday, August 11, 2010
  • 18. Moore No More? (nope - but it’s a different world) Wednesday, August 11, 2010
  • 19. “The Multi-Core Problem” What This Means For Software: The Next Revolution The revolution in mainstream software development from structured programming to object-oriented programming was the greatest such change in the past 20 years, and arguably in the past 30 years. There have been other changes, including the most recent (and genuinely interesting) naissance of web services, but nothing that most of us have seen during our careers has been as fundamental and as far-reaching a change in the way we write software as the object revolution. Until now. Starting today, the performance lunch isn’t free any more. [...] But if you want your application to beneïŹt from the continued exponential throughput advances in new processors, it will need to be a well-written concurrent (usually multithreaded) application. And that’s easier said than done, because not all problems are inherently parallelizable and because concurrent programming is hard. Edited from: “The Free Lunch is Over”, Herb Sutter (http://www.drdobbs.com/architecture-and-design/184405990) Wednesday, August 11, 2010
  • 20. Postscript to Chapters 1 & 2 (in case it’s not obvious) What’s the connection between “lots of computers on the network” (chapter 1) and “lots of cores on a cpu die” (chapter 2)? The answer: Stuff running in Parallel Wednesday, August 11, 2010
  • 21. Chapter 3a: The Web Wednesday, August 11, 2010
  • 22. Chapter 3a: The Web (of Lies and Deceit) Wednesday, August 11, 2010
  • 23. “Oh yeah the guys are using this new thing Service Oriented Architecture. They put their software on a whole bunch of servers. That means it’s guaranteed to scale and have good performance and be like super super reliable. It’s really simple it uses this new thing called SOAP. That stands for simple something or other. All they have to do is connect up these “service” things how hard could that be. And they said something called REST I don’t what that is but it sounds easy too I guess it’s so easy the developers get to rest. It’s going to save us lots of time and money it really sounds great.” Actual made up conversation between Product Managers, Circa 2003 Wednesday, August 11, 2010
  • 24. Chapter 3b: The Web (for real this time) Wednesday, August 11, 2010
  • 25. The Web is a Very Successful “Distributed System” (with some very nice qualities) ✓ Flexibility ★ It's fairly easy to rearrange things at the server/network level, e.g. move a document (or dynamic “service”) from one node to another. ✓ Heterogenous Technologies ★ Different servers can easily use different technologies (e.g. different languages). ✓ Scalability ★ In general, services scale easily, if they're stateless and placed behind multiple machine clusters with load balancers. ✓ Availability / Ease of Deployment ★ As long as you have at least two servers running the service, you can hot deploy services leaving the old service running for a time while you're starting the new service ("rolling restart"). Wednesday, August 11, 2010
  • 26. RESTful HTTP Based Services (bring the web’s benefits between servers) b a l Service 1 a l App n o c a Server e Service 1 d r Browser b a l b a a n l Service 1 c a App e n Server c r e Service 2 r Wednesday, August 11, 2010
  • 27. NetKernel Modules and “Micro-Services” (bring the web’s benefits inside servers, as well as between) b a l a l n o c a e d r Browser b a l b a a n l c a e n r c e r Wednesday, August 11, 2010
  • 28. So what are these granular services doing “inside” my program? (revisiting those nice web qualities) ✓ More Flexibility ★ Now there’s more opportunities to easily change things (e.g. change your persistance strategy for some resource), often with just a conïŹguration change. ★ And more opportunities to rearrange things on the network, e.g. moving a module to a different server and talking to it with some remote protocol instead of NetKernel’s in memory protocol. ★ Partly this is possible because of NetKernel’s caching which replicates local representations of remote resources just like a browser would (the reason it’s called “REpresentational State Transfer”! :). Wednesday, August 11, 2010
  • 29. So what are these granular services doing “inside” my program? (revisiting those nice web qualities) ✓ More Heterogenous Technologies ★ Easily use and intermix many of the popular JVM languages within a single application. Java, Javascript, Groovy, JRuby, Scala, Clojure (experimental), Beanshell, XSLT, XQuery, etc. ★ Add support for other languages if you’d like. Each language is supported by a module called a “language runtime” and you can write your own as an “adapter” for an existing tool. e.g. I added support for the Jakarta Velocity templating language and it wasn’t hard. ★ Language runtimes follow the same REST principles which the rest of the system does. e.g. In NetKernel, an XML ïŹle transformed to an HTML ïŹle via an XSLT is much the same as a Groovy source ïŹle transformed to a class ïŹle by the Groovy compiler runtime. Your groovy code will automatically be recompiled when you modify it just as your html will be updated when you modify the xml. This applies to any and all of NetKernel’s supported scripting languages. ★ As a consequence, under the new NetKernel Protocol you can even execute code on a remote NetKernel server that physically resides on your local server. This is not a feature “added on” to NetKernel so much as a natural consequence of it’s design. Wednesday, August 11, 2010
  • 30. So what are these granular services doing “inside” my program? (revisiting those nice web qualities) ✓ More Scalability ★ NetKernel’s internal multi-threaded scheduler is to internal requests, as a load balancer is to a web or application server. ★ Resource “representations” are immutable. ★ Accessor methods should be coded to be thread safe i.e. stateless. ★ More cpu cores mean more throughput / more simultaneous requests processed. ★ For faster response times, developers incorporate asynchronous requests to run sub-requests in parallel. ★ Third party libraries that are not thread safe can be wrapped in a module marked as such - in which case NetKernel will single thread them. ★ Representations that are not immutable can be locked explicitly - but this is not typical usage of NetKernel (it’s more of an escape hatch for bad code :). Wednesday, August 11, 2010
  • 31. So what are these granular services doing “inside” my program? (revisiting those nice web qualities) ✓ More Availability / Easier Deployment ★ Modules can be hot deployed via the “Apposite” tool while a system is live and running. ★ If problems are encountered the deployed module can be rolled back leaving just the original module. ★ Modules are versioned and clients to services can indicate the version(s) they desire. ★ This allows that multiple versions of the same module can be deployed simultaneously. e.g. A “stable version” and a “release candidate” version. Wednesday, August 11, 2010
  • 32. The network really is the computer... (and URIs are a sort of “machine independent” memory address) “CLOUD OF RESOURCES” N E T W O R K NETKERNEL CACHE (IN- NETKERNEL CACHE (IN- MEMORY) MEMORY) B B U U S S CORE 1 CORE “N” CORE 1 CORE “N” Wednesday, August 11, 2010
  • 33. You sound like a used car salesman. (is this some kind of infomercial?) “Just a note that I was skeptical of NetKernel until I tried it and got used to it a little bit. It helped me see some things I hadn’t realized before which is how many lost opportunities I’d created in my “service oriented” system design because of how different I was doing things inside my code from the way things are done between the services. To give a simple example, if I need to read a ïŹle in a program in java I typically write some code and use the File object to read the ïŹle. I don't use "ïŹle://" like we do from our browser. As a result, if I want to change where that information comes from, say read it from a blob in Oracle, or read it from an XML database, or maybe a better example: read it from another machine RESTFully using HTTP - each of those feel like a fairly serious change, but not when everything has a URI like in NetKernel.” Darren Cruse, NetKernel Advocate (seriously) and inventor of the “Ultra-Toe” Toe Nail Brightening System, the only toe nail brightening system with Toe-nail-isol!! Wednesday, August 11, 2010
  • 34. Thanks for listening. Reach me at: darren.cruse@gmail.com Watch me blab at: http://bangthekeyboard.wordpress.com Wednesday, August 11, 2010