Technologie

Vesna: Proč jsme si postavili vlastní platformu

O tom, jak jsme se rozhodli ignorovat rozumné rady a napsat si všechno sami. A proč to dává dokonalý smysl.

Napsali Ondra & Sofie

Vesna — vlastní platforma jako jaro

O tom, jak jsme se rozhodli ignorovat rozumné rady a napsat si všechno sami. A proč to dává dokonalý smysl.


Existuje ve světě softwaru jedna rada, která se opakuje tak často, že už získala status axiomy: "Nepiš si vlastní framework. Použij existující." A jako většina axiomů, je to rada, která je většinou správná — a občas katastrofálně špatná.

Vesna je příběh o tom druhém případu.

Jak to začalo

Jako většina příběhů o technologických rozhodnutích, i tenhle začíná frustrací. Seděl jsem nad projektem pro malou firmu — nic složitého, web s objednávkovým systémem a napojením na fakturaci. Klasika. A měl jsem na výběr z přibližně tří set frameworků, čtyřiceti CMS systémů a nekonečného množství pluginů, které slibovaly, že vyřeší přesně tohle.

Tak jsem jeden vybral. A pak další. A pak ještě jeden. A s každým z nich jsem narazil na stejný problém: dělal přesně to, co jeho autoři chtěli, aby dělal — a absolutně nic z toho, co jsem potřeboval já.

WordPress? Výborný na blog. Na blog z roku 2008. Složitý objednávkový flow s podmíněnou logikou, napojením na český účetní systém a GDPR-kompatibilní zpracování dat? To je jako požádat pošťáka, aby vám přivezl nábytek. Technicky to zvládne, ale vám se nebude líbit, jak to dopadne.

Shopify? Nádherný systém. Postavený v Americe, pro americký trh, s americkými představami o tom, jak funguje daňový systém, fakturace a spotřebitelské právo. Pro český trh — a pro stovku specifických českých regulací, které se vás týkají, i když o nich nevíte — je to jako nosit boty o dvě čísla větší. Jde to, ale trpíte.

Next.js s headless CMS? Technicky elegantní. Ale CMS je jenom CMS — řeší obsah, ne byznys. A mezi "mám web" a "mám byznys" je propast, kterou žádné množství React komponent nepřemostí.

A tak jsem jednoho večera — byl únor, venku se sypalo, Pincek spal na klávesnici a já jsem měl třetí kafe, což je vždycky nebezpečný moment pro technologická rozhodnutí — otevřel nový soubor v editoru a napsal fn main().

Proč Rust

Tahle otázka přichází vždy. Proč Rust? Proč ne JavaScript, jako všichni normální lidé? Proč ne Python, který je jednodušší? Proč ne Go, který je rychlejší na napsání?

Odpověď je prostá a možná trochu romantická: protože Rust nedovolí lhát.

V JavaScriptu můžete napsat kód, který vypadá správně, projde testy, funguje v devíti případech z deseti — a v tom desátém tiše selže způsobem, který zjistíte až v pátek večer, když zákazník volá, že mu zmizela objednávka. JavaScript je jazyk, který vám věří. Rust je jazyk, který vám nevěří — a vyžaduje důkaz, že víte, co děláte, ještě než se kód vůbec zkompiluje.

Pro mě, jako pro právníka, je tohle přirozený způsob myšlení. Smlouva, ve které je "asi jasné, co se myslí", není dobrá smlouva. Kód, ve kterém je "asi nebude null", není dobrý kód. Rust vás nutí být explicitní — říct přesně, co se stane v každém případě, včetně těch nepříjemných. A výsledek je software, který buď běží správně, nebo vám řekne přesně proč ne. Žádné tiché selhání. Žádné "funguje na mém počítači".

A pak je tu výkon. Vesna obsluhuje požadavky rychlostí, na kterou by WordPress potřeboval tři servery a CDN. Ne proto, že bychom optimalizovali každý cyklus — ale proto, že Rust je jazyk, který nepotřebuje garbage collector, nepotřebuje virtuální stroj a nepotřebuje dvě stě megabajtů RAM jen na to, aby věděl, že existuje.

Co Vesna je

Vesna je modulární platforma. To znamená, že není monolitem — není to jeden velký program, který dělá všechno (a většinu z toho špatně). Je to sada modulů, které si zákazník vybírá podle svých potřeb. Jako stavebnice, kde každý dílek má svůj účel a žádný nepřebývá.

Commerce řeší produkty, ceníky, košík a platby. Není to Shopify — je to přesně tolik e-commerce, kolik zákazník potřebuje, a ani o řádek kódu víc.

Booking řeší rezervace, kalendáře a dostupnost. Kavárna, která nabízí předobjednávky. Kadeřnictví, které přijímá rezervace online. Vinařství, které organizuje degustace. Každý z nich má jiné potřeby — a Booking se jim přizpůsobí.

Billing řeší faktury a napojení na účetní systém. A tady se projeví ta právnická DNA — faktura z Vesny splňuje náležitosti daňového dokladu, protože my víme, jaké náležitosti má daňový doklad mít. Ne proto, že jsme to vygooglili, ale proto, že jsme to stokrát kontrolovali u firem, které mají audit od finančáku každý rok.

Pulse řeší notifikace, newslettery a e-mailové kampaně. Bez závislosti na Mailchimpu nebo SendGridu — protože každá závislost na třetí straně je bod, kde ztrácíte kontrolu.

Portal řeší zákaznický přístup — stav objednávek, komunikace, dokumenty. Zákazník se přihlásí a vidí svůj svět. Ne CMS administraci, ne WordPress dashboard. Svůj byznys panel.

Co Vesna není

Vesna není WordPress killer. Není to Shopify pro chudé. Není to další open-source CMS, který za rok nikdo neudržuje.

Vesna je nástroj, který jsme vytvořili proto, abychom mohli dělat svou práci lépe. Je to prodloužení naší ruky — ne produkt k prodeji, ale materiál, ze kterého tesáme. Zákazník nekupuje Vesnu. Zákazník kupuje řešení, které na Vesně běží. Rozdíl je zásadní.

Nikdy nebudeme říkat "přejděte na Vesnu". Budeme říkat "pojďte, vyřešíme vám problém". A Vesna bude tichá, spolehlivá infrastruktura pod kapotou — jako dobrá kanalizace. Nikdo o ní nemluví, dokud funguje. A ta naše funguje.

Proč ne hotové řešení

Každý rozumný člověk by se teď zeptal: Proč celý ten vývojový proces, když existují řešení, která "stačí nainstalovat"?

Odpovědí je kontrola.

Když používáte WordPress, nesete na svém webu kód, který napsaly tisíce lidí, z nichž většinu neznáte a jejichž motivaci nerozumíte. Některé pluginy jsou napsané vynikajícími vývojáři. Některé jsou napsané studenty na chaloupce, kteří se učí PHP z YouTube tutoriálů. A vy nevíte, který je který — dokud se neprojeví bezpečnostní díra.

Když používáte SaaS jako Shopify nebo Squarespace, svěřujete svůj byznys firmě, která může kdykoliv změnit cenovou politiku, upravit funkce, nebo prostě přestat existovat. Je to pohodlné, dokud to funguje. A pak jednoho dne dostanete e-mail: "Oznamujeme, že od příštího měsíce se vaše předplatné zvyšuje o 40 %." A nemáte kam odejít — protože všechna vaše data, všechny vaše procesy, celý váš byznys běží na jejich serveru, v jejich formátu, podle jejich pravidel.

Vesna běží na serveru, který kontrolujeme. Kód napsal člověk, kterého znáte — já. Data patří zákazníkovi, v otevřených formátech, s kompletní dokumentací. Kdyby se Kaiser Quarry Studios zítra rozplynulo — nerozplyne, Pincek by to nedovolil — zákazník si vezme svá data, svou dokumentaci, a jiný vývojář to převezme. Do dvou dnů.

To je svoboda. A svoboda stojí za trochu víc práce.

Jak Vesna vypadá zevnitř

Pro technicky zvědavé — a vím, že někteří z vás se právě posunuli k tomuto odstavci, protože všechno před ním bylo "moc marketingové" — tady jsou detaily.

Vesna je postavená na Axum frameworku, což je asynchronní webový server pro Rust. Databáze je PostgreSQL, protože je to nejspolehlivější open-source relační databáze na planetě a já nevidím důvod experimentovat s daty zákazníků. Hosting je self-hosted nebo na Hetzneru — evropské servery, evropská jurisdikce, žádný vendor lock-in.

Každý modul je samostatný crate (Rustový balíček), s vlastním API, vlastními testy a vlastní dokumentací. Moduly mezi sebou komunikují přes definované rozhraní — ne přes sdílenou databázi, ne přes globální stav, ne přes "to se nějak domluví". Přes explicitní, dokumentované, testované kontrakty.

A celý systém je pokrytý testy. Ne testy jako "tohle by mělo fungovat". Testy jako "tohle funguje za těchto podmínek, a za všech ostatních podmínek systém odmítne pokračovat a řekne proč". Protože software, který tiše selže, je horší než software, který hlasitě protestuje.

Budoucnost

Vesna roste s každým projektem. Každý zákazník přinese novou potřebu, nový modul, nový úhel pohledu. A to je přesně ten způsob, jakým chceme stavět — ne v izolaci laboratoře, ale v kontaktu s realitou. S lidmi, kteří mají skutečné problémy a potřebují skutečná řešení.

Jednoho dne bude Vesna možná open-source. Jednoho dne bude možná platforma, kterou si kdokoliv nainstaluje a poběží. Ale dnes je to naše dláto — nástroj, kterým tesáme příběhy z kamene. A dláto nepotřebuje marketing. Potřebuje jen ostrou hranu a jistou ruku.

My máme obojí.