SlideShare a Scribd company logo
1 of 34
Download to read offline
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?

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
 
real world web services
real world web servicesreal world web services
real world web services
dominion
 
Ruby conf2010 OpenPaaS
Ruby conf2010 OpenPaaSRuby conf2010 OpenPaaS
Ruby conf2010 OpenPaaS
Derek Collison
 
Sneak Peek of Nuxeo 5.4
Sneak Peek of Nuxeo 5.4Sneak Peek of Nuxeo 5.4
Sneak Peek of Nuxeo 5.4
Nuxeo
 
Modern web application model
Modern web application modelModern web application model
Modern web application model
Michal Taberski
 
Designing for Massive Scalability at BackType #bigdatacamp
Designing for Massive Scalability at BackType #bigdatacampDesigning for Massive Scalability at BackType #bigdatacamp
Designing for Massive Scalability at BackType #bigdatacamp
Michael Montano
 

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
 
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
 
Designing for Massive Scalability at BackType #bigdatacamp
Designing for Massive Scalability at BackType #bigdatacampDesigning for Massive Scalability at BackType #bigdatacamp
Designing for Massive Scalability at BackType #bigdatacamp
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Recently uploaded (20)

WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 

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