Skip to content

Deployment

Francisco Maria Calisto edited this page Feb 10, 2020 · 7 revisions

Deployment is the definition of all activities that make a system available for use. The present information will describe our deployment organization concerning this repository. Also important to follow, more information is available on both deployer and env-files repositories.

Index

Deployment Servers ↑

Our Deployment Servers infrastructure is a collection of configured clusters, servers, and middleware that collaborate to provide hosting of our several modules, testing and production scenes. Deployment servers vary significantly, but, broadly, the tiers are bookended by starting at local (local), development (dev), internal (internal) or integration (integration) and ending at stage (stage), test (test) or production (prod). A common 4-tier architecture is: (i) development; (ii) testing; (iii) staging; or (iv) production. However, we are using a more extended architecture from the common deploy architecture. Further information regarding our several Deployment Environments is detailed.

Introduction ↑

Integration means that part of the server's software is delivered to the source as a whole, in order to discover the problems of development as early as possible: deployment is the delivery of code as soon as possible to the operational development/testing servers for early testing. Delivery means that the source is delivered to the stakeholder as soon as possible. In order to find out early issues in the production environment.

If we wait until all things have been completed before we deliver them to the next link, all the problems will only erupt at the end and the cost of the solution will be enormous or even impossible to solve. The so-called continuation, that is, each completed a complete part, delivered to the next link, found that the problem can be adjusted immediately. The problem is not amplified to other parts and the following links. To better understand the definitions of Deployment Environment follow the article on Wikipedia.

Information ↑

Env Server Hostname Port From
DICOM Main DICOM Main DICOM Main
local local local localhost localhost 8048 8086 8148
dev cromo cromo 10.0.1.23 10.0.1.23 8045 8083 8145
inter. companhia companhia 10.0.2.72 10.0.2.72 8047 8085 8147
integ. companhia cromo 10.0.2.72 10.0.1.23 8046 8084 8146
stage cromo cromo 10.0.1.23 10.0.1.23 8044 8082 8144
test cromo cromo 10.0.1.23 10.0.1.23 8043 8081 8143
prod cromo cromo 10.0.1.23 10.0.1.23 8042 8088 8142

Deployment Environments ↑

Before getting into the Deployment Environment, itself, we first have to understand the definition of Deployment. A Deployment is defined in our project as follows.

Twofold list of our Deployment definition:

  1. The set of repeatable, quantifiable and measurable activities that are performed within a specific operating Environment to successfully construct, deliver, and prepare a versioned of the project, so that we can deliver an Environment for test or use by its targeted Stakeholders or End Users, in our case, the last are Clinicians.

  2. The logistical act of testing, delivering or releasing a Release to targeted Stakeholders or End Users in a specific Environment.

Tiers ↑

Our finely-divided list of tiers:

Environment Tier Description
Local Developer's desktop/workstation.
Dev Development (sandbox) server. This is where unit testing is performed by the developer.
Internal Internal server testing. This is where internal testing is performed by the developer to garatee security of the tests since in this server there is no away to enter from outside.
Integration CI build target, or for research and developer team testing of side effects between two different servers communicating each other.
Stage This is the stage where interface testing is performed with the Research Team (Stakeholders). It is called a pre-user testing environment to test with the Research Team. Research team make sure that the new code will not have any impact on the existing functionality and they test major functionalities of the system once after deploying the new code in their respective environment.
Test This is the stage where interface testing is performed with the End Users. It is called a user testing environment to test with the End Users. End Users make sure that the new features are well integrated on the interface.
Production The production environment is the environment where users directly interact with.

While the actual frequency of Deployments by Environment may differ for different stages of the project, the following graph, shows an interesting pattern of our source. We use a Deployment Server to distribute content and configurations per each Deployment Environment, grouped into server classes. Our Deployment Environment can be full-fledged Environments or they can be just simple groups of configurations.

Important Links

Clone this wiki locally