The sections below list certain best practices and key terminologies that may be needed for optimal use of the Fiorano platform. The first in the list is the Fiorano Architecture to help the administrator familiarize the Fiorano platform, as a better understanding of the platform architecture will help the administrator plan better and achieve an optimal deployment of the same. Rest in the sections consist of various runtime aspects of the platform and optimizing the message flows and resource utilization. Finally, the most important practice that needs to be kept in mind, that is, disaster recovery. Since disasters are not planned, the disaster recovery section lists certain features of the product that may be kept active at all times to help recover from nearly all types of failures.
Deployment
Deployment Architecture
Fiorano Architecture comprises of Fiorano Enterprise Server, Peer Service Containers installed across the network together with the centralized Management and Repository Server as well as Management tools. A typical Fioranom Deployment Architecture looks as in the figure below. Click the figure to know more.
The FES is the central controller of the Fiorano Network, acting as a monitoring agent for all the other Peers while ensuring information coherence. The FES is primarily a JMS Server (FioranoMQ Messaging Server) wrapped with additional role specific functionalities. The FES communicates with the FPS using the underlying JMS server and expose well defined JMX and Java API to communicate with the tools. Click the below image to read more.
Cloud
While using cloud environment to run Fiorano, you may require to make some changes to setup different modules in Fiorano. Refer the Cloud Setup section to go through the various changes required.
Document Tracking
It is recommended to use an external database for Document Tracking; refer the Document Tracking section to utilize the database availability options.
Memory Management
Optimize Memory
Although Fiorano ESB architecture scales very well in a distributed environment, adopt the strategies mentioned in the Optimizing Memory section to manage memory more effectively.
Tune Component Memory
To achieve stable, high throughput, and highly optimized memory usage of the Fiorano Environment, it is very important to tune the heap memory allocated to each service component and the Fiorano servers. Refer Tuning Component Memory section.
Also refer Component Configuration to restrict or expand memory used by a component based on the requirement by appending appropriate Maximum Heap Size (-Xms) and Initial Heap Size (-Xmx) values as JVM parameters. This section also covers the below sections:
- Using same JVM settings in Multiple Microservice Instances
- Using same JVM settings in Multiple Environments
- Change Default JVM Configurations for Separate Process Components
Manage Peer Server Memory
To avoid a class of serious problems that could occur because of improper configurations of the Virtual Machine (VM) on which the Server is running memory, tuning and management need to be done at the server. Problems of this nature are very hard to reproduce and can create a lot of confusion with regards to the server behavior. Refer the Managing Peer Server Memory section to manage peer server memory.
Use In-Memory Launch Mode
Use In Memory execution mode for components with less memory footprint such as XSLT and CBR. Server JVM will be used while using components in this mode. Refer the Using 'In Memory' Launch Mode section to understand how to use this mode.
Deleting Document Tracking (SBW documents) data
To create some disk space, you may schedule a deletion task for the old SBW documents that are tracked; refer How to schedule Deletion of SBW Documents section. This helps in avoiding issues like Low Disk Space error.
events are temporarily stored in persistent database that are created during runtime data of the Enterprise Server. After an event has been processed, it gets deleted from the temporary store. If these events are not able to be processed, the temporary datastore may grow to occupy a large amount of disk-space. To delete the data present in various profiles of Enterprise Server, clear Clearing ESB Server Database
Environment Management
Use Named Configuration
Configuration set for a particular service instance can be stored by a name to reuse the configuration in other service instances in future. Using named configuration support, configurations can be predefined and the name of the predefined configuration can be linked/transferred to all Service Instances. Though the actual configuration has only one location, as it is referred to by multiple Service Instances, making changes to the named configuration will affect all Service Instances automatically. So, to advance the process of Event Process Orchestration and Change Management within the Fiorano Event Processes, refer the Named configurations section.
Automate Migration process
When migrating from one environment to other, it is better to use CLI tools to automate the process. Refer Work with Command Line Interface (CLI)
Change Resources based on Environment property
To make changes to resource URLs (like URL in HTTPAdapters) based on environment in such scenarios, the environment value is provided as a JMS property in the message. It can be used in scripts/if-then-else funclets to adapt to the URL based on the environment. Refer Change Resources based on Environment property section to check how to do this.
Development
Event Process
Use Service Launch Order
To launch and/or stop microservices, present in an event process, in a predefined order use Service Launch Order.
Load Balancing
Used Load Balancing to distribute the messages to multiple business services for processing. To enable service-level load balancing on a service, run multiple instances of the service on the different ESB Peers and routes incoming data to the multiple running instances via a Distribution Service. Refer the Load Balancing section where an example is mentioned.
Scaling
It is critical to ensure that the platform scales both with current projects (likely in themselves to be highly distributed, probably across company boundaries) and with future growth. To address scalability issues refer the Scaling section
Components
Changing Business Logic
Customize Business logic of new components by modifying the logic. Refer the Modifying Business Logic section.
Samples
Fiorano provides an extensive set of samples which provide best practices to affect certain changes to the components generated using Fiorano SDK, like providing multiple ports, generating user defined CPS. Each of the samples are accompanied by a readme.txt which lists out the steps to make changes.
Security
Web Service Security
It is critical that web services which are exposed in Fiorano are secured properly. Security can be different for different types of web services and can be enforced at different levels.
Jetty Security
All SOAP and REST based web services in Fiorano are hosted in a Jetty Server. Jetty Server provides the baseline security for the web applications hosted. Refer Manage Jetty Security section to understand the best practices with respect securing Web Services hosted on Jetty.
SOAP Web Services
SOAP web services are hosted using the WSStub component. It is a good practice to secure these web services using WS Security standards. Refer Web Service Security example and components documentation
REST Services
In case of REST services, API keys can be used to restrict access to certain users. Configuration and usage of API keys are explained in Additional configuration section in RESTStub.
Application Security
Always define user permissions on Applications to control unauthorized access to sensitive information. To perform this, refer the Access Control List (ACL) based security section.
Improve the security of messages that flow between components through an active flow by adding Port or Route Encryption to the messages. Refer the Message Encryption section.
Server Security
Establish secure communication between Enterprise server and Peer server by configuring the protocol parameters in the server profiles; refer the Enable Server Level Security section.
Monitoring
Monitor using Event Process
Handle Errors using Exception Listener microservice
Utilize the capability of ExceptionListener component which acts as a global exception listener subscribing to exception messages occurring in any service component of any running event process. The Perform Error Handling section gives a brief description of its working.
Publish report in Windows Event Viewer
Windows users can enable to write Fiorano logs to Windows Event Viewer for convenience. Refer the Write Fiorano Logs to Windows Event Viewer section.
Monitor using Callouts
For more fine-grained monitoring of events happening in a flow, it is possible to define callouts at the port level. Refer the Configure SBW Callout section.
Document Tracking
The entire activities of microservices can be tracked using the Dashboard by enabling Document Tracking option.
Refer to the Document Tracking page to know how to
- enable Document Tracking in a Workflow of an Event Process
- create SBW Tables Manually (if the servers lack permissions to create SBW tables)
Refer Document Tracking in Dashboard to track them in the Dashboard.
System Management
Linux Level Configuration
Refer the Manage Linux System-level Configuration section.
Clone VM
For Virtual Machine (VM) users, use cloning to make copies of a virtual machine from an already configured machine; these copies reflect the entire file system (with the installation files etc), configuration and settings of the VM from which it is copied. Refer the Clone a Virtual Machine section.
Disaster Recovery
Re-inject Failed Documents
In case a component fails to process a message, doc tracking helps to re-inject this message into the system to make sure we do not lose content that needed processing; refer the Re-injecting Failed Documents section to perform this.
High Availability
The importance of 24X7 service availability and the growing importance of conducting real-time business are driving the demand for High Availability Enterprise Systems. The goal is to maximize system availability and eliminate any single point of failure. The High Availability section discusses the High Availability (HA) features provided by the Fiorano Platform.