The Swiss company reamis is one of the leading providers of sustainability and portfolio management software for real estate. The company has been providing institutional real estate owners and real estate asset and portfolio managers with the tools to digitally manage their portfolios and optimize them in terms of yield and sustainability.
In order to survive in a niche market with its specialized products, operational efficiency is a key success factor for reamis. This applies all the more to the development and deployment of its software products. For the internal engineering team, maintaining development and operational efficiency becomes an enormous challenge when, in addition to the care and maintenance of existing software solutions, the development of new and innovative solutions is added to the mix. Getting involved with new technology stacks and architecture concepts and implementing them is extremely challenging for a developer, especially if he is absorbed by maintenance and support tasks and his thinking is shaped by legacy technology.
For us, increasing development efficiency means delivering tangible results in the form of working software. That's why, to increase development efficiency, we don't just give smart advice, but above all we actively collaborate. That means we develop software solutions together with our customer's engineering team and implement measures that allow the team to develop and operate software more efficiently in the future.
To this end, we rely on measures in four areas: 1. Team Setup: We identify missing expertise and supplement it with suitable team members or help the client to recruit suitable members—e.g. Solution Architect, DevOps Engineer. 2. process and organizational methods: We help the customer to implement agile methods—such as Scrum or Kanban—or to use them more efficiently. 3. DevOps tools and approaches: We introduce appropriate DevOps tools and approaches for efficient requirements, version, release management and automated and continuous integration, delivery and deployment (CI/CD). 4. tech stack: We rely on technologies, frameworks and architecture that support efficient development, operation and future evolution.
The implementation of a solution architecture that allows new components and functionalities—i.e. new user interface (UI), new backend—to run in parallel with existing legacy components—i.e. legacy UI, legacy backend—independent of the environment has a decisive influence on development efficiency. This allows developers to work on new product features in their local development environment and perform maintenance tasks in the legacy system in parallel. In the productive environment, the first new product features can be made available to customers at an early stage, even if most of them are still working in the legacy system. The new and the legacy application can coexist and interact with each other via interfaces. This means that new features can be implemented quickly with a modern tech stack and existing features can be gradually transferred to the new world. The basis of this solution architecture is the subdivision of the solution into single services—so-called micro-services—which are operated with Docker or Kubernetes in independent containers.