O mně
Ahoj! Jmenuji se Honza (přezdívka Bedla) a jsem SW developer a IT architekt.
Mezi moje specializace patří Java EE, Apache Camel, Spring Boot, Quarkus a integrace včetně designu řešení.
Umím být součástí celého vývojového cyklu, od quickscanu, nabídky, analýzy, detail designu, přes vývoj, testing, profiling a ladění, CI/CD až po release i následný L3 support.
Dokáži pracovat v týmu i sám, agilem i waterfallem.
Hledám pouze kreativní projekty, které mi budou dávat smysl. Nehledám teplé místečko na údržbě legacy aplikací. Hledám projekty na IČO. Nehledám práci na HPP.
Jsem Apache committer a ❤ Open Source.
Projekty v rámci Tekies
UPM2 pro PVZP
Pro PVZP jsem v roli IT architekta a DevOps inženýra předělal celý aplikační stack UPM2 z Docker Swarm do Kubernetes (Rancher RKE2) a následně jsem několik let zodpovídal za provoz a rozvoj celé Kubernetes platformy. Spravoval jsem celkem 7 clusterů, podporoval vývoj při vzniku nových microservices a rozšiřoval monitoring. Stack tvoří Java microservices (Java 8 - Java 21) v Docker kontejnerech, Percona MongoDB, Hazelcast, LDAP a Nginx ingress. Observabilitu zajišťuje OpenSearch, FluentBit, Prometheus, Grafana a Percona PMM. CI/CD jsem zmigroval z Jenkins do GitLab CI, artefakty spravuje Nexus. Jako architekt jsem zodpovídal za core změny v aplikaci a frameworcích UPM2 a směřování vývoje. Jako vývojář jsem do sdíleného frameworku doplnil MongoDB transakce a nový datový model pro velké kolekce s historií. Vyvinul jsem knihovnu pro překlad RQL dotazů do MongoDB, OpenSearch a SQL a na ní postavil novou vyhledávací microservice (Spring Boot 3, Java 21, OpenSearch) včetně ETL indexace. Dále jsem vyvinul integrace na externí systémy s Resilience4j, přihlášení přes OAuth/OpenID Connect a službu pro řízenou invalidaci cache napříč microservices přes Kubernetes API. Kromě toho jsem průběžně řešil řadu dalších úkolů, například ladění výkonu dotazů, bezpečnostní opravy, JSON logování s correlation ID napříč službami nebo migrace dat.
DWH pro PVZP
Pro PVZP jsem v Kubernetes provozoval datovou platformu postavenou na Strimzi Apache Kafka, Kafka Connect, PostgreSQL a Java microservices. Prezentační vrstvu zajišťuje Apache Superset, monitoring OpenSearch, Prometheus a Grafana.
Projekty v rámci CGI
Stream cloud processing IPTV
Byl jsem součástí agilního týmu, který vyvíjel IPTV stream processing platformu postavenou na mikroservisní architektuře v Microsoft Azure. Na projektu jsem byl v rolích Team Leadera, programátora a architekta. Aplikace využívá Apache Kafka, Azure Data Explorer, Azure Kubernetes, Quarkus, PostgreSQL, Eclipse Vert.x, SmallRye Reactive Messaging, Grafana, Azure AD. Provozní monitoring zajišťuje Eclipse Microprofile Metrics, který vystavuje Prometheus metriky pro Azure Monitor. CI/CD proces je zajištěný přes Azure DevOps.
Stream processing pro BI a Service Assurance
Byl jsem součástí agilního týmu, který vyvíjel IPTV stream processing platformu postavenou na mikroservisní architektuře v on-prem prostředí. Na projektu jsem byl v rolích Team Leadera a programátora. Ekosystém využívá Apache Kafka, Python 3, NumPy, Pandas, Kafka Connect a Debezium CDC pro akvizici, normalizaci, transformaci a agregaci dat. Výstupem jsou data v Elasticsearch, MySQL a InfluxDB. Aplikace je nasazená v on-prem pomocí Docker Compose. Build je přes GitLab CI. Prezentační logiku pro Service Assurance zajišťují dashboardy v Grafana. Prezentační logiku pro BI zajišťuje existující Data Warehouse, kterému aplikace poskytuje na SFTP pravidelné extrakty.
PDS
Vyvinul jsem aplikaci pro správu a distribuci firmware a balíčků CPE zařízení. Na projektu jsem provedl analýzu řešení, včetně zmapování existujícího komunikačního protokolu a následného vývoje. Aplikace je nasazena v on-prem na Payara AS a skládá se z backendu a frontendu. Backend vystavuje HTTP endpointy pro CPE a zároveň REST rozhraní pro frontend za využití Spring Boot, Apache Camel, EclipseLink, Hazelcast, MySQL NDB Cluster. Frontend vystavující uživatelské a administrátorské rozhraní jsem naprogramoval v AngularJS. Aplikaci jsem následně podle požadavků rozšířil i pro nové typy CPE s odlišným komunikačním rozhraním.
MAS
Vyvinul jsem aplikaci pro řízení video enkodéru. Aplikace slouží k přípravě a transkódování video obsahu před nasazením do VOD katalogu. Aplikace má AngularJS frontend, obsahující Shaka Player a komunikuje se Spring Boot backendem pro správu metadat o video souboru. Metadata o jednotlivých stopách a náhledy generuje Apache Camel za využití FFmpeg.
PerfTool
Vyvinul jsem pro IPTV platformu aplikaci pro reálné generování zátěže. Toto usnadnilo projekt stabilizace platformy, protože to umožnilo nasimulovat chování platformy z předchozích výpadků na izolovaném prostředí nebo mimo televizní špičku. Aplikace pomocí grok patternů parsuje access logy a zákaznické extrakty do MongoDB. Následně spouští nad daty transformační vrstvy, které upravují jednotlivé parametry HTTP volání tak, aby byl dodržený požadovaný histogram a délka zátěže a validita volání s ohledem na zadané testovací účty. Technické řešení je pomocí Apache Camel, Spring Boot a OkHttp.
Validátor VOD obsahu
Vyvinul jsem nástroj pro automatickou validaci úplnosti nasazení VOD obsahu u IPTV operátora. Aplikace využívá Spring Boot a MySQL. Generuje report v případě, že nasazení nebylo kompletní, případně chybí některé díly seriálu. Toto ušetřilo nejméně dva dny týdně manuální kontroly, zrychlilo reakční čas a zamezilo pokutám od dodavatele obsahu.
ActiveMQ Artemis
Pro telco operátora jsem ladil JMS/STOMP broker ActiveMQ Artemis, který slouží pro vzdálené ovládání CPE. JMS Cluster jsem optimalizoval jak na úrovni konfigurace a JVM, tak na úrovni OS a TCP/IP stacku. Pro stejného operátora jsem vyvinul OAuth plugin do ActiveMQ Artemis.
CRM
Byl jsem součástí týmu, který pro telco operátora vyvíjel backendovou část pro Liferay CRM. Technologie Spring, WildFly, Oracle.
Billing
Byl jsem několik let součástí týmu, který pracoval na velkém transformačním projektu billingu. Navrhli jsme a vyvinuli distribuovanou integrační vrstvu mezi provisioningem a billingem, umožňující vykonávání dekompozičních pravidel nad produkty podle logických celků a pluginů na základě BPMN diagramů v Enterprise Architect. Technologie WildFly, Apache Camel, Hibernate, Infinispan, Oracle, JavaFX, SOAP, JMS. Aplikace je nasazená ve WildFly clusteru v doménovém módu. K této aplikaci jsme vyvinuli i několik obslužných aplikací pro správu konfigurací a trasování požadavků.
Operativní reporting
Vyvinuli jsme aplikaci pro uživatelsky přívětivé generování ad-hoc reportů, pomocí drag&drop skládání jednotlivých entit a vazeb. Aplikace je vyvinuta pomocí PHP a jQuery. Aplikační logika validuje a skládá uživatelské modely reportů a následně je transformuje v SQL dotazy do existujícího datového skladu.
Vlastní projekty
Vyvinul jsem Android aplikaci pro evidenci EET tržeb. Aplikace používá SQLite a greenDAO pro ukládání tržeb, SOAP pro komunikaci s API finanční správy, ACRA pro error reporting. Tisk probíhá přímým odesíláním POS příkazů přes Bluetooth socket. K aplikaci jsem vyvinul i Spring Boot REST API backend pro správu licencí, aktualizací a monitoring.
Od roku 2019 jsem Apache Camel committer a podílím se na rozvoji tohoto Open Source frameworku, který implementuje EIP (Enterprise Integration Patterns).
Vyvinul jsem a udržuji repozitář Google Fonts pro NPM, který pravidelně stahuje Google Fonty s otevřenou licencí jako NPM moduly. Využívá Node.js a Lerna.
Vyvinul jsem TypeScript NPM modul pro SHA-512, protože jsem pro UniFi reset password potřeboval knihovnu kompatibilní s implementací mkpasswd.
Vyvinul jsem AngularJS aplikaci pro reset administrátorského hesla UniFi controlleru.
Pracovní zkušenosti
V Tekies jsem pracoval převážně pro PVZP v roli IT architekta a DevOps inženýra. Zodpovídal jsem za Kubernetes platformu a provoz celého aplikačního stacku, za core změny aplikace UPM2 a jejích frameworků a za směřování vývoje. Vedle toho jsem vyvíjel sdílené knihovny, nové microservices a integrace na externí systémy.
CGI IT Czech Republic
Analyst/programmer → System Designer → System Architect
Březen 2015 - Prosinec 2021
https://www.cgi.com/ceska-republika/cs
V CGI jsem pracoval převážně na projektech v telco sektoru, ale také ve finančním sektoru. Podílel jsem se na návrhu řešení, nabídkách, implementaci, technologickém rozvoji a L3 supportu. V CGI jsem byl v průběhu času podle potřeby v roli analytika, programátora, architekta a team leadera. V posledních letech jsem se zapojoval i do přípravy nabídek, cenových odhadů a v menší míře i do business developmentu. Podílel jsem se na inovacích a adopci nových technologií.
Materna Communications (dnes Comverga)
Programátor
Červenec 2014 - Leden 2015
https://www.comverga.com/cze/
Pracoval jsem na vývoji Android aplikace pro ČMI s Java EE backendem. Spolupracoval jsem na vývoji samoobsluhy pro virtuálního operátora. Zautomatizoval jsem uživatelské testy samoobsluhy, včetně automatizace SMS OTP kódů, pomocí GSM brány. Vyvíjel jsem SPA aplikace pro SMS soutěže, včetně integrace na SMS bránu. Vyvíjel jsem Perl monitorovací scripty pro Nagios a Icinga.
Vzdělání
Univerzita Hradec Králové
Aplikovaná informatika - Ing.
2013 - 2016
Univerzita Hradec Králové
Aplikovaná informatika - Bc.
2010 - 2013
Něco navíc
Aplikační bezpečnost
Orientuji se ve webových útocích a aplikační bezpečnosti. Ve volném čase jsem bug hunter a etický hacker.
TCP přenosy a stabilita sítě
Vím, co je TCP retransmission, SYN Flood, socket TIME_WAIT,… Nebojím se použít Wireshark a tcpdump.
Open Source
Fandím Open Source. Když najdu chybu ve veřejném projektu, tak namísto stěžování vytvořím Pull Request.
Unit testy
Každý dělá chyby, proto je můj kód krytý unit testy.