Technologie pro vaše podnikání

Váš firemní Dropbox

Pokud máte velké množství klientských dat, která je třeba sdílet ve firmě i s klienty, nasazujeme kombinaci nástrojů, které vám slouží jako váš firemní Dropbox.

Kdyby měli grafici stahovat podklady pro svou práci z cloudu, stihli by si dát i tři kávy, než by se mohli pustit do práce. Proto je výhodnější objemná data synchronizovat i do kanceláře, kde jsou ihned dostupná přes místní síť.

Část kancelářských služeb může být veřejná, typicky OwnCloudnebo Nextcloud, aby fungoval odkudkoli bez nutnosti připojení k VPN. Při vývoji se hodí spíše OpenVPN pro připojení k databázím, interním aplikacím a souborům na Samba serveru. Interní servery v různých lokalitách propojujeme IPsec tunely. Uživatelské účty spravujeme přes LDAP, takže při fluktuaci zaměstnanců stačí vytvořit nebo smazat účet na jednom místě pro všechny služby.

Efektivní prostředí pro vývojáře

Git je nejčastějším nástrojem pro správu zdrojových kódů. Je na něm také založena celá distribuce aplikací od vývojáře až po produkci, včetně návratů k poslední funkční verzi. Vývoj usnadňují webové nástroje, typicky GitHub nebo GitLab.

OpenShiftJenkins zajišťují vše, co se děje po odeslání kódu na server, především automatické vytváření, testování a bezvýpadkovou distribuci verzí mezi servery. Vývojáři se tak nemusí přihlašovat na produkční servery a ručně spouštět aktualizace, které často vedou ke stresujícím výpadkům.

Docker nám umožňuje tvořit tzv. kontejnery, tedy kousek operačního systému s jednoúčelovou službou pro vaši aplikaci – například Docker s databází, aplikačním nebo webovým serverem.

Vývojář tak na počítači spustí vždy stejné prostředí, které běží v produkci, a místo zdlouhavé instalace a nastavování se může rovnou pustit do programování. Docker kontejnery nejenže šetří čas, ale navíc přináší jistotu, že se aplikace chová při vývoji stejně jako na produkčních serverech. 

Kubernetes nám zajišťuje bezvýpadkový provoz Dockerů, rozkládá zátěže a automaticky nahrazuje chybné jednotky funkčními. A dokud máme k dispozici programovatelnou infrastrukturu, jako je OpenStack na vlastních serverech nebo AWS, nezáleží na tom, zda Dockery pouštíme v privátním cloudu, na dedikovaných serverech, nebo na EC2 jednotkách od Amazonu.

Optimální datové úložiště

S databází MySQL máme více jak 10 let zkušeností a dnes již preferujeme pro naše účely výkonnější MariaDB. Běžně nasazujeme master-slave replikace, které udržují data na více serverech ve více lokalitách. O data tak nepřijdete ani pádem primárního serveru.

Úspěšně provozujeme multi-master Galera cluster, který umožňuje nepřerušený zápis dat při pádu kteréhokoli serveru. Výhrou pro váš projekt může být Amazon Aurora, cloudová databáze plně kompatibilní s MySQL 5.6, zajišťující bezkonkurenční dostupnost a výkon.

Máme rádi i NoSQL, například s ElasticSearch pracujeme už od verze 0.14 z roku 2010. Drží si prvenství pro fulltext-search nad velkým množstvím dat. Mezi vývojáři je také čím dál tím oblíbenější MongoDB, které často slouží jako náhrada za MySQL. Samozřejmostí je Redis, který běží celý v paměti a má proto vynikající výkon, ideální pro distribuovanou cache.

Škálovatelný aplikační server

U PHP aplikací lze obvykle velmi dobře optimalizovat škálování mezi více servery a nároky na jejich paměť. Pro většinu projektů je výhodnější vyladit kombinaci PHP-FPMNGINX místo mod_php pro Apache. Díky tomu se servery chovají lépe ve špičkách a zvládnou rychleji obsloužit uživatele. Kde je to možné, používáme PHP7, které má dle našich měření dvojnásobnou rychlost vykonání kódu a šetří víc jak třetinu paměti.

Ruby je velmi oblíbený programovací jazyk, výkon však zůstává až na druhém místě, optimalizace na serveru jsou tedy o to důležitější. Kromě standardního cachování používáme v produkci nejvýkonnější kombinaci Ruby 2Passenger 5 Raptor.

NGINX díky vysokému výkonu a nízké náročnosti na prostředky serveru pohání Dropbox nebo streamování z NASA, stejně jako polovinu z 10 000 nejvíce navštěvovaných stránek na světě. Proto jej používáme pro všechny aplikace, nejen rychlíky v čele s Node.js.

Pro distribuci http požadavků mezi servery používáme vynikající load balancer HAProxy. Zvládá velký průtok dat i rychlou odezvu. S chybovými stavy a pády jednotlivých backendů pracuje tak dobře, že tuto vlastnost HAProxy úspěšně využíváme pro scraping dat přes nespolehlivé proxy servery.

  

Průběžný non-stop monitoring

Monitoring nastavujeme co nejpodrobněji a pro jeho vyšší spolehlivost postupujeme metodou převzatou z vývoje řízeného testy (test-driven development) – nejdříve vymyslíme vše, co by mohlo selhat, a z nastaveného monitoringu následně vidíme, zda aplikace vše splňuje.

Preferujeme Zabbix pro jeho výkon a konfigurační možnosti. Umíme testovat i pokročilé scénáře, jako je přihlášení do aplikace nebo funkčnost formulářů, košíků a dalších konverzních prvků webových aplikací.

Automatizovaná instalace a dokumentace

Ansible je ideálním automatizačním nástrojem pro pár desítek serverů. Díky jednoduchosti zápisu a logice blízké shellovému skriptování porozumí Ansible kódu prakticky každý sysadmin nebo programátor, který od nás projekt přebírá.

SaltStack je velmi silný ve správě velkého množství orchestrovaných systémů (stovek až tisíců). Používáme jej například pro koordinaci 200 počítačů v prodejnách různě po ČR, kde nejsou přiřazeny pevné IP adresy.

Distribuční svět unixových systémů

Operační systém Linux funguje ve vašem domácím routeru, stejně jako v superpočítačích pro vývoj umělé inteligence. Lze optimalizovat na nízkou spotřebu v mobilních telefonech, ale také na výkon na náročných serverech. A právě jeho skvělý výkon nás zajímá. Ve výchozí konfiguraci můžete snadno narazit na systémové limity – především v síťové oblasti. Linux pohání Google, Amazon i Wikipedii, a stejně dobře bude sloužit nárokům vašich webových aplikací.

CentOS, klon Red Hat Enterprise Linuxu, preferujeme pro jeho pověstnou stabilitu a bezpečnost. Vyhovuje nám jeho vývojový cyklus zajišťující odladěnost systému a desetiletá podpora jednotlivých verzí.

Debian je jedna z nejstarších a nejrozšířenějších linuxových distribucí. Je postaven na filozofii, že starý a odladěný kód je bezpečnější a stabilnější než novější kód se spoustou novinek. Proto se mnoho oprav aplikuje na původní verzi software místo instalace novější verze. Debian spravujeme v případech, když ho váš tým již používá.

Ubuntu má v balíčcích nejnovější verze aplikací a je snadný na používání, proto je oblíbený u vývojářů. Pokud na serverech zasahují i vaši vývojáři, je možné, že budou chtít takový systém, na který jsou zvyklí. A proto v těchto případech používáme Ubuntu Server, vyspělou a ověřenou verzi této linuxové distribuce.

OpenBSD se oprávněně prezentuje jako nejbezpečnější operační systém. Je kolébkou vzdáleného konzolového přístupu na servery OpenSSH, který používá drtivá většina linuxových a unixových distribucí. Nasazujeme ho pro routery a firewally, kde vyniká svým výkonem i bezpečností. Provozujeme také HA (high availability) cluster, ve kterém ani pád síťového prvku nezpůsobí výpadek služeb.

 

Privátní cloud, clustery a virtualizace

Ne každý může používat veřejný cloud, často z právních a organizačních důvodů. Pro stavbu privátních serverových clusterů používáme mnoho nástrojů, jakou jsou Pacemaker, CMAN, RGManager, DRBD, Ceph, GlusterFS, iSCSI a další. Dbáme na to, aby vše jako celek fungovalo a při výpadcích se cluster sám opravil a minimalizoval rizika. Navíc jej vydatně testujeme a monitorujeme. 

Pro virtualizaci, ať už na vašem či pronajatém hardware, používáme OpenVZ nebo KVM. Díky správně zvolené virtualizaci jsme jednomu z našich klientů srazili konkurenční rozpočet na polovinu. 

Podpůrné serverové služby

Server sám o sobě nestačí. Občas potřebujete zakoupit doménu, nastavit DNSSSL certifikáty, případně zajistit webhosting pro menší www stránky. Využijeme vaše stávající poskytovatele, případně pomůžeme s přesunem ke vhodnějšímu.

Nízkonákladové dedikované servery pronajímáme od ověřeného OVHSoYouStart, VPSky dle regionu a potřeb, vynikající zkušenosti máme s CDN77 pro distribuci statického obsahu a CloudFlare pro ochranu před DDOS.