Last month we introduced the features, uses and benefits of software stacks . This month we would like to go into more detail about our platform stack and explain how it evolved and why we chose it.
At cloudtec we rely on established open source software and technology components which are used in our stack. This gives us a stack that is designed for long-term operation and is future-proof, but also remains flexible enough to make adjustments and changes to individual components.
How the cloudtec platform stack came into being (and which mistakes we made)
As in every business, a project has to be carried out in the tension triangle of time, quality and budget. In search of improvement potentials, we came up with the idea of building new projects on the same software and infrastructure basis. In this way, we wanted to reduce the initial effort, since the projects do not always have to be built from scratch.
But all beginnings are hard - our first attempt to build a platform stack unfortunately failed. New developments could not be played back into the stack. Thus, the stack could only be developed to a limited extent and the project setup could not be made more efficient. For this reason we introduced branching and sub-tree splits.
In addition, we used many different templates at the beginning and thus had more effort in the administration and design of the projects. With the decision for a fixed template library, we were able to standardize our developments and designs. At the same time, we retain the flexibility to adapt the templates to the respective corporate design and the individual wishes of our customers. In the course of developing our own platform stack, we also decided to change the application language from German to English.
The entire deployment process was also continuously improved and standardized. We were able to achieve a maximum system downtime of around 20 seconds during a deployment. We were able to take further steps in the area of infrastructure. The server and database configuration as well as the file system management are continuously revised and improved. Since our stack is continuous from the software layer to the platform layer to the infrastructure layer, we have the advantage that the installation is simplified and standardized to a considerable extent. This simultaneously reduces the complexity of platforms and also simplifies management.
The structure and the individual components of the cloudtec platform stack
When selecting the technologies, frameworks, models and programming languages of our stack, we pursue a central main approach: We rely on open source technologies. Open source software and technologies offer many advantages, among others they are cost-effective, are continuously developed further, have a high quality and can be extensively customized.
Our platform stack is divided into three areas, or layers:
- The infrastructure layer provides the technical foundation on which our developments run.
- The platform layer provides the frameworks that are used for the development of an application.
- The software layer represents the individualization per customer. Here the design is adapted and further elements and functions are developed.
The infrastructure layer
The infrastructure layer provides the basis for our entire stack. Without it, no business application can be operated. Countless technologies can be selected here.
We have opted for a uniform development environment with Docker . This means that the development environment no longer has to be set up differently per project (different PHP versions, operating systems, etc.). Thus, we are able to locally create a 1:1 image of the production environment with all configurations and elements. This makes the setup and development of the systems tremendously efficient.
Docker is a platform for developing, deploying and running applications. Docker allows applications to be separated from the infrastructure so software can be deployed quickly. With Docker, the operating system is "containerized" and abstracted. This also allows us, for example, to provide auxiliary services such as a virus scanner and PDF indexing. These communicate locally with the project containers.
In addition to Docker, we use Portainer. Portainer is a container management tool. It allows to centrally manage, configure, orchestrate and secure the operated containers. It also offers a simple user interface.
The hosting, the containers and the virtual data center - all data of the projects - are in the sovereignty of cloudtec. We manage the servers, the versioning and the collaboration. Customer data is isolated and segmented in its own container, the data cannot be mixed.
Two other components of the infrastructure layer are security and DevOps. With the help of DevOps, we have automated a large part of our deployment processes, which has led to an increase in efficiency. In the area of security, we ensure the security of our systems and application with the help of web application firewalls and routing, as well as automated checks in the build process, among other things.
The platform layer
The two frameworks Symfony and Sylius form the basis of the platform stack. They are built on the PHP programming language and are arbitrarily extensible. The Symfony framework provides reusable PHP components and is used to create web applications, APIs, microservices and web services.
Symfony won us over the alternatives (such as Laravel or Drupal) because there are no additional features and functions such as a CMS. Sylius is built on Symfony and is an e-commerce framework. It provides all the functions and APIs needed to successfully run a webshop.
On this basis (Symfony and Sylius), we have supplemented our platform stack with additional modules and functionalities that an online platform usually requires. For example, various grid mechanisms, filters, a user management and the underlying function to run messaging. In addition, our platform stack is complemented by RabbitMQ, thus ensuring the transaction-safe connection of interfaces.
The software layer
The software layer represents the individual development per customer. Here, the platform stack is merged with the individual development. The stack is extended and adapted according to the customer's requirements. The degree of individualization of our software is practically infinite. Only the cost/benefit question arises: If the benefit is not big enough to justify the resulting effort, the extra mile is not worth it. From the technological side, however, there are very few restrictions on feasibility.
Why we chose a platform stack
As our blog post in June showed, there are many reasons why using a platform stack has advantages. We reviewed the development of our stack and were able to identify the following advantages and reasons:
- Many business applications have similar requirements, so they often use, listviews, a user management and different workflows
- The effort for the developers is enormously reduced
- Less effort to learn an existing project, because they are all built the same way
- Less effort to create a new project
- A stack helps to improve code quality
- The reusability of functions can be increased
- Extensive test coverage on basic components is made possible
- The technical risk is minimized
Are you looking for a partner who can build a platform for you on a solid basis?
We are the right partner for you! With our cloudtec platform stack we can start your project on a stable basis, which does not have to be worked out for your project first. Thus, we fully concentrate on your individual wishes and challenges from the very beginning. We are therefore more efficient and you get a high quality product for your budget.