Dear friends, if you are developing your own web applications, the functionality, and code of which is constantly changing, then the service TuchaKube will surely come in handy.
TuchaKube is the cloud-based service for providing container infrastructure and automating CI/CD processes. The solution is designed to support the operation of high-load information systems and the processes associated with their development and improvement.
The cloud platform is a combination of two separate, but at the same time, related services that fall into the categories of DevOps Engineering and Cloud Hosting:
- The DevOps Engineering component assumes that our specialists, in cooperation with a client's development teams, plan an environment architecture, and deploy it, maintain the environment, automate the release of new versions, and other processes related to the development, compilation, testing, containerization, publishing, and updating of applications in the cloud.
- The Cloud Hosting component is hosting the applications that our clients develop, storing the data necessary for these applications' work, and providing continuous access to this data, monitoring the operation of services to ensure their stable work, and backing up information. All this happens directly in our computing cloud, the work of which is our responsibility.
Since approximately 2018, our clients (mainly software and web service developers) have started to ask about the automation of processes related to the development of their software products. Since then, we have started to gain experience in automating continuous integration and continuous deployment processes, and we had to start working towards providing our clients with container infrastructure. The acquired knowledge and skills became the basis for creating the platform for providing such services, and in 2019 we introduced TuchaKube to the general public.
The service TuchaKube combines many components. Most of these components are open-source software, and some of them are developments of the Tucha team.
Among all the components, there are some more notable.
Docker Containerization System
Docker is probably the most popular platform that provides isolated containers. It allows you to create and use minimized environment containers that are optimized for certain applications. There is nothing unnecessary in a container; it does not even store the data required for an application's operation inside this container. A container can be destroyed at any time and a new one can be created. You can also run any application in a container on any host and be sure that it will work exactly the same as it works on any other host, even if these hosts are significantly different from each other.
Kubernetes Container Operation Orchestration System
Since the service provides for the use of large groups of containers, it is impossible to manage them without an orchestration system. For this purpose, we use Kubernetes — a popular unified container management platform that can already be considered as a certain industry standard. Also, Kubernetes has a whole ecosystem of various software products that have become quite popular among developers.
Apache CloudStack Cloud Data Center Orchestration System
A platform that allows you to organize both private and public clouds, namely, manage:
- virtualization servers;
- virtual and physical storage;
- virtual and physical networks;
- virtual machines;
- template and backup repositories;
- other components that form private and public clouds.
The work of our computing cloud, which is based on the TuchaKube platform, is managed by Apache CloudStack. We have been using this product since the very beginning of Tucha, participate in conferences for users, and from time to time add our own patches to the platform code.
Ansible Server and Configuration Management System
Ansible is another useful tool that allows you to describe a configuration of all infrastructure components in a single place and automate the processes of changing it.
GitLab Code Collaboration System
As a system for working with git repositories, we use GitLab because it is a really powerful tool, and its instances can be hosted in your own cloud. If necessary, we can also easily set up work with other similar systems, such as GitHub or BitBucket.
There are various monitoring, protection, management, automation, and other systems that work within the platform. There are quite a lot of such software products, and they also include software with our code.
Powerful and reliable computing resources of Tucha
The correct operation of all components is impossible without high-quality computing resources, as we use in our cloud infrastructure. Our cloud environment provides application performance and data storage.
Talented and conscientious engineers of Tucha
Of course, the foundation of the entire multifunctional platform is our experienced and qualified DevOps and technical support specialists.
The service provides many functions, among which we should particularly highlight the following.
Automation of software development processes
This involves analyzing and compiling code, testing applications, containerizing them, and delivering the new version to dev-, staging-, and production- environments.
For the first clients of the solutions that the platform currently provides, it was crucial to automate CI/CD processes. As we wrote before, the product development has started from this function.
Storing persistent data and providing access to it
The platform uses distributed data storage systems and provides the ability to access them from anywhere in the world.
Since it is extremely important for the clients to be able to "roll back" if something goes wrong, we have also provided this opportunity in the TuchaKube platform.
It is not just about automatic backups of the data that users' apps work with, and their storage on separate media outside of the main environment. If necessary, you can quickly switch to any previous version of a code, for example, if changes in the application code led to certain problems.
Automatic horizontal scaling and load balancing
The service allows you to run multiple copies of an application in parallel in a distributed cloud on different physical servers and balance the load between them. This also means that if a segment fails on one of the machines, a client will not even feel it.
The capabilities of the service allow you to run a required number of containers that must simultaneously work on processing requests. They are the ones that provide horizontal scaling. For example, if the load is low, the service can be provided by 2 or 3 containers, and requests are evenly distributed between them. As soon as the load starts to grow, additional containers are launched. This is necessary to provide a client with the desired level of processing speed for each request. The launch of all these processes is set by separate formulas and algorithms.
Our team of specialists provides monitoring of all services using various monitoring systems, as well as a quick resolution of any issues related to the functioning of components. Most often, we manage to eliminate operation anomalies even before they are noticed by a client or their users.
The multi-faceted capabilities of TuchaKube will be useful for developers of complex software solutions for business and public services — various projects for both domestic and global companies. The service benefits companies that provide a continuous cycle of software improvement, developers, and testers, for whom prompt and qualified support from experienced DevOps engineers is extremely important.