
Andreas Bräu
Senior Software Developer
Senior Software Developer
Berlin, Germany
Actions
Andreas is a software developer based in Berlin. He started working on data transformation projects on huge databases. His focus moved to Spring Boot based microservices with messaging systems. Today he's doing a lot more DevOps tasks and shifting services from data centers to the cloud.
He's connected to the Software Crafters community and loves to discuss with and learn from other Software Crafters.
He's also an active member of the freifunk.net community. Here he helps as a volunteer maintaining servers, websites, and services.
Andreas ist ein Softwareentwickler aus Berlin. Er begann mit der Arbeit an Datentransformationsprojekten auf großen Datenbanken. Sein Schwerpunkt verlagerte sich auf Spring Boot-basierte Microservices mit Messaging-Systemen. Heute beschäftigt er sich mehr mit DevOps-Aufgaben und der Verlagerung von Services aus Rechenzentren in die Cloud.
Er ist mit der Software Crafters Community verbunden und liebt es, mit anderen Software Crafters zu diskutieren und von ihnen zu lernen.
Er ist auch ein aktives Mitglied der freifunk.net-Community. Hier hilft er als Ehrenamtlicher bei der Wartung von Servern, Websites und Diensten.
Area of Expertise
Topics
Building simple CRUD services with Spring Data REST
Imagine you want to build a simple web service, providing an API for CRUD (Create, Read, Update, Delete) operations. You need to
* connect to databases
* create database-specific queries
* build query statements
* create controllers
* analyse results sets
You see, that's a lot of boilerplate. Using Spring Boot and Spring Data helps you reducing this boilerplate. You don't need to care on database connections and queries anymore and use Spring Data repositories instead of query statements. The auditing feature helps to keep consistency.
With [Spring Data REST](https://spring.io/projects/spring-data-rest) you can even do more. It uses a Domain-class centric approach to repository interactions. You only need to define what's really important - the domain classes. Domains created with Spring Data REST generate controllers and their dependencies. On top you get [HATEOAS](https://spring.io/understanding/HATEOAS) links you need to walk through your data.
### Key Learnings
* comparison of a handwritten REST service and a Spring Data REST service
* use ApplicationListeners, e.g. to do some more specific validations
* how to use HTTP verbs GET, PUT, POST, PATCH and DELETE
How to break an 18 yo monolith
idealo.de launched in 2000 and started growing constantly: More features, more people, more and more lines of code. More than 50 developers in 6 teams worked on the same code base.
### The Software
The software was designed as a Swiss Army knife for our company needs. At the end we've got a big monolith that hard to maintain. Over the last years we had several approaches to extract some parts to reduce complexity. But very central parts, business functionality and the data model were never touched. The approach is centralized with a single database.
The tech stack used is up-to-date, we have Java 11 with Spring Boot with daily deployments.
### The Decision
In 2018 we made a decision: remove the single, central database and create [self-contained systems](https://scs-architecture.org). Our main goals were:
* create independent and lightweight services
* have continuous deployments
* one service - one team
* teams are responsible for "their" services, from development to operations
### Answers
* What were our steps? How did we achieve our goals?
* What technologies did we use?
* What kind of cultural changes did we have?
BED-Con 2019 Sessionize Event
Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.
Jump to top