SlideShare a Scribd company logo
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 benefit 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 configuration 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 file transformed to an HTML file via an XSLT is
                much the same as a Groovy source file transformed to a class file 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 file in a program in java I typically write
  some code and use the File object to read the file. I don't use "file://" 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

More Related Content

Similar to 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 developers
Garann Means
 
Railsconf 2010
Railsconf 2010Railsconf 2010
Railsconf 2010
John 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 all
Development Seed
 
PHP Architect Virtual Cloud summit
PHP Architect Virtual Cloud summitPHP Architect Virtual Cloud summit
PHP Architect Virtual Cloud summit
Kirsten Hunter
 
From 1 to 1000 Nodes
From 1 to 1000 NodesFrom 1 to 1000 Nodes
From 1 to 1000 Nodes
Ronny
 
real world web services
real world web servicesreal world web services
real world web services
dominion
 
Vagrant at LA Ruby
Vagrant at LA RubyVagrant at LA Ruby
Vagrant at LA Ruby
Mitchell Hashimoto
 
Opscode Lightning Talk - Operations as Code
Opscode Lightning Talk - Operations as CodeOpscode Lightning Talk - Operations as Code
Opscode Lightning Talk - Operations as Code
John Willis
 
Reef - ESUG 2010
Reef - ESUG 2010Reef - ESUG 2010
Reef - ESUG 2010
Esteban Lorenzano
 
Strata lightening-talk
Strata lightening-talkStrata lightening-talk
Strata lightening-talk
Danny Yuan
 
Ruby conf2010 OpenPaaS
Ruby conf2010 OpenPaaSRuby conf2010 OpenPaaS
Ruby conf2010 OpenPaaS
Derek Collison
 
IUT presentation - English
IUT presentation - EnglishIUT presentation - English
IUT presentation - English
Raymond Gao
 
Sneak Peek of Nuxeo 5.4
Sneak Peek of Nuxeo 5.4Sneak Peek of Nuxeo 5.4
Sneak Peek of Nuxeo 5.4
Nuxeo
 
The histories of microservices
The histories of microservicesThe histories of microservices
The histories of microservices
Steve 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 Meetup
Pierre Souchay
 
Introduction to Kubernetes
Introduction to KubernetesIntroduction to Kubernetes
Introduction to Kubernetes
Paris Apostolopoulos
 
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
Claire Rowland
 
epoll() - The I/O Hero
epoll() - The I/O Heroepoll() - The I/O Hero
epoll() - The I/O Hero
Mohsin Hijazee
 
Modern web application model
Modern web application modelModern web application model
Modern web application model
Michal Taberski
 
Local development using telepresence
Local development using telepresenceLocal development using telepresence
Local development using telepresence
Irvi Aini
 

Similar to 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
 

Recently uploaded

Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
ScyllaDB
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
DianaGray10
 
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Pitangent Analytics & Technology Solutions Pvt. Ltd
 
9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...
9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...
9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...
saastr
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
AstuteBusiness
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
operationspcvita
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
Jason Yip
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
saastr
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
Neo4j
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
Fwdays
 
Y-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PPY-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PP
c5vrf27qcz
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
Edge AI and Vision Alliance
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 

Recently uploaded (20)

Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
 
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
 
9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...
9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...
9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
Artificial Intelligence and Electronic Warfare
Artificial Intelligence and Electronic WarfareArtificial Intelligence and Electronic Warfare
Artificial Intelligence and Electronic Warfare
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
 
Y-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PPY-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PP
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 

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 benefit 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 configuration 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 file transformed to an HTML file via an XSLT is much the same as a Groovy source file transformed to a class file 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 file in a program in java I typically write some code and use the File object to read the file. I don't use "file://" 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