The promise of scalability, performance and security Where microservices can play to their strengths
Microservices ensure fast application development as well as high scalability, flexibility and security. They are particularly suitable for complex applications where increasing amounts of data must be fast, efficient, secure and easily accessible.
Companies on the topic
Microservices architectures have many advantages in terms of stability, scalability and flexibility.
(© green butterfly stock.adobe.com)
Microservices are on trend. Currently, they are mainly used in fast iterating, large software projects. Known use cases are Netflix, or Amazon, and in the Open-Source environment, the platform GitLab.
With microservices, users can break down large tasks into smaller projects and distribute them among several teams. This also makes complex open source application software quick, easy and above all manageable.
Microservices is characterized above all by its high modularity, which offers advantages in the areas of deployment, scalability, performance and flexibility. Developers can design services individually and bring them into production independently of each other.
Done correctly, each service can be performed alone and thus scaled; this allows the best possible optimization of performance. Finally, the modular approach also entails a high degree of flexibility. As a result, individual services as a whole can be easily replaced, for example by a new variant with a higher functionality.
High security through distributed Services
The loose coupling of services also significantly increases the stability and security of an entire application. This is especially true compared to a monolithic software architecture, where extensions, such as the integration of new features, require a code change or addition in the basic system. Any change may lead to downtime.
In contrast, a microservices architecture splits new features into services that are merely managed by the Core platform. Each extension is a self-contained service, such as the backend, the memory drivers, an API or a web frontend. The extensions can only disturb other services to a limited extent and also changes only affect a certain service.
Even if an extension should be infected with a malicious program, the effects remain limited. After all, each extension is a dedicated microservice that runs on its own or is bundled in a binary. As a result, the attack vector is lower, because a malicious program only affects one extension at a time and does not paralyze the entire application. This leads to a high stability and security of the entire application, even if a malicious program should once have gained a foothold.
Especially in contrast to monolithic software projects – such as in the classical PHP world-the security advantages of microservices are evident. If a code is loaded from an extension into a running PHP process, it is in principle given unlimited access, that is, theoretically it has access to all memory areas. In a microservices environment, each service has its own storage area and no access to other segments. Communication takes place exclusively via APIs with a certain authorization.
A microservice-based architecture is also extremely convenient for troubleshooting, as individual services are interchangeable on-the-fly. This allows error-prone services to be quickly shut down and new ones to be started automatically. Through the modular exchange downtimes are avoided and there is no visible interruption for the user.
Flexibility in the programming language
Microservices also offer a high degree of flexibility in the choice of programming language. Open source communities and customers can write extensions in any language. Open source providers thus open up further to the community and can flexibly and individually string binaries and products. The software can thus be easily tailored to the specific needs and use cases of the customers. Due to the independence from a certain programming language, integrations to other open source products are not least well feasible.
The compilable programming language Go is becoming increasingly popular – especially in the microservices environment. It includes a wide range of tools that decisively support development teams in their work, for example in the cross-platform area. This means that developers write a code and compile it for various platforms.
With a single code base, it is thus possible to run Go software almost anywhere. In addition, Go is relatively easy to learn and apply. Mainly also under the aspects speed and performance can score Go, because neither a script interpreter nor a virtual runtime environment is needed. Another benefit of Go is the support of concurrency, which enables the parallelization of computationally intensive operations.
Requests are served by long-running processes. In the PHP world, such a scenario is difficult to implement. When a request is submitted here, a PHP process is set up and executed – simply put. Once the request is answered, the PHP process will terminate again. A request must therefore remain open in a PHP architecture until a long-running action is executed. However, there are limitations due to the PHP request time-outs.
In general, a user can bridge language barriers with microservices and an API-based architecture. For example, it is possible to use Go Services for performance-critical components, and a Python or PHP Service for special applications. Numerous applications and tools – especially in the field of cloud-native developments – are now written in Go. Well-known examples are the container solution Docker or the orchestration and automation tool Kubernetes.
New Web-Frontend of ownCloud Infinite Scale.
Klaas Freitag (Picture: ownCloud)
In principle, replacing a monolithic with a microservices architecture brings many advantages in terms of stability, scalability and flexibility – especially in terms of deployment options for users. You can use your solutions in a Hybrid or Public Cloud, but also in a Private OpenStack Cloud, or in a locally-installed Kubernetes Cluster. And it should not be forgotten that microservices are a fundamental part of the cloud-native approach, which is the future of application development and deployment.
* Klaas Freitag is CTO at ownCloud in Nuremberg.