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

) }