Main > Reference Manual > Introduction > Architecture > User interface and database layer

FrePPLe includes a user interface based on the impressive Django web application framework (see http://www.djangoproject.com). It allows quick and easy definition of the data model, automatically creates an administration user interface and allows you to construct performant and scalable web sites.

The user interface can be deployed in different architectures, depending on the requirements. With increasing levels of scalability and performance, we can basically distinguish the following three main deployment scenario's.

The user interface and its database structure can easily be customized to meet your own business processes and data sources.

Standalone/all-in-one application

The windows installer includes a standalone application.
The application is an all-in-one installation containing:

  • Python interpreter and Python libraries.
  • Web server CherryPy, written in Python.
  • Django web application.
  • Database SQLite, which is part of the Python standard library.

This one-stop installation package (< 15MB download) makes it very easy to get started with frePPLe, as a tutorial or for educational purposes. It is also suitable to deploy frePPLe as an application to an end user's PC.

This configuration should only be used for single-user access to small models.

Python application and a database

The SQLite database does an excellent job for relatively small datasets. But for the complex reporting queries used by frePPLe it is no match for the "real" database applications.
As a first measure for increasing scalability and performance, the database needs to be separated out. FrePPLe supports the Oracle, MySQL and postgreSQL databases.

With this configuration a few users can simultanenously access frePPle.

Apache web server with mod_wsgi and a database

This is the preferred deployment option for production servers!

Apache is now used as the web server. Using the mod_wsgi module it executes the Django Python code.
The Apache server assures excellent scalability, performance and security.

In most cases a single Apache web server and a single database server will suffice.
For high-volume deployments with plenty of concurrent users additional components can be added to guarantee the right scalability and availability of the system: memory caches, separated web servers for static and dynamic content, replicated databases, load balanced web servers, enterprise authentication such as LDAP, ...