SlideShare une entreprise Scribd logo
1  sur  32
A Microservices Approach to Library Websites Sean Hannan Sheridan Libraries Johns Hopkins University
Sheridan Libraries Website
Sheridan Libraries Website
What Are Microservices? What are microservices? They are programmaticbuilding blocks Each has a single purpose and focuses on that single purpose If new technology comes along or we need to replace some functionality, the functional definitions allow us to add, subtract, or swap out these blocks
CDL’s Definition Devolve function into a granular set of independent, but interoperable micro-services Since each is small and self-contained, they are collectively easier to develop, maintain, and deploy Since the level of investment in any given service is small, they are easier to replace when they have outlived their usefulness The scope of each service is limited, but complex behavior can emerge from the strategic composition of individual atomistic services All service interactions through public interfaces
A Brief History of Microservices In computing, you have a ‘technology stack’ (i.e. the LAMP stack: Linux, Apache, MySQL, and PHP) California Digital Library has been working on creating individual services for each of the functions of a repository (deposit, retrieval, storage, index, etc.) (Merritt)
WebsiteMicroservices These are the microservices that will make up the construction of the MSEL Library Website: JSON flat files (Content Storage) Mustache (Templating) Compass (Style & Layout) JQuery UI (UI Elements) JQuery BBQ (State Handling) Google (Site Search) git (Version Control) Bonsai (Compiler/Static Output) YUI Compressor (Compression) Lemonade (Image Processing) PHP-Typography (Document Formatting) Custom Sitemap Generator (Indexing)
JSON Flat Files Instead of keeping content in a database, we’ll be keeping it in individual files JSON keeps it structured Works well with version control systems
Mustache http://mustache.github.com Templating library Available for 20 programming languages {
JSON looks like this:
Mustache looks like this:
Mustache-processed JSON:
Compass http://compass-style.org CSS can be very difficult to maintain Compass allows you to write rules and logic that are not possible in CSS These compass files are then compiled into CSS that works on every web browser
CSS Syntax Example
Compass Syntax Example
JQuery UI http://jqueryui.com A convenient set of user interface widgets (buttons, dialog boxes, etc.) and interaction effects (animation, show/hide functions, etc.) Themable
JQuery UI Themes
JQuery BBQ http://github.com/cowboy/jquery-bbq State-handling Javascript library This allows for bookmarking of dynamic websites Doesn’t break the back button
Google We’ll be leveraging Google’s site search to allow users to search website content It’s free, why not use it?
git Version control system Allows us to “roll back” to previous versions of content, or indeed, previous versions of site functionality
Bonsai http://tinytree.info A set of scripts that ‘compiles’ the website from these disparate microservices into directories and HTML that can be uploaded to any web server
Bonsai Example
YUI Compressor http://developer.yahoo.com/yui/compressor Saves on bandwidth and improves performance from caching
Lemonade http://github.com/hagenburger/lemonade Automatically generates CSS Sprites CSS Sprites are a way to reduce website load times by compiling all of the images on to a page into a single image This image is then loaded once and cached
CSS Sprites *Courtesy css-tricks.com
PHP-Typography http://kingdesk.com/projects/php-typography Greatly improves web typography automatically End-of-line hyphenation Automatic replacement of smart quotes, em and en dashes, ellipses, math symbols, etc.
Custom Sitemap Generator In order to help out Google, we need a custom sitemap For our case, we want to make sure that Google indexes all of our dynamically-built URLs
Benefits of the Microservices Approach More feature-rich, but ultimately smaller and easier to maintain website Adaptability Content mobility
Content Mobility With the number of websites and presences we are a part of, we need a standard way to serve information from one place We can serve up the hours content as standard JSON, and use the Javascript version of Mustache to embed that data anywhere we need to.  Website, JHU Portal, Blog, wherever. Write once, update everywhere
Next Steps Documentation of interfaces
Questions?

Contenu connexe

Tendances

Bader bosc2010 cytoweb
Bader bosc2010 cytowebBader bosc2010 cytoweb
Bader bosc2010 cytoweb
BOSC 2010
 
Ciprian Badescu, Eugen Stoianovici - CUBRID
Ciprian Badescu, Eugen Stoianovici - CUBRIDCiprian Badescu, Eugen Stoianovici - CUBRID
Ciprian Badescu, Eugen Stoianovici - CUBRID
Asociatia ProLinux
 
Seattle JS Meetup - Grunt EJS Static Presentation
Seattle JS Meetup - Grunt EJS Static PresentationSeattle JS Meetup - Grunt EJS Static Presentation
Seattle JS Meetup - Grunt EJS Static Presentation
Shae Kuronen
 

Tendances (20)

The windows azure story
The windows azure storyThe windows azure story
The windows azure story
 
Esb Basics
Esb BasicsEsb Basics
Esb Basics
 
Backgrid - A Backbone Plugin
Backgrid - A Backbone PluginBackgrid - A Backbone Plugin
Backgrid - A Backbone Plugin
 
Amazon simple db
Amazon simple dbAmazon simple db
Amazon simple db
 
NPO 網站改造觀摩賽 - Day 3 - Plone 團隊成果簡報
NPO 網站改造觀摩賽 - Day 3 - Plone 團隊成果簡報NPO 網站改造觀摩賽 - Day 3 - Plone 團隊成果簡報
NPO 網站改造觀摩賽 - Day 3 - Plone 團隊成果簡報
 
Brian Campo, DoD JCS, Content.gov Presentation
Brian Campo, DoD JCS, Content.gov PresentationBrian Campo, DoD JCS, Content.gov Presentation
Brian Campo, DoD JCS, Content.gov Presentation
 
Bader bosc2010 cytoweb
Bader bosc2010 cytowebBader bosc2010 cytoweb
Bader bosc2010 cytoweb
 
Single page application
Single page applicationSingle page application
Single page application
 
Single page application
Single page applicationSingle page application
Single page application
 
Express yourself
Express yourselfExpress yourself
Express yourself
 
Ciprian Badescu, Eugen Stoianovici - CUBRID
Ciprian Badescu, Eugen Stoianovici - CUBRIDCiprian Badescu, Eugen Stoianovici - CUBRID
Ciprian Badescu, Eugen Stoianovici - CUBRID
 
Seattle JS Meetup - Grunt EJS Static Presentation
Seattle JS Meetup - Grunt EJS Static PresentationSeattle JS Meetup - Grunt EJS Static Presentation
Seattle JS Meetup - Grunt EJS Static Presentation
 
Fundamentals of Mule Esb
Fundamentals of Mule EsbFundamentals of Mule Esb
Fundamentals of Mule Esb
 
skills
skillsskills
skills
 
Single Page Apps
Single Page AppsSingle Page Apps
Single Page Apps
 
Data Visualization with D3
Data Visualization with D3Data Visualization with D3
Data Visualization with D3
 
Single page applications with backbone js
Single page applications with backbone jsSingle page applications with backbone js
Single page applications with backbone js
 
Versulo (2)
Versulo (2)Versulo (2)
Versulo (2)
 
Introduction to backbone_js
Introduction to backbone_jsIntroduction to backbone_js
Introduction to backbone_js
 
Sso
SsoSso
Sso
 

Similaire à Let's Get Small: A Microservices Approach to Library Websites

Pablo Villalba -
Pablo Villalba - Pablo Villalba -
Pablo Villalba -
.toster
 
To Kill a Monolith: Slaying the Demons of a Monolith with Node.js Microservic...
To Kill a Monolith: Slaying the Demons of a Monolith with Node.js Microservic...To Kill a Monolith: Slaying the Demons of a Monolith with Node.js Microservic...
To Kill a Monolith: Slaying the Demons of a Monolith with Node.js Microservic...
Tony Erwin
 
How facebook works and function- a complete approach
How facebook works and function- a complete approachHow facebook works and function- a complete approach
How facebook works and function- a complete approach
Prakhar Gethe
 
SharePoint 2007 and SharePoint 2010 for Web Content Management (WCM)
SharePoint 2007 and SharePoint 2010 for Web Content Management (WCM)SharePoint 2007 and SharePoint 2010 for Web Content Management (WCM)
SharePoint 2007 and SharePoint 2010 for Web Content Management (WCM)
Richard Harbridge
 

Similaire à Let's Get Small: A Microservices Approach to Library Websites (20)

Mia Cms Presentation
Mia Cms PresentationMia Cms Presentation
Mia Cms Presentation
 
MiaCMS - Past, Present, and Future
MiaCMS - Past, Present, and FutureMiaCMS - Past, Present, and Future
MiaCMS - Past, Present, and Future
 
Pablo Villalba -
Pablo Villalba - Pablo Villalba -
Pablo Villalba -
 
To Kill a Monolith: Slaying the Demons of a Monolith with Node.js Microservic...
To Kill a Monolith: Slaying the Demons of a Monolith with Node.js Microservic...To Kill a Monolith: Slaying the Demons of a Monolith with Node.js Microservic...
To Kill a Monolith: Slaying the Demons of a Monolith with Node.js Microservic...
 
How facebook works and function- a complete approach
How facebook works and function- a complete approachHow facebook works and function- a complete approach
How facebook works and function- a complete approach
 
sMash_for_zOS-users
sMash_for_zOS-userssMash_for_zOS-users
sMash_for_zOS-users
 
SharePoint 2007 and SharePoint 2010 for Web Content Management (WCM)
SharePoint 2007 and SharePoint 2010 for Web Content Management (WCM)SharePoint 2007 and SharePoint 2010 for Web Content Management (WCM)
SharePoint 2007 and SharePoint 2010 for Web Content Management (WCM)
 
It ppt.pptx
It ppt.pptxIt ppt.pptx
It ppt.pptx
 
LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :) LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :)
 
Top10waystointegratewithoracleecmbezzo 1222791433931452 9
Top10waystointegratewithoracleecmbezzo 1222791433931452 9Top10waystointegratewithoracleecmbezzo 1222791433931452 9
Top10waystointegratewithoracleecmbezzo 1222791433931452 9
 
Top 10 Ways To Integrate With Oracle Enterprise Content Management (ECM)
Top 10 Ways To Integrate With Oracle Enterprise Content Management (ECM)Top 10 Ways To Integrate With Oracle Enterprise Content Management (ECM)
Top 10 Ways To Integrate With Oracle Enterprise Content Management (ECM)
 
A Comparative Analysis of Express and Next JS
A Comparative Analysis of Express and Next JSA Comparative Analysis of Express and Next JS
A Comparative Analysis of Express and Next JS
 
Modern ux-workflow-presentation
Modern ux-workflow-presentationModern ux-workflow-presentation
Modern ux-workflow-presentation
 
Open Source Content Management Systems
Open Source Content Management SystemsOpen Source Content Management Systems
Open Source Content Management Systems
 
web devs ppt.ppsx
web devs ppt.ppsxweb devs ppt.ppsx
web devs ppt.ppsx
 
Alfresco As SharePoint Alternative - Architecture Overview
Alfresco As SharePoint Alternative - Architecture OverviewAlfresco As SharePoint Alternative - Architecture Overview
Alfresco As SharePoint Alternative - Architecture Overview
 
Introduction to using jQuery with SharePoint
Introduction to using jQuery with SharePointIntroduction to using jQuery with SharePoint
Introduction to using jQuery with SharePoint
 
Introduction To Symfony
Introduction To SymfonyIntroduction To Symfony
Introduction To Symfony
 
Information Management & Sharing in Digital Era
Information Management & Sharing in Digital Era Information Management & Sharing in Digital Era
Information Management & Sharing in Digital Era
 
JSF 2.3: Integration with Front-End Frameworks
JSF 2.3: Integration with Front-End FrameworksJSF 2.3: Integration with Front-End Frameworks
JSF 2.3: Integration with Front-End Frameworks
 

Plus de MrDys (6)

This is how you do digital collections in 2013
This is how you do digital collections in 2013This is how you do digital collections in 2013
This is how you do digital collections in 2013
 
Improving Catalyst by Reaching Out
Improving Catalyst by Reaching OutImproving Catalyst by Reaching Out
Improving Catalyst by Reaching Out
 
Strategies for Debugging Print CSS
Strategies for Debugging Print CSSStrategies for Debugging Print CSS
Strategies for Debugging Print CSS
 
Mobile Web Interface
Mobile Web InterfaceMobile Web Interface
Mobile Web Interface
 
You Either Surf Or You Fight
You Either Surf Or You FightYou Either Surf Or You Fight
You Either Surf Or You Fight
 
Freebasing for Fun and Enhancement
Freebasing for Fun and EnhancementFreebasing for Fun and Enhancement
Freebasing for Fun and Enhancement
 

Dernier

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Dernier (20)

Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
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...
 
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
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
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
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
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
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
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...
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 

Let's Get Small: A Microservices Approach to Library Websites

  • 1. A Microservices Approach to Library Websites Sean Hannan Sheridan Libraries Johns Hopkins University
  • 4. What Are Microservices? What are microservices? They are programmaticbuilding blocks Each has a single purpose and focuses on that single purpose If new technology comes along or we need to replace some functionality, the functional definitions allow us to add, subtract, or swap out these blocks
  • 5. CDL’s Definition Devolve function into a granular set of independent, but interoperable micro-services Since each is small and self-contained, they are collectively easier to develop, maintain, and deploy Since the level of investment in any given service is small, they are easier to replace when they have outlived their usefulness The scope of each service is limited, but complex behavior can emerge from the strategic composition of individual atomistic services All service interactions through public interfaces
  • 6. A Brief History of Microservices In computing, you have a ‘technology stack’ (i.e. the LAMP stack: Linux, Apache, MySQL, and PHP) California Digital Library has been working on creating individual services for each of the functions of a repository (deposit, retrieval, storage, index, etc.) (Merritt)
  • 7.
  • 8. WebsiteMicroservices These are the microservices that will make up the construction of the MSEL Library Website: JSON flat files (Content Storage) Mustache (Templating) Compass (Style & Layout) JQuery UI (UI Elements) JQuery BBQ (State Handling) Google (Site Search) git (Version Control) Bonsai (Compiler/Static Output) YUI Compressor (Compression) Lemonade (Image Processing) PHP-Typography (Document Formatting) Custom Sitemap Generator (Indexing)
  • 9. JSON Flat Files Instead of keeping content in a database, we’ll be keeping it in individual files JSON keeps it structured Works well with version control systems
  • 10. Mustache http://mustache.github.com Templating library Available for 20 programming languages {
  • 14. Compass http://compass-style.org CSS can be very difficult to maintain Compass allows you to write rules and logic that are not possible in CSS These compass files are then compiled into CSS that works on every web browser
  • 17. JQuery UI http://jqueryui.com A convenient set of user interface widgets (buttons, dialog boxes, etc.) and interaction effects (animation, show/hide functions, etc.) Themable
  • 19. JQuery BBQ http://github.com/cowboy/jquery-bbq State-handling Javascript library This allows for bookmarking of dynamic websites Doesn’t break the back button
  • 20. Google We’ll be leveraging Google’s site search to allow users to search website content It’s free, why not use it?
  • 21. git Version control system Allows us to “roll back” to previous versions of content, or indeed, previous versions of site functionality
  • 22. Bonsai http://tinytree.info A set of scripts that ‘compiles’ the website from these disparate microservices into directories and HTML that can be uploaded to any web server
  • 24. YUI Compressor http://developer.yahoo.com/yui/compressor Saves on bandwidth and improves performance from caching
  • 25. Lemonade http://github.com/hagenburger/lemonade Automatically generates CSS Sprites CSS Sprites are a way to reduce website load times by compiling all of the images on to a page into a single image This image is then loaded once and cached
  • 26. CSS Sprites *Courtesy css-tricks.com
  • 27. PHP-Typography http://kingdesk.com/projects/php-typography Greatly improves web typography automatically End-of-line hyphenation Automatic replacement of smart quotes, em and en dashes, ellipses, math symbols, etc.
  • 28. Custom Sitemap Generator In order to help out Google, we need a custom sitemap For our case, we want to make sure that Google indexes all of our dynamically-built URLs
  • 29. Benefits of the Microservices Approach More feature-rich, but ultimately smaller and easier to maintain website Adaptability Content mobility
  • 30. Content Mobility With the number of websites and presences we are a part of, we need a standard way to serve information from one place We can serve up the hours content as standard JSON, and use the Javascript version of Mustache to embed that data anywhere we need to. Website, JHU Portal, Blog, wherever. Write once, update everywhere
  • 31. Next Steps Documentation of interfaces

Notes de l'éditeur

  1. Has looked this way since 2004Desperately in need of a redesign
  2. After some content/user behavior analysis, I determined that most of the most-used content is infrequently updated static content. We don’t need a CMS. We just need HTML.
  3. California Digital Library has done a lot of work developing the microservices concept and is building a repository based on these concepts. Go to http://merritt.cdlib.org/ to read more about that.
  4. Singular technologies that when combined, produce a single product (a database-driven website, in the case of LAMP)Same concept, but applied on a much more specific level in order to build a website
  5. More or less broken up into four categories, content / visual design, integration / interaction, compilation and storage, and post-processing
  6. 12 individual microservices
  7. Our “data” is just text, anyway.Version control systems are work well with text
  8. The site will have a couple templates (layouts without any content), and Mustache brings the JSON-stored content and the layouts together to produce content-filled webpages
  9. Headline and body are going to get pulled from the JSON, you can see also how you can include other templates for the header, footer, and analytics.
  10. A flavor of SASS designed to look more CSS-likeMuch easier to maintainVariables, nested definitions, mixins
  11. Compass allows for mixins, nested definitions, variables
  12. This gives URLs to pages that don’t actually exist.By doing this, you can go back and forth using the back button in a dynamic applicationFor this site, this will allow users to bookmark the dynamic portions of the site (such as the staff contact search)You’ll see the /!#/ convention in Twitter and Facebook URLs. Same thing.
  13. Because some portions of the site are dynamic, it will require a custom sitemap generator to index all of the content
  14. Has a very advanced forking and merging system which would allow us to work on parallel versions of the site (for, say, a redesign) and then merge these changes back with ease
  15. In order to be incorporated, all of the microservices are essentially ‘plugins’ to the Bonsai build system.This could really be a set of nicely complex ‘ant’ scripts, but I like bonsai for now.
  16. Compressor takes Javascript and CSS files and reduces their file size by removing comments and simplifying variable names
  17. CSS definitions then define the boundaries of the sprite, showing the user only the part of the (larger) graphic that is appropriate for that space
  18. Sitemaps tell search engines where specific resources are and how to index them
  19. Want to support the latest touch device? Write a new template, hit ‘compile’ and upload the new website.Maybe Compass is getting stale and we want to take advantage of the latest and greatest CSS specifications? Just swap it out.
  20. Hours is a huge one
  21. Most of these microservices take in HTML and spit out HTML, so that’s easy.Or takes in CSS and spits out CSSSwapping in and out of services only becomes complex when it takes in one data type and spits out another.