docs.coopcloud.tech/docs/x-archive/overview.md

65 lines
3.7 KiB
Markdown
Raw Normal View History

2021-02-18 10:28:09 +00:00
---
title: Technical overview
---
2021-02-23 16:08:46 +00:00
The Co-op Cloud is made up of a few simple, composable pieces. The system does not rely on any one specific implementation: each part may be replaced and extended as needed.
- [Libre software apps](#libre-software-apps)
2021-02-23 16:08:46 +00:00
- [The packaging format](#the-packaging-format)
- [Container orchestrator](#container-orchestrator)
- [Command-line tool](#command-line-tool)
## Libre software apps
2021-02-23 16:08:46 +00:00
Applications that you may already use in your daily life: [Nextcloud], [Jitsi], [Mediawiki], [Rocket.chat] and [many more]! These are tools that are created by volunteer communities who use [free software licenses] in order to build up the public software commons and offer more digital alternatives.
The communities who develop these softwares also publish them using containers. For example, here is the [Nextcloud hub.docker.com account] which allows end-users to quickly deploy a new Nextcloud instance.
2021-03-01 13:08:49 +00:00
Learn more about why we use containers [in the FAQ section](/faq/#why-containers).
2021-02-23 16:08:46 +00:00
[nextcloud]: https://nextcloud.com
[jitsi]: https://jitsi.org
[mediawiki]: https://mediawiki.org
[rocket.chat]: https://rocket.chat
[many more]: /apps/
[free software licenses]: https://www.gnu.org/philosophy/free-sw.html
[nextcloud hub.docker.com account]: https://hub.docker.com/_/nextcloud
## The packaging format
The work required to take a new instance of an application and make it production ready is still too time intensive and often involves a duplication of effort. Each service provider needs to deal with the same problems: stable versioning, backup plan, secret management, upgrade plan, monitoring and the list goes on.
2021-03-10 15:16:48 +00:00
Therefore, the Co-op Cloud proposes a packaging format which describes the entire production state of the application in a single place. This format uses the existing [standards based compose specification]. This is a file format which is most commonly used by the [Docker compose] tool but Co-op Cloud **does not** require the use of Docker compose itself.
2021-02-23 16:08:46 +00:00
[Each application] that the Co-op cloud provides is described using the compose specification and makes use of the upstream project published container.
2021-03-10 15:16:48 +00:00
Learn more about why we use the compose specification [in the FAQ section](/faq/#why-use-the-compose-specification).
2021-02-23 16:08:46 +00:00
[standards based compose specification]: https://compose-spec.io
[docker compose]: https://docs.docker.com/compose/
[each application]: /apps/
## Container orchestrator
Once we have our application packaged, we need a deployment environment. Production deployments are typically expected to support a number of features which give hosters and end-users guarantees for uptime, stability and scale.
The Co-op cloud makes use of [Docker swarm] as a deployment environment. It offers an approriate feature set which allows us to support zero-down time upgrades, seamless application rollbacks, automatic deploy failure handling, scaling, hybrid cloud setups and maintain a decentralised design.
2021-03-01 13:29:37 +00:00
Learn more about why we use Docker swarm [in the FAQ section](/faq/#why-docker-swarm).
2021-02-23 16:08:46 +00:00
[docker swarm]: https://docs.docker.com/engine/swarm/
## Command-line tool
Finally, with an application and an application environment, we need a tool to read that package format and actually deploy it to the environment. For this, we have developed and published the [abra] command-line tool.
2021-03-01 13:30:36 +00:00
Abra aims at providing a simple command-line interface for managing your own co-op cloud. You can bootstrap machines with the required tools, create new applications, deploy them, back them up, restore them and so on.
2021-02-23 16:08:46 +00:00
[abra]: https://git.autonomic.zone/coop-cloud/abra
2021-02-24 10:34:05 +00:00
## Next steps
2021-02-23 16:08:46 +00:00
Now that you've got an overview, it is time to [deploy your first application].
[deploy your first application]: /deploy/