|
|
| Line 1: | |||
| + | = Data Tier = | ||
| + | == Relational Database == | ||
| + | Your relational database is a critical element for performance and disaster recovery. The provided Derby | ||
| + | database, while sufficient for proof-of-concept work, is generally insufficient for the enterprise. Fullfeatured | ||
| + | databases like Oracle, MS SQL Server, or MySQL are better options. Ideally, the database | ||
| + | âwhichever is usedâshould be configured for high-availability, high-performance, and be backed-up | ||
| + | regularly. | ||
| + | 10-20 GB of database storage should be sufficient for most environments. For Oracle, an architecture | ||
| + | based on Oracle RAC is recommended; for Microsoft SQL Server, a clustered configuration is preferred; | ||
| + | for MySQL, utilize MySQL Cluster. | ||
| + | == File StorageâCodeStation == | ||
| + | The data tier also provides log file and Codestation artifact storage. Artifacts represent deployable items | ||
| + | such as files, images, databases, configuration materials, or anything else associated with a software | ||
| + | project. By default, these are stored in the var subdirectory in the uDeploy server installation directory. | ||
| + | In an enterprise environment, the default installation might not be ideal, see the section called âRelocating | ||
| + | Codestationâ for a discussion about enterprise options. | ||
| + | uDeploy's secure and tamper-proof artifact repository ensures that deployed components are identical to | ||
| + | those tested in preproduction environments. Without the repository, artifacts would have to be pulled from | ||
| + | network shares or some other system, increasing both security risks and the potential for error. | ||
| + | The artifact repository uses content addressable storage to maximize efficiency while minimizing disk | ||
| + | use. The repository tracks file versions and maintains a complete history for all components. Maximizing | ||
| + | efficiency is important, since the artifact repository stores files that are much larger than source files. | ||
| + | Association of files with Components is built into the system. Without any configuration, each Component | ||
| + | gets its own area of the repository for its files. There is no chance of confusion or mix-up of files to | ||
| + | Components. And, each Component Package is mapped to a specific set of files and versions corresponding | ||
| + | to the Component. | ||
| + | The artifact repository comes with a client application that provides remote access to the repository. Using | ||
| + | the client, the user can add/modify files, create Packages, retrieve files, as well as view the history of | ||
| + | changes. The client application provides a file transfer capability that can be used to deliver files to target | ||
| + | servers during deployments. This built-in transfer mechanism verifies the integrity of all transferred files | ||
| + | against their expected cryptographic signatures, thus guaranteeing that files have not been corrupted during | ||
| + | transmission or tampered with during storage. In addition to the client application, the artifact repository | ||
| + | exposes REST-based web services. These services are used to build integrations between build systems | ||
| + | such as AnthillPro and uDeploy. Such integrations automatically place the artifacts produced by the build | ||
| + | process in the artifact repository, thus making the artifacts available for deployment. | ||
| + | === Relocating Codestation === | ||
| + | By default, the data tier's log files and Codestation artifacts are stored in the var subdirectory within the | ||
| + | uDeploy server directory. Ideally, this data should be stored on robust network storage that is regularly | ||
| + | synchronized with an off-site disaster recovery facility. In addition, the uDeploy server should have a fast | ||
| + | network connection to storage (agents do not need access to the storage location). In Unix environments, | ||
| + | you can use symbolic links from the var subdirectory to network storage. On Windows platforms there are | ||
| + | several options for redirecting logs and artifacts, including mklink (supported in Windows 7 and later). | ||
| + | Data Tier | ||
| + | 2 | ||
| + | If you want to relocate Codestation, relocate both the var directory as well as the \logs\store | ||
| + | directory. A good rule-of-thumb for determining Codestation storage requirements is: average | ||
| + | artifact size * number of versions imported per day * average number | ||
| + | of days before cleanup | ||
| + | Distributed teams should also take advantage of uDeploy location-specific Codestation proxies to improve | ||
| + | performance and lower WAN usage. | ||
| + | == Data Center Configuration == | ||
| + | This section provides several installation recommendations. | ||
| + | === Cold Standby === | ||
| + | uDeploy employs the cold standby HA strategy for the application tier. When the primary system fails, | ||
| + | the cold standby is brought online and promoted to primary server. Once online, the standby reestablishes | ||
| + | connections with all agents, performs recovery, and proceeds with any queued processes. Because the most | ||
| + | intense work is handed-off to agents, a high performance configuration should not have an agent installed | ||
| + | on the same hardware as the main server. | ||
| + | The uDeploy server aggressively utilizes threading and takes advantage of any additional CPU cores | ||
| + | assigned to it. A small to midrange server with 2-4 multi-core CPUs is ideal, but, because it is relatively | ||
| + | easy to move an existing uDeploy server installation to a new machine, starting small and scaling as needed | ||
| + | is a very legitimate strategy. The memory available to the application tier should also be increased from | ||
| + | the default 256 MB to something on the order of 1 GB. | ||
| + | === Platform Considerations === | ||
| + | uDeploy agents are platform agnostic, and can be installed on anything that provides a Java 1.5 JDK. | ||
| + | The server process is also platform agnostic. Our customer base includes large uDeploy installations on | ||
| + | Windows, Solaris, AIX, HP-UX, other Unix flavors and various Linux platforms, all running successfully. | ||
| + | We have seen somewhat better performance from Unix and Linux operating systems, but recommend | ||
| + | installing on the platform with which you are most familiar and comfortable. | ||
| + | Recommended Server Installation | ||
| + | ⢠Two server-class machines | ||
| + | UrbanCode recommends two machines for the server: a primary machine and a standby for fail-over. | ||
| + | In addition, the database should be hosted on a separate machine. | ||
| + | ⢠Separate machine for the database | ||
| + | ⢠Processor 2-4 CPUs, 2+ cores for each. | ||
| + | ⢠RAM 8 GB | ||
| + | ⢠Storage Individual requirements depend on usage, retention policies, and application types. In general, | ||
| + | the larger number of artifacts kept in uDeploy's artifact repository (CodeStation), the more storage | ||
| + | needed. | ||
| + | ⢠Network Gigabit (1000) Ethernet with low-latency to the database. | ||
| + | Data Tier | ||
| + | 3 | ||
| + | Agent Minimum Requirements | ||
| + | Designed to be minimally intrusive, agents require 64-256 MB of memory and 100 MB of disk space. | ||
| + | Additional requirements are determined by the processes the agent will run. Agents should be installed on | ||
| + | separate machines. For evaluation purposes, a good option is to install an agent on a virtual machine. | ||
| + | === Typical Data Center Configurations === | ||
| + | Most organizations configure the data tier with network storage and a clustered database. The service tier | ||
| + | performs best when it's on a dedicated, stable, multi-core machine with a fast connection to the data tier. | ||
| + | A standby machine should be maintained and kept ready in case the primary server goes down. | ||
| + | === Recovery Using a Database Back-up === | ||
| + | To prepare a back-up of your uDeploy installation, copy the database and server files. Back-up the server | ||
| + | by copying the server directory along with all subdirectories. This ensures that you can revert to a server | ||
| + | version that matches your configuration, while also preserving your artifact repository. | ||
| + | If you are not using the Derby database, copy the database too. If you are using Derby, it was copied along | ||
| + | with the server files. | ||
| + | Install the back-up using the original path, or some configuration files will need to be changed. | ||