> For the complete documentation index, see [llms.txt](https://docs.inspishop.cz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.inspishop.cz/technologie/infrastruktura.md).

# Infrastruktura a nasazování změn

Pro informace ohledně rychlosti e-shopu navštivte náš [SEO Checklist](/checklisty/seo-checklist.md#rychlost-nacitani).

## Nasazování změn

V rámci nasazování máme pro vývojáře zaveden systém, který umožňuje:

* Automatický deployment (develop, release, stage a production)
  * Každý release má **vlastní URL adresu** pro testování klientem
* Škálování
* Správu kontejnerovaných aplikací&#x20;

Systém je postavený na technologiích:

* Kubernetes
* Docker
* Gitlab

### Problém

Jelikož využíváme [Headless E-commerce přístup](/master.md#headless-e-commerce) (microservices), je nutné mít pro každý typ služby vlastní server a vlastní prostředí. V rámci klasické architektury může být relativně složité spravovat vícero oddělených aplikací v rámci jednoho projektu. Současně vyžaduje nastavení deploymentu na míru a jeho neustálou správu.

Z těchto důvodů nelze architekturu jednoduše škálovat.

V případě aktualizace aplikace vyžaduje nová verze jiné prostředí pro běh, které není se stávající verzí kompatibilní -> musí běžet v novém prostředí.

Vývojáři musí znát funkčnost a technologie celé aplikace pro různé změny:

* Špatné rozdělení kompetencí vývojář / devops / server admin
* Monolitický přístup neumožňuje změny technologií jednotlivých částí aplikace

### Řešení

Jako řešení používáme **Docker** v rámci **Kubernetes** pro vytvoření oddělených prostředí pro jednotlivé typy služeb.

Kubernetes a Docker umožňuje velmi jednoduchou replikaci, což umožňuje:

* Jednodušší používání aplikací
* Škálování (i na úrovni aplikací)
* Změnit technologie jednotlivých aplikací nezávisle -> rychlejší reakce na inovace
* Automatický deployment

Toto řešení dále přináší:

* Jednodušší identifikace bottlenecků a problémů s výkonem
* Standardizaci technologií - lepší přenositelnosti a nezávislosti v rámci serverových poskytovatelů a jejich prostředí

Máme zavedené také standardizované API, takže při aktualizaci nemusí být nutné aktualizovat ostatní aplikace.
