In the latest webinar on the upcoming Domino Version 10 release, Paul Withers from Intec Systems Ltd , John Jardin from Agilit-e and Jason Gary from HCL Technologies focus on the development opportunities of Node.js and Domino.
So, why are Node.js and Domino a match?
Node.js in V10
Let’s see how Node.js and Domino bring unique benefits to the table, such as:
- Reuse of existing code and data
- New app opportunities
- Future proof, modern ecosystems
- Abundant skills
Node.js offers a unique opportunity to develop new apps based on Domino.
The architecture: there is no communication directly to the NSF. The communication is made through the API gateway. None of this has been done through Domino Designer and this is a request from Domino developers that will be addressed.
The next great thing that is new is Container Clustering, which offers a different approach. You don’t need to build 3rd party technologies into Domino. You have a bunch of echnologies that exist as a sidecar to a Domino environment, with each one existing independently as a container. To top all of that up, all the communication is done through APIs.
Here is how you can approach things:
- 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
When analyzing REST vsAPI you will notice that:
API-first approach means:
- Greater control
- 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
Wherever the database has no control over what is given, the API gateway enables a greater control over your database, meaning more planning. Someone might pass in that API without adding some needed info so you need to make sure that you have added all the needed parameters.
When comparing REST to API Cont you will see that there are some security considerations to be checked:
- 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
NODE=RED is an integration tool for wiring together APIs and online services, which is available on IBM Cloud, local Node.js app or Docker. (You should note that Docker containers not aware of host’s “localhost” or other containers)
You can schedule tasks via Inject node (or Big Timer) and use additional nodes for e.g. Watson Services, Connections. One other thing you might like is that basic authentication can be set and the flows can be imported / exported as JSON.
Just to summarize a bit, NODE-RED and API means FLEXIBILITY .
- XAgent / SmartNSF / or REST endpoint
- Use Xots for background processing
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
When talking about Microservice Patterns you have :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
- Easier to test for “code coverage”
- Define which micro-functions can become services to 3rd party platforms and applications
- Create API Endpoints that trigger your microfunctions
- Ensure a strong security layer for 3rd parties to interface with before triggering your services
As you might imagine IBM does not plan to stop here. All these new and exiting things that Domino 10 will bring will help developers give legacy apps a new face. IBM does not plan to stop here. For the future these are some of the things we can expect:
- 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
Previous IBM Domino v10 Roadmap webinars are still available to be viewed on demand.