SlideShare a Scribd company logo
1 of 31
Web Engineering @ UCL
Research Programming Social – Oct 14 2015
Ian Sillitoe (Darwin 627)
i.sillitoe@ucl.ac.uk
About me
• Bashing my head against various web technologies
for > 20 years
• What I’ve learned so far:
• There is no single, correct way to do things
• There are lots of bad ways to do things
Orengo Group
• Prof Christine Orengo
• Room 627, Darwin
• 6 Post docs, 6 PhD students
Computational
Biology
Algorithms Databases
Pipelines
Web
services
Linux Services
• Version Control SVN, Git
• Web Tools Apache, Varnish, FCGI, Solr, Tomcat
• Databases PostgreSQL, Oracle, MySQL
• Software Dev Perl, Python, Java, C++, Javascript
• Sys Dev VM, Puppet, CentOS, Ubuntu
20
Desktops /
Laptops
6
General
Servers
3
Big VM
Servers
50
Local HPC
nodes
Background
• Technology
• HTML / CSS / Javascript
• Concepts
• MVC
• Web application
• Virtualisation
HTML (HyperText Markup Language)
• Provides semantic meaning (markup) to documents
• <h1>Title</h1>
• <p>Paragraph</p>
• <table>…</table>
• HTML5 provides a rich, standardised vocabulary
• <footer>…</footer>
• <section>…</section>
• <audio>…</audio>
• <video>…</video>
https://developer.mozilla.org/en-US/docs/Web/HTML
“MDN HTML”
<h1>Title</h1>
<p>Some text and a
<a href="http://www.ucl.ac.uk">link</a>
</p>
Title
Some text and a link
HTML (HyperText Markup Language)
HTML5
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Title</title>
<link rel="stylesheet" href="style.css">
<script src="script.js"></script>
</head>
<body>
<!-- page content -->
<p>Some text and a
<a href="http://www.ucl.ac.uk">link</a>
</p>
</body>
</html>
CSS (Cascading Style Sheets)
• Language to specify presentation of the document
• Separates data from presentation
• Consistency across many pages
https://developer.mozilla.org/en-US/docs/Web/CSS
“MDN CSS”
CSS (Cascading Style Sheets)
<h1>Title</h1>
<p>Some <span class="example">text</span> and a
<a href="http://www.ucl.ac.uk">link</a>
</p>
Title
Some text and a link
HTML
CSS
CSS (Cascading Style Sheets)
<h1>Title</h1>
<p>Some <span class="example">text</span> and a
<a href="http://www.ucl.ac.uk">link</a>
</p>
Title
Some text and a link
p .example {
color: red;
}
HTML
CSS
Javascript
• Dynamic language
• Commonly used to negotiate interaction between
user and HTML
• Standard is supported by all modern browsers
• JS Frameworks make it easier to use
• jQuery, Underscore, Prototype, …
https://developer.mozilla.org/en-US/docs/Web/JavaScript
“MDN Javascript”
Background
• Technology
• HTML / CSS / Javascript
• Concepts
• MVC
• Web application
• Virtualisation
MVC
Model View
Controller
Database, Filesystem, … HTML, Excel, PDF, …
Glue
MVC
Model View
Controller
Database, Filesystem, … HTML, Excel, PDF, …
Glue
Crowd Computing
• Web Service
http://api.ucl.ac.uk/RandomNumberAndColour/2
• Models
• RandomNumber
• RandomColour
• Views
• to_json
• to_html
• to_html( language => ‘Spanish’ )
MVC
Model View
Controller
Colours: [“red”, “green”]
Numbers: [42, 15]
[
{ colour: “red”, number: 42},
{ colour: “green”, number: 15}
]
to_json, to_html, to_pdf, …
Crowd Computing
• Web Service
http://api.ucl.ac.uk/RandomNumberColour/2
• Returns
[
{ colour: “red”, number: 42},
{ colour: “green”, number: 15}
]
Crowd Computing
• Web Service
http://api.ucl.ac.uk/RandomNumberColour/2
• Returns
0
10
20
30
40
50
red green
red green
Crowd Computing
• Web Service
http://api.ucl.ac.uk/RandomNumberColour/2
• Returns
red green
Challenge 1
• Provide web application that is:
• Efficient not CGI.pl
• Robust no downtime, no bad links
• Flexible encourage new features
• Scalable deal with traffic, future proof
• Maintainable > 1 developer
Efficient
• Use MVC web application (not CGI.pl)
• e.g.
• Perl Catalyst, Dancer, Mojolicious, …
• Python Django, CherryPy, …
• Ruby Rails, …
Robust
• Continuous Integration (CI)
• Everything gets put into group code repository
• code, crontabs, tests, etc
• All code has its own tests
• Tests run automatically all the time
• If tests PASS - shared code gets updated
• If tests FAIL - we get an email
• e.g. Jenkins CI, Travis CI, …
Flexible
• Lots of (good) tests gives you…
• Confidence to make changes
• Confidence to accept changes from others
• Continuous Integration lets you…
• See your own changes in “beta” sites
• MVC web applications make it easy to…
• Create powerful, interactive web pages
Scalable
• Move web code to Virtual Machine (VM)
• SVN all common code in central repo
• Puppet maintains machine requirements
• Varnish web cache, load balance, failover
VM server
Code Repo
(SVN)
orengobuild64
orengocatalyst01
orengocatalyst02
orengocatalyst03
User 2
User 1
Develop, Build / Test, Deploy
DEVELOP BUILD / TEST
DEPLOY
VM server
Web server
Varnish
Data
Source
A
Data
Source
B
WEB
orengobuild64
orengocatalyst01
orengocatalyst02
orengocatalyst03
Cache, Load Balance, MVC
CACHE
LOAD BALANCE
(and FAILOVER)
Data
Source
C
Challenge 2
• Monitor SGE jobs (qstat without the typing)
• https://github.com/sillitoe/sge-monitor

More Related Content

Similar to Web Engineering at UCL

First Hive Meetup London 2012-07-10 - Tomas Cervenka - VisualDNA
First Hive Meetup London 2012-07-10 - Tomas Cervenka - VisualDNAFirst Hive Meetup London 2012-07-10 - Tomas Cervenka - VisualDNA
First Hive Meetup London 2012-07-10 - Tomas Cervenka - VisualDNATomas Cervenka
 
Yaroslav Ravlinko "Build your own Machine Learning Platform or how to develo...
Yaroslav Ravlinko  "Build your own Machine Learning Platform or how to develo...Yaroslav Ravlinko  "Build your own Machine Learning Platform or how to develo...
Yaroslav Ravlinko "Build your own Machine Learning Platform or how to develo...Lviv Startup Club
 
Cloud-based Modelling Solutions Empowering Tool Integration
Cloud-based Modelling Solutions Empowering Tool IntegrationCloud-based Modelling Solutions Empowering Tool Integration
Cloud-based Modelling Solutions Empowering Tool IntegrationIstvan Rath
 
Oracle Application Express as add-on for Google Apps
Oracle Application Express as add-on for Google AppsOracle Application Express as add-on for Google Apps
Oracle Application Express as add-on for Google AppsSergei Martens
 
Intro to Machine Learning with H2O and AWS
Intro to Machine Learning with H2O and AWSIntro to Machine Learning with H2O and AWS
Intro to Machine Learning with H2O and AWSSri Ambati
 
Introducción al Machine Learning Automático
Introducción al Machine Learning AutomáticoIntroducción al Machine Learning Automático
Introducción al Machine Learning AutomáticoSri Ambati
 
I Love APIs Europe 2015: Developer Sessions
I Love APIs Europe 2015: Developer SessionsI Love APIs Europe 2015: Developer Sessions
I Love APIs Europe 2015: Developer SessionsApigee | Google Cloud
 
H2O Deep Water - Making Deep Learning Accessible to Everyone
H2O Deep Water - Making Deep Learning Accessible to EveryoneH2O Deep Water - Making Deep Learning Accessible to Everyone
H2O Deep Water - Making Deep Learning Accessible to EveryoneJo-fai Chow
 
H2O Deep Water - Making Deep Learning Accessible to Everyone
H2O Deep Water - Making Deep Learning Accessible to EveryoneH2O Deep Water - Making Deep Learning Accessible to Everyone
H2O Deep Water - Making Deep Learning Accessible to EveryoneSri Ambati
 
Lessons learned while building Omroep.nl
Lessons learned while building Omroep.nlLessons learned while building Omroep.nl
Lessons learned while building Omroep.nltieleman
 
Lessons learned while building Omroep.nl
Lessons learned while building Omroep.nlLessons learned while building Omroep.nl
Lessons learned while building Omroep.nlbartzon
 
Introduction to Azure DocumentDB
Introduction to Azure DocumentDBIntroduction to Azure DocumentDB
Introduction to Azure DocumentDBDenny Lee
 
A Beginner's Guide to Client Side Development with Javascript
A Beginner's Guide to Client Side Development with JavascriptA Beginner's Guide to Client Side Development with Javascript
A Beginner's Guide to Client Side Development with JavascriptSharePoint Saturday New Jersey
 
A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017
A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017
A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017Carlos Buenosvinos
 
Featured Modules for your Projects!
Featured Modules for your Projects!Featured Modules for your Projects!
Featured Modules for your Projects!Eladio Jose Abquina
 
Graph Databases for SQL Server Professionals
Graph Databases for SQL Server ProfessionalsGraph Databases for SQL Server Professionals
Graph Databases for SQL Server ProfessionalsStéphane Fréchette
 
Beyond DevOps: How Netflix Bridges the Gap?
Beyond DevOps: How Netflix Bridges the Gap?Beyond DevOps: How Netflix Bridges the Gap?
Beyond DevOps: How Netflix Bridges the Gap?C4Media
 
Continuum Analytics and Python
Continuum Analytics and PythonContinuum Analytics and Python
Continuum Analytics and PythonTravis Oliphant
 
ExtremeEarth: Hopsworks, a data-intensive AI platform for Deep Learning with ...
ExtremeEarth: Hopsworks, a data-intensive AI platform for Deep Learning with ...ExtremeEarth: Hopsworks, a data-intensive AI platform for Deep Learning with ...
ExtremeEarth: Hopsworks, a data-intensive AI platform for Deep Learning with ...Big Data Value Association
 
SajidaRanaResume (3)
SajidaRanaResume (3)SajidaRanaResume (3)
SajidaRanaResume (3)sa7899
 

Similar to Web Engineering at UCL (20)

First Hive Meetup London 2012-07-10 - Tomas Cervenka - VisualDNA
First Hive Meetup London 2012-07-10 - Tomas Cervenka - VisualDNAFirst Hive Meetup London 2012-07-10 - Tomas Cervenka - VisualDNA
First Hive Meetup London 2012-07-10 - Tomas Cervenka - VisualDNA
 
Yaroslav Ravlinko "Build your own Machine Learning Platform or how to develo...
Yaroslav Ravlinko  "Build your own Machine Learning Platform or how to develo...Yaroslav Ravlinko  "Build your own Machine Learning Platform or how to develo...
Yaroslav Ravlinko "Build your own Machine Learning Platform or how to develo...
 
Cloud-based Modelling Solutions Empowering Tool Integration
Cloud-based Modelling Solutions Empowering Tool IntegrationCloud-based Modelling Solutions Empowering Tool Integration
Cloud-based Modelling Solutions Empowering Tool Integration
 
Oracle Application Express as add-on for Google Apps
Oracle Application Express as add-on for Google AppsOracle Application Express as add-on for Google Apps
Oracle Application Express as add-on for Google Apps
 
Intro to Machine Learning with H2O and AWS
Intro to Machine Learning with H2O and AWSIntro to Machine Learning with H2O and AWS
Intro to Machine Learning with H2O and AWS
 
Introducción al Machine Learning Automático
Introducción al Machine Learning AutomáticoIntroducción al Machine Learning Automático
Introducción al Machine Learning Automático
 
I Love APIs Europe 2015: Developer Sessions
I Love APIs Europe 2015: Developer SessionsI Love APIs Europe 2015: Developer Sessions
I Love APIs Europe 2015: Developer Sessions
 
H2O Deep Water - Making Deep Learning Accessible to Everyone
H2O Deep Water - Making Deep Learning Accessible to EveryoneH2O Deep Water - Making Deep Learning Accessible to Everyone
H2O Deep Water - Making Deep Learning Accessible to Everyone
 
H2O Deep Water - Making Deep Learning Accessible to Everyone
H2O Deep Water - Making Deep Learning Accessible to EveryoneH2O Deep Water - Making Deep Learning Accessible to Everyone
H2O Deep Water - Making Deep Learning Accessible to Everyone
 
Lessons learned while building Omroep.nl
Lessons learned while building Omroep.nlLessons learned while building Omroep.nl
Lessons learned while building Omroep.nl
 
Lessons learned while building Omroep.nl
Lessons learned while building Omroep.nlLessons learned while building Omroep.nl
Lessons learned while building Omroep.nl
 
Introduction to Azure DocumentDB
Introduction to Azure DocumentDBIntroduction to Azure DocumentDB
Introduction to Azure DocumentDB
 
A Beginner's Guide to Client Side Development with Javascript
A Beginner's Guide to Client Side Development with JavascriptA Beginner's Guide to Client Side Development with Javascript
A Beginner's Guide to Client Side Development with Javascript
 
A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017
A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017
A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017
 
Featured Modules for your Projects!
Featured Modules for your Projects!Featured Modules for your Projects!
Featured Modules for your Projects!
 
Graph Databases for SQL Server Professionals
Graph Databases for SQL Server ProfessionalsGraph Databases for SQL Server Professionals
Graph Databases for SQL Server Professionals
 
Beyond DevOps: How Netflix Bridges the Gap?
Beyond DevOps: How Netflix Bridges the Gap?Beyond DevOps: How Netflix Bridges the Gap?
Beyond DevOps: How Netflix Bridges the Gap?
 
Continuum Analytics and Python
Continuum Analytics and PythonContinuum Analytics and Python
Continuum Analytics and Python
 
ExtremeEarth: Hopsworks, a data-intensive AI platform for Deep Learning with ...
ExtremeEarth: Hopsworks, a data-intensive AI platform for Deep Learning with ...ExtremeEarth: Hopsworks, a data-intensive AI platform for Deep Learning with ...
ExtremeEarth: Hopsworks, a data-intensive AI platform for Deep Learning with ...
 
SajidaRanaResume (3)
SajidaRanaResume (3)SajidaRanaResume (3)
SajidaRanaResume (3)
 

Recently uploaded

Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 

Recently uploaded (20)

Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 

Web Engineering at UCL

  • 1. Web Engineering @ UCL Research Programming Social – Oct 14 2015 Ian Sillitoe (Darwin 627) i.sillitoe@ucl.ac.uk
  • 2. About me • Bashing my head against various web technologies for > 20 years • What I’ve learned so far: • There is no single, correct way to do things • There are lots of bad ways to do things
  • 3.
  • 4.
  • 5. Orengo Group • Prof Christine Orengo • Room 627, Darwin • 6 Post docs, 6 PhD students Computational Biology Algorithms Databases Pipelines Web services
  • 6. Linux Services • Version Control SVN, Git • Web Tools Apache, Varnish, FCGI, Solr, Tomcat • Databases PostgreSQL, Oracle, MySQL • Software Dev Perl, Python, Java, C++, Javascript • Sys Dev VM, Puppet, CentOS, Ubuntu 20 Desktops / Laptops 6 General Servers 3 Big VM Servers 50 Local HPC nodes
  • 7.
  • 8. Background • Technology • HTML / CSS / Javascript • Concepts • MVC • Web application • Virtualisation
  • 9. HTML (HyperText Markup Language) • Provides semantic meaning (markup) to documents • <h1>Title</h1> • <p>Paragraph</p> • <table>…</table> • HTML5 provides a rich, standardised vocabulary • <footer>…</footer> • <section>…</section> • <audio>…</audio> • <video>…</video> https://developer.mozilla.org/en-US/docs/Web/HTML “MDN HTML”
  • 10. <h1>Title</h1> <p>Some text and a <a href="http://www.ucl.ac.uk">link</a> </p> Title Some text and a link HTML (HyperText Markup Language)
  • 11. HTML5 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Title</title> <link rel="stylesheet" href="style.css"> <script src="script.js"></script> </head> <body> <!-- page content --> <p>Some text and a <a href="http://www.ucl.ac.uk">link</a> </p> </body> </html>
  • 12. CSS (Cascading Style Sheets) • Language to specify presentation of the document • Separates data from presentation • Consistency across many pages https://developer.mozilla.org/en-US/docs/Web/CSS “MDN CSS”
  • 13. CSS (Cascading Style Sheets) <h1>Title</h1> <p>Some <span class="example">text</span> and a <a href="http://www.ucl.ac.uk">link</a> </p> Title Some text and a link HTML CSS
  • 14. CSS (Cascading Style Sheets) <h1>Title</h1> <p>Some <span class="example">text</span> and a <a href="http://www.ucl.ac.uk">link</a> </p> Title Some text and a link p .example { color: red; } HTML CSS
  • 15. Javascript • Dynamic language • Commonly used to negotiate interaction between user and HTML • Standard is supported by all modern browsers • JS Frameworks make it easier to use • jQuery, Underscore, Prototype, … https://developer.mozilla.org/en-US/docs/Web/JavaScript “MDN Javascript”
  • 16. Background • Technology • HTML / CSS / Javascript • Concepts • MVC • Web application • Virtualisation
  • 17. MVC Model View Controller Database, Filesystem, … HTML, Excel, PDF, … Glue
  • 18. MVC Model View Controller Database, Filesystem, … HTML, Excel, PDF, … Glue
  • 19. Crowd Computing • Web Service http://api.ucl.ac.uk/RandomNumberAndColour/2 • Models • RandomNumber • RandomColour • Views • to_json • to_html • to_html( language => ‘Spanish’ )
  • 20. MVC Model View Controller Colours: [“red”, “green”] Numbers: [42, 15] [ { colour: “red”, number: 42}, { colour: “green”, number: 15} ] to_json, to_html, to_pdf, …
  • 21. Crowd Computing • Web Service http://api.ucl.ac.uk/RandomNumberColour/2 • Returns [ { colour: “red”, number: 42}, { colour: “green”, number: 15} ]
  • 22. Crowd Computing • Web Service http://api.ucl.ac.uk/RandomNumberColour/2 • Returns 0 10 20 30 40 50 red green red green
  • 23. Crowd Computing • Web Service http://api.ucl.ac.uk/RandomNumberColour/2 • Returns red green
  • 24. Challenge 1 • Provide web application that is: • Efficient not CGI.pl • Robust no downtime, no bad links • Flexible encourage new features • Scalable deal with traffic, future proof • Maintainable > 1 developer
  • 25. Efficient • Use MVC web application (not CGI.pl) • e.g. • Perl Catalyst, Dancer, Mojolicious, … • Python Django, CherryPy, … • Ruby Rails, …
  • 26. Robust • Continuous Integration (CI) • Everything gets put into group code repository • code, crontabs, tests, etc • All code has its own tests • Tests run automatically all the time • If tests PASS - shared code gets updated • If tests FAIL - we get an email • e.g. Jenkins CI, Travis CI, …
  • 27. Flexible • Lots of (good) tests gives you… • Confidence to make changes • Confidence to accept changes from others • Continuous Integration lets you… • See your own changes in “beta” sites • MVC web applications make it easy to… • Create powerful, interactive web pages
  • 28. Scalable • Move web code to Virtual Machine (VM) • SVN all common code in central repo • Puppet maintains machine requirements • Varnish web cache, load balance, failover
  • 29. VM server Code Repo (SVN) orengobuild64 orengocatalyst01 orengocatalyst02 orengocatalyst03 User 2 User 1 Develop, Build / Test, Deploy DEVELOP BUILD / TEST DEPLOY
  • 31. Challenge 2 • Monitor SGE jobs (qstat without the typing) • https://github.com/sillitoe/sge-monitor