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.
While Node.js garners much attention, significant improvements are being made to Domino and NSF databases as well. When combined with the power of JavaScript, this brings Domino apps to the next level. You can use the Domino database just like any other database, but enjoy the security that a Domino database offers. Note, that you can use Angular as well, not just Node.js. Essentially, the goal is take the stack of Domino web server and make it available to Node.js to process.
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.
Container Clustering
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
ReactJS
ReactJS is a library, not a platform, so you can decide and model everything as you see fit, on a user interface that is well managed. It’s lightning fast and the real benefit is it’s like designing a Node.js app without using traditional Javascript, so you move faster.
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
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 .
API:
- 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
Microservice Patterns
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”
and Micro-Services:
- 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.