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

The windows azure story
The windows azure storyThe windows azure story
The windows azure storyIasa UK
 
Esb Basics
Esb BasicsEsb Basics
Esb BasicsF K
 
Backgrid - A Backbone Plugin
Backgrid - A Backbone PluginBackgrid - A Backbone Plugin
Backgrid - A Backbone PluginNeerav Mittal
 
NPO 網站改造觀摩賽 - Day 3 - Plone 團隊成果簡報
NPO 網站改造觀摩賽 - Day 3 - Plone 團隊成果簡報NPO 網站改造觀摩賽 - Day 3 - Plone 團隊成果簡報
NPO 網站改造觀摩賽 - Day 3 - Plone 團隊成果簡報Charles Chuang
 
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 PresentationAlfresco Software
 
Bader bosc2010 cytoweb
Bader bosc2010 cytowebBader bosc2010 cytoweb
Bader bosc2010 cytowebBOSC 2010
 
Single page application
Single page applicationSingle page application
Single page applicationJeremy Lee
 
Ciprian Badescu, Eugen Stoianovici - CUBRID
Ciprian Badescu, Eugen Stoianovici - CUBRIDCiprian Badescu, Eugen Stoianovici - CUBRID
Ciprian Badescu, Eugen Stoianovici - CUBRIDAsociatia 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 PresentationShae Kuronen
 
Single Page Apps
Single Page AppsSingle Page Apps
Single Page AppsGil Fink
 
Data Visualization with D3
Data Visualization with D3Data Visualization with D3
Data Visualization with D3Usman Shabbir
 
Single page applications with backbone js
Single page applications with backbone jsSingle page applications with backbone js
Single page applications with backbone jsGil Fink
 
Introduction to backbone_js
Introduction to backbone_jsIntroduction to backbone_js
Introduction to backbone_jsMohammed Saqib
 

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

MiaCMS - Past, Present, and Future
MiaCMS - Past, Present, and FutureMiaCMS - Past, Present, and Future
MiaCMS - Past, Present, and FutureChad Auld
 
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 approachPrakhar 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
 
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! :) Sascha Sambale
 
Top10waystointegratewithoracleecmbezzo 1222791433931452 9
Top10waystointegratewithoracleecmbezzo 1222791433931452 9Top10waystointegratewithoracleecmbezzo 1222791433931452 9
Top10waystointegratewithoracleecmbezzo 1222791433931452 9MrLynnRClemons
 
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)Brian Huff
 
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 JSTien Nguyen
 
Modern ux-workflow-presentation
Modern ux-workflow-presentationModern ux-workflow-presentation
Modern ux-workflow-presentationBrian Akpa
 
Open Source Content Management Systems
Open Source Content Management SystemsOpen Source Content Management Systems
Open Source Content Management Systemskrishnapriya Tadepalli
 
Alfresco As SharePoint Alternative - Architecture Overview
Alfresco As SharePoint Alternative - Architecture OverviewAlfresco As SharePoint Alternative - Architecture Overview
Alfresco As SharePoint Alternative - Architecture OverviewAlfresco Software
 
Introduction to using jQuery with SharePoint
Introduction to using jQuery with SharePointIntroduction to using jQuery with SharePoint
Introduction to using jQuery with SharePointRene Modery
 
Information Management & Sharing in Digital Era
Information Management & Sharing in Digital Era Information Management & Sharing in Digital Era
Information Management & Sharing in Digital Era Liaquat Rahoo
 
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 FrameworksIan Hlavats
 

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

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 2013MrDys
 
Improving Catalyst by Reaching Out
Improving Catalyst by Reaching OutImproving Catalyst by Reaching Out
Improving Catalyst by Reaching OutMrDys
 
Strategies for Debugging Print CSS
Strategies for Debugging Print CSSStrategies for Debugging Print CSS
Strategies for Debugging Print CSSMrDys
 
Mobile Web Interface
Mobile Web InterfaceMobile Web Interface
Mobile Web InterfaceMrDys
 
You Either Surf Or You Fight
You Either Surf Or You FightYou Either Surf Or You Fight
You Either Surf Or You FightMrDys
 
Freebasing for Fun and Enhancement
Freebasing for Fun and EnhancementFreebasing for Fun and Enhancement
Freebasing for Fun and EnhancementMrDys
 

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

Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
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...Orbitshub
 
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 SavingEdi Saputra
 
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...Jeffrey Haguewood
 
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, Adobeapidays
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
"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 ...Zilliz
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
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 educationjfdjdjcjdnsjd
 
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...apidays
 
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 Takeoffsammart93
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
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.pptxRustici Software
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
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 2024Victor Rentea
 
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...Zilliz
 

Dernier (20)

Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
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...
 
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
 
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...
 
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
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 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 ...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
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
 
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...
 
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 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
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
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
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
 
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
 
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...
 

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.