Artifactory acts as a proxy between your Maven client and the outside world. It caches remote artifacts so that you don't have to download them over and over again. It blocks unwanted (and sometimes security sensitive) external requests for internal artifacts, and controls how and where artifacts are deployed and by whom. Controlling these important factors is crucial when managing an enterprise artifact repository within an organization.
Artifactory is based on a unique architecture that enables it to serve artifacts quickly to thousands of users while guaranteeing the coherence and correctness of those artifacts and their attached metadata.
Artifactory's architecture is based on three main layers:
A Multi-HTTP Client layer
A storage layer based on the Java Content Repository standard
An HTTP connectivity layer that enables connectivity to other (remote) repositories
Artifactory offers multiple client layers, each customized for its unique usage scenario and special requirements in terms of functionality, data granularity and user API stability (internal vs published):
One of the prime design goals of Artifactory is to provide a consistently coherent repository based on solid architecture. The repository consistently and accurately reflects the actual state of your data. Artifactory eliminates the need to perform corrective actions, such as attribute rebuilding and re-indexing corruption fixes. Moreover, non-redundant metadata cannot be recovered and "healed" once lost or corrupted (e.g. who deployed an artifact, artifact popularity, artifact annotations, etc.)
Artifactory offers a consistently healthy, corruption-protected repository with continuously up-dated search indexes; something no other repository currently offers. Artifactory is based on Java Content Repository (JCR) standards and uses solid, field-proven Apache Jackrabbit implementation. In addition to binary artifacts, the OpenMetadata(TM) layer can allow any arbitrary XML metadata to be attached to a node (an artifact or a folder) and be fully-indexed and accessible. We currently use this internally for all our metadata management, but this functionality is already fully available via REST and will be further opened up for client use in the future.
When you employ a transactional database for JCR storage (preferably MySQL), we guarantee that each artifact and its attached metadata will always be in sync. At the same time, scheduled incremental backups to file system ensure that your data is never locked up.
Artifactory offers smart connectivity to other HTTP repositories, including, of course, Maven 1 and other Artifactory repositories.
When proxying other Artifactories, you can create a grid or mesh of servers in which each user manages his own set of artifacts. This is particularly useful for multi-teams organizations, where teams depend on being able to build upon the work of other teams.
Artifactory is packaged as a standard Java EE Web Application. The Artifactory WAR file can be deployed into any standard Servlet Container, such as Tomcat, WebSphere, JBoss, Glassfish, Jetty, Resin, etc.
When SSL or proxying is required, Artifactory fully supports deployment behind Apache HTTPD and takes into account the fact that it is being proxied.