Kicksware Tool Stack is a composite DevOps technology stack solution dedicated to provisioning data, storage, continuous deployment, analytics, monitoring, and more tools needed for Kicksware infrastructure to function as a complete autonomous mechanism.
To constantly deliver its particular set of services, every component of Kicksware infrastructure goes through its own development lifecycle, every new iteration of which is triggered by every new commit to the codebase.
From there it goes through the individual set of stages, each dedicated to ensure the best possible software quality. Generally, these stages represent base steps needed to build, test and deploy every new piece of code committed to repositories. However, sometimes additional steps are required, such as resolving dependencies, preparing the environment and finale checks whether the pipeline has succeeded and services are ready to serve.
This whole process is accordingly called Continuous delivery (deployment) and continuous integration (CI/CD). In fact, this practice is so crucial and adopted that currently there are more than 50 CI/CD tools out there waiting to be used.
Kicksware's CI\CD deployment pipeline is based on Gitlab CI Community Edition. As a matter of fact, continuous delivery is only one side of its diverse, comprehensive feature set. Besides, things like Git repositories storage, container and package registries, issue tracking, and really a lot more great features make GitLab a complete DevOps platform for any types of system.
Aside from development and deployment enhancement tools, Kicksware application services themselves require some additional tools to be able to perform tasks they are programmed for.
The most obvious application is, of course, database. Without storing any data it is nearly impossible to achieve the fulfillment of all the business requirements. Therefore, to store user, product, orders, and reference data, Kicksware tool stack contains both document-based MongoDB and relational PostgreSQL. And for caching, blazing-fast Redis is used, since it is a key-value based, distributed, in-memory database.
In addition, some services depend on a more specific type of software. For instance, a search microservice is requiring some kind of search engine to deliver the result faster and more efficiently. So, for this particular use case, Elasticsearch is used, which in combination with the Kibana analytics dashboard web application produces Elastic Stack solution. Some of the Elastic's observability tools, such as LogStash and Beats used for gathering logs and metrics, are also worth noticing. And overall experience using this company's software is pretty much awesome, so it's definitely worth trying.
Kicksware tool stack is meant to be deployed after Traefik gateway ingress and before everything else which depends on its applications.
In addition, every further deployment must be performed using CI\CD pipelines according to its configuration.
To perform deployment of Kicksware tool stack solution following methods can be used:
-
Docker Compose file
This method require single dedicated server with installed both
docker
anddocker-compose
utilities.Compose configuration file can be found in the root of the project. This file already contains setting for reverse proxy routing and load balancing.
Gitlab CI deployment pipeline configuration file for compose method can be found in
.gitlab
directory. -
Kubernetes Helm charts
Deployment to Kubernetes cluster is the default and desired way.
For more flexible and easier deployment Helm package manager is used. It provides a simple, yet elegant way to write pre-configured, reusable Kubernetes resource configuration using YAML and Go Templates (or Lua scripts). Helm packages are called
charts
.This whole project is basically a set of Helm deployment charts which can be found in the root of the project.
Gitlab CI deployment pipeline configuration file for K8s method can also be found in the root of the project.
Kicksware's infrastructure technology stack is a set of high-end, diverse, cloud-native, and production-ready tools, solutions, and applications, each one is accurately picked to operate in its specific area with maximum efficiency.
To ensure continuous delivery, high efficiency, security, and overall reliability of its service, Kicksware pays great attention to the DevOps area that covers the complete development lifecycle from each code commitment to its finale publication for users to enjoy.
After all, Kicksware has been primarily a research project dedicated to the exploration of recent cloud technologies and architectural design paradigms, so its level of success estimates according to the aggregated quality and relevance of both its technology stack and architectural design pattern, as well as their overall impact on Kicksware infrastructure performance.
See other Kicksware project repositories.
Licensed under the GNU AGPL-3.0.