import { ReactNode } from "react"; import Image, { StaticImageData } from "next/image"; import { Tab } from "@headlessui/react"; import clsx from "clsx"; import { Container } from "@/components/Container"; import screenshotArgoCD from "@/images/screenshots/argocd.png"; import screenshotGitLab from "@/images/screenshots/gitlab.png"; import screenshotTerraform from "@/images/screenshots/terraform.png"; import screenshotKubernetes from "@/images/screenshots/kubernetes.png"; import screenshotGrafana from "@/images/screenshots/grafana.png"; import screenshotPrometheus from "@/images/screenshots/prometheus.png"; import logoTerraform from "@/images/logos/tools/terraform.svg"; import logoGit from "@/images/logos/tools/git.svg"; import logoKubernetes from "@/images/logos/tools/kubernetes.svg"; import logoPrometheus from "@/images/logos/tools/prometheus.svg"; import logoArgo from "@/images/logos/tools/argo.svg"; import logoGrafana from "@/images/logos/tools/grafana.svg"; const features = [ { name: "Verzování", summary: "Spravujte svůj kód pomocí verzovacího nástroje Git.", description: "Mějte historii změn v aplikaci od začátku až do dnes, můžete se kdykoliv vrátit do bodu v čase. Řešte konflikty včas, předtím než je nasadíte do produkce a umožněte Vaším programátorům spolupracovat na jednou, aniž by si překáželi.", image: screenshotGitLab, icon: logoGit, }, { name: "Infastruktura jako kód", summary: "Mějte Vaši infrastrukturu deklarativně definovanou a verzovanou, díky Terraformu.", description: "Vaši infrastrukturu můžete snadno přesunout k jinému poskytovateli, a nebo jen vytvořit nové prostředí pro zákazníka, aby si váš produkt vyzkoušel a to během minut.", image: screenshotTerraform, icon: logoTerraform, }, { name: "Orchestrace", summary: "Nechte Vaši aplikaci běžet napříč mnoha servery a škálovat dle potřeb.", description: "Kubernetes se stalo nejen standardem, ale i hlavní platformou pro vývoj aplikací ať SaaS nebo dodávaných třetím stranám. Jde o skvělou platformu pro provoz Vaší aplikace ať ve veřejném cloudu nebo na vlastním hardwaru popř. on edge blízko koncových uživatelů.", image: screenshotKubernetes, icon: logoKubernetes, }, { name: "Monitoring", summary: "Sledujte Vaši aplikaci, jak se chová v čase.", description: "Prometheus je standard pro monitoring aplikací, ať v Kubernetes ale i mimo. Sbírejte telemetrická data v čase o Vaši aplikaci. Vyhodnoťte, kde má Vaše aplikace slabá místa. Zároveň můžete tvořit pravidla, dle kterých vás AlertManager upozorní, když se něco pokazí.", image: screenshotPrometheus, icon: logoPrometheus, }, { name: "Vizualizace", summary: "Od grafů zatížení procesoru po počet otevřených TCP spojení, vše jasně a přehledně.", description: "Grafana je skvělý nástroj pro vizualizaci dat z monitoringu, vytvořte si dashboardy pro jednotlivé části Vaší aplikace, mějte pohromadě infrastrukturu, provoz na síti, dostupnost a třeba počet neúspěšných pokusů o přihlášení, zda vůči Vaší aplikaci neprobíhá hackerský útok.", image: screenshotGrafana, icon: logoGrafana, }, { name: "GitOps", summary: "Spravujte stav Vašich prostředí deklarativně, ať vždy víte, jaký je aktuální stav.", description: "ArgoCD je spolehlivý nástroj pro práci s Kubernetes a nasazováním změn a přitom si udržovat přehled o právě nasazených aplikacích, verzím a konfiguraci, snadno, soplehlivě, verzovaně.", image: screenshotArgoCD, icon: logoArgo, }, ]; type FeatureType = { name: string | ReactNode; summary: string; description: string; image: StaticImageData; icon: any; }; type FeatureProps = { feature: FeatureType; isActive: boolean; className?: string; props?: any; }; function Feature({ feature, isActive, className, ...props }: FeatureProps) { return (

{feature.name}

{feature.summary}

{feature.description}

); } function FeaturesMobile() { return (
{features.map((feature) => (
))}
); } function FeaturesDesktop() { return ( {({ selectedIndex }) => ( <> {features.map((feature, featureIndex) => ( {feature.name} ), }} isActive={featureIndex === selectedIndex} className="relative" /> ))}
{features.map((feature, featureIndex) => (
))}
)} ); } export function TechStack() { return (

Open Source DevOps stack

Věřím v Open Source technologie, prakticky všichni je denně využíváme a jsou naší budoucností.

); }