From b82a205b740840e2a7d0fa3eecf3e361ca73416e Mon Sep 17 00:00:00 2001 From: Marc Radulescu Date: Wed, 26 Nov 2014 18:51:12 +0100 Subject: added office analogy to help understanding of gitlab architecture --- doc/development/architecture.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/doc/development/architecture.md b/doc/development/architecture.md index c4813d22eaa..109b21ab2a5 100644 --- a/doc/development/architecture.md +++ b/doc/development/architecture.md @@ -8,6 +8,38 @@ EE releases are available not long after CE releases. To obtain the GitLab EE th Both EE and CE require an add-on component called gitlab-shell. It is obtained from the [gitlab-shell repository](https://gitlab.com/gitlab-org/gitlab-shell/tree/master). New versions are usually tags but staying on the master branch will give you the latest stable version. New releases are generally around the same time as GitLab CE releases with exception for informal security updates deemed critical. +## Physical office analogy + +You can imagine GitLab as a physical office. + +**The repositories** are the goods GitLab handling. +They can be stored in a warehouse. +This can be either a hard disk, or something more complex, such as a NFS filesystem; + +**NginX** acts like the front-desk. +Users come to NginX and request actions to be done by workers in the office; + +**The database** is a series of metal file cabinets with information on: + - The goods in the warehouse (metadata, issues, merge requests etc); + - The users coming to the front desk (permissions) + +**Redis** is a [communication board with “cubby holes”](http://cache3.asset-cache.net/gc/52392865-mail-lies-in-cubby-holes-in-the-trenton-post-gettyimages.jpg?v=1&c=IWSAsset&k=2&d=OCUJ5gVf7YdJQI2Xhkc2QMDTqXzgg%2Fa7CPCCcA9Ug%2BfL2iMdhkcAYaLLAievbZlwJI9YEbpjb1pB2Fh7Fge3%2FA%3D%3D) that can contain tasks for office workers; + +**Sidekiq** is a worker that primarily handles sending out emails. +It takes tasks from the Redis communication board; + +**A Unicorn worker** is a worker that handles quick/mundane tasks. +They work with the communication board (Redis). +Their job description: + - check permissions by checking the user session stored in a Redis “cubby hole”; + - make tasks for Sidekiq; + - fetch stuff from the warehouse or move things around in there; + +**Gitlab-shell** is a third kind of worker that takes orders from a fax machine (SSH) instead of the front desk (HTTP). +Gitlab-shell communicates with Sidekiq via the “communication board” (Redis), and asks quick questions of the Unicorn workers either directly or via the front desk. + +**GitLab Enterprise Edition (the application)** is the collection of processes and business practices that the office is run by. + ## System Layout When referring to ~git in the pictures it means the home directory of the git user which is typically /home/git. -- cgit v1.2.1 From 8ccaee19792ac10dffd7a86be0835f2ea5674d0e Mon Sep 17 00:00:00 2001 From: Marc Radulescu Date: Wed, 26 Nov 2014 20:54:42 +0100 Subject: replaced hotlink --- doc/development/architecture.md | 2 +- doc/development/cubby_holes.jpg | Bin 0 -> 132815 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 doc/development/cubby_holes.jpg diff --git a/doc/development/architecture.md b/doc/development/architecture.md index 109b21ab2a5..68c813d4339 100644 --- a/doc/development/architecture.md +++ b/doc/development/architecture.md @@ -23,7 +23,7 @@ Users come to NginX and request actions to be done by workers in the office; - The goods in the warehouse (metadata, issues, merge requests etc); - The users coming to the front desk (permissions) -**Redis** is a [communication board with “cubby holes”](http://cache3.asset-cache.net/gc/52392865-mail-lies-in-cubby-holes-in-the-trenton-post-gettyimages.jpg?v=1&c=IWSAsset&k=2&d=OCUJ5gVf7YdJQI2Xhkc2QMDTqXzgg%2Fa7CPCCcA9Ug%2BfL2iMdhkcAYaLLAievbZlwJI9YEbpjb1pB2Fh7Fge3%2FA%3D%3D) that can contain tasks for office workers; +**Redis** is a [communication board with “cubby holes”](https://dev.gitlab.org/gitlab/gitlabhq/blob/master/doc/development/cubby_holes.jpg) that can contain tasks for office workers; **Sidekiq** is a worker that primarily handles sending out emails. It takes tasks from the Redis communication board; diff --git a/doc/development/cubby_holes.jpg b/doc/development/cubby_holes.jpg new file mode 100644 index 00000000000..afbb58bb950 Binary files /dev/null and b/doc/development/cubby_holes.jpg differ -- cgit v1.2.1 From c85d4af88921aba31afd39c3403fe2d41381c2ca Mon Sep 17 00:00:00 2001 From: Marc Radulescu Date: Thu, 27 Nov 2014 10:24:19 +0100 Subject: remove unnecessarry image --- doc/development/architecture.md | 2 +- doc/development/cubby_holes.jpg | Bin 132815 -> 0 bytes 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 doc/development/cubby_holes.jpg diff --git a/doc/development/architecture.md b/doc/development/architecture.md index 68c813d4339..209182e7742 100644 --- a/doc/development/architecture.md +++ b/doc/development/architecture.md @@ -23,7 +23,7 @@ Users come to NginX and request actions to be done by workers in the office; - The goods in the warehouse (metadata, issues, merge requests etc); - The users coming to the front desk (permissions) -**Redis** is a [communication board with “cubby holes”](https://dev.gitlab.org/gitlab/gitlabhq/blob/master/doc/development/cubby_holes.jpg) that can contain tasks for office workers; +**Redis** is a communication board with “cubby holes” that can contain tasks for office workers; **Sidekiq** is a worker that primarily handles sending out emails. It takes tasks from the Redis communication board; diff --git a/doc/development/cubby_holes.jpg b/doc/development/cubby_holes.jpg deleted file mode 100644 index afbb58bb950..00000000000 Binary files a/doc/development/cubby_holes.jpg and /dev/null differ -- cgit v1.2.1