Zeitraum
von 10.2021 bis 01.2024
Warum bin ich zu IC-Consult gegangen?
Hier kommt der gleiche Grund, den ich beim Wechsel von SEO in die SW-Entwicklung hatte. Meine Leidenschaft gehört der Technik und insbesondere der Programmierung. Ich wollte wieder Programmiertätigkeiten und größere Herausforderungen haben. Die IC-Consult hat mir eine große Möglichkeit angeboten, mich in Richtung Backend Entwicklung auf Basis von Java Spring Boot in CI/CD in einem SAFe Umfeld zu arbeiten. Abgesehen davon ist die IC-Consult ein Spitzenunternehmen mit großartigen Menschen und sehr vielen Vorteilen für Mitarbeiter.
Was war meine Aufgabe?
Ich war im Bereich Backend Entwicklung tätig. Wir haben in einem Team Microservices entwickelt und betreut auf Basis von Java 11 Spring Boot und NodeJS GraphQL. Wir waren ein Team von 8, die 23 Micro-Services betreut haben. Die Micro-Services waren von der Komplexität her sehr unterschiedlich. Manche waren sehr komplex mit ca. 10000 LOC und andere relativ leicht mit ca. 2500 LOC. Die Microservices liefen auf der AWS-Cloud in verschiedenen Regionen und Stages. Wir haben im Prinzip des CI/CD gearbeitet und unsere Tasks wurden in Jira organisiert. Wir hatten 2 Boards: Scrum für Entwicklung und Kanban für Support. Mein Schwerpunkt war die Qualitätssicherung.
Daher habe ich den Prozess der Bearbeitung von Bug Tickets optimiert und diese sind im 2. Jahr meistens 0 geworden. Wir konnten eine sehr hohe Qualität erreichen, dadurch dass wir rasch schnell reagiert haben und verlorene Anforderungen implementiert haben. Manche Services haben wir von einem anderen Unternehmen übernommen. Diese sind hochkomplex und benötigten Hypercare.
In welchem Projekt war ich tätig?
Ich war im Projekt MyAudi Backend für Audi tätig, wo unsere Micro-Services für CIAM (customer identity and access management) und Vehicle-Domain (vehicle-user-data and vehicle-data for front-end) eingesetzt wurden.
Anekdoten
- Wie in großen Unternehmen üblich ist, sind verschiedene Faktoren, die es dazu bringen, Probleme im Gesamtsystem zu haben. In diesem Projekt war der Consulting Aspekt sehr wichtig, denn es ging oft darum, nach den richtigen Ansprechpartnern zu suchen und diese an einem Tisch zu bringen, um Anforderungen zu besprechen. Es haben oft Anforderungen gefehlt und diese waren zu einem gewissen Teil bedacht. Menschen verlassen ihre Stellen und ein Know-How geht mit ihnen weg. Meine Aufgabe war unter anderem, mir dieses Know-How zu suchen und anzueignen.
- Manche Entwickler bleiben daran blockiert nach dem Root-Cause zu suchen. Nach Root-Cause in einem großen Konstrukt von verschiedenen Systemen zu suchen ist eins der wichtigsten Ziele der Behandlung von Fehlern. Allerdings das allererste Ziel ist, den Business-Value zu sichern. Daher muss man leider nach Workarounds greifen. In mehreren Fällen haben wir im Nachgang den Root-Cause identifizieren können. Diese sind von fehlenden Kafka Events abhängig gewesen, die wiederum wegen fehlenden Anforderungen abwesend waren. Ein anderes Beispiel ist die Übertragung einer ID eines anderen Identity-Providers über Kafka in dem Feld, wo die ID des richtigen IDP hätte sein müssen.
- Falsche Wahrheiten wie beispielsweise „nur der Bug Ersteller darf ein Bug Ticket schließen“. Manche Bug Ersteller verfolgen ihre eigenen Tickets nicht, obwohl diese gelöst oder analysiert wurden. Ich habe das Vorgehen so geändert nach dem Prinzip des „gesunden Menschenverstand“: Wenn man mit gutem Wissen und Gewissen weiß, dass das Ticket geschlossen werden kann, dann sollte man das tun mit einer expliziten Bitte das Ticket wieder zu öffnen im Falle einer nötigen Weiteranalyse und unzufriedenstellenden Ergebnissen.
- Die Dokumentation ist ein äußerst wichtiger Bestandteil eines Gesamtkonstrukts, daher setze ich auf UML-Diagramme, Confluence Seiten, Adoc, Swagger-UI und Doctopus.
Welche Technologien wurden benutzt?
- Java 11
- NodeJS
- Spring boot framework
- Apollo GraphQL framework V4
- DynamoDB
- Aurora MySQL DB
- Spring integration framework
- Spring flow framework
- Spring Batch
- Spring JPA
- Spring security framework
- AOP
- Resilience4J
- Liquibase
- Swagger Client generator
- Swagger
- Helm
- Kubernetes
- Docker
- Apache Kafka
- TLS
- Oauth 2.0
- JSON-Webtokens
- Argo-CD
- Bitbucket
- Github
- UML mit PlantUML