Nix: DevOps und mehr

Nix bietet funktionales, modernes Tooling, das in etlichen Bereichen der Softwareentwicklung unterstützt und insbesondere bei DevOps glänzt. Aus dem Fokus auf vollständige Reproduzierbarkeit ergeben sich viele Vorteile.

Reproduzierbare, projektlokale Entwicklungsumgebungen

Mit sogenannten Nix-Shells arbeiten alle Entwickler:innen eines Projekts in identischen Umgebungen. Damit werden effektiv Probleme durch Tools in verschiedenen Versionen ausgeschlossen.

CI/CD: weniger (Docker) ist mehr

Die obigen Entwicklungsumgebungen können für CI-Jobs verwendet werden. Das reduziert in vielen Fällen die Abhängigkeiten der Jobs zu “Nix muss installiert sein”, wodurch oftmals das Schreiben von Dockerfiles ganz wegfallen kann und die Skripte zu Einzeilern reduziert werden. Das, was in der CI passiert, ist genau das, was auch auf den lokalen Maschinen passiert – keine “CI only”-Probleme mehr!

Minimale und reproduzierbare Auslieferungsartefakte (Container, portable systemd-Services, Binaries, …)

Je nach Projekt/Technologien bietet es sich an, den Nix-Weg ganz zu beschreiten und auch die Auslieferungsartefakte mit Nix bauen zu lassen (sog. Nix-Builds). Abgesehen von der auch hier extrem einfachen Integration in CI/CD-Plattformen sind solche Artefakte vergleichbar mit “static linking”: Auf den Zielsystemen sind (fast) keine installierten Abhängigkeiten notwendig. Die Distanz zwischen Prod- und Dev-Umgebungen ist minimal.

Besonders spannend ist das bei containerisierter Auslieferung, was oft von Kund:innen gewünscht wird. Via Nix gebaute Images bzw. Container sind per Konstruktion minimal, enthalten also ausschließlich jene Software, die laufen soll und ihre transitiven Abhängigkeiten – in der Regel alles in einem Layer. Selbst Core-Utilies und Shells müssen nicht enthalten sein, was so erstellte Artefakte äußerst sicher (und leicht zu auditieren) macht.

Beratung/Schulungen

Oben sind nur einige Vorteile aufgezählt. Wir können Ihnen dabei helfen, die besten Einsatzgebiete von Nix in Ihren individuellen Projekten und Workflows zu identifizieren, und Sie bei der Integration unterstützen. Kommen Sie auf uns zu!