How and why I built a Micro-Services Universal REST Platform for Enterprise Content Management Systems
I'm an experienced Java architect and developer with 20 years of experience. I've created more than 10 open source and commercial products. I've been part of more than 50 high scale projects for large accounts in industries such as: banking, finance, retail, transportation, heathcare and energy.
The problem I wanted to solve
In order to integrate with Enterprise Content Management Systems, ECM/Archiving such as FileNet, CM8, CMOD among others, developers spend hundreds of hours carrying a huge risk, which in general causes the project to fail.
Document Oriented businesses, such as banks, have many applications with which to integrate with the ECM/Archiving solutions. These use different technologies that add to the complexicity of such solutions and puts the project in the red for a long period of time because of the risk associated with it.
What is REST API for Content Management Systems?
RESTify is an IBM product, which I built, to provide a simple configuration-based REST API and Services creation — with a plugable architecture to extend — with no coding required to integrate with CMOD, CM8, and FileNet.
RESTify Micro-Container ( Built from Scrash )
Jetty as an HTTP Listener, not an App server
Redis for caching and pubsub notifications
ElasticSearch for Tracking and Analytics datastore
Flink, Plotly for Data aggregation and Charts
Json-spec REST Architecture Style
The process of building RESTify for ECMs
1- I've created RESTify Micro-Container, able to scale to thousands of Docker containers to support the instant pick loads in some periods of the year.
2- I've implemented REST architecture style and provided a specification similar to OpenAPI with a back-end flow configuration.
3- I've created the plugins architecture and artifacts to support additional ECMs on-the-go without changing the base REST/Micro-Services of RESTify.
4- I've implemented the CMOD and CM8 plugins.
Challenges I faced
It's not that easy to provide a config-based API for heterogeneous ECMs systems. The architecture is key. It should be flexible/plugable.
Performance was also an essential brick. I've used a couple of algorithms and stack software to provide the best results possible on benchmark.
As usual, in every Enterprise project, you learn a lot. Enterprise solutions are complicated because of the integration points to tackle.
Tips and advice
Never use SDKs provided by a software vendor. Always wrap with your own specification/implementation such as IoC, REST API, or even an ESB to avoid hard application dependency.
Final thoughts and next steps
In the next few posts, I'll try to get into some fun projects on AI and machine learning. Keep in touch.