{"name":"technologies","slug":"technologies","paginate_by":null,"paginate_path":null,"render":true,"feed":false} {"name":"Pupeteer","slug":"pupeteer","path":"/technologies/pupeteer/","permalink":"https://martin-thurau.de/technologies/pupeteer/","pages":[{"relative_path":"story/esailors.md","colocated_path":null,"content":"<p>eSailors is a software provider for online lottery platforms. They run a mutli-tenant, multi-language eCommerce platform\nwith over 400.000 monthly active users. I worked in the &quot;Games&quot; area which provides the front- and backend parts for the\nactual lottery experience of the platform.<span id=\"continue-reading\"></span></p>\n<h2 id=\"development-and-improvement-of-lotteries\">Development and improvement of lotteries</h2>\n<p>The stack is mainly JVM focused with over 70 micro (sometimes not-so-micro) services all running inside a Kubernetes\ncluster. I worked in the front- and backend to add new features to existing lotteries as well as implement completely\nnew ones. Implementing new lotteries involved touching many parts of our system from the actual UI, over the purchase\nprocess into the ticket history view as well as payment and hedging. Some of the work was done directly by team “Games”\nwhile others where coordinated with other teams inside eSailors.</p>\n<h2 id=\"extracting-the-lotteries-into-micro-frontends\">Extracting the lotteries into micro-frontends</h2>\n<p>The core frontend (called “the webshop”) was a Spring-Boot + Angular monolith that took a long time to deploy due to an\nover-complicated build system and hundreds of (sometimes flaky) integration tests. To gain the ability to deploy our\nassets independently the team Games started extracting our games core into a separate project that could be tested and\ndeployed independently and was then loaded into the core frontend via a small wrapper using an IFrame. While this worked\nout great eventually there were lots of challenges on the way.</p>\n<h2 id=\"migration-from-angularjs-to-angular\">Migration from AngularJS to Angular</h2>\n<p>The frontend for the lotteries was originally done with AngularJS. During my time we completely migrated the lotteries\nfrontend themself and also most parts of the rest of the frontend from AngularJS to Angular. This was done iteratively\nwhile keeping the shop running and continuously deploying to production. The frontend was a large, monolithic\napplication that also involved some server side rendering for certain pages. Keeping that all together and running\nsmoothly during such an invasive migration uncovered lots of interesting corner cases and bugs that we had to solve to\nkeep the site running</p>\n<h2 id=\"internationalization-of-lottery-platform\">Internationalization of lottery platform</h2>\n<p>The company decided to go into the international lottery market (starting with Ireland, followed by Scotland and\nRomania). The system was previously German only and not, in the most parts, no preparation for internationalization.\nAdding this to the front- and backend was a huge task that occupied most of the engineers for a long time. We added\nsupport for multiple languages but also different currencies and had a lot of fun fixing layout bugs because text was\nnow suddenly a lot shorter or longer than previously anticipated and finding a solution where we programmatically built\ntext from snippets.</p>\n","permalink":"https://martin-thurau.de/story/esailors/","slug":"esailors","ancestors":["_index.md","story/_index.md"],"title":"eSailors IT Solutions GmbH","description":null,"updated":null,"date":null,"year":null,"month":null,"day":null,"taxonomies":{"languages":["Typescript","Java","Javascript"],"technologies":["Angular","AngularJS","Kubernetes","Protractor","Jasmine","Pupeteer"]},"authors":[],"extra":{"work_from":"2016-10-01","work_until":"2019-03-31","logo":"story/esailors_logo.png","link":"https://www.lotto24.de/"},"path":"/story/esailors/","components":["story","esailors"],"summary":"<p>eSailors is a software provider for online lottery platforms. They run a mutli-tenant, multi-language eCommerce platform\nwith over 400.000 monthly active users. I worked in the &quot;Games&quot; area which provides the front- and backend parts for the\nactual lottery experience of the platform.","toc":[{"level":2,"id":"development-and-improvement-of-lotteries","permalink":"https://martin-thurau.de/story/esailors/#development-and-improvement-of-lotteries","title":"Development and improvement of lotteries","children":[]},{"level":2,"id":"extracting-the-lotteries-into-micro-frontends","permalink":"https://martin-thurau.de/story/esailors/#extracting-the-lotteries-into-micro-frontends","title":"Extracting the lotteries into micro-frontends","children":[]},{"level":2,"id":"migration-from-angularjs-to-angular","permalink":"https://martin-thurau.de/story/esailors/#migration-from-angularjs-to-angular","title":"Migration from AngularJS to Angular","children":[]},{"level":2,"id":"internationalization-of-lottery-platform","permalink":"https://martin-thurau.de/story/esailors/#internationalization-of-lottery-platform","title":"Internationalization of lottery platform","children":[]}],"word_count":439,"reading_time":3,"assets":[],"draft":false,"lang":"en","lower":null,"higher":null,"translations":[{"lang":"de","permalink":"https://martin-thurau.de/de/story/esailors/","title":"eSailors IT Solutions GmbH","path":"/opt/buildhome/repo/content/story/esailors.de.md"},{"lang":"en","permalink":"https://martin-thurau.de/story/esailors/","title":"eSailors IT Solutions GmbH","path":"/opt/buildhome/repo/content/story/esailors.md"}],"backlinks":[]}],"page_count":1}