Latest / Coding Buddies | Tech & Dev-Mindset / DevOps #3 - Vertrauen gewinnen durch Continuous Integration
Transcript
- 0:00Jetzt geht's ab. Ich gehe auf den auf den
- 0:02zugefrorenen See. Ja, man wirft vielleicht erstmal
- 0:05einen Stein oder Haut mit einem Fußheim.
- 0:07Drauf oder so weißt du da auch erstmal ein Loch ins Eis mit
- 0:10einem fetten Stein und dann kannst du drauf.
- 0:14Coding Buddies Dein Podcast rund um Softwareentwicklung und
- 0:17aktueller Tech News. Herzlich Willkommen.
- 0:32Herzlich Willkommen zur neuen Folge des Codium Buddies
- 0:33Podcasts. Schön, dass du wieder
- 0:35eingeschaltet hast. Deine Gastgeber sind wieder am
- 0:37Start und zwar meine Wenigkeit, der Tino und mir gegenüber, der
- 0:42fantastische Fabi, den ich jetzt begrüßen mag, Fabi.
- 0:45Grüße dich, halli Hallo Tino, wie geht's?
- 0:49Was geht ab? Vor mir ist auch gut, es wäre
- 0:52schön, aber es ist leider nur ein spirituell auf dem
- 0:55Bildschirm, leider nicht im selben Raum, das ist richtig.
- 1:01Irgendwann vielleicht mal. Irgendwann mal ja, ab und zu
- 1:04haben wir auch schon mal gehabt, tatsächlich ne ja auch schon mal
- 1:07ne Folge zusammen in einem Raum aufgenommen, ist nur leider die
- 1:11Seltenheit, meistens machen wir es ja digital.
- 1:14Die Entfernung, die Entfernung, die Entfernung, ja sag mal wie
- 1:20geht es dir? Mir geht es gut soweit alles am
- 1:24Start immer noch alles fit, sehr gut, sehr gut, das ist sehr gut,
- 1:28das ist auch sehr wichtig. Ich, bevor wir mit dem Thema
- 1:32einsteigen, hab ich mal so ne grundlegende Frage an dich und
- 1:36zwar geht es jetzt schon wieder so los, dass man so sieht.
- 1:40Ah die Vorbereitungen steigen und waren alle schon wieder so
- 1:43gespannt. Nee, Weihnachten noch nicht, das
- 1:46ist ja schon seit Juli oder so wo du die Weihnachtsmänner
- 1:49kaufen kannst. Kurz nach Ostern 1 los, genau
- 1:53was ich meine ist der Halloween Trend, es ist ja bald Halloween.
- 1:58Und da wollte ich mal wissen, bist du eigentlich so ein
- 2:01Halloween Typ? Also Halloween im Sinne von
- 2:05feierst du das? Gehst du so auf Halloween Partys
- 2:09oder oder rennst du von der Haustür zu Haustür und sammelt
- 2:11Süßigkeiten ein? Gegenfrage, Wann ist denn
- 2:14Halloween eigentlich? Das ist am 31, also wie du
- 2:20vielleicht schon merkst. Ich bin jetzt nicht ganz so auf
- 2:22der Höhe davon. Ja gut, nur weil das dato nicht
- 2:26weiß, kann es ja sein, dass du aber trotzdem da Bock drauf.
- 2:28Hast ich geh natürlich immer noch durch die Straßen und
- 2:30sammel Süßigkeiten ein, ist doch klar, also.
- 2:34Find ich voll geil. Ah das wär witzig.
- 2:38Stell dir mal vor du machst es klingelt, du machst die Haustür
- 2:40auf und hast schon so ein bisschen Süßigkeiten in der
- 2:42Hand, weil du weißt okay jetzt werden wieder kleine Kinder
- 2:45kommen, die freuen sich über Süßigkeiten und dann stehst du
- 2:47auf einmal du da Mitte 30 ja ich hätte echt Bock auf einen
- 2:52Snickers, ja. Und wenn es keinen gibt, gibt es
- 2:56Saures. Nein, aber gibt es Saures?
- 2:58Ich habe das tatsächlich mal gehabt, irgendwann, da war ich
- 3:00so im, Ich glaube, das war schon so, Grundschulalter, roundabout
- 3:05und ich bin mir nicht ganz sicher, ich würde jetzt sagen,
- 3:08Grundschulalter und da habe ich mit einem Kumpel mich getroffen
- 3:10und Halloween war aber an einem Weiß, nicht an einem Donnerstag
- 3:14oder irgendeinem Wochentag, ich glaube, Donnerstag kommt hin,
- 3:17weil am Freitag war nicht frei so und.
- 3:21Dann war es aber so, dass wir gesagt haben, wir treffen uns
- 3:23trotzdem am Freitag und dann sind wir einen Tag später noch
- 3:26mal alle Häuser bei ihm in der Siedlung abgeklappert und haben
- 3:29immer gesagt, wir alle so hä, was macht ihr denn hier?
- 3:31Das war doch gestern wir so, ja, entschuldigung, wir haben uns
- 3:33verlaufen. Aber die Ausbeute war gut, also
- 3:37was kleiner, schlecht, kleiner Life.
- 3:40Einen Tag später funktioniert noch ja sehr gut, bei mir war
- 3:44das eher so, ich hab das als kleiner Junge auch gemacht mit
- 3:46Freunden und dann gab es irgendwann so diesen Wendepunkt,
- 3:49dass ein Jahr später. Du vor der Tür stehst und dich
- 3:52die Leute dann schon so angucken.
- 3:55Junge geh Arbeit vorbei, geh arbeiten, Kauf dir deine eigenen
- 4:00Süßigkeiten und weißt du, dann stehst du da mit 20 nein, aber
- 4:09dann stehst du halt trotzdem noch kleiner Junge da und denkst
- 4:11dir so okay krass, die Zeit scheint vorbei zu sein, das ist
- 4:14jetzt echt unangenehm hier zu stehen, aber.
- 4:16Fand ich. Auf jeden Fall.
- 4:17War so ein Wendepunkte beim Leben damals ja krass.
- 4:20Wie gesagt kann ich nicht nachvollziehen, ich geh immer
- 4:21noch rum, ja ja der kam bei dir noch nicht, aber ich denke mal
- 4:25es ist auch bei dir bald soweit, wenn die Haare grau werden, dann
- 4:28genau dann, dann wirst du eher gefragt ob du Süßigkeiten hast.
- 4:33Haben Sie Süßigkeiten? Nein, und Sie.
- 4:37Und ja, aber so richtig der Hype so Halloween Partys besuchen
- 4:41habe ich auch schon gemacht. Ist auch witzig mit dem
- 4:43Verkleiden, aber so richtig so richtig catchen tut es mich auch
- 4:47nicht muss ich sagen, also dass ich denke ich muss unbedingt
- 4:49jedes Jahr auf ne Halloween Party gehen und da ich das schon
- 4:52wieder so n bisschen mitkriege wollte ich mal fragen wie das
- 4:54bei dir so ist. Aber bist du halt jetzt auch
- 4:56nicht so wirklich da am Start. Nee, ich finde auch ne Halloween
- 4:59Party ist eigentlich nur cool, wenn man es richtig durchzieht
- 5:02und die Leute auch richtig Bock haben sich zu also wenn richtig
- 5:04was geht. Weil es ist halt immer so, ey,
- 5:07wir verkleiden uns und als was kommst du?
- 5:09Ich komm als Fabi denkst du so, ach cool.
- 5:12Ja, geil ist ja. Witzig, so weißt du also wenn
- 5:14ich jetzt als. Ich komm, ich steh dieser
- 5:16Ausreden. Ich will mich nicht verkleiden.
- 5:20Witzige Story bevor wir jetzt mal wirklich ernsthaft mit dem
- 5:22Thema starten, ich war mal auf einer Allgemeinkostümparty, es
- 5:25war ne Geburtstagsfeier mit mit irgendeinem Motto und das war
- 5:30aber ne WG. Und dann dacht ich mir, gut, es
- 5:33gibt n Motto Ich verkleid mich keine Ahnung, weiß nicht mehr
- 5:36als was, aber komm da an und der restlichen WG wurde das gar
- 5:40nicht mitgeteilt, das heißt der eine Mitbewohner hat seinen
- 5:43Leuten gesagt. Ja ist ne Kostümparty und die
- 5:46anderen beiden haben das nicht kommuniziert und ich war so
- 5:50einer der ersten von Team Verkleidung und kommt rein und
- 5:54alle gucken mich an. Was stimmt denn mit dem nicht?
- 5:57Aber warum ist der verkleidet ein supergeiler Moment.
- 6:02Ah das das werde ich glaube ich auch nie in meinem Leben
- 6:04vergessen. Erinnert stehst du da, gefühlt
- 6:06keine Ahnung, ich weiß nicht mehr, sagen wir mal, weiß ich
- 6:08nicht als Polizist kaue oder irgendeine irgendwas halt ne und
- 6:12alle sind aber komplett normal gekleidet also super wirklich
- 6:15fantastischer Moment gewesen. Also ich würde sagen da ist wohl
- 6:18die Integration in die Gesamtbasis fehlgeschlagen da
- 6:22absolut und das ist ne super Überleitung zu unserem heutigen
- 6:25Thema, danke, dass du das mal sagst weil ich fand die richtig
- 6:28schlecht. Ich wollte, ich wollte dich
- 6:32jetzt nicht hängen lassen. Weißt du, ich greif das jetzt
- 6:34auf, denn kommen wir zum eigentlichen Thema, liebe
- 6:36Zuhörer, liebe Zuhörer, heute gibt es eine neue Def Ops Folge
- 6:40zu unserer Def Ops Reihe und wir haben ja in der letzten Folge
- 6:45schon mal so ne ne Zusammenfassung gegeben welcher
- 6:48Kulturwandel da stattgefunden hat in der Entwicklung und
- 6:51welche Grundlagen es so gibt in im Bereich Def Ops und wollen
- 6:55heute mal quasi mit dem ersten Thema so richtig starten.
- 7:00Und zwar haben wir uns da entschieden, für Continuous
- 7:03Integration und das soll heute unser heutiges Thema sein, Fabi.
- 7:08Finde ich gut. Continuous Integration oder CI
- 7:10sozusagen ne kurz kurz, also ne die Abkürzung dafür, das hört
- 7:15man ja auch öfter. Ja, spannendes Thema auf jeden.
- 7:18Fall genau und du hast ja gerade schon.
- 7:20Angeteasert, da ist die Integration in die Code Basis
- 7:23fehlgeschlagen bei der Kostümparty.
- 7:25Dann erklär doch mal wofür CI oder Continuous Integration
- 7:29Global betrachtet steht. Genau also CI ne was du
- 7:34meintest, das ist ja im Endeffekt ein Teil der Pipeline,
- 7:37also dieses diese kontinuierliche Integration und
- 7:40die bezieht sich ja. Im Endeffekt auf den Code, der
- 7:45entwickelt wird. Also es gibt immer irgendwie
- 7:47einen Entwickler oder eine Entwicklerin, die Code
- 7:49entwickelt und dieser Code muss ja irgendwann zwangsläufig in
- 7:53die Code Basis integriert werden, damit halt quasi der
- 7:57neue Code ein neues Feature was auch immer ein Bugfix in die
- 8:00Software in das Gesamtprodukt integriert wird und damit das
- 8:05auch alles reibungslos funktioniert.
- 8:09Gibt sozusagen dieses diesen CI teil, dass man halt wirklich
- 8:12diese Code Integration in die gesamtcode Basis vornimmt, und
- 8:17zwar halt im optimalen Fall nach Defops und so einer Pipeline
- 8:21auch automatisiert. Und man will ja auch darauf
- 8:24achten, dass man sagt, OK, es soll jetzt nicht, also du kannst
- 8:27natürlich auch einfach, wenn man jetzt so ne git Welt unterwegs
- 8:30ist. Ich hoffe jetzt kommen alle mit
- 8:31soweit, dass man halt im Endeffekt natürlich sagen kann,
- 8:34OK, ich hab jetzt n git und ich kommitte alles und ich ich push
- 8:37das so fertig Push Force alles rein.
- 8:41Dann ist es auch integriert. So gesehen, es ist auch
- 8:43integriert, aber das. Ist nicht die Integration, die
- 8:46wir hier sozusagen oder die hier mit CI gemeint ist, ne?
- 8:50Genau, denn ein wesentlicher Bestandteil bei der Continuous
- 8:52Integration ist natürlich auch das automatisierte Testen
- 8:56dahinter. Das heißt, bevor ich meine
- 8:58Änderung, die ich als Entwickler vorgenommen habe, quasi.
- 9:04Integriere in die Codebasis, dass vorher Tests laufen, die
- 9:08checken, ob meine Änderungen denn auch, sage ich mal,
- 9:11sinnvoll und richtig waren und vor allem auch alles andere, was
- 9:15ich unberührt gelassen habe, trotzdem noch funktioniert und
- 9:18keine Side Effects beispielsweise entstanden sind
- 9:21und man sagen kann, OK, wenn die Tests alle grün sind, dann kann
- 9:24ich es integrieren in die Gesamtbasis und alle Entwickler
- 9:27haben Zugriff darauf. Ja genau.
- 9:31Das ist ja so der step, dass du halt sagst, OK, ich teste es
- 9:34erstmal, dann gucke ich auch, ob die Software überhaupt noch baut
- 9:37beispielsweise. Und wenn das alles grün ist,
- 9:40dann integrier ich genau. Also wenn du weißt, dass es im
- 9:42Endeffekt funktioniert, also es ist ja auch im Normalfall so,
- 9:45dass wenn du jetzt dir keine Ahnung, wenn du zu Hause
- 9:48irgendwas. Machst oder so ne dann dann,
- 9:51dann checkst du ja auch erst mal kurz.
- 9:53OK, funktioniert das eigentlich was ich mir hier gerade
- 9:55vorgenommen hab? Ne, also allein schon wenn du
- 9:57ich weiß nicht kennst das von früher so wenn du irgendwie auf
- 9:59den Teich gehen willst, der früher damals war das ja noch so
- 10:02wo die Teiche gefroren waren und du du gehst ja nicht einfach
- 10:05drauf und sagst ja komm hier, jetzt geht es ab, ich gehe auf
- 10:08den auf den zugefrorenen See. Ja, man wirft vielleicht erstmal
- 10:12n Stein oder Haut mit einem Fußheim.
- 10:14Drauf oder so weißt du dann auch erstmal n Loch ins Eis mit einem
- 10:18fetten Stein und dann kannst du drauf, ja.
- 10:21Aber das war halt im Endeffekt vorher testet ob es funktioniert
- 10:25ne ob es klappen kann und dann kannst du halt auch wirklich
- 10:28deine Aktion durchführen und in dem Fall halt sozusagen erst die
- 10:31Tests bevor du dann wirklich deinen Code in die Codebasis
- 10:34integrierst. So ein Sinnbild ne, warum soll
- 10:38man denn sowas testen? Ne einfach?
- 10:41Meine kleine Ei. Aber die dazu, ja, das passt
- 10:43doch ganz gut. Also du Integrierst quasi dich
- 10:46als weitere Person auf dem See zu den anderen, die jetzt da
- 10:50Eislaufen machen oder? Keine Ahnung, was auch immer.
- 10:53Ja, gutes Beispiel, fallen dir noch weitere Schritte ein.
- 10:57In dem Fall in dem Fall wäre ich der Initial commit, wenn nicht.
- 11:00Also wenn du der erste wärst, okay.
- 11:05So, und das ist natürlich jetzt nicht alles, was so diese
- 11:08Continuous Integration jetzt mal allgemein betrachtet umfassen
- 11:12kann. Es gibt natürlich auch noch
- 11:13weitere Schritte, ja, wir haben jetzt, so sag ich mal, die
- 11:15absoluten Basics gesprochen, es kann natürlich auch noch sein,
- 11:19dass man ne statische Codeanalyse laufen lässt oder
- 11:23was auch immer da noch an Checks laufen.
- 11:26Zu kurz erklären, was ne statische Codeanalyse ist.
- 11:28Nur falls das jetzt irgendwie für irgendjemanden unklar ist.
- 11:32Im Ja, im Prinzip nutzt du da Tools, dass du ein gewisses
- 11:35Regelset hast, worauf du ja auch wirklich statisch deinen Code
- 11:39überprüfst. Das kann sein ja selbst die
- 11:43Zeilenlänge wäre so eine Regel, die du damit definieren kannst.
- 11:47Also wirklich statische Checks, um so einfach schon im Vorfeld
- 11:50Richtlinien auch einhalten zu können.
- 11:52Ja, so kann man sich das jetzt mal vereinfacht vorstellen, gibt
- 11:55aber halt auch. Verschiedene Normen, da gibt es
- 11:58halt zum Beispiel auch misrat, Shakes und was es da alles gibt
- 12:01am Ende. Das ist aber n Thema für sich
- 12:04würde ich sagen, aber so kann man sich vorstellen, dass du
- 12:07halt quasi feste Regeln auf deinen Code Änderungen anwendest
- 12:10und schaust, ob da noch alles erfüllt ist.
- 12:12Ja. Genau, also klar.
- 12:15Im Endeffekt ist es halt ne ne Frage der Definition, weil du
- 12:18sagst ja du möchtest deinen Code.
- 12:20Also wenn wir jetzt wirklich auf einer ganz oberen Ebene agieren,
- 12:23würde ich sagen, die Integration automatisch in die Codebasis ist
- 12:27wichtig und. Rein theoretisch würde ich
- 12:29sagen, ne CI wäre auch ne automatische Integration, wenn
- 12:33du einfach nur sagst OK der Code kommt in die Codebasis, so ganz
- 12:37auf einem reinen oberen Level und dann ist natürlich die Frage
- 12:39wie sicher willst du dir denn sein, dass dein Code auch gut
- 12:41ist und gut funktioniert und dann kannst du natürlich im
- 12:43Optimum, also es sollte es ist eigentlich n Standard, ne Tests
- 12:46sollten also die gehören für mich auch dazu, aber rein
- 12:49theoretisch kannst du sagen ey wir wollen Tests laufen lassen
- 12:51bevor man den Code integriert in die Codebasis genauso wie du
- 12:54meintest. Diese statische Codeanalyse ist
- 12:57n gutes Beispiel, genauso kann es.
- 12:58Kann man da ja definieren. Was wollen wir denn checken über
- 13:01diese statische Code Analyse damit wir sagen das passt für
- 13:04uns von der vom Qualitätsanspruch zum Beispiel,
- 13:07das ist ja so ein bisschen definitionssache und genauso wie
- 13:11zum Beispiel, wenn du Tests laufen lässt, kannst du ja auch
- 13:13so eine sogenannte Coverage überprüfen, ne, also eine Code
- 13:16coverage, das heißt welcher Code ist denn eigentlich abgetestet
- 13:21ne? Also einfach das ist ja auch so
- 13:22eine Art Metrik die man nutzen kann.
- 13:26Können wir auch noch mal näher drauf eingehen, aber jetzt nicht
- 13:27unbedingt in dieser Folge. Aber es sind ja dann auch wieder
- 13:30ist ja auch wieder die Frage, ob jemand sagt, Ja Code Coverage,
- 13:33nicht Code doch Code coverage 100% also müssen es sein oder
- 13:3890. 100% Reich hab ich grad versprochen, Jahrzehnt werden
- 13:42besser. Ja, aber weißt du, dass du zum
- 13:45Beispiel sagst, ja OK, 90 sind auch OK oder was auch immer?
- 13:47Also das ist ja mal ne Frage von der Definition für sich selber
- 13:50fürs eigene Projekt. Genau.
- 13:52Und wenn man dann aber sagt, OK, das sind meine Parameter nach
- 13:56diesen Parameter, nach diesen Checks, nach diesen Metriken,
- 13:59gucke ich, dass zum Beispiel der der Code auch integriert wird in
- 14:02die Codebasis. Genau, weil das hast du ja schon
- 14:06schon schön gesagt. Erhöht denn einfach die
- 14:08Codequalität. In der Codebasis, das heißt die
- 14:11Änderungen entsprechend dann deiner gewünschten Qualität am
- 14:15Ende und auch wie du schon gesagt hast, ist es natürlich
- 14:17absolut richtig, dass das Projektspezifisch ist.
- 14:20Auch zum Beispiel noch mal ganz kurz die statische Codeanalyse,
- 14:24das sind ja festgelegte Regeln aus dem Projekt heraus, sag ich
- 14:28mal, auf die man sich committed hat und dann sollen die
- 14:31natürlich gecheckt werden, aber die müssen nicht in jedem
- 14:33Projekt gleich sein, da gibt es jetzt kein.
- 14:35Sagen wir mal ein globales richtig oder falsch und genauso
- 14:38kann ja auch die sämtlichen Tests, die man laufen lassen
- 14:43laufen lässt, 123 quasi variieren.
- 14:48Also beispielsweise du hast nur Unit Tests laufen, dann laufen
- 14:51erstmal die Unit Tests, du hast vielleicht noch System Tests,
- 14:53dann laufen die Unit Tests, dann die System Tests und da hast du
- 14:56halt vielleicht mehrere Instanzen, also stages bis diese
- 14:59Integration am Ende denn durchgeführt wird
- 15:01beispielsweise. Und aber am Ende zahlt es halt
- 15:05alles ins Gleiche ein zu sagen. Ich möchte kontinuierlich, das
- 15:09heißt regelmäßig Änderung in meine Gesamtcodebasis einpflegen
- 15:14und das automatisiert mit Gewissen.
- 15:16Checks, um einfach meine Codequalität zu erhalten.
- 15:18Genau, genau was und das ist nämlich ja, was ich dazu sagen
- 15:23muss, ist, dass ich tatsächlich meistens bisher so gearbeitet
- 15:26hab, dass wenn man jetzt davon ausgeht und du sagst, alle
- 15:28Checks sind gepasst, ne, also Check.
- 15:32Und dann würdest du sagen, OK, du hast zum Beispiel, sagen wir
- 15:35mal, Du hast n Branch, auf dem wird alles ausgeführt und danach
- 15:39wenn es passt, wird automatisiert dieser Branch in
- 15:41die Codebasis integriert. Ne also in dem in den Main
- 15:44Branch oder so und ich hab aber bisher immer so gearbeitet, dass
- 15:49sozusagen erst die Integration in den Main Branch passiert ist.
- 15:53Also du wirklich gesagt hast, wirklich Pushe auf Main und
- 15:55danach liefen alle Tests los und alles was wir gerade besprochen
- 15:59haben. Es ist natürlich immer die
- 16:01Frage, wie das auch wiederum passt.
- 16:05Und in dem Fall fand ich, war das an sich OK.
- 16:07Man könnte sich ja natürlich jetzt hinstellen und sagen, ja
- 16:10gut, aber was ist denn, wenn du jetzt zum Beispiel was pusht,
- 16:13Feierabend machst und die Tests laufen rot und irgendjemand
- 16:16morgen am nächsten Tag zieht sich den aktuellen Stand und hat
- 16:21rote Tests. Ist natürlich nicht die feine
- 16:24Art und das sollte also, wenn man das so macht, wie ich es
- 16:26gerade beschrieben habe, wie ich auch oft bisher gearbeitet habe,
- 16:29muss ich ganz ehrlich sagen, dann muss man natürlich ein paar
- 16:32Regeln aufstellen, zum Beispiel du pusht was, guckst, dass deine
- 16:35Pipeline auch grün gelaufen ist und nur wenn das der Fall ist,
- 16:38kannst du sozusagen auch in Ruhe Feierabend machen, oder du pusht
- 16:41es halt am nächsten Tag. Wichtig an der Stelle ist
- 16:44natürlich, dass andere aus dem Team jetzt keinen nicht
- 16:48lauffähigen oder? Also nicht lauffähigen stand
- 16:51kriegen oder ein Stand, wo die Tests rot sind.
- 16:53Darauf muss man dann natürlich achten, ist aber noch ein
- 16:57kleiner Unterschied zwischen zum Beispiel die Art und Weise, zum
- 17:00Beispiel auch wie man arbeitet, also das wäre jetzt so trunk
- 17:03based, aber darüber können wir auch mal wann anders quatschen.
- 17:07Ja, also genau das ist halt auch projektabhängig und auch wie
- 17:11viele Entwickler es gibt, weil in deiner Arbeitsmethode noch
- 17:14als Anmerkung lässt du ja oder bist du in der Lage deine.
- 17:19Testumgebung Lokal laufen zu lassen und du lässt sie laufen
- 17:22ne und hast im Prinzip für dich als Teil von CI lokal die Tests
- 17:29laufen lassen und die Software gebaut und siehst okay es
- 17:32funktioniert. Ich kann es jetzt integrieren
- 17:34und die Wahrscheinlichkeit ist jetzt sehr sehr hoch, dass die
- 17:37Tests da auch grün sind, weil ich die gleichen Tests lokal
- 17:39laufen lassen habe, wenn das nicht möglich ist, sollte man
- 17:43so. Diesen Ansatz wechseln und
- 17:46sagen, OK, ich bin jetzt zum Beispiel in der Git Welt auf
- 17:49einem extra Branch, da laufen die Tests und wenn das Grün ist
- 17:52und alles gecheckt ist, erfolgt die Integration.
- 17:54Also das ist halt auch immer ein bisschen projektabhängig und
- 17:57deswegen finde ich es auch voll OK wenn du sagst in der Regel
- 18:00hat das ausgereicht so zu arbeiten, weil du es halt viel
- 18:03lokal einfach schon überprüft hast sozusagen, und da gibt es
- 18:06natürlich auch andere Möglichkeiten.
- 18:08Du kannst auch diese lokalen Überprüfung automatisiert laufen
- 18:11lassen, ist aber dann wirklich ein anderes Thema jetzt.
- 18:13Ja. Ja, auf jeden Fall.
- 18:15Aber wie gesagt, das wollte ich nur noch mal sagen, dass es im
- 18:17Endeffekt gibt es immer so eine, sozusagen diese Theorie und die
- 18:21Praxis hinterher, und es ist durchaus möglich, dass man auch
- 18:24ein bisschen davon abweicht, aber der Grundgedanke sollte
- 18:28halt eben da sein, ne, dass eben bestimmte Checks automatisiert
- 18:31passieren und nichts quasi irgendwann in die lauffähige
- 18:35Anwendung oder die benutzte Endanwendung sozusagen gelangt,
- 18:39ne was nicht da hin soll. Also nur noch mal so als Kleine,
- 18:45als kleiner Realitätscheck aus meiner Sicht.
- 18:47Ja, man muss dazu auch sagen, und da kommen wir nämlich auch
- 18:51gleich zu einem wesentlichen Unterschied, ob man mit CI oder
- 18:54nicht arbeitet. Also sag ich mal mehr so in der
- 18:55traditionellen Softwareentwicklung noch ist.
- 18:58Dass, wenn du von Änderungen jetzt sprichst in deiner
- 19:01Arbeitsweise muss man ja auch anmerken, dass es sich um kleine
- 19:04Änderungen handelt, weil kontinuierliches integrieren,
- 19:07das sind jetzt keine riesen Changes auf allen Ebenen, die du
- 19:11nach 5 Wochen reinhaust, sondern eher auf Daily Basis.
- 19:16Also du nimmst dir was, du bearbeitest es und integrierst
- 19:20es und das möglichst an einem Tag, also weißt du wirklich
- 19:22kleine Änderungen. Und dann hast du natürlich auch,
- 19:25selbst wenn dann doch noch ein Fehler passiert, einen sehr
- 19:29guten Überblick, wo also wodurch es auftreten muss.
- 19:32Jetzt also du kannst es sehr stark eingrenzen und schnell
- 19:35fixen und dann lässt du die das einfach noch mal laufen, im
- 19:37Prinzip also nur mal noch mal als Anmerkung, weil das ist
- 19:41nämlich der große Vorteil gegenüber der traditionellen
- 19:44Softwareentwicklung, also der Vorteil von CI, dass du dadurch.
- 19:49Dann nicht so lange Release Zyklen hast und Release im Sinne
- 19:52von auch wirklich jetzt Änderungen in den Code
- 19:54reinbringen. Nennen wir es mal Changes, also
- 19:57sozusagen. Genau, genau.
- 20:00Weil wenn du jetzt das nicht machst, dieses kontinuierliche
- 20:04und sagst, ich arbeite jetzt 56 Wochen an meinem Thema, weil ich
- 20:06nehme jetzt ein riesen Ticket, also ein riesen Feature was
- 20:09überall Änderungen hat und ich ziehe mir den Stand Tag x wo ich
- 20:13anfange und 5 Wochen später komme ich wieder und möchte das
- 20:16jetzt integrieren. Wow, das ist echt nicht cool.
- 20:21Also das kann halt, je nachdem wie viele Leute darauf arbeiten,
- 20:24wenn du alleine bist, klar, kein Thema, brauchen wir nicht drüber
- 20:26reden, aber wenn jetzt mehrere Entwickler auf dieser Codebasis
- 20:29arbeiten, wirst du halt einfach einen erhöhten
- 20:34Integrationsaufwand einfach haben.
- 20:36Ja, das ist auch eine Sache, die spielt.
- 20:38Darauf finde ich. Oder zumindest nach meiner
- 20:41Erfahrung her spielt das auch Hand in Hand.
- 20:43Also das, was ich eben gerade beschrieben habe, zielt ja auch
- 20:46wirklich darauf ab, dass man zum Beispiel Aufgaben innerhalb von
- 20:50ein einem Tag roundabout im Durchschnitt lösen kann, also
- 20:54dass du Pakete hast, die du anfängst und abschließen kannst.
- 20:58Innerhalb von einem Tag, sagen wir mal vielleicht 2 Tage, aber
- 21:02wirklich. Wenn es wirklich mal hart auf
- 21:04hart kommt, sollte es nicht länger als ne Woche dauern.
- 21:07Wie lange man an so an so etwas arbeitet, weil wie du schon
- 21:10meintest, du hast sonst einfach unglaublich hohe
- 21:12Integrationsprobleme, weil du halt sagen wir mal wenn man
- 21:16jetzt im Fachjargon bleibt, halt starke Merch Konflikte hast im
- 21:19Worst Case. Es kann natürlich sein, dass es
- 21:21nicht so ist, aber die Wahrscheinlichkeit steigt
- 21:23einfach enorm. Ja, und das jeden Tag eigentlich
- 21:27uns also wirklich stark. Also wirklich, das ist super
- 21:30wahrscheinlich dann, wenn du mehrere Tage quasi nicht
- 21:32integrierst und man kann sich ja theoretisch auch einfach
- 21:35überlegen, also wenn du zum Beispiel, sagen wir mal 50
- 21:38Zeilen Code schreibst, die du dann in die neue Codebasis
- 21:42integrierst und es fliegt ein Fehler zum Beispiel in deinen
- 21:45automatisierten Checks, wie lange glaubst du, dauert es,
- 21:50wenn man zum Beispiel einen Fehler innerhalb von 50 Zeilen
- 21:52hat, du? Sozusagen diesen Fehler zu
- 21:54finden in der Automatisierung und zu sagen, Oh, da ist es, das
- 21:58muss ich jetzt noch mal kurz anpassen, weil ich muss ja das
- 22:01dafür sorgen, dass die Continuous Integration
- 22:03erfolgreich wird, ne im Verhältnis zu du machst.
- 22:07Du arbeitest über einen Monat an, weiß ich nicht 5000 Zeilen
- 22:12und versuchst dann den Fehler zu finden.
- 22:14Ne, das ist halt dann immer ein bisschen die Frage.
- 22:18Also es wird sicherlich deutlich länger dauern, den Fehler in
- 22:215000 Zeilen zu finden. Gerade wenn du sozusagen dich
- 22:24daran erinnern musst. Was habe ich vor einem Monat
- 22:27denn vielleicht gemacht? Worst Case, das ist der Fehler
- 22:29da. Das ist das die absolute Hölle
- 22:30dann am Ende, zumal ja die Anwendung an sich auch stark
- 22:35weiterentwickelt hat, weil wenn ich jetzt wochenlang mich
- 22:38einschließe, sozusagen und an meinem Stand weiterentwickel und
- 22:41es gibt mehrere. Developer im Team?
- 22:45Dann werden die ja auch in der Zeit entwickeln.
- 22:47Das heißt, die Software dreht sich sozusagen weiter von der
- 22:50von dem vom Stand her und das musst du ja alles wieder
- 22:53integrieren oder überhaupt dafür sorgen, dass deine Änderungen
- 22:56noch mit dem zusammenspielen, was andere in der Zeit
- 22:59entwickelt haben. Und das ist denn auch am Ende
- 23:01diese sogenannte Integration hell.
- 23:04Weil das frisst richtig Zeit und sorgt auch dafür, dass Bugs
- 23:09eingebaut werden, weil du angenommen, du integrierst das
- 23:11jetzt für dich, du ziehst dir jetzt noch einen neuen Stand,
- 23:14Haus Deine Änderungen, Merch das zusammen und du hast eigentlich
- 23:19überhaupt kein gutes Gefühl oder eine Gewährleistung, ob das
- 23:21jetzt hier alles noch wirklich so ist, wie es sein soll.
- 23:24Wenn du Glück hast, hat das Projekt eine sehr hohe
- 23:27Testabdeckung, also wirklich gute Tests und die signalisieren
- 23:30die ob noch alles geht oder nicht, aber.
- 23:33Aber trotzdem hast du da einfach eine steigende, also über die
- 23:37Zeit eine sehr hohe Wahrscheinlichkeit, dass da, wie
- 23:41soll ich sagen, es zu Problemen kommen kann, um es mal milde
- 23:44auszudrücken. Ja, auf jeden Fall.
- 23:46Also deswegen würde ich halt auf also definitiv auch sagen, dass
- 23:49es es ist. Auf jeden Fall ratsam, gerade in
- 23:53diesem ganzen ci Kontext kleine Änderungen zu machen.
- 23:57Also wenn man nach wenn man eine Ci Pipeline hat, ist es einfach
- 24:01ratsam. Klar.
- 24:02Kleine Changes, kleine Commits, also der Umfang eines Commits
- 24:07sollte halt klein sein und das ist nicht nur eine gute
- 24:10Practice, sondern ich würde sogar fast sagen, das ist sogar
- 24:13fast ein Must have. Also aus meiner Erfahrung her
- 24:16weißt du. Ja, weil du dann einfach dieses
- 24:19CI Vorteile. Bestmöglich ausnutzen kannst ne
- 24:23also weil du ja genau in den umgekehrten, also alle Nachteile
- 24:26die wir genannt haben werden ja durch CI dann zu Vorteilen, wenn
- 24:29du es halt kontinuierlich und in regelmäßigen Abständen
- 24:32integrierst, weil du hast wie gesagt dann ne kleine kleine
- 24:35Zyklen, ne, du hast weniger integrationsaufwand.
- 24:39Du wirst weniger Probleme haben und auch frühzeitig Fehler
- 24:42erkennen in deiner Software und dadurch hast du ja die
- 24:45Möglichkeit, weil wir gesagt haben, das Ganze macht man ja
- 24:49unter dem Aspekt eine hohe Codequalität in der Basis zu
- 24:52haben oder im Projekt und genau die kannst du dann einfach
- 24:54besser gewährleisten und einhalten.
- 24:56Ja richtig, und deswegen macht es halt einfach Sinn mit CI auch
- 25:00wirklich, denn kontinuierlich das zu machen, ja definitiv.
- 25:05Ein. Also das sind natürlich alles
- 25:07wirklich schöne Sachen, wo man sagen kann, okay, dass das ist.
- 25:10Wir wissen, jetzt würde ich jetzt mal abschließend sagen, im
- 25:15Sinne von, wir wissen jetzt, wieso das gut ist und was es
- 25:18ist. Im groben und ganzen aber hast
- 25:22du vielleicht auch schon mal so ein paar Probleme gehabt.
- 25:24Also ich finde es ja immer gut, wenn man sagt, das ist eine
- 25:27tolle Sache, aber meistens hast du ja trotzdem irgendwie
- 25:30Herausforderungen, die die. Die nicht ausbleiben bei bei
- 25:34solchen Sachen weißt du also, es ist ja nicht immer nur alles
- 25:36Gold was glänzt. Ja, also natürlich hast du auch
- 25:41typische Probleme oder sagen wir mal Herausforderungen bei CI und
- 25:47da geht es ja schon los, dass um dieses.
- 25:51Also frequente committen sag ich mal, was wir jetzt gerade
- 25:54besprochen haben, was so n fast schon must have ist wie du
- 25:57gesagt hast. Um das überhaupt umsetzen zu
- 25:59können, muss natürlich deine gesamte übergeordnete Struktur
- 26:03auch passen. Also ich kann ja also mal
- 26:06angenommen wir man arbeitet jetzt agil, Scrum, Kanban, gehen
- 26:10wir noch mal in die Welt. Und du kriegst einfach Tickets
- 26:13vorgesetzt, die nicht quasi eine Länge von einem Tag haben,
- 26:17sondern von 2 Wochen, weil die so geschnitten sind, also
- 26:21geschnitten von in diesem Ticket ist jetzt ein Feature abgebildet
- 26:25und das ist einfach super umfangreich, dann ist es halt
- 26:28schwierig zu sagen okay, wo mache ich jetzt meine
- 26:32Integration, wenn ich sage ich möchte einmal am Tag
- 26:34integrieren, dann muss ich ja irgendwie gedanklich, das sind
- 26:37Teilprobleme schneiden, irgendwie was integrieren, was
- 26:40lauffähig ist und. Und da kommst du halt auch in
- 26:43Struggle. Überhaupt dieses Frequente, also
- 26:45hochfrequente Committen umzusetzen.
- 26:48Ja, das und das ist nicht immer gegeben, also da, da spielt auch
- 26:50ganz viel. Quasi die Grundeinstellung im
- 26:54Projekt mit rein und wie wie deine übergeordneten
- 26:57Gegebenheiten sind, das muss man ja auch mal ganz klar sagen,
- 27:00weil du hast vorhin so schön gesagt, Realitätscheck und ich
- 27:03glaub das kennen wir beide auch sehr gut, dass das nicht immer
- 27:06gegeben ist, dass du sagst, ich hab jetzt n Ticket und das hat n
- 27:08Funktionsumfang von maximalen Tag super ich nehm mir das
- 27:12morgens, ich setz das um. Integrier ist die Pipeline
- 27:16läuft, CI ist durchgelaufen und alles ist super und am Ende des
- 27:19Tages ist dieses Feature integriert.
- 27:21In der Codebasis ist ja auch die Theorie und in der Praxis, wie
- 27:25gesagt läuft es halt nicht immer so.
- 27:28Ja das muss man auch wirklich ganz klar sagen ich.
- 27:30Hatte das auch schon gehabt, dass man halt wirklich auch gut
- 27:33nach diesem Prinzip gearbeitet hat und gut die Aufgaben so
- 27:37geschnitten waren, dass sie halt wirklich kleinteilig waren und
- 27:39trotzdem, manchmal kommt man. Zumindest ne dem was ich erlebt
- 27:44hab, nicht drumherum, dass es doch immer mal ne Aufgabe gibt,
- 27:47die dann doch umfangreicher ist. Und ich find immer, je mehr
- 27:52Leute im Team committen, desto kritischer wird es eigentlich ne
- 27:56also ich sag mal so, wenn man jetzt sagt man man hat wirklich
- 27:59nur eine Partei die committed ne wenn man jetzt sagt OK eine
- 28:03Person arbeitet an einem Projekt oder 2 im Pair Programming
- 28:06beispielsweise ist es noch nicht ganz so schlimm weil du halt
- 28:09nicht verschiedene. Parallelentwicklungen hast aber,
- 28:12je mehr Parallelentwicklung stattfinden, desto schlimmer
- 28:14wird es eigentlich. Und da hatten wir auch schon
- 28:16mal. In der Vergangenheit hatte ich
- 28:17das mal, dass dann auch wirklich ein sehr, sehr großer Impact im
- 28:22Code zwingend notwendig war, der auch eine gewisse Zeit erfordert
- 28:26hat und das dann aber zu integrieren, Eieiei, das ist
- 28:30dann also manchmal kommst du nicht drumherum, dass es
- 28:33irgendwann auch einfach mal passiert, also das ist auch noch
- 28:35mal wieder ne dieser Realitätscheck, klar.
- 28:38Du hast den Punkt, dass du sagst, mach das so und
- 28:42vielleicht funktioniert es auch oftmals gut.
- 28:45Manchmal kommt man nicht ganz drumherum, also auch wenn man
- 28:48sehr, sehr stark versucht, es hinzukriegen.
- 28:52Ja. Aber Ausnahme, alles gut.
- 28:56Ich finde auch ein Punkt, was definitiv eine Herausforderung
- 29:00ist, den du gerade genannt hast, ist, wenn jetzt wirklich.
- 29:04In hoher Frequenz committed wird also quasi Änderungen
- 29:07eingepflegt werden mit vielen Entwicklern und man sich dann
- 29:11vorstellt. Ich habe jetzt aber ein Projekt,
- 29:13wo die Bildzeit der Software ziemlich hoch ist, weil es
- 29:18einfach vielleicht ein Riesenprojekt ist und es dauert
- 29:21einfach die Software zu bauen oder auch zum Beispiel die Tests
- 29:25laufen zu lassen, dass die Testumgebung schon so
- 29:28umfangreich ist. Ich sage jetzt nicht bewusst
- 29:30langsam gehen wir davon aus, sie ist schon.
- 29:34Sehr gut umgesetzt wirst du trotzdem ja irgendwann zu einem
- 29:36Punkt kommen, wo beispielsweise Systemtests einfach Zeit
- 29:39benötigen. Ja und definitiv dann, dann hast
- 29:43du natürlich trotzdem am Ende Probleme in Richtung jetzt
- 29:48integrieren wir und entweder die Pipeline ist geblockt weil
- 29:52jemand integriert und du kannst quasi gerade nicht integrieren
- 29:55und musst dann auf einen Stand integrieren, den du noch nicht
- 29:58kanntest. Ich hoffe du weißt wie ich das
- 29:59meine. Oder es läuft parallel und dann
- 30:04kann halt auch viel Chaos entstehen.
- 30:05Wenn du jetzt sag ich mal mehrere Agents hättest zum
- 30:07Beispiel, also da kommen ja irgendwann Probleme auf dich zu,
- 30:11dass du ne gewisse Ungenauigkeit, ne Ungenauigkeit
- 30:14ist das falsche Wort, ne Ungewissheit reinbekommst und
- 30:17dann kann es halt auch mal knallen, aber dafür ist ja auch
- 30:19wiederum die Stage da, also zu sagen wir machen einen
- 30:23Continuous Integration und lassen die ganzen Tests laufen,
- 30:26weil du dann einfach erkennst. Verdammt, hier ist die
- 30:28Integration fehlgeschlagen, wie du meintest und dann fixed man
- 30:32das und integriert erneut die Korrektur und dann ist wieder
- 30:35grün. Aber ich find das auch, dafür
- 30:38ist ja CI da das. Ist auf jeden Fall n sehr sehr
- 30:40guter Punkt, den du auch genau das hab ich 1 zu 1 mal so
- 30:43erlebt, natürlich mit dem wie ich das vorher meinte.
- 30:46Also es wurde erst sozusagen der Code wurde auf in in die Main
- 30:49Branch Gemerged und auf. Auf dem Moment, wo der Code in
- 30:54den Main Branch Gemergt wurde, lief die Pipeline los, also die
- 30:57Tests liefen los und so weiter ne die ganzen Checks eben und da
- 31:02war es zum Beispiel so, dass die System Tests die wir hatten, die
- 31:05waren es waren schon mittlerweile einige und das war
- 31:08auch vielleicht nicht gerade das schnellste Test Framework, was
- 31:10wir verwendet hatten, auf jeden Fall die Pipeline lief auch
- 31:13schon mindestens eine halbe Stunde, was wirklich auch ganz
- 31:17schön lange gedauert hat, also Pipelines sollten können.
- 31:21Kürzer laufen im Normalfall möglich logischerweise, aber es
- 31:24war halt schon. Also es kommt natürlich wieder
- 31:26darauf an, wie lange braucht deine Pipeline und wie
- 31:29hochfrequent wird committed, weil wenn du einmal am Tag einen
- 31:32Push machst oder einen Commit machst, dann ist es nicht
- 31:35schlimm, aber wenn du zum Beispiel wirklich mehrmals am
- 31:40Tag vielleicht einmal die Stunde mehrmals in einer Stunde commits
- 31:44machst und jedes Mal die Pipeline läuft.
- 31:46Dann hast du also dann hatten wir auch schon mal den Moment,
- 31:49dass du hast ja immer so Stages, zum Beispiel, du sagst, du hast
- 31:52Stage 1, sind jetzt zum Beispiel Unit Test Stage 2 sind System
- 31:54Tests und irgendwo bricht der bricht die Integration ab oder
- 31:58zumindest diese Checks Fehlerfall genau die Pipeline
- 32:01meldet rot und sagt Ich kann hier nicht weitermachen und dann
- 32:03war es zum Beispiel so, dass irgendeine andere Partei hat
- 32:08gepusht und wir haben auch gepusht, sagen wir mal 3 Minuten
- 32:12hintereinander, man spricht sich ja nicht ab.
- 32:15Dafür gibt es ja die Pipeline und dann sind zum Beispiel die
- 32:18Systemtests rot gelaufen und wir wussten aber hinterher nicht,
- 32:21welcher Commit hat denn jetzt also auf den ersten Blick, man
- 32:24muss da n bisschen in den Logs gucken und so weiter was dauert
- 32:26halt, es ist es frisst n bisschen Zeit, aber am Ende war
- 32:29dann erstmal nicht auf den ersten Blick klar, welche
- 32:31Änderungen hat denn jetzt eigentlich diesen diesen Fehler
- 32:35hervorgerufen? Und das ist dann natürlich da
- 32:39ist sind dann auch ein bisschen Herausforderungen, die auftreten
- 32:41können, und das ist auch ein sehr, sehr wichtiger Punkt, dass
- 32:44man auch wirklich daran denkt und sagt, klar, meine Pipeline
- 32:48läuft vielleicht nicht lange, aber lange ist auch immer die
- 32:50Frage, wie sind die Umstände da, das wollte ich halt auch noch
- 32:53mal irgendwie klarstellen, und dann ist, was mir auch noch
- 32:57einfällt, um jetzt auf den nächsten Herausforderungspunkt
- 33:00zu kommen, der mir einfällt, sind flaky.
- 33:02Tests Ah ja, gutes Beispiel, also Gute.
- 33:06Gute Herausforderung, nicht Beispiel, Das hat uns schon mal
- 33:09richtig die Nerven geraubt. Aber also flaky Tests sind ja
- 33:13zum Beispiel, also das sind ja Tests, die sag ich jetzt mal im
- 33:16groben und ganzen richtig funktionieren, also von der
- 33:20Sache her eigentlich das richtige abbilden, aber unter
- 33:23bestimmten Wechselwirkungen mit anderen Tests oder
- 33:28Wechselwirkungen mit anderen Dingen, was auch immer, manchmal
- 33:31rot und manchmal grün laufen, so und.
- 33:34Das ist halt kann durchaus schwierig sein, weil sagen wir
- 33:38mal, diese Situation, die wir gerade hatten.
- 33:40Einer hat also eine Partei, hat flaky Tests und das heißt so was
- 33:44wie zum Beispiel du lässt lokal, lässt du die deine Tests laufen
- 33:51und das ist grün, die andere Partei lässt auch die Tests
- 33:53laufen, auch lokal Grün, beide pushen, die Pipeline läuft
- 33:57hintereinander los, kurz. Kurz hintereinander so, dann
- 34:00hast du erstmal Unit Test von von Team a sozusagen oder von
- 34:03Partei A und Unit Test von Partei B, dann unit, dann die
- 34:07System Test von Partei A und dann noch mal die System Tests
- 34:10die durchlaufen diese gleiche Stage von Partei B.
- 34:12Ja. Und jetzt ist aber von einer
- 34:15Partei sind flaky Tests dabei und dann weißt du nämlich gar
- 34:20nicht mehr okay wie. Wer hat denn jetzt gerade was
- 34:22committed und und unter welchen Bedingungen dann also unter
- 34:25welchen Bedingungen ist denn jetzt diese Pipeline rot
- 34:27gelaufen? Jeder testet bei sich lokal
- 34:29vielleicht und im Best Case, also im Worst Case sozusagen
- 34:33sind auf beiden lokalen Ständen wieder alle Tests grün und beide
- 34:37Parteien denken sich so, wo kommt denn jetzt der Fehler her,
- 34:40du du siehst es weder auf der Pipeline noch siehst du es
- 34:42lokal. Klar kannst du es dann öfter
- 34:44laufen lassen, aber das ist halt natürlich es ist einfach
- 34:47schwieriger und langwieriger das zu finden.
- 34:50Ja, du kannst. Du kannst ja auch davon
- 34:53ausgehen. Wenn du jetzt also flaky Test
- 34:56noch mal allgemein ne, das kann ja dir schon richtig in die
- 34:59Suppe spucken und selbst wenn du alleine nur integrierst, gehen
- 35:03wir mal davon aus, die Tests sind flaky, weil du irgendwelche
- 35:09Vorbedingungen für deine Tests hast oder vielleicht irgendwie.
- 35:13Systeme angebunden sind, die zum Beispiel Zeitabhängig sind.
- 35:17Dass du sagst, OK, ich hab timeouts drin oder so und du
- 35:20sorgst einfach nicht dafür, immer die gleichen Gegebenheiten
- 35:22für deinen Test zu haben, so n ähnliches Problem hatten wir ja
- 35:25mal durch Side Effects in der Testumgebung und dann klappt es
- 35:29und sag ich mal jede vierten Durchlauf oder jeder dritte
- 35:32Durchlauf läuft n Test rot weil dann Timeout entsteht.
- 35:36Beispielsweise. Und dann hast du ja nicht mal
- 35:39unbedingt viele oder mehrere integrieren und dann werden die
- 35:43Tests flaky, weil Änderungen reinkommen, die Site Effects
- 35:46verursachen, sondern du hast vergraben, irgendwo versteckt
- 35:51Dinge, die Site Effects auslösen und die wären nur bei jedem 3.4.
- 35:55Durchlauf sichtbar und das kann passieren.
- 35:57Wir haben das erlebt und. Und dann ist es ja schon.
- 36:01Du kannst dich hinstellen und sagen, Na ja, gut, dann ist die
- 36:02Pipeline, läuft halt bei jedem vierten Mal rot, dann starten
- 36:05wir es einfach noch mal. Aber das frisst ja un also
- 36:08unendlich Zeit plus du musst immer wieder gucken was ist da
- 36:11passiert und dann stellst du dich ja nicht hin und sagst Ah
- 36:14das ist flaky Test XY wir lassen es einfach noch mal laufen, also
- 36:18deswegen sollte man sowas. Mitkriegen, unbedingt fixen, das
- 36:23wird sonst richtig übel, irgendwann ja, vor allem, wir
- 36:25lassen es noch mal laufen, ist ja die Frage, wie lange läuft
- 36:28zum Beispiel gerade deine Pipeline richtig und dann sind
- 36:31wir wieder bei der Dauer der Pipeline, weil wenn du sagst,
- 36:33ach komm, wir lassen es noch mal laufen, musst aber schnell was
- 36:36integrieren und die Pipeline läuft aber ne Stunde oder was
- 36:38hast du gesagt ne halbe Stunde da geht halt Zeit ins Land dann
- 36:41ich hatte. Auch schon ne Pipeline, die lief
- 36:43über 2 Stunden, das war gar nicht cool, hat auch super
- 36:45behindert und da merkst du spätestens an dem Punkt, dass es
- 36:48n richtiger wie nennt man das? Pain in the ass also das ist,
- 36:52das geht gar nicht, ne und da muss man halt was ändern und das
- 36:57ist aber auch also ne andere Story, aber es ist anstrengend
- 37:01die Pipeline zu optimieren oder kann anstrengend sein, sagen wir
- 37:04mal so, es ist durchaus ne Möglichkeit, dass es anstrengend
- 37:06werden. Kann aber gerade so als Def Ops
- 37:10Team. Was mich da zum Beispiel
- 37:12motiviert bei dem Thema ist, wenn man sich einfach nur vor
- 37:14Augen führt wie viele. Nutzer verwenden diese Pipeline
- 37:18oder integrieren über diese Pipeline.
- 37:21Und wieviel Zeit kannst du jedem einzelnen Developer dann
- 37:27ersparen, wenn du kleine Optimierung einbaust und wenn
- 37:31einfach nur übertrieben gesagt, die Pipeline ein 2 Minuten
- 37:34schneller ist, dann sind das ja das das das multipliziert sich
- 37:38ja über die Entwicklerinnen und Entwickler und das finde ich ist
- 37:42halt immer ein Grund zu sagen okay wenn wir noch ob also ob.
- 37:46Optimierungspotenzial haben? Dann lohnt es sich immer die
- 37:49Zeit da reinzustecken, auch wenn es vielleicht anstrengend ist
- 37:52oder wirklich auch kann. Sehr, sehr schwer aus sein, da
- 37:55das letzte Rauszuquetschen an Performance halt.
- 37:58Ne, aber es lohnt sich am Ende definitiv.
- 38:01Das stimmt und ein ein Punkt würde ich noch gerne sagen,
- 38:04bevor wir jetzt quasi dann bald zum Ende kommen, aber was auch
- 38:08noch eine wichtige Herausforderung ist, ist zum
- 38:12Beispiel, dass man die Umgebung. In auf der Pipeline mit der
- 38:17Umgebung, die man lokal Nutzer Entwicklung gleich hält, weil
- 38:21wenn du zum Beispiel unterschiedliche Abhängigkeiten
- 38:24vielleicht lokal hast und du aber zum Beispiel irgendwie noch
- 38:28andere Skripte hast um irgendwelche Abhängigkeiten auf
- 38:30der Pipeline, auf der auf der Building Machine was auch immer
- 38:34dazu installieren, also wenn irgendwie deine lokale und die
- 38:37remote, wenn ich es jetzt einfach mal Umgebung
- 38:39unterschiedlich sind. Das ist definitiv nicht ratsam,
- 38:42weil man sollte immer gucken, dass sozusagen die lokale
- 38:46Entwicklungsumgebung unabhängig mehr oder weniger ist, von der
- 38:50wo auch die Pipeline läuft, also dass man sich darum sozusagen
- 38:53nicht kümmern muss. Diese Art von Unabhängigkeit
- 38:56meine ich. Ja, ist halt auch wichtig.
- 38:59Wenn du jetzt beispielsweise so End TO End Test laufen lässt
- 39:04oder so, dass du halt auch die gleichen sage ich mal mogs hast.
- 39:08Also dass du sagst ich, ich bilde halt meine gleiche
- 39:10Umgebung ab, weil du kannst ja nicht immer gegen echte
- 39:13Drittanbietersysteme gehen, sondern dann wirst du
- 39:15wahrscheinlich irgendwelche Dummies dafür haben und dass du
- 39:18da einfach gleiche Umgebung schaffst.
- 39:20Genau das ist natürlich auch immer zusätzlich ne
- 39:22Herausforderung, das Ganze aufzusetzen.
- 39:24Aber zahlt sich am Ende oder sobald es läuft sag ich mal
- 39:28recht schnell wieder aus. Und genau also du kommst schnell
- 39:31an den Punkt wo du sagst Gott sei Dank haben wir das.
- 39:33Gemacht? Ja, auf jeden Fall.
- 39:35Aber wenn wir jetzt an der an dem Punkt sind und sagen, OK
- 39:39klar, soweit können wir jetzt sozusagen den Code integrieren,
- 39:42wir wissen, was die Herausforderungen sind, worauf
- 39:43man vielleicht auch achten sollte, das ist ja der Punkt, wo
- 39:47wir den Code. Bereit haben, wo wir sagen Okay
- 39:51neue Änderungen sind in der Codebasis drin.
- 39:53Sie sind jetzt theoretisch bereit, damit weiterzumachen.
- 39:58Genau, und da kommen wir natürlich zu der Frage, wann
- 40:01entscheidet man jetzt? Es sind genug Änderungen
- 40:05eingeflossen und jetzt wollen wir quasi eine neue Version der
- 40:08Software an beispielsweise den Kunden ausrollen.
- 40:11Genau, ich denke da möchtest du hin, gedanklich genau.
- 40:14Also es ist. Im Endeffekt kommt ja dann
- 40:16sozusagen noch ein der nächste Step auf die Pipeline, den wir
- 40:19dann. Dann in der folgenden in einer
- 40:21der nächsten Folgen von von unserem Podcast bzw von der
- 40:24defops Reihe behandeln wollen und da geht es dann im Endeffekt
- 40:28um Continuous Delivery, Continuous Deployment.
- 40:32Das sind ja auch 2 Dinge die gerne mal als Synonym von CD
- 40:36benutzt werden und da wollen wir dann auf jeden Fall darauf
- 40:39eingehen was das ist und was vielleicht auch die Unterschiede
- 40:41sind genau. Genau, und das wird auf jeden
- 40:45Fall auch noch n richtig spannender Punkt, weil da kann
- 40:47man auch ne Menge zu erläutern und erzählen, weil es auch n
- 40:50sehr wichtiger Bestandteil der Pipeline am Ende ist.
- 40:54Aber ich würd gern noch mal die Folge zusammenfassen, Fabi, also
- 40:56wir haben ja jetzt über Continuous Integration
- 40:58gesprochen und wir haben ja gesagt, OK, was sind jetzt so
- 41:03die Vorteile, wenn man Continuous Integration quasi
- 41:07umsetzt und ich sage mal auch lebt, weil wir haben ja gesagt,
- 41:10man muss natürlich dann auch kontinuierlich integrieren.
- 41:13Dann sind natürlich die Vorteile, dass man frühzeitig
- 41:15Fehler erkennen kann. Man hat natürlich ein wenig
- 41:19Integrationsprobleme, weil man einfach regelmäßig integriert
- 41:23und man verkürzt natürlich die Zyklen, das heißt, wie schnell
- 41:29kommen Änderungen rein, der Zyklus wird geringer und auch
- 41:32hinblicklich, was du meintest mit CD wird man natürlich
- 41:36dadurch auch die Release Zyklen, also jetzt wirklich im Sinne von
- 41:39Release verkleinern. Weil ich halt einfach
- 41:43regelmäßige auch Updates rausgeben kann.
- 41:46Logischerweise, weil wenn ich nur alle paar Monate integriere,
- 41:48kann in der Zeit auch kein Update entstehen.
- 41:50Ja genau genau und das Ganze spielt natürlich in das globale
- 41:54Ziel rein zu sagen, wir möchten eine hohe Codequalität in
- 41:56unserem Produkt oder in unserem Projekt haben und wir Sorgen mit
- 42:00unseren Tests und sämtlichen Tools die noch laufen, also die
- 42:03Checks, dass man einfach eine hohe Codequalität gewährleisten
- 42:06kann. Genau und eine hohe
- 42:07Automatisierung logischerweise, weil wir wollen natürlich nicht
- 42:10alles das, was wir gesprochen haben, manuell.
- 42:12Jedes Mal checken, sondern es soll dann automatisch passieren.
- 42:15Weil, angenommen, man macht es manuell, wird es die Frequenz
- 42:18der Commits auf jeden Fall wieder drastisch senken.
- 42:21Ein Commit dauert definitiv. Nach der Entwicklung dauert der
- 42:24Commit vielleicht ein paar Sekunden, aber diese ganzen
- 42:27Checks manuell zu machen, würde vielleicht mehrere Stunden
- 42:30dauern, unter Umständen. Genau und noch einen kleinen
- 42:35Aufruf am Ende. Liebe Zuhörer, liebe Zuhörer,
- 42:38sollst du vielleicht noch nicht so die Berührungspunkte mit den
- 42:42DEF Ops Thema oder mit Pipelines gehabt haben, möchten wir dich
- 42:45an der Stelle natürlich auch motivieren, mal eine eigene
- 42:48kleine Pipeline zu bauen und auch quasi Continuous
- 42:52Integration in deinen eigenen Projekten zu leben.
- 42:55Und dabei spielt es keine Rolle, ob du alleine bist.
- 42:57Wie groß das Projekt ist, einfach nur mit dieser
- 43:00Arbeitsweise sich vertraut machen und die Vorteile darin
- 43:03sehen und ich denke das sollte auf jeden Fall für jeden
- 43:06förderlich sein, der das. Sich noch nicht angeschaut hat,
- 43:08weil es einfach in der heutigen Softwareentwicklung gang und
- 43:12gäbe ist, mit solchen Pipelines zu arbeiten.
- 43:15Und ja, fabi, magst du vielleicht noch so ein 2 Tools
- 43:20nennen, womit man das umsetzen kann, also Tutorials findet man
- 43:23ja auf jeden Fall an jeder Ecke, sage ich mal.
- 43:27Ja, also du kannst dafür zum Beispiel.
- 43:31Berühmte Plattformen wie zum Beispiel Github nehmen, da gibt
- 43:34es so eine github Actions, das da kann, das kann man dafür
- 43:36benutzen, ist ja auch ein gutes Beispiel.
- 43:38Es gibt auch andere Tools wie zum Beispiel Jenkins oder
- 43:42Bamboo, sowas kann man theoretisch auch auf AWS oder
- 43:45Azure in irgendwelchen Cloud Services umsetzen, es gibt auf
- 43:47jeden Fall eine Menge Möglichkeiten Tools zu
- 43:50verwenden, Concurse ist zum Beispiel auch ein Tool was man
- 43:53nutzen kann, was ist auch Open Source glaube ich, aber am Ende
- 43:57ist es ja auch so, dass es es sind.
- 44:00Lösungen, die bestehen, aber rein theoretisch sind das ja nur
- 44:03vorgefertigte Lösungen, was nicht bedeutet, dass es ohne
- 44:06sowas nicht geht. Also man kann sich ja auch
- 44:09eigene Bashskripte was auch immer zusammenbasteln, die genau
- 44:11das tun. Es ist natürlich einfacher
- 44:15Lösungen zu nutzen, die schon existieren.
- 44:17Nur gerade so für die ersten. Schritte genau, nur was halt
- 44:20wichtig ist, ist, wenn man jetzt zum Beispiel sagt.
- 44:23Mal angenommen, das und das Tool X kann ich nicht verwenden,
- 44:26bedeutet das noch lange nicht, dass CI nicht möglich ist.
- 44:29Das ist immer noch mal ein wichtiger Punkt oder ein
- 44:33wichtiger Reminder an der Stelle.
- 44:35Genau, Tino Fabi, Ich bin durch. Ich auch.
- 44:43Ich denke, wir haben es ausführlich besprochen, das hat
- 44:46mir auf jeden Fall wieder ne Menge Freude gemacht und ich
- 44:48find das Thema auch super geil, deswegen schön, dass wir darüber
- 44:50gesprochen haben, auf jeden Fall.
- 44:51Ich freu mich jetzt schon auf die CD Folge auf jeden Fall
- 44:55alles klar in dem Sinne würde ich die Folge einmal abschließen
- 44:58und auf jeden Fall auch an dich liebe Zuhörerin lieber Zuhörer
- 45:02appellieren und sagen, wenn du jetzt sagst Ey, der Podcast ist
- 45:06cool, der bringt. Mir richtig Mehrwert, das ist ne
- 45:08ne tolle Sache und mir macht es voll Spaß diesen 2 Quatschköpfen
- 45:12zuzuhören. Dann hast du auf jeden Fall die
- 45:14Möglichkeit und zu supporten, zum entweder mit einer kleinen
- 45:17Spende, das wäre super cool oder auch einfach mit Feedback.
- 45:20Ne. Also Feedback funktioniert auch
- 45:22sehr sehr gut über die Podcast Mail einfach die Mail schnappen,
- 45:27links zur Mail und zum Spenden zum Spenden Link ist in den Show
- 45:31Notes definitiv verlinkt, da kommst du dahin und ansonsten
- 45:35lass gerne ein Like da, wenn dir die Folge gefallen hat, oder?
- 45:38Und wir würden uns auch mega darüber freuen, wenn du den
- 45:41Podcast an 2 deiner Freunde oder Freundinnen empfehlst.
- 45:44Das wäre natürlich eine absolut geniale Sache.
- 45:48In dem Sinne würde ich sagen, sind wir raus für heute und
- 45:52hören uns beim nächsten Mal wieder in diesem Sinne deine
- 45:55Coding Buddies gemeinsam besser.