Technology & Engineering Culture Conference at Swiss Re
18.03.2019, nxt

Swiss Re hosted the internal three-day Technology & Engineering Culture Conference for the first time. We were invited to talk on the topics best practices with Angular, continuous delivery and the development of microservices.

One of our contacts asked us whether we would like to contribute to Swiss Re’s internal Technology & Engineering Culture (TEC) developer conference. We gladly accepted this invitation and submitted proposals for talks shortly afterwards. Some of the submissions were based on topics proposed by the organisers, others we suggested ourselves. In the end, we were invited to do five presentations on best practices in Angular, Continuous Delivery and Development of Microservices. We prepared our talks during the first two weeks of march. Overall we invested around five days per presentation. Everyone prepared their own talks. We then presented them to each other. This allowed us to give feedback to one another and ensure a high quality of the content.

Following the presentations, we received a lot of positive feedback about the way we presented and about the content. For this, and also for the critical feedback, we would like to sincerely thank the respective persons. Many thanks also go out to the TEC team, especially to Tobias Weinmann, for offering us this opportunity and for the hospitality.

First conference day

The first day of the conference was Wednesday, 13th of March, and was located at the Impact Hub “Kraftwerk” Zurich. The Impact Hub is a hip place and with its industrial look and the ship containers, it is an ideal venue for a small conference.

Overview of Angular State Management Tools

Mirco had his talk on State Management in Angular in the afternoon in the “Kommandoraum” in front of an interested audience of 30 persons. In his talk, he explained what state management is and what advantages global state management can have in everyday developer life. But he also pointed out its risks and stressed that often local states are completely sufficient.

Mirco briefly introduced the well-known frameworks “plain” RxJs, NgRx, NGXS and Akita. He had implemented the same demo application for each of the frameworks and illustrated the advantages and disadvantages of each of the frameworks.

The key message of the presentation was, “Global State” can be extremely useful, but “Local State” is perfectly fine as well! In other words, not every tiny state variable should be managed globally.

How to Organize Code to Deliver Multiple Angular Applications

Immediately afterwards, Mirco showed how to share code across several Angular projects. Live on stage he was using the @angular/cli to create an additional application next to his existing one. Mirco then generated a “library” project using the CLI to isolate a component that the other two applications share.

Mirco successfully demonstrated how easy it is to create projects using @angular/cli and how shared functionality can be easily outsourced to a library project.

The sample project is available on GitLab.

Second Conference Day

The second conference day took place in the new Swiss Re NEXT building at Mythenquai. The auditorium was impressive. In the carefully designed room, the presentations were presented on a very legible LED wall. In addition, there were small screens on the sides of the room so that the back rows could also follow the screen contents well.

Stop Releasing, Start Delivering

With the opener “Deploy to Prod on Day 2” Christian has secured the attention of the audience. It means that an employee in a new team should make a (small) change already on the second day and then that change right into production.

With reference to this, Christian explained what is actually necessary to achieve the “Day 2” goal. He addressed practical aspects as well as the cultural ones without such a goal could never be achieved.

Reduce your Toolchain with GitLab

In the afternoon Michael presented how to leverage GitLab for the organization of complete software projects. This would allow some well-known applications to be consolidated by a single central GitLab instance.

Using the example application “ZIP-Finder” Michael showed the different functions of GitLab: The organization of projects with milestones and tasks, the storage of relevant information via the Wiki and the version management of the code.

In the main part of the demonstration, Michael showed how the GitLab CI/CD functionality can be used efficiently. He first added new functionality to his sample project using the integrated Web IDE. GitLab automatically set up a new test environment for the resulting feature branch, where he was able to test the change he just made. After the development was done and the merge request closed, the test environment was automatically removed. Michael also explained the advantages of the GitLab Runner, wich — like GitLab itself — can be installed on any infrastructure (e.g. in your own data center).

The sample project is available on GitLab.

Offline Microservice Development with Docker-Compose

In many companies software services are developed by different teams. Each service has its own special task. To achieve a specific purpose, such as calculating the risk factors of an insurance policy, information from different services must be collected and combined. These services are therefore cleverly intertwined to achieve a larger goal.

The challenge in developing such services is that the surrounding services are often developed by other teams. Sometimes even the technologies used are fundamentally different.

In his live demonstration, Christian showed how different teams can exchange their services with each other. At the end of the day, each developer, independent of other teams, can develop his own services and combine them with the services developed by the other teams locally on his computer at any time. Thus testing his own work undisturbed and independent of other teams.

The presented solution is based on a clever combination of docker-compose and Docker Multistage Builds.

The sample project is available on GitLab.