Logical, Agnostic and Holistic.
We love to develop digital products. Especially when we are challenged holistically. Our strengths come into full play when developing business applications: when we transform complex business logic into scalable code and real user experiences. Our business applications usually consist of a modern frontend that interacts with various backend systems via an API layer (ideally GraphQL). In turn, our frontends are designed very close to humans; as we have dedicated teams that only deal with user experience design and user interface design. Our backends orchestrate the right techniques and technologies for high performance and data security - and fit seamlessly into the cosmos of the overall applications. The best-of-breed approach enables us to find the best possible solution to any problem. Or the most cost-effective one. Or the most compliant one - depending on the requirements. In our own code base, we live the event-driven architecture and celebrate the microservice idea. But a monolithic application behind an API is just one big microservice ;-).
Technologies come and go. But business logics endure and enjoy special attention. And rightly so. To map business logic as smartly as possible, we use domain-driven design: The hexagonal architecture enables a clean separation of business and technology. This reduces dependencies and makes third-party systems such as databases easier to exchange. Event sourcing refers to a procedure in which all actions that happen in a system are stored in an event storm. This supports auditability and enables complete traceability of all actions in the system. Read accesses take place here via projections. For performance reasons, the models for writing and reading (CQRS) are separated.
In business applications, technical challenges need to be solved easily. For example: What if a business application should update itself automatically in the user's browser - without having to constantly check with the server to see if there's anything new? Be it because of a chat function that must always be available; or because of a sub-application where data or statistics should always be updated in real time. We solve such end-to-end requirements via high-performance communication services written in Golang. These communicate with the connected frontends via websockets in real time.
We not only place great value on the code, but also on the "surroundings". To bring the production system infrastructure to our devs, we use container-based virtualization. We also run automated tests that are integrated into our continuous integration / continuous deployment workflows. This is how we ensure the quality of the business application. Furthermore, we easily deploy changes to the infrastructure - thanks to Infrastrucutre as Code (IaC) - through our CI process. We love cloud-native and the big hyperscalers, but also serve customers who host on premise in their own data center. And of course everything in between
We know that you don't build a business application today and just replace it with the next one tomorrow. Nevertheless, we believe in scalable, flexible and future-proof solutions. With our digital products and business applications, we strive for long-term partnerships - and have the necessary tools to keep our solutions in an excellent and actionable state over a long period of time.