Technologický stack v OpenWise

Petr Jůza
OpenWise Tech blog
Published in
4 min readApr 28, 2021

Backend vyvijíme v Javě, frontend v Reactu, občas si vypomůžeme Pythonem, Groovy, zascriptujeme si v Ansible … Máme daný hlavní směr, Java je náš svět — jsme si vědomi toho, že pokud něco chceme dělat na špičkové úrovni, tak si musíme vybrat. Java včetně všech užitečných knihoven a frameworků (zejména Spring Boot a Quarkus) slouží k samotnému vývoji, ale pro dodávky řešení je potřeba více — potřebujeme data ukládat a různými způsoby komunikovat mezi jednotlivými komponentami.

Z tohoto důvodu jsme si před několika lety vybrali následující technologický stack, který rádi používáme jak na našich vlastních projektech, tak u zákazníků. Od podzimu minulého roku jsme se navíc rozhodli, že pro tyto vybrané technologie budeme nabízet expertní konzultace i pro naše zákazníky, protože jsme si uvědomili, že již máme nemalé zkušenosti a znalosti, navíc je velký rozdíl mezi použítím dané technologie z pohledu konzumenta (vývojáře) a návrhem a konfigurací takového řešení k použití dle cílových požadavků. Nemluvě o schopnosti takový systém provozovat. Naším cílem v této oblasti je soustředit se na vybrané technologie (které se mohou a určitě budou v průběhu času měnit), zvyšovat naše expertní znalosti spolu s uzavřením partnerství s firmami, které za těmito technologiemi stojí (někde již partneři jsme, jinde čekáme na dokončení procesu a jinde to bude běh na dlouho trať). Tento článek je o představení našeho výběru včetně komentářů, proč zrovna tyto technologie.

Datová úložiště

Relační databáze jsou základ, ale často potřebujete více — buď potřebujeme řešit specifický případ nebo potřebujeme více “lightweight” řešení a nebo často potřebujeme škálovat mnohem více než nabízí klasické relační databáze. Pro každý typ NoSQL databáze se snažíme mít jednoho zástupce.

Comparison of different types of NoSQL databases

REDIS nejčastěji používáme jako cache, ale její možnosti jsou mnohem větší. Na našem blogu již k této NoSQL databázi vyšel článek, viz REDIS — tipy na performance ladění a konfiguraci.

Tip: pro účely našeho meetupu jsem připravil prezentaci, která je k dispozici ke stažení.

Apache CassandraDB je specifická distribuovaná NoSQL databáze, která je pro určité scénáře nepřekonatelná, zejména tam, kde je potřeba zpracovávat ohromné množství (ideálně neměnných) dat, např. různé time-series data. O této databázi jsme už také psali, viz článek Cassandra DB. Zde máme ještě “přichystanou” rychlejší vyriantu ScyllaDB.

Tip: i tato databáze byla tématem našich meetupů, zde je prezentace ke stažení.

MongoDB je typickým představitelem dokumentové NoSQL databáze, tedy nejčastěji ji používáme jako “škálovatelnou” alternativu k PostgreSQL.

Elastic (ELK) toho nabízí mnohem více než jen úložiště dat, zejména schopnosti fulltextového vyhledávání spolu s nástroji jako Logstash, Filebeat a Kibana jsou často to, proč je Elastic tak silným nástrojem. Elastic používáme od jednoduchého úložiště (alternativa k MongoDB) v naší runtime komponentě, přes fulltextový engine (oboje v našem produktu WisePorter), dokumentové úložiště až ke klasickému použití a to pro logy a APM. SIEM je nyní nová oblast, do které vstupujeme.

Asynchronní komunikace

Technologie umožňující asynchronní způsob komunikace výrazně usnadňují návrh a realizaci samotných aplikací, navíc v mikroservisní architektuře si to lze jen těžko představit bez tohoto způsobu komunikace.

Zdroj: https://www.slideshare.net/paolopat/introducing-amq-streams-data-streaming-with-apache-kafka

V kategorii “message broker” aktuálně preferujeme ActiveMQ Artemis, máme ho radši než dříve používané řešení RabbitMQ.

V našem seznamu určitě nesmí chybět Apache Kafka, která je více platformou pro streamovaný přesun dat než “jen” messaging platforma. Nicméně zde roste velice zajímavá alternativa Apache Pulsar, který se zdá být v některých oblastem lepším řešením než samotná Kafka, viz např. tento článek “Four Reasons Why Apache Pulsar is Essential to the Modern Data Stack”.

Tip: Kafka byla také součástí našich meetupů, zde je prezentace ke stažení.

Jak dál?

Pořád se objevují nové technologie, je zajímavé to sledovat, nicméně pokud člověk nedělá aplikaci na jedno použití, tak se musí zabývat i otázkou udržitelnosti a supportu vybraných technologií v budoucnu — za rok, dva, za pět let. Z tohoto pohledu je zajímavé sledovat vyzývatele “mainstream” řešení jako např. Pulsar nebo ScyllaDB. Nicméně ono to není jen o té samotné technologii, ale vůbec o celém ekosystému okolo — support, podpora enterprise řešení, dostupná dokumentace, nástroje třetích stran apod.

--

--