際際滷

際際滷Share 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
Whats 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
         Its 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 its 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 isnt 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 thats 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 its not obvious)


     Whats 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 its guaranteed to scale and have good performance
          and be like super super reliable.

          Its 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 dont what that is but
          it sounds easy too I guess its so easy the developers get to
          rest.

          Its 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 webs 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 webs 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 theres 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 NetKernels in memory protocol.
                  Partly this is possible because of NetKernels caching which replicates local
                   representations of remote resources just like a browser would (the reason its
                   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 youd 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 wasnt 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 NetKernels 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 its design.
Wednesday, August 11, 2010
So what are these granular services doing
   inside my program?
                                                          (revisiting those nice web qualities)

          More Scalability
                     NetKernels 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 (its 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 hadnt realized before which is how many lost
  opportunities Id 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

More Related Content

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

Recently uploaded (20)

30B Images and Counting: Scaling Canva's Content-Understanding Pipelines by K...
30B Images and Counting: Scaling Canva's Content-Understanding Pipelines by K...30B Images and Counting: Scaling Canva's Content-Understanding Pipelines by K...
30B Images and Counting: Scaling Canva's Content-Understanding Pipelines by K...
ScyllaDB
Endpoint Backup: 3 Reasons MSPs Ignore It
Endpoint Backup: 3 Reasons MSPs Ignore ItEndpoint Backup: 3 Reasons MSPs Ignore It
Endpoint Backup: 3 Reasons MSPs Ignore It
MSP360
Replacing RocksDB with ScyllaDB in Kafka Streams by Almog Gavra
Replacing RocksDB with ScyllaDB in Kafka Streams by Almog GavraReplacing RocksDB with ScyllaDB in Kafka Streams by Almog Gavra
Replacing RocksDB with ScyllaDB in Kafka Streams by Almog Gavra
ScyllaDB
A Framework for Model-Driven Digital Twin Engineering
A Framework for Model-Driven Digital Twin EngineeringA Framework for Model-Driven Digital Twin Engineering
A Framework for Model-Driven Digital Twin Engineering
Daniel Lehner
Revolutionizing-Government-Communication-The-OSWAN-Success-Story
Revolutionizing-Government-Communication-The-OSWAN-Success-StoryRevolutionizing-Government-Communication-The-OSWAN-Success-Story
Revolutionizing-Government-Communication-The-OSWAN-Success-Story
ssuser52ad5e
UiPath Document Understanding - Generative AI and Active learning capabilities
UiPath Document Understanding - Generative AI and Active learning capabilitiesUiPath Document Understanding - Generative AI and Active learning capabilities
UiPath Document Understanding - Generative AI and Active learning capabilities
DianaGray10
BoxLang JVM Language : The Future is Dynamic
BoxLang JVM Language : The Future is DynamicBoxLang JVM Language : The Future is Dynamic
BoxLang JVM Language : The Future is Dynamic
Ortus Solutions, Corp
Q4_TLE-7-Lesson-6-Week-6.pptx 4th quarter
Q4_TLE-7-Lesson-6-Week-6.pptx 4th quarterQ4_TLE-7-Lesson-6-Week-6.pptx 4th quarter
Q4_TLE-7-Lesson-6-Week-6.pptx 4th quarter
MariaBarbaraPaglinaw
UiPath Automation Developer Associate Training Series 2025 - Session 2
UiPath Automation Developer Associate Training Series 2025 - Session 2UiPath Automation Developer Associate Training Series 2025 - Session 2
UiPath Automation Developer Associate Training Series 2025 - Session 2
DianaGray10
Early Adopter's Guide to AI Moderation (Preview)
Early Adopter's Guide to AI Moderation (Preview)Early Adopter's Guide to AI Moderation (Preview)
Early Adopter's Guide to AI Moderation (Preview)
nick896721
[Webinar] Scaling Made Simple: Getting Started with No-Code Web Apps
[Webinar] Scaling Made Simple: Getting Started with No-Code Web Apps[Webinar] Scaling Made Simple: Getting Started with No-Code Web Apps
[Webinar] Scaling Made Simple: Getting Started with No-Code Web Apps
Safe Software
How Discord Indexes Trillions of Messages: Scaling Search Infrastructure by V...
How Discord Indexes Trillions of Messages: Scaling Search Infrastructure by V...How Discord Indexes Trillions of Messages: Scaling Search Infrastructure by V...
How Discord Indexes Trillions of Messages: Scaling Search Infrastructure by V...
ScyllaDB
Technology use over time and its impact on consumers and businesses.pptx
Technology use over time and its impact on consumers and businesses.pptxTechnology use over time and its impact on consumers and businesses.pptx
Technology use over time and its impact on consumers and businesses.pptx
kaylagaze
World Information Architecture Day 2025 - UX at a Crossroads
World Information Architecture Day 2025 - UX at a CrossroadsWorld Information Architecture Day 2025 - UX at a Crossroads
World Information Architecture Day 2025 - UX at a Crossroads
Joshua Randall
Formal Methods: Whence and Whither? [Martin Fr辰nzle Festkolloquium, 2025]
Formal Methods: Whence and Whither? [Martin Fr辰nzle Festkolloquium, 2025]Formal Methods: Whence and Whither? [Martin Fr辰nzle Festkolloquium, 2025]
Formal Methods: Whence and Whither? [Martin Fr辰nzle Festkolloquium, 2025]
Jonathan Bowen
Future-Proof Your Career with AI Options
Future-Proof Your  Career with AI OptionsFuture-Proof Your  Career with AI Options
Future-Proof Your Career with AI Options
DianaGray10
FinTech - US Annual Funding Report - 2024.pptx
FinTech - US Annual Funding Report - 2024.pptxFinTech - US Annual Funding Report - 2024.pptx
FinTech - US Annual Funding Report - 2024.pptx
Tracxn
TrustArc Webinar - Building your DPIA/PIA Program: Best Practices & Tips
TrustArc Webinar - Building your DPIA/PIA Program: Best Practices & TipsTrustArc Webinar - Building your DPIA/PIA Program: Best Practices & Tips
TrustArc Webinar - Building your DPIA/PIA Program: Best Practices & Tips
TrustArc
Understanding Traditional AI with Custom Vision & MuleSoft.pptx
Understanding Traditional AI with Custom Vision & MuleSoft.pptxUnderstanding Traditional AI with Custom Vision & MuleSoft.pptx
Understanding Traditional AI with Custom Vision & MuleSoft.pptx
shyamraj55
Brave Browser Crack 1.45.133 Activated 2025
Brave Browser Crack 1.45.133 Activated 2025Brave Browser Crack 1.45.133 Activated 2025
Brave Browser Crack 1.45.133 Activated 2025
kherorpacca00126
30B Images and Counting: Scaling Canva's Content-Understanding Pipelines by K...
30B Images and Counting: Scaling Canva's Content-Understanding Pipelines by K...30B Images and Counting: Scaling Canva's Content-Understanding Pipelines by K...
30B Images and Counting: Scaling Canva's Content-Understanding Pipelines by K...
ScyllaDB
Endpoint Backup: 3 Reasons MSPs Ignore It
Endpoint Backup: 3 Reasons MSPs Ignore ItEndpoint Backup: 3 Reasons MSPs Ignore It
Endpoint Backup: 3 Reasons MSPs Ignore It
MSP360
Replacing RocksDB with ScyllaDB in Kafka Streams by Almog Gavra
Replacing RocksDB with ScyllaDB in Kafka Streams by Almog GavraReplacing RocksDB with ScyllaDB in Kafka Streams by Almog Gavra
Replacing RocksDB with ScyllaDB in Kafka Streams by Almog Gavra
ScyllaDB
A Framework for Model-Driven Digital Twin Engineering
A Framework for Model-Driven Digital Twin EngineeringA Framework for Model-Driven Digital Twin Engineering
A Framework for Model-Driven Digital Twin Engineering
Daniel Lehner
Revolutionizing-Government-Communication-The-OSWAN-Success-Story
Revolutionizing-Government-Communication-The-OSWAN-Success-StoryRevolutionizing-Government-Communication-The-OSWAN-Success-Story
Revolutionizing-Government-Communication-The-OSWAN-Success-Story
ssuser52ad5e
UiPath Document Understanding - Generative AI and Active learning capabilities
UiPath Document Understanding - Generative AI and Active learning capabilitiesUiPath Document Understanding - Generative AI and Active learning capabilities
UiPath Document Understanding - Generative AI and Active learning capabilities
DianaGray10
BoxLang JVM Language : The Future is Dynamic
BoxLang JVM Language : The Future is DynamicBoxLang JVM Language : The Future is Dynamic
BoxLang JVM Language : The Future is Dynamic
Ortus Solutions, Corp
Q4_TLE-7-Lesson-6-Week-6.pptx 4th quarter
Q4_TLE-7-Lesson-6-Week-6.pptx 4th quarterQ4_TLE-7-Lesson-6-Week-6.pptx 4th quarter
Q4_TLE-7-Lesson-6-Week-6.pptx 4th quarter
MariaBarbaraPaglinaw
UiPath Automation Developer Associate Training Series 2025 - Session 2
UiPath Automation Developer Associate Training Series 2025 - Session 2UiPath Automation Developer Associate Training Series 2025 - Session 2
UiPath Automation Developer Associate Training Series 2025 - Session 2
DianaGray10
Early Adopter's Guide to AI Moderation (Preview)
Early Adopter's Guide to AI Moderation (Preview)Early Adopter's Guide to AI Moderation (Preview)
Early Adopter's Guide to AI Moderation (Preview)
nick896721
[Webinar] Scaling Made Simple: Getting Started with No-Code Web Apps
[Webinar] Scaling Made Simple: Getting Started with No-Code Web Apps[Webinar] Scaling Made Simple: Getting Started with No-Code Web Apps
[Webinar] Scaling Made Simple: Getting Started with No-Code Web Apps
Safe Software
How Discord Indexes Trillions of Messages: Scaling Search Infrastructure by V...
How Discord Indexes Trillions of Messages: Scaling Search Infrastructure by V...How Discord Indexes Trillions of Messages: Scaling Search Infrastructure by V...
How Discord Indexes Trillions of Messages: Scaling Search Infrastructure by V...
ScyllaDB
Technology use over time and its impact on consumers and businesses.pptx
Technology use over time and its impact on consumers and businesses.pptxTechnology use over time and its impact on consumers and businesses.pptx
Technology use over time and its impact on consumers and businesses.pptx
kaylagaze
World Information Architecture Day 2025 - UX at a Crossroads
World Information Architecture Day 2025 - UX at a CrossroadsWorld Information Architecture Day 2025 - UX at a Crossroads
World Information Architecture Day 2025 - UX at a Crossroads
Joshua Randall
Formal Methods: Whence and Whither? [Martin Fr辰nzle Festkolloquium, 2025]
Formal Methods: Whence and Whither? [Martin Fr辰nzle Festkolloquium, 2025]Formal Methods: Whence and Whither? [Martin Fr辰nzle Festkolloquium, 2025]
Formal Methods: Whence and Whither? [Martin Fr辰nzle Festkolloquium, 2025]
Jonathan Bowen
Future-Proof Your Career with AI Options
Future-Proof Your  Career with AI OptionsFuture-Proof Your  Career with AI Options
Future-Proof Your Career with AI Options
DianaGray10
FinTech - US Annual Funding Report - 2024.pptx
FinTech - US Annual Funding Report - 2024.pptxFinTech - US Annual Funding Report - 2024.pptx
FinTech - US Annual Funding Report - 2024.pptx
Tracxn
TrustArc Webinar - Building your DPIA/PIA Program: Best Practices & Tips
TrustArc Webinar - Building your DPIA/PIA Program: Best Practices & TipsTrustArc Webinar - Building your DPIA/PIA Program: Best Practices & Tips
TrustArc Webinar - Building your DPIA/PIA Program: Best Practices & Tips
TrustArc
Understanding Traditional AI with Custom Vision & MuleSoft.pptx
Understanding Traditional AI with Custom Vision & MuleSoft.pptxUnderstanding Traditional AI with Custom Vision & MuleSoft.pptx
Understanding Traditional AI with Custom Vision & MuleSoft.pptx
shyamraj55
Brave Browser Crack 1.45.133 Activated 2025
Brave Browser Crack 1.45.133 Activated 2025Brave Browser Crack 1.45.133 Activated 2025
Brave Browser Crack 1.45.133 Activated 2025
kherorpacca00126

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. Whats 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 Its 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 its 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 isnt 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 thats 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 its not obvious) Whats 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 its guaranteed to scale and have good performance and be like super super reliable. Its 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 dont what that is but it sounds easy too I guess its so easy the developers get to rest. Its 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 webs 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 webs 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 theres 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 NetKernels in memory protocol. Partly this is possible because of NetKernels caching which replicates local representations of remote resources just like a browser would (the reason its 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 youd 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 wasnt 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 NetKernels 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 its design. Wednesday, August 11, 2010
  • 30. So what are these granular services doing inside my program? (revisiting those nice web qualities) More Scalability NetKernels 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 (its 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 hadnt realized before which is how many lost opportunities Id 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