SlideShare uma empresa Scribd logo
1 de 41
Baixar para ler offline
8598 TIPS AND TRICKS:
DOMINO AND JAVASCRIPT
DEVELOPMENT MASTERCLASS
Paul Withers, Intec Systems Ltd
John Jardin, Agilit-e
Think 2018 #IBMThink
PAUL WITHERS
ICS Developer, Intec Systems
OpenNTF Board Member
Lifetime IBM Champion
@paulswithers
Notes
Developer
XPages
Developer
Java Developer
Microservices
Developer
JOHN JARDIN
CTO, Agilit-e and Ukuvuma
IBM Champion (Cloud and ICS)
Guy who head bangs to Chainsmokers
@JohnJardinCodes
Integration &
Cloud Architect
XPages
Developer
DevOps
Engineer
AI Programming
AGENDA
- Introduction
- Domino as a datastore and API Gateway
- What about scheduled tasks?
- Microservices For Domino
- Container Clustering
- ReactJS
INTRODUCTION
THIS SESSION?
IS NOT:
- How to write your app using XYZ JavaScript
framework and package it in the NSF
- A first step in ultimately migrating away from a Notes
and Domino ecosystem
IS:
- About using Domino as the datastore and master
API Gateway for a microservice architecture
- About embracing new tools and technologies
- About a shift in mind-set
DOMINO THE MONOLITH?
Domino for Directory Management
Domino TLS
Domino HTTP Server / Port 1352
NoSQL Data Store (NSF)
UI, MVC and Data (NSF)
Domino languages for workflow (LS / SSJS / Java)
nupdate for indexing
Domino replication / clustering
Standard templates for auditing (log.nsf etc.)
Domino SMTP for mail routing
THE REALITY
LDAP as an alternative for Directory Management
nginx / IBM HTTP Server on top of Domino
ODBC / JDBC / LEI / agents processing flat files
Web Services / agents to connect externally
UI and MVC in an XPages NSF, data in another NSF
Lotus Workflow for BPM
Third-party tools for better auditing (incl. OpenLog)
Export to data warehouse / NotesSQL for reporting
Mail routing via non-Domino SMTP server
MUTATO NOMINE DE TE FABULA NARRATUR
There are similarities to a microservice architecture,
just differences of scale
- Custom workflow around ERP processes
- Custom integration for multiple non-Domino
systems
- Configuration pulled from external systems
CHANGE YOUR THINKING
Pros
- Greater flexibility
- Best of breed
- Increased standardisation
Cons
- Code for failure
- Step outside comfort zone
- More integration points
DEMO
Kubernetes ClusterDomino
NSF
Store
NSF
Store
NSF
Store
NSF
Catalog
API Gateway
(OSGi Java
Servlet)
Node-RED
Web Socket Server
Agilit-e
React App Istio
DOMINO AS A
DATASTORE AND API
GATEWAY
DOMINO REST OPTIONS
DAS (Domino Access Services)
validation / visibility concerns
XAgents
viewState=“nostate”
allows caching in applicationScope
SmartNSF
written using Domain Specific Language
ODA Starter Servlet
develop in Eclipse, local Domino server
development and deployment without Domino Designer
allows powerful caching for better performance
Darwino Microservices
Newsflash: Domino10 brings NodeJS, dominoDB, LoopBack,
(Node-RED)
REST VS API
API-first approach means
- More planning up-front
- Longer initial development lifecycle
- Increased portability
- Better separation between database and interface
- Easier extensibility into other systems
Code for failure and “bad data” – ON BOTH SIDES
- Missing parameters
- Invalid enums
REST VS API CONT.
Security considerations
- How to restrict access to apps: API key, OAuth?
- Use header / query params correctly
- Secure e.g. scheduled endpoints differently
- Additional logging of transactions?
Be careful what you expose
- Should your “status” field be editable
- Or just set via workflow methods
REST PERFORMANCE
REST = stateless, servlet = stateful
Cache with

- ConcurrentHashMap (think applicationScope)
- Google Guava Caches (better management)
- Cache Server (e.g. memcache, Ehcache)
DOCUMENTATION
Swagger / Open API Specification is standard
Swagger Editor online, local node.js app or Docker
OpenAPI 3.0 released July 2017
Samples not yet updated
Swagger 2.0 has many examples
Swagger Hub or tools like Mermade will convert
(between the 2)
Swagger UI allows testing against actual server
Swagger mock server can be created for UI dev
CREATING A SWAGGER DEFINITION
Write as YAML or JSON
YAML – no quotes around strings, no
commas, no curly braces
operationIds can be added
If used, required on all for that path
Use enums for options
OpenAPI 3.0 allows examples, but clarify and add
value
“Framework for good documentation”, does not
guarantee good documentation
TESTING
Various REST service tools are available
- Postman (Electron desktop app)
- RestClient plugin for Firefox
JUST USE NODE-RED!
HTTP REQUEST TYPES
GET – Read data (No body data allowed)
POST – Submit data (Read/Write)
PUT – Replacing entire document data
PATCH – Minor update to existing data
PATCH not enabled by default on Domino
DELETE – Deleting Records (No body data allowed)
HTTP STATUS CODES
1xx – Received and understood, stand by

2xx – Received, understood and accepted
3xx – Redirecting
4xx – You did something wrong!
5xx – We did something wrong!
See Wikipedia
HTTP STATUS CODES CONT.
200 – OK
202 – Accepted for processing
302 – URL found but server is redirecting
400 – Bad request
401 – Unauthorised
403 – Forbidden
404 – Not found
405 – Method not allowed
500 – Internal server error
WHAT ABOUT
SCHEDULED TASKS?
SCHEDULED TASKS
Scheduled Agents
NSF only, language constraints (LS or Painful
Java)
DOTS
Server only, deployment constraints
How about a different approach?
API + NODE-RED = FLEXIBILITY
API
XAgent / SmartNSF / or REST endpoint
Use Xots for background processing
Utility methods added to ODA to boilerplate
code
Node-RED – Installable alongside Domino with NodeJS
Scheduling of flows that includes Web APIs
Other schedulers would work, as long as they
can call a Web API
NODE-RED
An integration tool for wiring together APIs and
online services
Available on IBM Cloud, local node.js app or Docker
Note: Docker containers not aware of host’s
“localhost” or other containers
Schedule tasks via Inject node (or Big Timer)
Additional nodes for e.g. Watson Services
Basic authentication can be set
Flows can be imported / exported as JSON
DASHBOARDS
INTEGRATING PRIVATE / PUBLIC
“Private” needs to be made “public”
ngrok provides secure tunnels
cmder is a good console emulator for Windows
MICROSERVICES
FOR DOMINO
MICROSERVICE PATTERNS
‱ Micro-Functions
‱ Breakdown functions into re-usable/modular
code blocks
‱ Each function should do one thing and do it
well
‱ Simplify and optimize the code within each
function
‱ A function shouldn’t contain more than 80-
100 lines of code
‱ Develop ”Pure Functions” whenever possible
MICROSERVICE PATTERNS CONT.
‱ Micro-Services
‱ Define which micro-functions can become
services to 3rd party platforms and
applications
‱ Create API Endpoints that trigger your micro-
functions
‱ Ensure a strong security layer for 3rd parties to
interface with before triggering your services
A DIFFERENT APPROACH
‱ Don’t build 3rd party technologies into Domino
‱ Have these technologies exist as a sidecar to a
Domino environment
‱ Each technology or service existing
independently as a container
‱ All communication occurs using APIs
A DIFFERENT APPROACH CONT.
‱ Example 1: ReactJS User Interface
‱ Develop React UI using NodeJS and Webpack
‱ In Domino, create API Endpoints for all relevant calls or
use DAS
‱ Deploy React App as a standalone container
‱ Example 2: Web Socket Server
‱ Create Web Socket Server using socket.io and NodeJS
‱ In Domino, include socket.io for client-side
communication
‱ Create Web Socket events for all relevant
communication
‱ Deploy Web Socket Server as standalone container
CONTAINER
CLUSTERING
CONTAINER CLUSTERING
‱ Cluster all relevant containers using Kubernetes
‱ Run Kubernetes as a sidecar to your Domino
environment
‱ IBM Cloud Private provides enterprise-level container
management using Kubernetes
‱ Minikube can be used for development and testing
environments (low availability)
‱ Inject new services and containers into cluster as
and when needed
‱ Manage integration, security, testing and more with
Istio
BENEFITS OF CONTAINER
CLUSTERING
‱ High availability
‱ Seamless disaster recovery
‱ Horizontal and vertical scaling
‱ Continuous delivery
‱ No downtime during updates and upgrades
‱ CPU and Memory can be assigned and
managed per container/container group
REACTJS
WHAT IS REACTJS
‱ A JavaScript library for building user interfaces
‱ React is NOT a framework
‱ React is the “V” of MVC (Model/View/Controller)
‱ HTML is placed in JavaScript classes to create
Web Components
‱ This is similar to Custom Controls in XPages
‱ React makes use of a Virtual DOM and Diffing
PLATFORM AGNOSTIC
‱ React exists as a platform-agnostic solution
‱ Webpack and Babel compile React to a single
JS file
‱ The ”create-react-app” module provides all
required build tools
‱ A typical React dev environment:
‱ Atom/VS Code (Editor)
‱ NodeJS
‱ ExpressJS
‱ Webpack
FUTURE IDEAS
- Add JUnit tests
- Add Node-RED test flows
- Extend Watson Workspace with Raspberry Pi to
create ToDo via speech
- Split app to show one ToDo store at a time
- Create scheduler to post offline-created ToDos
- Post ToDo from IoT flow if above a threshold
- Create Node-RED dashboards for ToDos
- Update React app layout to fit nicely on mobile
THANK YOU AND QUESTIONS?
Paul Withers
Intec Systems Ltd
http://www.intec.co.uk/blog
@paulswithers
http://watsonwork.me/pwit
hers@intec.co.uk
John Jardin
Agilit-e
Website: https://www.agilite.io
Blog: http://bleedingcode.com
Twitter: @JohnJardinCodes

Mais conteĂșdo relacionado

Mais procurados

DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing Environment
DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing EnvironmentDCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing Environment
DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing EnvironmentDocker, Inc.
 
Setting Up Development Environment For Google App Engine & Python | Talentica
Setting Up Development Environment For Google App Engine & Python | TalenticaSetting Up Development Environment For Google App Engine & Python | Talentica
Setting Up Development Environment For Google App Engine & Python | TalenticaTalentica Software
 
docker : how to deploy Digital Experience in a container drinking a cup of co...
docker : how to deploy Digital Experience in a container drinking a cup of co...docker : how to deploy Digital Experience in a container drinking a cup of co...
docker : how to deploy Digital Experience in a container drinking a cup of co...Matteo Bisi
 
NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...
NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...
NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...Frank van der Linden
 
ASP.NET: Present and future
ASP.NET: Present and futureASP.NET: Present and future
ASP.NET: Present and futureHrvoje Hudoletnjak
 
Debugging the Web with Fiddler
Debugging the Web with FiddlerDebugging the Web with Fiddler
Debugging the Web with FiddlerIdo Flatow
 
Docker for .NET Developers
Docker for .NET DevelopersDocker for .NET Developers
Docker for .NET DevelopersTaswar Bhatti
 
ASP.NET Core 1.0: Understanding ASP.NET Core 1.0 (ASP.NET 5)
ASP.NET Core 1.0: Understanding ASP.NET Core 1.0 (ASP.NET 5) ASP.NET Core 1.0: Understanding ASP.NET Core 1.0 (ASP.NET 5)
ASP.NET Core 1.0: Understanding ASP.NET Core 1.0 (ASP.NET 5) WinWire Technologies Inc
 
Social Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and DominoSocial Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and DominoPaul Withers
 
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...Jesse Gallagher
 
CollabSphere 2018: How to build your SmartCloud Notes hybrid environment
CollabSphere 2018: How to build your SmartCloud Notes hybrid environmentCollabSphere 2018: How to build your SmartCloud Notes hybrid environment
CollabSphere 2018: How to build your SmartCloud Notes hybrid environmentDavid Hablewitz
 
Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Seven Habits of Highly Effective Jenkins Users (2014 edition!)Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Seven Habits of Highly Effective Jenkins Users (2014 edition!)Andrew Bayer
 
Microservices - java ee vs spring boot and spring cloud
Microservices - java ee vs spring boot and spring cloudMicroservices - java ee vs spring boot and spring cloud
Microservices - java ee vs spring boot and spring cloudBen Wilcock
 
EF Core (RC2)
EF Core (RC2)EF Core (RC2)
EF Core (RC2)Ido Flatow
 
Jenkins and AWS DevOps Tools
Jenkins and AWS DevOps ToolsJenkins and AWS DevOps Tools
Jenkins and AWS DevOps ToolsJimmy Ray
 
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...E. Camden Fisher
 
Continuous Delivery to Amazon ECS
Continuous Delivery to Amazon ECSContinuous Delivery to Amazon ECS
Continuous Delivery to Amazon ECSAmazon Web Services
 
Infrastructure as Data with Ansible
Infrastructure as Data with AnsibleInfrastructure as Data with Ansible
Infrastructure as Data with AnsibleCarlo Bonamico
 
watir-webdriver
watir-webdriverwatir-webdriver
watir-webdriverAmit DEWAN
 
.Net Core - not your daddy's dotnet
.Net Core - not your daddy's dotnet.Net Core - not your daddy's dotnet
.Net Core - not your daddy's dotnetRick van den Bosch
 

Mais procurados (20)

DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing Environment
DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing EnvironmentDCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing Environment
DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing Environment
 
Setting Up Development Environment For Google App Engine & Python | Talentica
Setting Up Development Environment For Google App Engine & Python | TalenticaSetting Up Development Environment For Google App Engine & Python | Talentica
Setting Up Development Environment For Google App Engine & Python | Talentica
 
docker : how to deploy Digital Experience in a container drinking a cup of co...
docker : how to deploy Digital Experience in a container drinking a cup of co...docker : how to deploy Digital Experience in a container drinking a cup of co...
docker : how to deploy Digital Experience in a container drinking a cup of co...
 
NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...
NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...
NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...
 
ASP.NET: Present and future
ASP.NET: Present and futureASP.NET: Present and future
ASP.NET: Present and future
 
Debugging the Web with Fiddler
Debugging the Web with FiddlerDebugging the Web with Fiddler
Debugging the Web with Fiddler
 
Docker for .NET Developers
Docker for .NET DevelopersDocker for .NET Developers
Docker for .NET Developers
 
ASP.NET Core 1.0: Understanding ASP.NET Core 1.0 (ASP.NET 5)
ASP.NET Core 1.0: Understanding ASP.NET Core 1.0 (ASP.NET 5) ASP.NET Core 1.0: Understanding ASP.NET Core 1.0 (ASP.NET 5)
ASP.NET Core 1.0: Understanding ASP.NET Core 1.0 (ASP.NET 5)
 
Social Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and DominoSocial Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and Domino
 
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
 
CollabSphere 2018: How to build your SmartCloud Notes hybrid environment
CollabSphere 2018: How to build your SmartCloud Notes hybrid environmentCollabSphere 2018: How to build your SmartCloud Notes hybrid environment
CollabSphere 2018: How to build your SmartCloud Notes hybrid environment
 
Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Seven Habits of Highly Effective Jenkins Users (2014 edition!)Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Seven Habits of Highly Effective Jenkins Users (2014 edition!)
 
Microservices - java ee vs spring boot and spring cloud
Microservices - java ee vs spring boot and spring cloudMicroservices - java ee vs spring boot and spring cloud
Microservices - java ee vs spring boot and spring cloud
 
EF Core (RC2)
EF Core (RC2)EF Core (RC2)
EF Core (RC2)
 
Jenkins and AWS DevOps Tools
Jenkins and AWS DevOps ToolsJenkins and AWS DevOps Tools
Jenkins and AWS DevOps Tools
 
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
 
Continuous Delivery to Amazon ECS
Continuous Delivery to Amazon ECSContinuous Delivery to Amazon ECS
Continuous Delivery to Amazon ECS
 
Infrastructure as Data with Ansible
Infrastructure as Data with AnsibleInfrastructure as Data with Ansible
Infrastructure as Data with Ansible
 
watir-webdriver
watir-webdriverwatir-webdriver
watir-webdriver
 
.Net Core - not your daddy's dotnet
.Net Core - not your daddy's dotnet.Net Core - not your daddy's dotnet
.Net Core - not your daddy's dotnet
 

Semelhante a IBM Think Session 8598 Domino and JavaScript Development MasterClass

Open shift and docker - october,2014
Open shift and docker - october,2014Open shift and docker - october,2014
Open shift and docker - october,2014Hojoong Kim
 
AWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAmazon Web Services
 
56k.cloud training
56k.cloud training56k.cloud training
56k.cloud trainingBrian Christner
 
Docker dev ops for cd meetup 12-14
Docker dev ops for cd meetup 12-14Docker dev ops for cd meetup 12-14
Docker dev ops for cd meetup 12-14Simon Storm
 
OSDC 2018 | Three years running containers with Kubernetes in Production by T...
OSDC 2018 | Three years running containers with Kubernetes in Production by T...OSDC 2018 | Three years running containers with Kubernetes in Production by T...
OSDC 2018 | Three years running containers with Kubernetes in Production by T...NETWAYS
 
AWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAmazon Web Services
 
.NET Cloud-Native Bootcamp- Los Angeles
.NET Cloud-Native Bootcamp- Los Angeles.NET Cloud-Native Bootcamp- Los Angeles
.NET Cloud-Native Bootcamp- Los AngelesVMware Tanzu
 
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill ...
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill ...Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill ...
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill ...CodeMill digital skills
 
Cloud compiler - Minor Project by students of CBPGEC
Cloud compiler - Minor Project by students of CBPGEC  Cloud compiler - Minor Project by students of CBPGEC
Cloud compiler - Minor Project by students of CBPGEC vipin kumar
 
Introduction to Kubernetes
Introduction to KubernetesIntroduction to Kubernetes
Introduction to KubernetesVishal Biyani
 
Effective Kubernetes - Is Kubernetes the new Linux? Is the new Application Se...
Effective Kubernetes - Is Kubernetes the new Linux? Is the new Application Se...Effective Kubernetes - Is Kubernetes the new Linux? Is the new Application Se...
Effective Kubernetes - Is Kubernetes the new Linux? Is the new Application Se...Wojciech BarczyƄski
 
What's New in Docker - February 2017
What's New in Docker - February 2017What's New in Docker - February 2017
What's New in Docker - February 2017Patrick Chanezon
 
Aws-What You Need to Know_Simon Elisha
Aws-What You Need to Know_Simon ElishaAws-What You Need to Know_Simon Elisha
Aws-What You Need to Know_Simon ElishaHelen Rogers
 
Austin Web Architecture
Austin Web ArchitectureAustin Web Architecture
Austin Web Architecturejoaquincasares
 
Social Photos - My presentation at Microsoft Tech Day
Social Photos - My presentation at Microsoft Tech DaySocial Photos - My presentation at Microsoft Tech Day
Social Photos - My presentation at Microsoft Tech DayTechMaster Vietnam
 
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...Emerson Eduardo Rodrigues Von Staffen
 
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...Amazon Web Services
 
Docker - Demo on PHP Application deployment
Docker - Demo on PHP Application deployment Docker - Demo on PHP Application deployment
Docker - Demo on PHP Application deployment Arun prasath
 
Integration in the age of DevOps
Integration in the age of DevOpsIntegration in the age of DevOps
Integration in the age of DevOpsAlbert Wong
 

Semelhante a IBM Think Session 8598 Domino and JavaScript Development MasterClass (20)

Open shift and docker - october,2014
Open shift and docker - october,2014Open shift and docker - october,2014
Open shift and docker - october,2014
 
AWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for Government
 
56k.cloud training
56k.cloud training56k.cloud training
56k.cloud training
 
Docker dev ops for cd meetup 12-14
Docker dev ops for cd meetup 12-14Docker dev ops for cd meetup 12-14
Docker dev ops for cd meetup 12-14
 
OSDC 2018 | Three years running containers with Kubernetes in Production by T...
OSDC 2018 | Three years running containers with Kubernetes in Production by T...OSDC 2018 | Three years running containers with Kubernetes in Production by T...
OSDC 2018 | Three years running containers with Kubernetes in Production by T...
 
AWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for Government
 
.NET Cloud-Native Bootcamp- Los Angeles
.NET Cloud-Native Bootcamp- Los Angeles.NET Cloud-Native Bootcamp- Los Angeles
.NET Cloud-Native Bootcamp- Los Angeles
 
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill ...
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill ...Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill ...
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill ...
 
Cloud compiler - Minor Project by students of CBPGEC
Cloud compiler - Minor Project by students of CBPGEC  Cloud compiler - Minor Project by students of CBPGEC
Cloud compiler - Minor Project by students of CBPGEC
 
Cont0519
Cont0519Cont0519
Cont0519
 
Introduction to Kubernetes
Introduction to KubernetesIntroduction to Kubernetes
Introduction to Kubernetes
 
Effective Kubernetes - Is Kubernetes the new Linux? Is the new Application Se...
Effective Kubernetes - Is Kubernetes the new Linux? Is the new Application Se...Effective Kubernetes - Is Kubernetes the new Linux? Is the new Application Se...
Effective Kubernetes - Is Kubernetes the new Linux? Is the new Application Se...
 
What's New in Docker - February 2017
What's New in Docker - February 2017What's New in Docker - February 2017
What's New in Docker - February 2017
 
Aws-What You Need to Know_Simon Elisha
Aws-What You Need to Know_Simon ElishaAws-What You Need to Know_Simon Elisha
Aws-What You Need to Know_Simon Elisha
 
Austin Web Architecture
Austin Web ArchitectureAustin Web Architecture
Austin Web Architecture
 
Social Photos - My presentation at Microsoft Tech Day
Social Photos - My presentation at Microsoft Tech DaySocial Photos - My presentation at Microsoft Tech Day
Social Photos - My presentation at Microsoft Tech Day
 
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
 
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
 
Docker - Demo on PHP Application deployment
Docker - Demo on PHP Application deployment Docker - Demo on PHP Application deployment
Docker - Demo on PHP Application deployment
 
Integration in the age of DevOps
Integration in the age of DevOpsIntegration in the age of DevOps
Integration in the age of DevOps
 

Mais de Paul Withers

Engage 2019: Modernising Your Domino and XPages Applications
Engage 2019: Modernising Your Domino and XPages Applications Engage 2019: Modernising Your Domino and XPages Applications
Engage 2019: Modernising Your Domino and XPages Applications Paul Withers
 
Engage 2019: AI What Is It Good For
Engage 2019: AI What Is It Good ForEngage 2019: AI What Is It Good For
Engage 2019: AI What Is It Good ForPaul Withers
 
Social Connections 14 - ICS Integration with Node-RED and Open Source
Social Connections 14 - ICS Integration with Node-RED and Open SourceSocial Connections 14 - ICS Integration with Node-RED and Open Source
Social Connections 14 - ICS Integration with Node-RED and Open SourcePaul Withers
 
ICONUK 2018 - Do You Wanna Build a Chatbot
ICONUK 2018 - Do You Wanna Build a ChatbotICONUK 2018 - Do You Wanna Build a Chatbot
ICONUK 2018 - Do You Wanna Build a ChatbotPaul Withers
 
OpenNTF Domino API (ODA): Super-Charging Domino Development
OpenNTF Domino API (ODA): Super-Charging Domino DevelopmentOpenNTF Domino API (ODA): Super-Charging Domino Development
OpenNTF Domino API (ODA): Super-Charging Domino DevelopmentPaul Withers
 
AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...
AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...
AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...Paul Withers
 
ICON UK 2015 - ODA and CrossWorlds
ICON UK 2015 - ODA and CrossWorldsICON UK 2015 - ODA and CrossWorlds
ICON UK 2015 - ODA and CrossWorldsPaul Withers
 
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...Paul Withers
 
IBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and ScalabilityIBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and ScalabilityPaul Withers
 
OpenNTF Domino API - Overview Introduction
OpenNTF Domino API - Overview IntroductionOpenNTF Domino API - Overview Introduction
OpenNTF Domino API - Overview IntroductionPaul Withers
 
What's New and Next in OpenNTF Domino API (ICON UK 2014)
What's New and Next in OpenNTF Domino API (ICON UK 2014)What's New and Next in OpenNTF Domino API (ICON UK 2014)
What's New and Next in OpenNTF Domino API (ICON UK 2014)Paul Withers
 
From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...
From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...
From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...Paul Withers
 
Engage 2014 OpenNTF Domino API Slides
Engage 2014 OpenNTF Domino API SlidesEngage 2014 OpenNTF Domino API Slides
Engage 2014 OpenNTF Domino API SlidesPaul Withers
 
IBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages Heaven
IBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages HeavenIBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages Heaven
IBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages HeavenPaul Withers
 
Embracing the power of the notes client
Embracing the power of the notes clientEmbracing the power of the notes client
Embracing the power of the notes clientPaul Withers
 
Beyond Domino Designer
Beyond Domino DesignerBeyond Domino Designer
Beyond Domino DesignerPaul Withers
 
DanNotes 2013: OpenNTF Domino API
DanNotes 2013: OpenNTF Domino APIDanNotes 2013: OpenNTF Domino API
DanNotes 2013: OpenNTF Domino APIPaul Withers
 
BP206 It's Not Herculean: 12 Tasks Made Easier with IBM Domino XPages
BP206 It's Not Herculean: 12 Tasks Made Easier with IBM Domino XPagesBP206 It's Not Herculean: 12 Tasks Made Easier with IBM Domino XPages
BP206 It's Not Herculean: 12 Tasks Made Easier with IBM Domino XPagesPaul Withers
 

Mais de Paul Withers (20)

Engage 2019: Modernising Your Domino and XPages Applications
Engage 2019: Modernising Your Domino and XPages Applications Engage 2019: Modernising Your Domino and XPages Applications
Engage 2019: Modernising Your Domino and XPages Applications
 
Engage 2019: AI What Is It Good For
Engage 2019: AI What Is It Good ForEngage 2019: AI What Is It Good For
Engage 2019: AI What Is It Good For
 
Social Connections 14 - ICS Integration with Node-RED and Open Source
Social Connections 14 - ICS Integration with Node-RED and Open SourceSocial Connections 14 - ICS Integration with Node-RED and Open Source
Social Connections 14 - ICS Integration with Node-RED and Open Source
 
ICONUK 2018 - Do You Wanna Build a Chatbot
ICONUK 2018 - Do You Wanna Build a ChatbotICONUK 2018 - Do You Wanna Build a Chatbot
ICONUK 2018 - Do You Wanna Build a Chatbot
 
GraphQL 101
GraphQL 101GraphQL 101
GraphQL 101
 
GraphQL 101
GraphQL 101GraphQL 101
GraphQL 101
 
OpenNTF Domino API (ODA): Super-Charging Domino Development
OpenNTF Domino API (ODA): Super-Charging Domino DevelopmentOpenNTF Domino API (ODA): Super-Charging Domino Development
OpenNTF Domino API (ODA): Super-Charging Domino Development
 
AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...
AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...
AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...
 
ICON UK 2015 - ODA and CrossWorlds
ICON UK 2015 - ODA and CrossWorldsICON UK 2015 - ODA and CrossWorlds
ICON UK 2015 - ODA and CrossWorlds
 
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
 
IBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and ScalabilityIBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and Scalability
 
OpenNTF Domino API - Overview Introduction
OpenNTF Domino API - Overview IntroductionOpenNTF Domino API - Overview Introduction
OpenNTF Domino API - Overview Introduction
 
What's New and Next in OpenNTF Domino API (ICON UK 2014)
What's New and Next in OpenNTF Domino API (ICON UK 2014)What's New and Next in OpenNTF Domino API (ICON UK 2014)
What's New and Next in OpenNTF Domino API (ICON UK 2014)
 
From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...
From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...
From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...
 
Engage 2014 OpenNTF Domino API Slides
Engage 2014 OpenNTF Domino API SlidesEngage 2014 OpenNTF Domino API Slides
Engage 2014 OpenNTF Domino API Slides
 
IBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages Heaven
IBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages HeavenIBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages Heaven
IBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages Heaven
 
Embracing the power of the notes client
Embracing the power of the notes clientEmbracing the power of the notes client
Embracing the power of the notes client
 
Beyond Domino Designer
Beyond Domino DesignerBeyond Domino Designer
Beyond Domino Designer
 
DanNotes 2013: OpenNTF Domino API
DanNotes 2013: OpenNTF Domino APIDanNotes 2013: OpenNTF Domino API
DanNotes 2013: OpenNTF Domino API
 
BP206 It's Not Herculean: 12 Tasks Made Easier with IBM Domino XPages
BP206 It's Not Herculean: 12 Tasks Made Easier with IBM Domino XPagesBP206 It's Not Herculean: 12 Tasks Made Easier with IBM Domino XPages
BP206 It's Not Herculean: 12 Tasks Made Easier with IBM Domino XPages
 

Último

Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 

Último (20)

Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Call Girls In Mukherjee Nagar đŸ“± 9999965857 đŸ€© Delhi đŸ«Š HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar đŸ“±  9999965857  đŸ€© Delhi đŸ«Š HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar đŸ“±  9999965857  đŸ€© Delhi đŸ«Š HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar đŸ“± 9999965857 đŸ€© Delhi đŸ«Š HOT AND SEXY VVIP 🍎 SE...
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Vip Call Girls Noida âžĄïž Delhi âžĄïž 9999965857 No Advance 24HRS Live
Vip Call Girls Noida âžĄïž Delhi âžĄïž 9999965857 No Advance 24HRS LiveVip Call Girls Noida âžĄïž Delhi âžĄïž 9999965857 No Advance 24HRS Live
Vip Call Girls Noida âžĄïž Delhi âžĄïž 9999965857 No Advance 24HRS Live
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 

IBM Think Session 8598 Domino and JavaScript Development MasterClass

  • 1. 8598 TIPS AND TRICKS: DOMINO AND JAVASCRIPT DEVELOPMENT MASTERCLASS Paul Withers, Intec Systems Ltd John Jardin, Agilit-e Think 2018 #IBMThink
  • 2. PAUL WITHERS ICS Developer, Intec Systems OpenNTF Board Member Lifetime IBM Champion @paulswithers Notes Developer XPages Developer Java Developer Microservices Developer
  • 3. JOHN JARDIN CTO, Agilit-e and Ukuvuma IBM Champion (Cloud and ICS) Guy who head bangs to Chainsmokers @JohnJardinCodes Integration & Cloud Architect XPages Developer DevOps Engineer AI Programming
  • 4. AGENDA - Introduction - Domino as a datastore and API Gateway - What about scheduled tasks? - Microservices For Domino - Container Clustering - ReactJS
  • 6. THIS SESSION? IS NOT: - How to write your app using XYZ JavaScript framework and package it in the NSF - A first step in ultimately migrating away from a Notes and Domino ecosystem IS: - About using Domino as the datastore and master API Gateway for a microservice architecture - About embracing new tools and technologies - About a shift in mind-set
  • 7. DOMINO THE MONOLITH? Domino for Directory Management Domino TLS Domino HTTP Server / Port 1352 NoSQL Data Store (NSF) UI, MVC and Data (NSF) Domino languages for workflow (LS / SSJS / Java) nupdate for indexing Domino replication / clustering Standard templates for auditing (log.nsf etc.) Domino SMTP for mail routing
  • 8. THE REALITY LDAP as an alternative for Directory Management nginx / IBM HTTP Server on top of Domino ODBC / JDBC / LEI / agents processing flat files Web Services / agents to connect externally UI and MVC in an XPages NSF, data in another NSF Lotus Workflow for BPM Third-party tools for better auditing (incl. OpenLog) Export to data warehouse / NotesSQL for reporting Mail routing via non-Domino SMTP server
  • 9. MUTATO NOMINE DE TE FABULA NARRATUR There are similarities to a microservice architecture, just differences of scale - Custom workflow around ERP processes - Custom integration for multiple non-Domino systems - Configuration pulled from external systems
  • 10. CHANGE YOUR THINKING Pros - Greater flexibility - Best of breed - Increased standardisation Cons - Code for failure - Step outside comfort zone - More integration points
  • 11. DEMO
  • 12. Kubernetes ClusterDomino NSF Store NSF Store NSF Store NSF Catalog API Gateway (OSGi Java Servlet) Node-RED Web Socket Server Agilit-e React App Istio
  • 13. DOMINO AS A DATASTORE AND API GATEWAY
  • 14. DOMINO REST OPTIONS DAS (Domino Access Services) validation / visibility concerns XAgents viewState=“nostate” allows caching in applicationScope SmartNSF written using Domain Specific Language ODA Starter Servlet develop in Eclipse, local Domino server development and deployment without Domino Designer allows powerful caching for better performance Darwino Microservices Newsflash: Domino10 brings NodeJS, dominoDB, LoopBack, (Node-RED)
  • 15. REST VS API API-first approach means - More planning up-front - Longer initial development lifecycle - Increased portability - Better separation between database and interface - Easier extensibility into other systems Code for failure and “bad data” – ON BOTH SIDES - Missing parameters - Invalid enums
  • 16. REST VS API CONT. Security considerations - How to restrict access to apps: API key, OAuth? - Use header / query params correctly - Secure e.g. scheduled endpoints differently - Additional logging of transactions? Be careful what you expose - Should your “status” field be editable - Or just set via workflow methods
  • 17. REST PERFORMANCE REST = stateless, servlet = stateful Cache with
 - ConcurrentHashMap (think applicationScope) - Google Guava Caches (better management) - Cache Server (e.g. memcache, Ehcache)
  • 18. DOCUMENTATION Swagger / Open API Specification is standard Swagger Editor online, local node.js app or Docker OpenAPI 3.0 released July 2017 Samples not yet updated Swagger 2.0 has many examples Swagger Hub or tools like Mermade will convert (between the 2) Swagger UI allows testing against actual server Swagger mock server can be created for UI dev
  • 19. CREATING A SWAGGER DEFINITION Write as YAML or JSON YAML – no quotes around strings, no commas, no curly braces operationIds can be added If used, required on all for that path Use enums for options OpenAPI 3.0 allows examples, but clarify and add value “Framework for good documentation”, does not guarantee good documentation
  • 20. TESTING Various REST service tools are available - Postman (Electron desktop app) - RestClient plugin for Firefox JUST USE NODE-RED!
  • 21. HTTP REQUEST TYPES GET – Read data (No body data allowed) POST – Submit data (Read/Write) PUT – Replacing entire document data PATCH – Minor update to existing data PATCH not enabled by default on Domino DELETE – Deleting Records (No body data allowed)
  • 22. HTTP STATUS CODES 1xx – Received and understood, stand by
 2xx – Received, understood and accepted 3xx – Redirecting 4xx – You did something wrong! 5xx – We did something wrong! See Wikipedia
  • 23. HTTP STATUS CODES CONT. 200 – OK 202 – Accepted for processing 302 – URL found but server is redirecting 400 – Bad request 401 – Unauthorised 403 – Forbidden 404 – Not found 405 – Method not allowed 500 – Internal server error
  • 25. SCHEDULED TASKS Scheduled Agents NSF only, language constraints (LS or Painful Java) DOTS Server only, deployment constraints How about a different approach?
  • 26. API + NODE-RED = FLEXIBILITY API XAgent / SmartNSF / or REST endpoint Use Xots for background processing Utility methods added to ODA to boilerplate code Node-RED – Installable alongside Domino with NodeJS Scheduling of flows that includes Web APIs Other schedulers would work, as long as they can call a Web API
  • 27. NODE-RED An integration tool for wiring together APIs and online services Available on IBM Cloud, local node.js app or Docker Note: Docker containers not aware of host’s “localhost” or other containers Schedule tasks via Inject node (or Big Timer) Additional nodes for e.g. Watson Services Basic authentication can be set Flows can be imported / exported as JSON DASHBOARDS
  • 28. INTEGRATING PRIVATE / PUBLIC “Private” needs to be made “public” ngrok provides secure tunnels cmder is a good console emulator for Windows
  • 30. MICROSERVICE PATTERNS ‱ Micro-Functions ‱ Breakdown functions into re-usable/modular code blocks ‱ Each function should do one thing and do it well ‱ Simplify and optimize the code within each function ‱ A function shouldn’t contain more than 80- 100 lines of code ‱ Develop ”Pure Functions” whenever possible
  • 31. MICROSERVICE PATTERNS CONT. ‱ Micro-Services ‱ Define which micro-functions can become services to 3rd party platforms and applications ‱ Create API Endpoints that trigger your micro- functions ‱ Ensure a strong security layer for 3rd parties to interface with before triggering your services
  • 32. A DIFFERENT APPROACH ‱ Don’t build 3rd party technologies into Domino ‱ Have these technologies exist as a sidecar to a Domino environment ‱ Each technology or service existing independently as a container ‱ All communication occurs using APIs
  • 33. A DIFFERENT APPROACH CONT. ‱ Example 1: ReactJS User Interface ‱ Develop React UI using NodeJS and Webpack ‱ In Domino, create API Endpoints for all relevant calls or use DAS ‱ Deploy React App as a standalone container ‱ Example 2: Web Socket Server ‱ Create Web Socket Server using socket.io and NodeJS ‱ In Domino, include socket.io for client-side communication ‱ Create Web Socket events for all relevant communication ‱ Deploy Web Socket Server as standalone container
  • 35. CONTAINER CLUSTERING ‱ Cluster all relevant containers using Kubernetes ‱ Run Kubernetes as a sidecar to your Domino environment ‱ IBM Cloud Private provides enterprise-level container management using Kubernetes ‱ Minikube can be used for development and testing environments (low availability) ‱ Inject new services and containers into cluster as and when needed ‱ Manage integration, security, testing and more with Istio
  • 36. BENEFITS OF CONTAINER CLUSTERING ‱ High availability ‱ Seamless disaster recovery ‱ Horizontal and vertical scaling ‱ Continuous delivery ‱ No downtime during updates and upgrades ‱ CPU and Memory can be assigned and managed per container/container group
  • 38. WHAT IS REACTJS ‱ A JavaScript library for building user interfaces ‱ React is NOT a framework ‱ React is the “V” of MVC (Model/View/Controller) ‱ HTML is placed in JavaScript classes to create Web Components ‱ This is similar to Custom Controls in XPages ‱ React makes use of a Virtual DOM and Diffing
  • 39. PLATFORM AGNOSTIC ‱ React exists as a platform-agnostic solution ‱ Webpack and Babel compile React to a single JS file ‱ The ”create-react-app” module provides all required build tools ‱ A typical React dev environment: ‱ Atom/VS Code (Editor) ‱ NodeJS ‱ ExpressJS ‱ Webpack
  • 40. FUTURE IDEAS - Add JUnit tests - Add Node-RED test flows - Extend Watson Workspace with Raspberry Pi to create ToDo via speech - Split app to show one ToDo store at a time - Create scheduler to post offline-created ToDos - Post ToDo from IoT flow if above a threshold - Create Node-RED dashboards for ToDos - Update React app layout to fit nicely on mobile
  • 41. THANK YOU AND QUESTIONS? Paul Withers Intec Systems Ltd http://www.intec.co.uk/blog @paulswithers http://watsonwork.me/pwit hers@intec.co.uk John Jardin Agilit-e Website: https://www.agilite.io Blog: http://bleedingcode.com Twitter: @JohnJardinCodes