Container-Images: Abschied vom Dockerfile

Seite 4: Ein großer Schritt für die Container-Welt

Inhaltsverzeichnis

Auch wenn der Abschied vom selbstgestalteten Dockerfile schwerfallen mag – die Vorteile der Cloud Native Buildpacks liegen auf der Hand. Allein das regelmäßige Aktualisieren aller Microservices auf aktuelle Basis-Images durch Einsatz von Rebasing erleichtert Entwicklerinnen und Entwicklern das Leben spürbar. Darüber hinaus wird nur der Teil der Images neu gebaut, in dem sich auch tatsächlich etwas geändert hat. Das reduziert überflüssige Dateitransfers und damit auch die Durchlaufzeiten von Builds innerhalb der Continuous-Integration-Pipelines. Das Konzept lässt sich zudem auf eine breite Palette von Programmiersprachen anwenden, was zum Vereinheitlichen der CI-Pipelines beitragen kann.

Die zu erwartende breite Unterstützung der Buildpacks-Spezifikation im Container-Markt wirkt sich auch positiv auf die Portierbarkeit eigener Images aus und vereinfacht den Umzug zwischen verschiedenen Cloud-Providern. Auch im eigenen Rechenzentrum lohnt sich der Einsatz, da sich unter anderen die Herausforderungen hybrider Szenarien entschärfen lassen. Nachdem das Projekt Cloud Native Buildpacks von der Cloud Native Computing Foundation das Status-Update auf "CNCF Incubating" erhalten hat, wächst die Hoffnung, dass CNBs eine langfristige Perspektive für das Erstellen von Container-Images bieten.

Innerhalb der JVM-basierten Sprachen und Frameworks sticht Spring Boot aufgrund seiner großen Verbreitung heraus. Auch ist dort die Integration der Cloud Native Buildpacks in Standard-Build-Tools wie Maven und Gradle bereits weit fortgeschritten. Entwicklerinnen und Entwickler können daher die Vorteile von Paketo und Co. nutzen, ohne sich mit den Details zwingend beschäftigen zu müssen. Auch ohne tiefgreifende Kenntnisse im Container-Umfeld entstehen produktionsreife Container-Images.

Die mit Spring Boot 2.3 eingeführten Layered Jars runden das Bild ab. Denn sie trennen den Anwendungscode von den Abhängigkeiten der Anwendung in separate Container-Layer. Dadurch zieht eine Änderung des Codes weniger Änderungen innerhalb des Container-Images nach sich, da nur noch ein Layer zu ändern ist. Dank Paketo ist zu guter Letzt sogar die gemeinsame Nutzung des Layered jars-Feature zusammen mit den Cloud Native Buildpacks möglich.

Jonas Hecht
ist mit viel Leidenschaft bei der codecentric AG unterwegs und integriert mit Vorliebe neueste Technologien, damit diese für eine große Community einfacher nutzbar werden. Neben der Arbeit beim Kunden bloggt er gerne, hält Vorträge und Vorlesungen und organisiert u.a. die JUG Thüringen. Aktuell beschäftigt er sich mit Test-driven Infrastructure as Code und GitHub Actions.

(map)