Skip to content

Composite DevOps technology stack solution contains configured for providing databases, CI\CD system, search and analytics engines

License

Notifications You must be signed in to change notification settings

nulltea/kicksware-infra

Repository files navigation

repo logo

commit activity badge  db mongo badge  db postgres badge  fs gluster badge  elastic stack badge  kubernetes badge 

gitlab badge  tool-stack pipeline  license badge

Overview

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.

Table of contents

DevOps

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.

kicksware ci browser

Applications

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.

kibana browser

Requirements

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.

Deployment

To perform deployment of Kicksware tool stack solution following methods can be used:

  1. Docker Compose file

    This method require single dedicated server with installed both docker and docker-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.

  2. 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.

Wrap Up

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.

More

See other Kicksware project repositories.

License

Licensed under the GNU AGPL-3.0.

About

Composite DevOps technology stack solution contains configured for providing databases, CI\CD system, search and analytics engines

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published