{"name":"technologies","slug":"technologies","paginate_by":null,"paginate_path":null,"render":true,"feed":false} {"name":"Angular","slug":"angular","path":"/de/technologies/angular/","permalink":"https://martin-thurau.de/de/technologies/angular/","pages":[{"relative_path":"story/esailors.de.md","colocated_path":null,"content":"<p>eSailors (heute Lotto24) ist eine Softwaredienstleister für Online Lotterien der eine mehrsprache mutli-tenant Plattform mit mehr als\n400.000 aktiven Nutzern betreibt. Ich war im Bereich &quot;Games&quot; beschäftigt welcher für Front- und Backend für die\nDarstellung und den Kauf der diversen Lotterien zuständig ist.<span id=\"continue-reading\"></span></p>\n<h2 id=\"weiterentwicklung-von-lotterien\">Weiterentwicklung von Lotterien</h2>\n<p>Die Plattform für den Bereich &quot;Games&quot; besteht aus 70 größtenteils JVM-basierten Microservicen (einige waren auch etwas\nweniger &quot;micro&quot;) die alle innerhalb eines Kubernetes Cluster laufen.\nMeine Aufgabe waren die Wartung unserer Codebasis und die Implementierung von neuen Lotterien im Front- und\nBackend. Diese Aufgabe umfasste typischerweise Änderungen an diversen Komponenten: Ticket-UI, Warenkorb, Spiel-Historie\nsowie Bezahlvorgang und dem &quot;hedging&quot;. Viele dieser Änderungen wurden durch das Team &quot;Games&quot; direkt durchgeführt und\nandere mit den anderen Entwicklungsteams bei eSailors koordiniert wurde.</p>\n<h2 id=\"auslagern-der-ticket-ui-in-micro-frontends\">Auslagern der Ticket UI in micro-frontends</h2>\n<p>Die Kernkomponente des Frontends (der &quot;Webshop&quot;) war Monolith aus Spring-Boot + Angular. Aufgrund komplexer\nAbhängigkeiten und lange laufenden Integrationstest stellte sich dieser häufig als Flaschenhals in unserem\nEntwicklungsprozess heraus. Um es zu Ermöglichen unserer Frontends separat vom Webshop deployen zu können haben wir die\nUI in einzelne Micro-Frontends herausgelöst. Diese konnten so eigenständig entwickelt, getestet und deployed werden.\nDie Integration in dem Webshop erfolgte dabei durch einen kleinen IFrame Wrapper im Webshop selbst.</p>\n<h2 id=\"migration-von-angularjs-zu-angular\">Migration von AngularJS zu Angular</h2>\n<p>Die UI der Lotterien und auch große Teile des Webshops waren initial noch AngularJS Anwendungen. Während meiner Zeit\nhaben wir alle diese Teile komplett nach Angular migriert. Wir haben dies iterativ durchgeführt, sodass in während der\nMigration auch weiter neue Features entwickelt werden konnten. Die Migration verlief größtenteils ohne größere Pannen,\nwir hatten allerdings eine Lange Zeit mit vielen interessanten Bugs und Edge-Cases zu kämpfen.</p>\n<h2 id=\"internationalisierung\">Internationalisierung</h2>\n<p>eSailors hat sich entschlossen den internationalen Markt zu betreten (beginnend mit Irland, gefolgt von Schottland und\nRumänien). Die gesamte Plattform war bis zu diesem Zeitpunkt ausschließlich Einsprachig und hatte in weiten Teilen weder\nUnterstützung für Mehrsprachigkeit noch für unterschiedliche Währungen. Die Internationalisierung hat viele unserer\nEntwicklung für eine lange Zeit beschäftigt und hatten viel Spaß mit dem fixen von Layout-Bugs, weil Texte plötzlich\nsehr viel kürzer oder länger waren als angenommen.</p>\n","permalink":"https://martin-thurau.de/de/story/esailors/","slug":"esailors","ancestors":["_index.de.md","story/_index.de.md"],"title":"eSailors IT Solutions GmbH","description":null,"updated":null,"date":null,"year":null,"month":null,"day":null,"taxonomies":{"technologies":["Angular","AngularJS","Kubernetes","Protractor","Jasmine","Pupeteer"],"languages":["Typescript","Java","Javascript"]},"authors":[],"extra":{"work_from":"2016-10-01","work_until":"2019-03-31","logo":"story/esailors_logo.png","link":"https://www.lotto24.de/"},"path":"/de/story/esailors/","components":["de","story","esailors"],"summary":"<p>eSailors (heute Lotto24) ist eine Softwaredienstleister für Online Lotterien der eine mehrsprache mutli-tenant Plattform mit mehr als\n400.000 aktiven Nutzern betreibt. Ich war im Bereich &quot;Games&quot; beschäftigt welcher für Front- und Backend für die\nDarstellung und den Kauf der diversen Lotterien zuständig ist.","toc":[{"level":2,"id":"weiterentwicklung-von-lotterien","permalink":"https://martin-thurau.de/de/story/esailors/#weiterentwicklung-von-lotterien","title":"Weiterentwicklung von Lotterien","children":[]},{"level":2,"id":"auslagern-der-ticket-ui-in-micro-frontends","permalink":"https://martin-thurau.de/de/story/esailors/#auslagern-der-ticket-ui-in-micro-frontends","title":"Auslagern der Ticket UI in micro-frontends","children":[]},{"level":2,"id":"migration-von-angularjs-zu-angular","permalink":"https://martin-thurau.de/de/story/esailors/#migration-von-angularjs-zu-angular","title":"Migration von AngularJS zu Angular","children":[]},{"level":2,"id":"internationalisierung","permalink":"https://martin-thurau.de/de/story/esailors/#internationalisierung","title":"Internationalisierung","children":[]}],"word_count":354,"reading_time":2,"assets":[],"draft":false,"lang":"de","lower":null,"higher":null,"translations":[{"lang":"en","permalink":"https://martin-thurau.de/story/esailors/","title":"eSailors IT Solutions GmbH","path":"/opt/buildhome/repo/content/story/esailors.md"},{"lang":"de","permalink":"https://martin-thurau.de/de/story/esailors/","title":"eSailors IT Solutions GmbH","path":"/opt/buildhome/repo/content/story/esailors.de.md"}],"backlinks":[]},{"relative_path":"story/keeeb.de.md","colocated_path":null,"content":"<p>Keeeb war initial als Tool zu sammeln und organisieren von Informationen für den persönlichen Gebrauch geplant (ähnlich zu\nGoogle Keep, Evernote, etc.). Nach einem Pivot hat sich der Fokus vom B2C auf B2B verschoben und aus Keeeb wurde einem\nkollaborativen Tool zur Recherche im Team.</p>\n<p>Ich habe hier während meines Masterstudiums als Werksstudent angefangen und bin nach meinem Abschluss als Vollzeit Entwickler\nhier geblieben.<span id=\"continue-reading\"></span></p>\n<h2 id=\"cross-browser-erweiterung-zur-informationssammlung\">Cross browser Erweiterung zur Informationssammlung</h2>\n<p>Um Informationen in Keeeb zu Speichern ist natürlich ein Werkzeug nötig um diese Informationen während des browsen zu\nspeicher. Als ich hier anfing, gab es nur eine sehr rudimentäres <a href=\"https://de.wikipedia.org/wiki/Bookmarklet\">Bookmarklet</a>\ndas diese Aufgabe erfüllt hat. Eine meiner ersten Aufgaben bei Keeeb war es, diese Bookmarklet in eine echte\nBrowser-Extension zu verwandeln. Hierzu haben wir das Kango Framework verwendet, mit dem es uns möglich war, mit einer\nCode-Basis eine Browser extension für alle gängigen Browser zu erstellen.</p>\n<h2 id=\"cross-plattform-app-ios-android\">Cross plattform App (iOS &amp; Android)</h2>\n<p>Als Startup hatte Keeeb nicht die finanziellen Ressourcen um für die Entwicklung von mobilen Apps separate Entwickler\nzu beschäftigen. Daher habe ich eine App für beide Plattformen auf Basis von Phonegap und Backbone.js entwickelt. Ich\nbin immer noch recht Stolz darauf, das die Anwendung, obwohl sie nicht nativ war, eine ziemlich sehr brauchbare\nNutzererfahrung geliefert hat.</p>\n<h2 id=\"neuentwicklung-des-frontends\">Neuentwicklung des Frontends</h2>\n<p>Das initiale Frontend von Keeeb basierte auf serverseitig gerendertem HTML und einem Haufen jQuery Code. Die Neuauflage\nwar eine (zu der Zeit) moderne single page Anwendung auf basis von AngularJS. Ich war hier von Anfang an in Design und\nEntwicklung involviert und habe auch nach dem initialen Release auch weiter an neuen Features und der Wartung gearbeitet.</p>\n<h2 id=\"wartung-und-weiterentwickung\">Wartung und Weiterentwickung</h2>\n<p>Ich war außerdem in der Weiterentwicklung des Pyramid basierten backends eingebunden. Während meine Zeit bei Keeeb haben\nwir unsere Datenbank von MongoDB zu PostgreSQL gewechselt. Außerdem haben wir eine Elasticsearch basierte Volltextsuche\nhinzugefügt und unser Job-System von einer in-House Lösung zu einer Lösung auf Basis von Celery und RabbitMQ\nmigriert.</p>\n<h2 id=\"director-of-development\">Director of development</h2>\n<p>Aufgrund von personellen Veränderungen habe ich kurzfristig auch die Rolle des “Director of development” gehalten. In\ndieser Rolle war ich für das technische Design und die Planung neuer Features verantwortlich und habe die Umsetzung\norganisiert.</p>\n","permalink":"https://martin-thurau.de/de/story/keeeb/","slug":"keeeb","ancestors":["_index.de.md","story/_index.de.md"],"title":"keeeb GmbH","description":null,"updated":null,"date":null,"year":null,"month":null,"day":null,"taxonomies":{"technologies":["Angular","AngularJS","Kubernetes","Protractor","Jasmine","git"],"languages":["Typescript","Java","Javascript"]},"authors":[],"extra":{"work_from":"2013-04-01","work_until":"2016-10-30","logo":"story/keeeb_logo.png","link":"https://www.keeeb.com/"},"path":"/de/story/keeeb/","components":["de","story","keeeb"],"summary":"<p>Keeeb war initial als Tool zu sammeln und organisieren von Informationen für den persönlichen Gebrauch geplant (ähnlich zu\nGoogle Keep, Evernote, etc.). Nach einem Pivot hat sich der Fokus vom B2C auf B2B verschoben und aus Keeeb wurde einem\nkollaborativen Tool zur Recherche im Team.</p>\n<p>Ich habe hier während meines Masterstudiums als Werksstudent angefangen und bin nach meinem Abschluss als Vollzeit Entwickler\nhier geblieben.","toc":[{"level":2,"id":"cross-browser-erweiterung-zur-informationssammlung","permalink":"https://martin-thurau.de/de/story/keeeb/#cross-browser-erweiterung-zur-informationssammlung","title":"Cross browser Erweiterung zur Informationssammlung","children":[]},{"level":2,"id":"cross-plattform-app-ios-android","permalink":"https://martin-thurau.de/de/story/keeeb/#cross-plattform-app-ios-android","title":"Cross plattform App (iOS & Android)","children":[]},{"level":2,"id":"neuentwicklung-des-frontends","permalink":"https://martin-thurau.de/de/story/keeeb/#neuentwicklung-des-frontends","title":"Neuentwicklung des Frontends","children":[]},{"level":2,"id":"wartung-und-weiterentwickung","permalink":"https://martin-thurau.de/de/story/keeeb/#wartung-und-weiterentwickung","title":"Wartung und Weiterentwickung","children":[]},{"level":2,"id":"director-of-development","permalink":"https://martin-thurau.de/de/story/keeeb/#director-of-development","title":"Director of development","children":[]}],"word_count":366,"reading_time":2,"assets":[],"draft":false,"lang":"de","lower":null,"higher":null,"translations":[{"lang":"de","permalink":"https://martin-thurau.de/de/story/keeeb/","title":"keeeb GmbH","path":"/opt/buildhome/repo/content/story/keeeb.de.md"},{"lang":"en","permalink":"https://martin-thurau.de/story/keeeb/","title":"keeeb GmbH","path":"/opt/buildhome/repo/content/story/keeeb.md"}],"backlinks":[{"permalink":"https://martin-thurau.de/de/story/master/","title":"Universität zu Lübeck"}]}],"page_count":2}