Connect with us

Entwicklung & Code

Infrastructure-as-Code: Die neue Plattform formae soll Terraform & Co. ablösen


Das Unternehmen Platform Engineering Labs kündigt formae als neue Infrastructure-as-Code-Plattform (IaC) an. Der offiziellen Verlautbarung zufolge soll sie die Einschränkungen („fundamentale Unzulänglichkeiten“) von Tools wie Terraform reformieren und einen grundlegend neuen Weg beschreiten: Die unter der FSL-Lizenz (Fair Source) veröffentlichte quelloffene Software verspricht, bestehende Cloud-Infrastrukturen automatisch zu erkennen und in verwaltbaren Code zu überführen. Damit sei formae die erste IaC-Plattform, die sich nicht auf einen idealisierten Plan stütze, sondern von der Realität ausgehe, wie Pavlo Baron, Mitgründer und CEO von Platform Engineering Labs, erklärt.

Weiterlesen nach der Anzeige

Während Terraform und vergleichbare IaC-Werkzeuge auf manuell erstellten Konfigurationsdateien basieren, soll formae automatisch die gesamte bestehende Cloud-Infrastruktur einer Organisation erfassen und in Code überführen – unabhängig davon, wie diese ursprünglich erstellt wurde. Die Plattform arbeitet mit sogenannten „formas“, versionierten Code-Artefakten, die sowohl temporär als auch dauerhaft gespeichert werden können. Laut dem Entwicklungsteam eliminiert dieser Ansatz das Problem der State-Dateien, die bei Terraform häufig zu Inkonsistenzen zwischen dem geplanten und dem tatsächlichen Zustand der Infrastruktur führen.

Die neue Plattform soll dabei nicht nur einfach die Komplexität vom Development zum Betrieb hin verlagern, sondern tatsächlich die kognitive Belastung sowohl für Entwicklungs- als auch für Betriebsteams reduzieren. Dazu trägt Platform Engineering Labs zufolge eine Agent-basierte Architektur bei, die Änderungs- und Zustandsverwaltung von den Clients entkoppelt. Auf diese Weise sei eine sorgfältige, asynchrone Annäherung an den erklärten Zielzustand möglich. Um zudem das Risiko verminderter Zuverlässigkeit bei Infrastrukturänderungen gering zu halten, setzt formae auf Patch-basierte Updates, die sich präzise und inkrementell mit minimalem Ausmaß durchführen lassen.



Die IaC-Plattform formae verspricht eine Vereinheitlichung aller Ressourcen für Infrastructure-as-Code.

(Bild:  Platform Engineering Labs)

Die Ankündigung von formae erfolgt in einer Zeit, in der der IaC-Markt in Bewegung ist. Terraform-Hersteller HashiCorp – seit dem Frühjahr 2025 ein Teil von IBM – hatte 2023 seine Lizenzierung von der Mozilla Public License (MPL) auf die umstrittene Business Source License (BSL) umgestellt. Darauf reagierte die Community mit dem Open-Source-Fork OpenTofu, der inzwischen unter der Schirmherrschaft der Cloud Native Computing Foundation steht und zudem von einer wachsenden Zahl von Unternehmen Unterstützung erfährt.

Weiterlesen nach der Anzeige

Unterdessen arbeitet HashiCorp an neuen Funktionen für Terraform, darunter die Integration mit Ansible und erweiterte Such- und Import-Möglichkeiten für bestehende Cloud-Ressourcen. Die jüngsten Entwicklungen deuten darauf hin, dass HashiCorp den Fokus vermehrt auf KI-Integration legt, etwa durch das interne Projekt „Infragraph“, das als vollständiges Infrastruktur-Inventar für das KI-Training dienen soll.

Mit formae strebt Platform Engineering Labs eine Vereinheitlichung aller Ressourcen für Infrastructure-as-Code an, unabhängig davon, ob diese über Patches mit minimalem Auswirkungsradius, Terraform, OpenTofu, Pulumi, ClickOps oder Legacy-Skripte erstellt wurden. Die Plattform soll die Grundlage für ein offenes und erweiterbares Ökosystem schaffen.

formae ist ab sofort auf GitHub verfügbar. Community-Diskussionen finden auf Discord statt. Die FSL-Lizenz habe Platform Engineering Labs gewählt, um Entwicklerinnen und Entwicklern zunächst alle Möglichkeiten offenzuhalten, sich intensiv und uneingeschränkt mit der Software auseinanderzusetzen – auch eigene Beiträge dazu zu leisten – und gleichzeitig ein nachhaltiges kommerzielles Modell zu ermöglichen.


(map)



Source link

Entwicklung & Code

Sicheres Linux: Amutable bringt „kryptografisch verifizierbare Integrität“


Ein Team von namhaften Linux-Entwicklern hat sich zum Ziel gesetzt, Linux sicherer zu machen und die Integrität von Linux-Systemen kryptografisch zu verifizieren. Das Projekt sattelt unter anderem auf „immutable Linux“ auf, also schreibgeschützten, unveränderlichen Kernsystemen. Der Name: Amutable. Die Firma hat ihren Sitz in Berlin.

Weiterlesen nach der Anzeige

Große Namen sind als Gründer involviert. Etwa Lennart Poettering, der systemd entwickelt und pflegt, oder Christian Brauner, der das VFS-Subsystem in Linux betreut, sowie Christ Kühl, ehemals Gründer von Kinvolk – die Flatcar Container Linux, ein immutable-Linux-System, entwickelt haben und von Microsoft eingekauft wurden.

Details liefert Amutable bislang nicht, deutet aber die Ziele an. Die Integrität des Systems soll kryptografisch prüfbar sein, das „System startet in einem verifizierten Status und bleibt im Zeitverlauf vertrauenswürdig“. Als Stichworte nennt die „Über“-Seite von Amutable die Integrität des Build-Prozesses, des Boot-Vorgangs und zur Laufzeit. Lennart Poettering hat bereits heiße Eisen mit „Measured Boot“ im Feuer. Ein Fingerzeig ist auch der geplante Vortrag „Remote Attestation of Imutable Operating Systems built on systemd“, den er am 12. März auf der Open Confidential Computing Conference in Berlin halten will.

Beim „Measured Boot“ prüft das System ausgehend von einer „Root of Trust“ im Trusted Platform Module (TPM) die Integrität von Firm- und Software beim Systemstart anhand von digitalen Fingerabdrücken, sogenannten Hash-Werten. Die Vergleichshashes liegen ebenfalls im TPM, dort in sogenannten Platform Configuration Registers (PCRs). Der Prozess ähnelt Secure Boot. Allerdings bricht Secure Boot bei abweichenden Hashes den Startvorgang ab, während Measured Boot die Hashes der Komponenten und ihrer Konfiguration protokolliert und sie verschlüsselt zur Überprüfung an andere Systeme senden kann (Remote Attestation, ausführliche Erläuterung von Infineon). Ein Vortrag auf der „All Systems Go“ im vergangenen Jahr zeigt zudem, was Poettering sich für Gedanken um die Sicherheitsarchitektur in Linux macht.

Derzeit besteht das Team von Amutable aus den Gründern Chris Kühl (CEO), Christian Brauner (CTO) und Lennart Poettering (Chief Engineer); Chief Product Officer ist David Strauss. Das Programmier-Team besteht aus Rodrigo Campos Catelin, Zbyszek Jędrzejewski-Szmek, Kai Lüke, Daan De Meyer, Joaquim Rocha, Aleksa Sarai und Michael Vogt. Die Beteiligten bringen Erfahrungen etwa für den Bau traditioneller Distributionen wie Debian, Fedora/CentOS, SUSE und Ubuntu mit, aber auch für unveränderliche, Image-basierte Distributionen wie Flatcar Container Linux, ParticleOS und Ubuntu Core, erklärt die Projekt-Ankündigung.

Kompetenzen für die genannten Ziele sind also reichlich vorhanden. Was genau Amutable aber bauen will, ist derzeit noch unklar. Eine diesbezügliche Anfrage wurde nicht umgehend beantwortet. Gegebenenfalls aktualisieren wir die Meldung damit.

Weiterlesen nach der Anzeige


(dmk)



Source link

Weiterlesen

Entwicklung & Code

Eine Schätzung ist keine Prognose: Sprachphilosophie im Softwareprojekt


Nicht nur in agilen Projekten gehört es zum normalen Vorgehen, Aufgaben zu schätzen (Ticket-Estimation). Persönlich vertrete ich dabei die Meinung, dass Schätzungen immer richtig sind. Es handelt sich schließlich um eine Schätzung.

Weiterlesen nach der Anzeige


Escape the Feature Factory: Stefan Mintert

Escape the Feature Factory: Stefan Mintert

(Bild: 

Stefan Mintert

)

Stefan Mintert arbeitet mit seinen Kunden daran, die Unternehmenskultur in der Softwareentwicklung zu verbessern. Das derzeit größte Potenzial sieht er in der Leadership; unabhängig von einer Hierarchieebene.

Die Aufgabe, dieses Potenzial zu heben, hat er sich nach einem beruflichen Weg mit einigen Kurswechseln gegeben. Ursprünglich aus der Informatik kommend, mit mehreren Jahren Consulting-Erfahrung, hatte er zunächst eine eigene Softwareentwicklungsfirma gegründet. Dabei stellte er fest, dass Führung gelernt sein will und gute Vorbilder selten sind.

Es zeichnete sich ab, dass der größte Unterstützungsbedarf bei seinen Kunden in der Softwareentwicklung nicht im Produzieren von Code liegt, sondern in der Führung. So war es für ihn klar, wohin die Reise mit seiner Firma Kutura geht: Führung verbessern, damit die Menschen, die die Produkte entwickeln, sich selbst entwickeln und wachsen können.

Für Heise schreibt Stefan als langjähriger, freier Mitarbeiter der iX seit 1994.

Wikipedia versteht darunter die genäherte Bestimmung von Zahlenwerten, Größen oder Parametern durch Augenschein, Erfahrung oder statistische Methoden. Eine Schätzung bestimmt also etwas, was ist, und nicht etwas, was wird. Eine Schätzung kümmert sich nicht um die Zukunft.

Die meisten Manager, die ich erlebt habe, behandeln Schätzungen aber wie eine Prognose, also eine Vorhersage über die Zukunft.

Wenn die Zukunft dann zur Gegenwart geworden ist, vergleicht man die Schätzung aus der Vergangenheit mit einem Wert, der sich zu einem späteren Zeitpunkt entwickelt hat. Das passt nicht zusammen.

Was die Manager eigentlich wollen, ist – wie gesagt – eine Prognose. Auch dazu hat Wikipedia etwas Interessantes zu sagen: Von anderen Aussagen über die Zukunft (z. B. Prophezeiungen) unterscheiden sich Prognosen durch ihre Wissenschaftsorientierung.

Wer sich als Entwickler von Schätzungen und dem Umgang damit unter Druck gesetzt fühlt, kann mal versuchen, Schätzungen durch Prognosen zu ersetzen. Selbstverständlich explodiert damit der Aufwand. Und genau das ist der Punkt: Viele Manager sprechen sehr viel und sehr gerne darüber, wie man besser schätzen kann. In diese Frage wird viel Energie gesteckt. Die Frage, wie man besser arbeiten kann, tritt dabei oft in den Hintergrund.

Weiterlesen nach der Anzeige

Es wirkt manchmal so, als ob die Schätzung (die eigentlich eine Prognose sein soll) wichtiger als das Produkt ist. Der Grund dahinter ist oft die den Managern heilige Planung. Die Gründe für deren Scheitern liegen aber nicht in der Durchführung der Schätzung. Eine Schätzung ist immer richtig, wie ich auch bereits an anderer Stelle schrieb.

Das gilt auch, wenn der geschätzte Wert vom wahren Wert abweicht. Wenn mir das nicht gefällt, müsste ich eine Schätzung durch eine Messung ersetzen. Das ist in diesem Fall nicht möglich, weil ich zukünftige Ergebnisse nicht heute messen kann.

Wenn ein Ticket bei Fertigstellung also dreimal so viel Zeit erforderte, wie geschätzt (prognostiziert) wurde, wird nicht die Frage gestellt, ob die Umsetzung des Tickets gut gelaufen ist. Nein. Bereits die Abweichung von der Schätzung (Prognose) genügt, um die geleistete Arbeit zu diskreditieren. Das halte ich für wenig zielführend, und hier sind meines Erachtens Softwareentwickler aufgefordert, der missbräuchlichen Verwendung von Schätzungen entgegenzutreten.

Der erste Schritt kann darin bestehen, klarzumachen, dass Pläne auf Grundlage von Schätzungen selbst Schätzungen und keine Zusagen sind. Wer es anders sieht, dem kann man mit hoher Wahrscheinlichkeit eine turbulente Zukunft prophezeien.

Wenn Du die Themen, die ich im Blog anspreche, in Deiner Firma verbessern möchtest, komm’ in unsere Leadership-Community für Softwareentwicklung. Sie wirkt auch ohne Führungsposition. Mit dem Code „heisedev“ gibt’s den Heise-Rabatt für Interactive-Members.


(rme)



Source link

Weiterlesen

Entwicklung & Code

Neu in .NET 10.0 [6]: Generische Erweiterungsblöcke in C# 14.0


Erweiterungsblöcke mit dem Schlüsselwort extension habe ich in der vorherigen Folge der Serie zu .NET 10.0 vorgestellt. Ein Erweiterungsblock darf einen oder mehrere generische Typparameter (optional inklusive Einschränkung mit where) besitzen:

Weiterlesen nach der Anzeige

extension(List source) { … }

oder

extension(List source) where T : INumber { … }


Der Dotnet-Doktor – Holger Schwichtenberg

Der Dotnet-Doktor – Holger Schwichtenberg

Dr. Holger Schwichtenberg ist technischer Leiter des Expertennetzwerks www.IT-Visions.de, das mit 53 renommierten Experten zahlreiche mittlere und große Unternehmen durch Beratungen und Schulungen sowie bei der Softwareentwicklung unterstützt. Durch seine Auftritte auf zahlreichen nationalen und internationalen Fachkonferenzen sowie mehr als 90 Fachbücher und mehr als 1500 Fachartikel gehört Holger Schwichtenberg zu den bekanntesten Experten für .NET und Webtechniken in Deutschland.

Folgender Code zeigt eine Klasse mit Erweiterungsblocken für List, wobei T auf Zahlen beschränkt ist, durch where T : INumber:


public static class MyExtensions
{
 extension(List source) where T : INumber // <-- Receiver Ein Erweiterungsblock darf eine oder mehrere generische Typparameter (optional inklusive Constraint) besitzen!!!
 {
  public List WhereGreaterThan(T threshold)
           => source.Where(x => x > threshold).ToList();
 
  public bool IsEmpty
           => !source.Any();
 
  /// 
  /// Erweitern um eine Instanz-Eigenschaft mit Getter und Setter
  /// 
  public int Size
  {
   get { return source.Count; }
   set
   {
    while (value < source.Count) source.RemoveAt(source.Count - 1);
    if (value > source.Count) source.AddRange(Enumerable.Repeat(default(T)!, value - source.Count).ToList());
   }
  }
 
  // NEU: Operatorüberladung als Extension und neu ist auch, dass man += überladen kann
  public void operator +=(int count)
  {
   source.Size = source.Count + count;
  }
 
  // NEU: Operatorüberladung als Extension und neu ist auch, dass man -= überladen kann
  public void operator -=(int count)
  {
   source.Size = source.Count - count;
  }
 
  // NEU: Operatorüberladung als Extension und neu ist auch, dass man ++ überladen kann
  public void operator ++()
  {
   source.Size += 1;
  }
 }
}


Folgender Code ruft die Erweiterungsmethoden für List auf:

Weiterlesen nach der Anzeige


public void Run()
 {
  CUI.Demo(nameof(CS14_ExtensionDemo) + ": Collection");
 
  var list = new List { 1, 2, 3, 4, 5 };
  var large = list.WhereGreaterThan(3);
  Console.WriteLine(large.IsEmpty);
  if (large.IsEmpty)
  {
   Console.WriteLine("Keine Zahlen größer als 3!");
  }
  else
  {
   Console.WriteLine(large.Count + " Zahlen sind größer als 3!");
  }
 
  CUI.H2("list.Size = 10");
  // Das klappt: Die Liste wird auf 10 Elemente mit Nullen aufgefüllt
  list.Size = 10;
  foreach (var x in list)
  {
   CUI.OL(x, separator: " = ");
  }
 
  CUI.H2("list.Size -= 2");
  list.Size -= 2;
  bool restart = true;
  foreach (var x in list)
  {
   CUI.OL(x, separator: " = ", restartCounter: restart);
   restart = false;
  }
 
  CUI.H2("list.Size++");
  list.Size++;
  restart = true;
  foreach (var x in list)
  {
   CUI.OL(x, separator: " = ", restartCounter: restart);
   restart = false;
  }
 }


Der Code erzeugt folgende Ausgabe:



Ausgabe des Beispielcodes


(rme)



Source link

Weiterlesen

Beliebt