diff --git a/docs/architecture/dtap/acceptance.md b/docs/architecture/dtap/acceptance.md index bc010f93e5ce4c0aa84ec57220c2a46df27567ee..c36f607092942912b1449b2bc980893aee01f9cf 100644 --- a/docs/architecture/dtap/acceptance.md +++ b/docs/architecture/dtap/acceptance.md @@ -1,3 +1,20 @@ # Acceptance environment -TBA +Once GAP components have been tested successfully in the test environment, they +are advanced to the UAT environment. In this environment, stakeholders from +other teams such as Network Engineering and Operations are able to perform their +own tests on the system. + +In the UAT environment, only full releases are deployed. This means that +development builds are not included in this environment. Devices targeted by GAP +are physical routers in the lab, to increase accuracy of integration testing. + +The UAT environment has been designed to mimic the ultimate production +environment as close as possible. To achieve this, all VMs are managed in the +same manner using Puppet, and external resources are configured identically. The +external service database is hosted on a distributed Postgres cluster, which is +provided by the DevOps team. The Redis instance is also a cluster, which again +comes from the DevOps team. + +Once testing has been completed, components are ready to move to the production +environment. diff --git a/docs/architecture/dtap/development.md b/docs/architecture/dtap/development.md new file mode 100644 index 0000000000000000000000000000000000000000..5bb94999b0a5512bf3f651c726d80075638237c0 --- /dev/null +++ b/docs/architecture/dtap/development.md @@ -0,0 +1,10 @@ +# Development environments + +For the development of different components of GAP, an environment is needed for +integration testing. This is done by making use of a Proxmox cluster in the +GÉANT lab environment, that facilitates different VMs for each developer. + +Inside a development VM, containerlab is used to emulate virtual routers of both +Juniper and Nokia. Port forwarding then enables the developer to run +applications such as GSO and LSO on their local machine, to help speed up the +development cycle. diff --git a/docs/architecture/dtap/index.md b/docs/architecture/dtap/index.md index 35cd1b5271b79fa473fb121a445c0b4a17fea922..6b21526b902d9e1e1d6ab703330f50b0b91fc0d6 100644 --- a/docs/architecture/dtap/index.md +++ b/docs/architecture/dtap/index.md @@ -1,3 +1,28 @@ # DTAP process -TBA +To stage the different environments used for testing all components of GAP, the +DTAP process ensures that software in the production environment is well-tested +and understood by all parties involved. + +For the deployment of GAP, a set of Ansible playbooks is used to prepare VMs, +install required dependencies, and set up the different components of GAP. There +are four different environments, with their major differences listed in the +table below. + +| Environment | Router topology | Component versioning | Used by | +|-------------|-----------------|----------------------|---------------------| +| Development | containerlab | - | GAP developers | +| Test | EVE-NG | 1.6dev135 | GAP developers | +| UAT | lab devices | 1.5 | Network Engineering | +| Production | production | 1.2 | Operations & OC | + +The development environment runs on a local machine of a developer, and is +therefore highly volatile and unstable. The test environment is less volatile, +but still contains the newest package versions that are merged into `develop`. +The UAT environment is more stable, and only contains released packages. This is +where integration testing with physical devices takes place. + +Once a combination of specific version numbers is deemed compatible and fully +functional, it is deployed as a whole in production. Production could therefore +be multiple releases behind UAT, if this combination of newer versions has not +been tested yet. diff --git a/docs/architecture/dtap/production.md b/docs/architecture/dtap/production.md index 701af60a9970947f644b4475e2b34b6f205859b8..fc6662c9fd738dc899af7b8ea65f6565cb3857ee 100644 --- a/docs/architecture/dtap/production.md +++ b/docs/architecture/dtap/production.md @@ -1,3 +1,11 @@ # Production environment -TBA +The production environment contains final, well-tested versions of GAP +components. + +This environment has been designed to be resilient and as stable as reasonably +possible. The used Postgres and Redis services are hosted in distributed +clusters, and GAP is deployed in three different VMs. These VMs share a virtual +IP address, where a specific VM is selected using `keepalived`. If one of the +components of GAP were to go down in one of the VMs, another VM will take over +without the end user experiencing any system downtime. diff --git a/docs/architecture/dtap/test.md b/docs/architecture/dtap/test.md index c28e3728ee193f93bb835db0f1d3ad50c2a66f5f..88f17e82c8dd4d401b051af1e5bb20111913f45d 100644 --- a/docs/architecture/dtap/test.md +++ b/docs/architecture/dtap/test.md @@ -1,3 +1,18 @@ # Test environment -TBA +Once development has taken place, and rudimentary unit and system testing was +successful, a merge request is opened in the relevant Git repository. Once this +merge request is approved and included in upstream, it will be on the `develop` +branch. + +The test environment is automatically re-deployed every hour on a VM +infrastructure in the GÉANT lab environment. This ensures that the test +environment always contains the newest versions of all components of GAP. + +The test environment is meant for the GOAT to test new functionality and +the stability of GAP. The routers that are targeted, are virtual routers managed +by an EVE-NG instance. Once testing in the test environment has been concluded +successfully, GAP components are ready to advance to the UAT environment. + +The test environment contains all development builds of components, following +semantic versioning principles. diff --git a/includes/glossary.md b/includes/glossary.md index a90eb0396cea91c2652d12e267e2c4565498e051..cc2000a0e4b0a2358008fbdf83919bdc241651eb 100644 --- a/includes/glossary.md +++ b/includes/glossary.md @@ -10,6 +10,7 @@ *[GA]: Access Port *[GAN]: Access Node *[GAP]: GÉANT Automation Platform +*[GOAT]: GÉANT Orchestration and Automation Team *[GP]: Physical Port *[GSO]: GÉANT Service Orchestrator *[GUI]: Graphical User Interface @@ -33,4 +34,6 @@ *[SNMP]: Simple Network Management Protocol *[SOT]: Source Of Truth *[TBA]: To be added +*[UAT]: User Acceptance Testing +*[VM]: Virtual Machine *[WFO]: Workflow Orchestrator diff --git a/mkdocs.yml b/mkdocs.yml index 12f6ce601c3234f3c8b791a0a32eb90e77373a73..538f53402283b2d5849acd2a6476cf03d909e3d3 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -58,6 +58,7 @@ nav: - LSO: architecture/components/lso/index.md - DTAP: - architecture/dtap/index.md + - Development: architecture/dtap/development.md - Test: architecture/dtap/test.md - Acceptance: architecture/dtap/acceptance.md - Production: architecture/dtap/production.md diff --git a/vale/styles/config/vocabularies/geant-jargon/accept.txt b/vale/styles/config/vocabularies/geant-jargon/accept.txt index b2a4c497527391b5cb8d59391f1c0c2613c3c6bc..1216a24ddbc3ac98f7fc7b62bae0ecab8f96e57b 100644 --- a/vale/styles/config/vocabularies/geant-jargon/accept.txt +++ b/vale/styles/config/vocabularies/geant-jargon/accept.txt @@ -4,10 +4,11 @@ address BSS CFS configuration as code -components? +[Cc]omponents? contains? GAP -GÉANT( Automation Platform)? +GÉANT Automation Platform +GOAT GSO IFS iptrunk_* diff --git a/vale/styles/config/vocabularies/technical-terms/accept.txt b/vale/styles/config/vocabularies/technical-terms/accept.txt index a07bba60fe00c8bbadef40ec766028ed1fc6a1dd..0c36825305cd7d739b515c4be87749dd96aa4cb9 100644 --- a/vale/styles/config/vocabularies/technical-terms/accept.txt +++ b/vale/styles/config/vocabularies/technical-terms/accept.txt @@ -8,6 +8,7 @@ DHCP DNS Dockerfile DTAP +EVE FXP GAN IGP @@ -21,9 +22,13 @@ MTTR MTU [Mm]ultipoint Netbox +Postgres +Proxmox REST|rest SDP SID SOT SNMP +UAT VLAN +VMs?