Changes between Version 17 and Version 18 of DeveloperGuidelines/Architecture


Ignore:
Timestamp:
01/14/16 10:21:53 (9 years ago)
Author:
Fran Boon
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DeveloperGuidelines/Architecture

    v17 v18  
    11= Architecture =
    2 
    32Sahana Eden uses the MVC (Model-View-Controller) design with a [wiki:S3#RESTfulAPI WebServices] architecture
    43
    5 == Stack ==
    6 Sahana Eden is designed to be deployed flexibly from lightweight laptop installs to highly-available cloud deployments.
     4== Conceptual View ==
     5Sahana Eden is a highly flexible tool which is used in many different scenarios, so there is no single conceptual view. This varies heavily between deployments.
     6
     7== Module View ==
     8Sahana Eden is designed to be deployed flexibly from lightweight laptop installs to highly-available cloud deployments, so it supports a range of stacks.
    79
    810||Web Server || Apache || Other web servers can also be used, such as Cherokee. ||
     
    1315||Operating System|| Linux (Debian recommended) || Windows and Mac OS X are possible, but only recommended for developer & single-user environments. ||
    1416
    15 == Data Model ==
     17== Execution View ==
     18Being a lightweight system, most Sahana deployments are simple Client-Server:
     19* A single (usually Virtual) Server contains the 3 tiers of Web, Application & Database
    1620
    17 === ER Diagrams ===
     21If there is a need to scale beyond this, then the 3 tiers can be separated onto different servers, each of which can be duplicated for performance & redundancy:
     22* InstallationGuidelines/Cluster
     23
     24== Code View ==
     25Sahana Eden uses the MVC (Model-View-Controller) design
     26
     27Folder layout is shown here:
     28* http://en.flossmanuals.net/sahana-eden/installation/
     29
     30Note: Models are actualkly stored in {{{modules/s3db}} to allow conditional loading.
     31
     32=== Builds ===
     33Since Python is an interpreted language, there isn't a need to do builds when editing Python code on a developer machine. There is a 'comppile' script for server-based deployments and CSS/JS are minified using their build script:
     34* DeveloperGuidelines/Minify
     35Compile & Builds are quick (<1 min & <5 mins)
     36
     37=== Release Process ===
     38* SysAdmin/ReleaseProcess
     39
     40=== Testing ===
     41Testing is done using !UnitTest, Twill, Selenium and Travis CI:
     42* DeveloperGuidelines/Testing
     43
     44=== Data Model ===
     45
     46==== ER Diagrams ====
    1847We don't maintain ER diagrams for the whole system as it would be too large to be meaningful. Instead we recommend building your own for the relevant modules for your deployment using one of these tools:
    1948* MySQL Workbench
    2049* dbwrench (for PostgreSQL)
    2150
    22 === !Key/Value Tables ===
     51==== !Key/Value Tables ====
    2352In order to allow extensibility of the core schema, many resources have key/value 'tag' tables associated with them.
    2453