Commit 64fce7ff authored by onknows's avatar onknows
Browse files

concept dev env & seat

C2-1620
parent 9f3ee385
Loading
Loading
Loading
Loading
Loading
+3 −10
Original line number Diff line number Diff line
@@ -28,16 +28,9 @@ provisioning local nodes based on the included reference implementation. The
second is a hosted [seat](g): a development environment provided by C2 Platform
on C2 Platform infrastructure.

These two variants share the same underlying engineering approach. The local
variant emphasizes maximum autonomy and fast local iteration on hardware the
engineer manages directly. The hosted seat variant emphasizes managed
availability and access without requiring a dedicated high-end developer laptop.
A seat can be reached from almost any workplace through a URL, which is
especially valuable in constrained or air-gapped customer environments where
internet access is limited but access to an approved internal URL is possible.
The automation used to provision hosted seats is open source as well, so
organizations can reuse the same approach to deploy comparable managed
environments of their own.
For the hosted variant, see {{< rellink path="/docs/concepts/dev/seat" desc=false >}}.
Both variants follow the same underlying engineering approach, and the
automation used to provision hosted seats is open source as well.

The adoption of a local _development environment_ offers numerous benefits in
contrast to relying on data center-based infrastructure, where VMs are created
+27 −4
Original line number Diff line number Diff line
@@ -20,10 +20,10 @@ C2 Platform-hosted environment running on C2 Platform infrastructure.

## Overview

A seat is a managed development environment made available to users for
[Ansible engineering](g). It typically includes a [development desktop](g), the
required local tooling, project checkout, and the supporting configuration
needed to develop, test, and run Ansible automation effectively.
A seat is a managed [development environment](g) made available to users for
[Ansible engineering](g). It includes a [development desktop](g), the required
local tooling, project checkout, and the supporting configuration needed to
develop, test, and run Ansible automation effectively.

The key advantage of a seat is not that it is more ready to use than a locally
installed development environment. A local C2 Platform development environment
@@ -37,6 +37,29 @@ through a URL to the hosted environment. This is especially useful in
constrained or air-gapped customer contexts where internet access is limited but
access to an approved internal URL is still possible.

## Collaboration and Learning

A local [development environment](g) that relies on local virtualization is
normally a single-user setup. In contrast, a hosted seat can also support shared
remote use. Users keep their own account, while the hosted setup allows them to
work together in the same shared [development desktop](g).

A hosted seat can also start from an individual [development desktop](g)
assigned to one person. That person can share access with one or more other
users by generating a URL with read-write or read-only access, depending on the
collaboration scenario.

This makes a seat particularly effective for pair programming and mob
programming.[^collaboration] It also works well for demonstrations,
onboarding, and hands-on learning. It supports the C2 Platform goal of being
not only an environment for developing open-source automation, but also a
practical learning environment in which engineers can work together and learn
by doing.

[^collaboration]: Pair programming usually involves two engineers working
    together on the same task. Mob programming extends the same principle to a
    small group working together on the same [development desktop](g).

## Relationship to the Local Variant

Within C2 Platform there are two main realization forms of the development
+56 −33
Original line number Diff line number Diff line
---
categories: ["Begrip"]
categories: ["Concept"]
tags: [laptop, ubuntu]
title: Ontwikkelomgeving
linkTitle: Ontwikkelomgeving
@@ -8,51 +8,74 @@ coauthor:
   context:
      - rellink: /docs/concepts/dev/pseudo
description: >
  Een lokale open-source ontwikkelomgeving stimuleert Ansible-automatisering
  door maximale flexibiliteit en productiviteit te bieden voor snelle iteratie,
  testen en onafhankelijkheid van externe infrastructuurteams of zelfs andere
  engineers in het team vanwege gedeelde omgevingen.
   De ontwikkelomgeving is een belangrijk C2 Platform-begrip voor Ansible
   engineering: een reproduceerbare setup die kan worden gerealiseerd als een
   lokale zelfbeheerde omgeving of als een hosted seat die door C2 Platform
   wordt aangeboden.
---

In de context van automatiseringsinitiatieven voor de Nederlandse overheid wordt
de _ontwikkelomgeving_ vaak over het hoofd gezien. Toch speelt deze een cruciale
rol in het succes van elk project, met name die gebruikmaken van
[Ansible Automation Platform](g). Het aannemen van een lokale _ontwikkelomgeving_,
uitgerust met native virtualisatiemogelijkheden, biedt tal van voordelen vergeleken
met het vertrouwen op datacenter-gebaseerde infrastructuur, waar VM's worden gecreëerd
en beheerd door externe teams.
[Ansible Automation Platform](g).

Binnen C2 Platform kan de _ontwikkelomgeving_ op twee manieren worden
gerealiseerd. De eerste is de standaard open-source-aanpak: een lokale,
zelfbeheerde omgeving op de laptop of infrastructuur van de engineer, voorzien
van native virtualisatiemogelijkheden. Na de installatie met één opdracht is
deze lokale variant direct klaar voor gebruik om Ansible-content te ontwikkelen
en te testen en om lokale nodes te provisionen op basis van de
inbegrepen [referentie-implementatie](g). De tweede is een hosted
[seat](g): een ontwikkelomgeving die door C2 Platform op de infrastructuur van
C2 Platform wordt aangeboden.

Voor de hosted variant zie {{< rellink path="/docs/concepts/dev/seat" desc=false >}}.
Beide varianten volgen dezelfde onderliggende engineering-aanpak en de
automatisering die wordt gebruikt om hosted seats te provisionen, is eveneens
open source.

Het aannemen van een lokale _ontwikkelomgeving_ biedt tal van voordelen
vergeleken met het vertrouwen op datacenter-gebaseerde infrastructuur, waar
VM's worden gecreëerd en beheerd door externe teams.

1. **Verbeterde iteratiesnelheid**: Een lokale _ontwikkelomgeving_ stelt
   [Ansible engineers](g) in staat om hun oplossingen snel te herhalen en te testen.
   Deze autonomie elimineert de noodzaak om te vertrouwen op het infrastructuurteam
   voor VM-provisioning en de-provisioning, wat de ontwikkelingsefficiëntie
   aanzienlijk verhoogt.
   [Ansible engineers](g) in staat om hun oplossingen snel te herhalen en te
   testen. Deze autonomie elimineert de noodzaak om te vertrouwen op het
   infrastructuurteam voor VM-provisioning en de-provisioning, wat de
   ontwikkelingsefficiëntie aanzienlijk verhoogt.
2. **Isolatie en beveiliging**: Het gebruik van lokale virtualisatietechnologieën
   zoals [LXD](g) en [VirtualBox](g) zorgt voor een veilige en geïsoleerde omgeving voor
   [Ansible](g)-ontwikkeling. Deze isolatie minimaliseert conflicten met andere
   softwarecomponenten en behoudt controle over de testomgeving.
   zoals [LXD](g) en [VirtualBox](g) zorgt voor een veilige en geïsoleerde
   omgeving voor [Ansible](g)-ontwikkeling. Deze isolatie minimaliseert
   conflicten met andere softwarecomponenten en behoudt controle over de
   testomgeving.
3. **Kosteneffectiviteit**: Een lokale _ontwikkelomgeving_ is kosteneffectief,
   omdat het de noodzaak voor het provisioneren van extra VM's en het maken van extra
   kosten tenietdoet. Deze aanpak optimaliseert het gebruik van middelen en
   budgettoewijzing.
4. **Flexibiliteit**: [Ansible engineers](g) krijgen de vrijheid om hun eigen VM's te
   configureren en op te zetten op basis van specifieke projecteisen. Deze
   flexibiliteit maakt uitgebreide tests van verschillende configuraties en
   scenario's mogelijk, wat robuuste ontwikkeling vergemakkelijkt.
5. **Leermogelijkheden**: Het opzetten en beheren van een lokale _ontwikkelomgeving_
   en VM's biedt [Ansible engineers](g) waardevolle leerervaringen. Deze praktijk in
   virtualisatie en infrastructuurbeheer verbetert hun expertise en maakt hen
   vaardiger in Ansible-automatisering.
   omdat het de noodzaak voor het provisioneren van extra VM's en het maken van
   extra kosten tenietdoet. Deze aanpak optimaliseert het gebruik van middelen
   en budgettoewijzing.
4. **Flexibiliteit**: [Ansible engineers](g) krijgen de vrijheid om hun eigen
   VM's te configureren en op te zetten op basis van specifieke projecteisen.
   Deze flexibiliteit maakt uitgebreide tests van verschillende configuraties
   en scenario's mogelijk, wat robuuste ontwikkeling vergemakkelijkt.
5. **Leermogelijkheden**: Het opzetten en beheren van een lokale
   _ontwikkelomgeving_ en VM's biedt [Ansible engineers](g) waardevolle
   leerervaringen. Deze praktijk in virtualisatie en infrastructuurbeheer
   verbetert hun expertise en maakt hen vaardiger in Ansible-automatisering.

De lokale open-sourcevariant kan snel worden gebootstrapped met de
one-command-install van C2 Platform, terwijl dezelfde open-sourceautomatisering
kan worden gebruikt om hosted seats of vergelijkbare beheerde
ontwikkelomgevingen te creëren.

Het opnemen van een lokale _ontwikkelomgeving_ in automatiseringsprojecten van de
Nederlandse overheid zorgt ervoor dat [Ansible engineers](g) productief kunnen werken,
snel kunnen beginnen en onafhankelijk kunnen blijven van toegang tot datacenters en
administratieve obstakels. Deze aanpak bevordert wendbaarheid, kostenbesparingen
en een dieper inzicht in infrastructuurbeheer, wat uiteindelijk bijdraagt aan
het succes van [Ansible](g)-automatiseringsinitiatieven.
Nederlandse overheid zorgt ervoor dat [Ansible engineers](g) productief kunnen
werken, snel kunnen beginnen en onafhankelijk kunnen blijven van toegang tot
datacenters en administratieve obstakels. Deze aanpak bevordert wendbaarheid,
kostenbesparingen en een dieper inzicht in infrastructuurbeheer, wat uiteindelijk
bijdraagt aan het succes van [Ansible](g)-automatiseringsinitiatieven.

{{< alert title="Opmerking:" >}}
In de context van Nederlandse automatiseringsinitiatieven wordt een echte
_ontwikkelomgeving_ vaak niet gerealiseerd. In plaats daarvan wordt doorgaans een
[pseudo-ontwikkelomgeving](g) gecreëerd en gebruikt, die fundamentele kenmerken mist.
[pseudo-ontwikkelomgeving](g) gecreëerd en gebruikt, die fundamentele kenmerken
mist.
{{< /alert >}}
 No newline at end of file
+50 −22
Original line number Diff line number Diff line
@@ -19,40 +19,69 @@ door C2 Platform gehoste omgeving die draait op C2 Platform-infrastructuur.

## Overzicht

Een seat is een beheerde ontwikkelomgeving die beschikbaar wordt gesteld aan gebruikers voor
[Ansible engineering](g). Deze omvat doorgaans een [ontwikkeldesktop](g), de
benodigde lokale tooling, projectuitcheck en de ondersteunende configuratie
die nodig is om Ansible-automatisering effectief te ontwikkelen, testen en uitvoeren.
Een seat is een beheerde [ontwikkelomgeving](g) die beschikbaar wordt gesteld
voor [Ansible engineering](g). Deze omvat een [ontwikkeldesktop](g), de
benodigde lokale tooling, projectuitcheck en de ondersteunende configuratie die
nodig is om Ansible-automatisering effectief te ontwikkelen, te testen en uit
te voeren.

Het belangrijkste voordeel van een seat is niet dat deze gebruiksklaarder is dan een lokaal
geïnstalleerde ontwikkelomgeving. Een lokale C2 Platform-ontwikkelomgeving
kan ook direct na de installatie met één commando gebruiksklaar zijn, inclusief
de referentie-implementatie die nodig is om te beginnen met het maken, testen en provisionen
van lokale nodes.
Het belangrijkste voordeel van een seat is niet dat deze gebruiksklaarder is
dan een lokaal geïnstalleerde ontwikkelomgeving. Een lokale
C2 Platform-ontwikkelomgeving kan ook direct na de installatie met één commando
gebruiksklaar zijn, inclusief de referentie-implementatie die nodig is om te
beginnen met het maken, testen en provisionen van lokale nodes.

De belangrijkste meerwaarde van een seat is dat de engineer geen dedicated
high-end ontwikkelaarslaptop nodig heeft. Toegang kan worden geboden vanaf vrijwel elke werkplek
via een URL naar de gehoste omgeving. Dit is vooral nuttig in
beperkte of air-gapped klantcontexten waar internettoegang beperkt is, maar
toegang tot een goedgekeurde interne URL nog wel mogelijk is.
high-end ontwikkelaarslaptop nodig heeft. Toegang kan worden geboden vanaf
vrijwel elke werkplek via een URL naar de gehoste omgeving. Dit is vooral
nuttig in beperkte of air-gapped klantcontexten waar internettoegang beperkt
is, maar toegang tot een goedgekeurde interne URL nog wel mogelijk is.

## Samenwerking en leren

Een lokale [ontwikkelomgeving](g) die gebruikmaakt van lokale virtualisatie is
normaal gesproken een single-user setup. Daarentegen kan een hosted seat ook
shared remote use ondersteunen. Gebruikers behouden hun eigen account,
terwijl de hosted setup hen in staat stelt om samen te werken op dezelfde
gedeelde [ontwikkeldesktop](g).

Een hosted seat kan ook starten vanuit een individuele [ontwikkeldesktop](g)
die aan één persoon is toegewezen. Die persoon kan toegang delen met een of
meer andere gebruikers door een URL te genereren met read-write- of
read-only-toegang, afhankelijk van het samenwerkingsscenario.

Dit maakt een seat bijzonder effectief voor pair programming en mob
programming.[^collaboration] Het werkt ook goed voor demonstraties,
onboarding en hands-on learning. Het ondersteunt het C2 Platform-doel om niet
alleen een omgeving te zijn voor het ontwikkelen van open-sourceautomatisering,
maar ook een praktische leeromgeving waarin engineers kunnen samenwerken en
leren door te doen.

[^collaboration]: Pair programming houdt meestal in dat twee engineers samen
    aan dezelfde taak werken. Mob programming breidt hetzelfde principe uit
    naar een kleine groep die samenwerkt op dezelfde [ontwikkeldesktop](g).

## Relatie met de lokale variant

Binnen C2 Platform zijn er twee belangrijke realisatievormen van de ontwikkelomgeving:
Binnen C2 Platform zijn er twee belangrijke realisatievormen van de
ontwikkelomgeving:

1. **Lokale zelfbeheerde omgeving**: geïnstalleerd door de engineer op de eigen
   laptop of infrastructuur, meestal via de installatie met één commando.
2. **Hosted seat**: aangeboden door C2 Platform als een beheerde remote omgeving.
2. **Hosted seat**: aangeboden door C2 Platform als een beheerde remote
   omgeving.

Beide varianten volgen dezelfde onderliggende engineeringaanpak en kunnen gebruikmaken van
dezelfde open-source-automatisering en referentie-implementatie.
Beide varianten volgen dezelfde onderliggende engineering-aanpak en kunnen
gebruikmaken van dezelfde open-source-automatisering en
referentie-implementatie.

## Open-sourcebasis

De automatisering die voor seats wordt gebruikt, is open source. Organisaties kunnen daarom ook
dezelfde aanpak gebruiken om hun eigen gehoste ontwikkelomgevingen te provisionen,
bijvoorbeeld door de rol `c2platform.dev.desktop` te gebruiken samen met een voorbeeldconfiguratie
die is afgeleid van de open-source C2 Platform-setup.
De automatisering die voor seats wordt gebruikt, is open source. Organisaties
kunnen daarom ook dezelfde aanpak gebruiken om hun eigen gehoste
ontwikkelomgevingen te provisionen, bijvoorbeeld door de rol
`c2platform.dev.desktop` te gebruiken samen met een voorbeeldconfiguratie die
is afgeleid van de open-source C2 Platform-setup.

## Aanvullende informatie

@@ -60,4 +89,3 @@ die is afgeleid van de open-source C2 Platform-setup.
- {{< rellink path="/docs/concepts/dev/laptop" desc=true >}}
- {{< rellink path="/docs/concepts/dev/pseudo" desc=true >}}
- {{< rellink path="/docs/howto/c2/devtop/install-script" desc=true >}}
```
 No newline at end of file