Réflexions au sujet des notions d'"environnement", "instance" et "workspace"

Journal du mercredi 30 octobre 2024 à 11:18

Je suis en train d'implémenter un repository playground privé pour un client et je me demande comment bien nommer les choses.

Je souhaite implémenter dans ce playground, des dossiers qui permettent d'interagir avec différents types d'instance.

Je me suis interrogé sur les notions de « environnement » et « d'instance ». Je connais ces termes, mais j'ai souhaité étudier leur différence avec précision.

Environnement :

(Informatique) Ensemble des matériels et logiciels sur lesquels sont exécutés les programmes d'une application.

  • "On travaille dans un environnement Linux."

(Informatique) Environnement.

  • "The primary prompt is changed to help us remember that this session is inside a chroot environment."

In computer programming, a runtime system or runtime environment is a sub-system that exists in the computer where a program is created, as well as in the computers where the program is intended to be run.

In software deployment, an environment or tier is a computer system or set of systems in which a computer program or software component is deployed and executed. In simple cases, such as developing and immediately executing a program on the same machine, there may be a single environment, but in industrial use, the development environment (where changes are originally made) and production environment (what end users use) are separated, often with several stages in between. This structured release management process allows phased deployment (rollout), testing, and rollback in case of problems.

Instance :

  • Article Wiktionary Français : instance

(Réseaux informatiques) Copie d’un logiciel fournissant un service sur un réseau.

  • "PeerTube est un logiciel. Ce logiciel, des personnes spécialisées (disons… Bernadette, l’université X et le club de karaté Y) peuvent l’installer sur un serveur. Cela donnera une « instance », c’est à dire un hébergement de PeerTube. Concrètement, héberger une instance crée un site web (disons BernadetTube.fr, UniversiTube.org ou KarateTube.net) sur lequel on peut regarder des vidéos et créer un compte pour interagir ou uploader ses propres contenus."
  • Instance (computer science), referring to any running process or to an object as an instance of a class.
  • Instance can refer to a single virtual machine in a virtualized or cloud computing environment that provides operating-system-level virtualization.

ChatGPT me dit :

Dans un contexte DevOps, les termes environment et instance font référence à des concepts distincts :

  • Un environment regroupe les ressources et la configuration nécessaires pour une étape spécifique du cycle de vie de développement.
  • Une instance est une unité d'exécution de l'application, isolée, et potentiellement en plusieurs exemplaires au sein d'un même environnement.

À la suite de cette réflexion, j'ai implémenté un exemple de repository contenant plusieurs workspaces, permettant d'interagir avec des instances de différents types d'environnement.

Repository : project-workspaces-skeleton

Je l'ai organisé de la façon suivante :

$ tree
├── development
│   ├── local-workspace
│   │   └── README.md
│   └── remote-workspace
│       └── README.md
├── production
│   ├── local-workspace
│   │   └── README.md
│   └── remote-workspace
│       └── README.md
├── README.md
└── staging
    ├── local-workspace
    │   └── README.md
    └── remote-workspace
        └── README.md

Voici quelques extraits du contenu des README.md.

development/local-workspace/README.md :

Local development environment workspace

Introduction

This workspace allows you locally launch the equivalent of remote development environment instances (applications, databases, etc.), within the GitOps paradigm.

This workspace provides scripts for injecting and initializing a database with demo data, or for copying the contents of remote instances to the local database.

This workspace is the right place if you want to work (fix bug, improve…) in isolation (without disturbing your colleagues) on development-type configuration changes.

This workspace is also useful for tinkering to better understand how this environment works.

Workspace configuration

...

production/remote-workspace/README.md :

Remote production environment workspace

Be careful when using scripts in this workspace, as you risk breaking production instances!

Introduction

This workspace allows you to interact with remote production environment instances (applications, databases, etc.) within the GitOps paradigm.

This workspace is designed, among other things, to store the configuration of production instances.
It includes scripts for deploying this configuration to remote instances and analysing the differences between the theoretical or desired configuration and that actually deployed.
With Git, these configurations are versioned, making it possible to track changes made over time on these instances.
Furthermore, this paradigm allows modifications to be proposed in the form of Pull Requests, simplifying collaborative work.

Workspace configuration

...

Je pense que ce skeleton va me servir de base pour de futurs repository de projets.


Journaux liées à cette note :

Ma définition et objectif d'un "Workspace" dans un "environnement de développement" ? #dev-kit, #software-engineering

Dans une note précédente, j'ai donné ma définition et les objectifs d'un "Development kit".
Dans cette note, je souhaite donner ma définition et les objectifs d'un workspace dans un "environnements de développement".

Un workspace est un dossier, qui contient des paramètres de configuration spécifiques — généralement sous la forme de variables d'environnements — qui permettent d'interagir sur une ou plusieurs instances de services, d'un environnement précis.
Généralement ce dossier contient des guides d'instructions pour réaliser des actions spécifiques sur le workspace et des scripts de type "helpers".

Exemple de workspaces :

  • staging/remote-workspace/ : un workspace utilisé pour effectuer des actions sur les services déployés en staging sur des serveurs distants ;
  • staging/local-workspace/ : un workspace d'installer localement des services dans les mêmes conditions que sur l'environnement staging ;
  • development/local-workspace/ : un dossier workspace, qui permet de travailler — contribuer — localement sur le ou les services.

Voir aussi :