FlexDeploy Architecture
FlexDeploy is a Java-based web application which requires an Application server (Tomcat) and an Oracle or PostgreSQL database. FlexDeploy is accessed by Browser and can be integrated with various Directory Servers for Authentication and Authorization, but you can also work with local security realm provided by FlexDeploy.
FlexDeploy uses built-in File System based Artifact Repository to store build artifacts like jar, ear, war, zip etc. Build artifacts are versioned and used during deployment.
FlexDeploy connects to target servers using SSH protocol and only requires Temporary Working Directory and Java for execution on target servers. SSH connectivity to Windows servers is established using Cygwin, i.e. Cygwin must be installed on Windows targets.
FlexDeploy can be installed On-Premise or in Cloud (AWS, Azure, Oracle) and can be used to perform Build / Deploy on targets in On-Premise or Cloud as only SSH connectivity is required. You can also use FlexDeploy Docker container from docker hub for installation.
FlexDeploy has plugin architecture which allows for integration with various technologies. FlexDeploy comes with many out of box plugins, but customers are free to developer their own plugins using Plugin SDK.
Database Tier
FlexDeploy requires one of the following Oracle databases, and any required license is not included with your FlexDeploy subscription.
- Oracle XE, version 11.2, 18, 19, 21 (although supported for production use, XE is generally used for trials and proof of concepts)
- Oracle Standard, version 11.2, 12.1, 12.2, 18, 19, 21
- Oracle Enterprise, version 11.2, 12.1, 12.2, 18, 19, 21
- PostgreSQL 11, 12, 13, 14
- Supported platforms - Any platform supported by specific database
Application Tier
FlexDeploy requires Tomcat 9.x. You must install FlexDeploy on only one application server process (i.e. cluster is not supported).
Supported platforms
- Microsoft Windows
Unix/Linux (and its variants, such as Oracle Enterprise Linux, Red Hat, Solaris, etc.)
Target Endpoints
FlexDeploy requires SSH connectivity using User and Password or SSH Key. Additionally, some minor items are required on target endpoints.
- Working folder for temporary files..
- JDK 6 or higher.
- Supported platforms
- Microsoft Windows
Unix/Linux (and its variants, such as Oracle Enterprise Linux, Red Hat, Solaris, AIX etc.)
- Mac OS
High Availability Considerations
Here are some guidelines on Active Passive configuration for FlexDeploy, as running more than one server process for FlexDeploy is not yet supported. You can choose to setup Cluster for Application or Database or Both.
- Install FlexDeploy application on two separate Physical Server or Virtual Machines.
- Tomcat
- Install two separate Tomcat as per Installation instructions.
- Both installation will have configuration for JDBC connection to RAC database.
- Tomcat
- Setup Database cluster for FlexDeploy. This would be RAC cluster for Oracle database. Follow guidelines setup by database vendor for clustering.
- Make sure to use JDBC connect string for database cluster nodes when defining Data Source definitions.
- Use shared file systems for the Artifact Repository directory and the plugins subdirectory of the server Working directory, so that active node and passive node will have access to the files.
- The Artifact Repository location is specified in the flexagon.fd.repository.root Java system property of the server.
- The Working Directory location is specified in the flexagon.fd.install.root Java system property of the server. There is no need to place the entire working directory on a shared file system. The requirement is for the plugins subdirectory only.
- Configure Load Balancer to route all FlexDeploy users to Active Application Server. You can automate the process of fail over to Passive node if necessary.
- Make sure that only one of the Application Server process is running. This is absolutely necessary even when Load Balancer is routing traffic to only one of the server.
- This can be achieved by leaving out some configuration details on the Passive node. For example, you can omit Data Source configuration on Passive node, so that it does not start processing request if it is started by mistake.
- style