Agility meets stability.
Architectures for software applications are becoming increasingly complex, because the requirements upon the systems continue to grow: businesses have to react quickly to changes in the market, the business model may have to be revised, and the competition does not sleep. But as complexity rises and release cycles become ever shorter, many transactions and processes have to be re-thought. That is why our work does not end after the development of a software application or the handover of the source code. Smooth-running operation must also be ensured.
We achieve that by building up an effective infrastructure, along with the associated support – from training, to reviews, to custom-tailored implementation. We prefer to work using the DevOps approach. That means nothing less than the connection of two different worlds – namely development and IT operations. Where the relationship has traditionally been fraught with conflict, we prefer working together in an atmosphere of trust. For us the will to change and the desire for stability are no contradiction. Because, as we develop the architecture, we already take operational tasks into account, for example carrying out deployments. But also because the creation of new infrastructures automates operational processes that otherwise would have to be carried out manually. In short, infrastructure becomes code, meaning it is programmable. The result is convincing to all those involved: faster delivery of the software in better quality.
Sharing of tasks, multiplication of quality.
The manner of deployment, meaning the software delivery process, is already influenced in the software architecture. We have experience with monoliths, but also with microservice architectures, meaning conglomerates of many small applications for specific purposes. Both approaches have advantages, but microservices are an optimum fit for DevOps. The small modules can be deployed independently of one another; new features can be released faster, and it is possible to use smaller, more agile teams. Complicated harmonization and synchronization processes can be avoided.
For instance, when we deliver a platform for a webshop, it consists of many small software applications. Different teams concentrate on individual modules, such as shopping cart or main navigation. To nevertheless ensure trouble-free functionality on a single platform, we work with container technologies, such as Kubernetes and Docker. Because containers are the perfect packaging for microservices. Best of all: Container deployments permit a polyglot development environment. Each team can work with its preferred programming language; solve technical problems with the technologies of its choice; and publish its applications at its own speed, independently of the others. Here, too, the DevOps concept comes into play. This complexity and the necessary speed require a high degree of automation – rendering the classic separation of development and operations almost inconceivable.
Learning from mistakes – at top speed.
Once a software system has been published, it has to be monitored. We support you in setting up a tightly knit monitoring infrastructure. Particularly in a distributed system such as described above, monitoring is a great challenge and an absolute necessity for operations.
In order to detect – and then analyse – problems and bugs, metrics and logs have to be collected. To put it simply, logging creates a record of errors and anomalies, but also standard behaviors. In contrast, metrics provide insights into the current status of the running system, for example by measuring network saturation. If anomalous values are found, all relevant employees are alerted automatically. The important thing is the selection, combination, and visualization of the right metrics.
However, the goal of automating the monitoring of microservice deployments is not just to detect errors and anomalies. It is also to get quick feedback on code changes. Was performance enhanced? Have improvements occurred? Does the change have the desired effect? Valuable feedback for the development team, enabling it to deliver even better quality even faster. And valuable for the customer, because everything works.