There are many tools and solutions out there from many vendors for "Modernizing" a Notes application. But what does that really mean? In most cases, that means replacing the Notes application interface with a Web interface and making a better UI experience for the user.
But for us application modernization is not just about the front-end but also but how the data is collected, managed, stored and processed. How it integrates with outside third-party services. Most Domino application modernization leaves the data untouched in the same structure. XPages mimics the Notes application environment for a Web client versus a Notes client. This approach allows data to remain in place as it was defined. But as we all know, it also leaves a lot of useless code, views and wasted resources.
We wanted a defined framework, that allowed us to create applications more consistent with how the majority of modern Web applications are built but at the same time utilize the best parts of Domino. We are not just interested in "Modernizing a current Notes/Domino application" but building new enterprise applications that utilizes the key advantages that Domino uniquely has. Before we go any further lets look at what a Web server environment normally consist of. It may include:
- Web server
- Identity/Authenication server
- Load balancer
- Cluster manager
- Mail server ( for notifications )
- API server
- Integration server
- Application server
- Database server
We wanted to separate out the different server components and depending on our need replace those components will newer components that may utilize different technologies not found currently in Domino. This would allow us to Dockerize Domino easier in the future. By breaking up the server components, we can now look into replacing these components with other technologies that have better performance. For example, Nginx as a Web server has much higher performance than what Domino could ever be, the API server could be replaced with a form of Node/Loopback.io.
So in a typical iPhora installation there is a fix number of designated Domino databases each serving as an individual server component that makes up the iPhora server. A base installation includes:
- Web Server (Generates the UI interface)
- API server ( generates all the RESTFul APIs)
- Database server (JSON-based data store)
- File Database Manager (Manages all the files stored on the installation)
- Application server (contains all the business logic)
- Identity Server ( contains all the profiles and users info and works with the Domino Directory)
Security is our top priority not shear speed like other platforms. Regardless of who you are, users only have read access to the Web server database and the API database when access any application. All the rest of the databases, users have no access include administrators. CRUD is a definite NO NO. Users regardless whether they are only readers or administrators should NEVER have direct access to the data. Strict access control of data is done through a gateway with low level administration only done using our Notes-based client application.
One of our biggest challenges was transforming the Notes document database into a JSON-based data store similarity found in MongoDB or CouchDB. We used CouchDB as our design model, but discovered that we needed our own approach. We will discuss this is part 3.