Programujeme letenky

Vývojáři GOL IBE v C.E.E. Group Travelport
Programátorský web
Background image - Futurama office park
Publikováno 5.12.2017
PHP Session: Redis vs Memcached

Jedním z technických dluhů, který máme je "bezvýpadkové nasazování". Naše výpadky běžně trvají 1-2 minuty (sem tam více) a postihují nás jednou týdně v ranních hodinách. Není to málo, ale dosud jsme prioritizovali jiné technické úkoly. Například upgrade serverů, automatické a výkonnostní testy, mock servery za složitá API nebo přechod na Gitlab. Na cestě k bezvýpadkovému nasazování se nyní pouštíme do prvního dílčího úkolu: přesun session z filesystému do nějakého vhodnějšího úložiště. Redis nám nevyhovuje kvůli nepodpoře transakcí. Hlavním kandidátem je tedy Memcache, který má sice v nám dostupné verzi problémy se zabezpečením připojení, ale s tím se vyrovnáme.

Storing PHP Sessions into Memcache

Publikováno 29.11.2017
GitLab Flow

Git flow a GitHub flow jsou dostatečně známé. Stranou stojí GitLab flow, ale zdá se, že k němu zvolna míříme. Uvidíme, jestli se nám přechod z Tracu, kde máme definovány vlastní statusy jako jsou code review a merge na gitlabí Issues a Merge requesty osvědčí.

Introduction to Gitlab Flow

Publikováno 8.11.2017
GDPR Prezentace

Po sérii návštěv všelijakých školení na téma GDPR a také po několika konzultacích s právníky, jsme se pustili do prvního celofiremního představení, co GDPR je. A také proč je. Základní údaje naleznete například na stránkách Úřadu pro ochranu osobních údajů.

GDPR - základní údaje

Publikováno 3.11.2017
Playback č. 12

Prošli jsme si všech 12 faktorů, které by měla mít aplikace aspirující na škálovatelnou, snad udržovatelnou a všeobecně radost přinášející aplikací. A prodiskutovali jsme je. Něco dávno zvládáme, někde máme trochu jiný názor... a někde se polepšíme.

12 Factor Apps

Publikováno 1.11.2017
Měsíc kybernetické bezpečnosti: Soutěž The Catch

Kolega Tomáš se zúčastnil soutěže The Catch pořádané Forenzní laboratoří Cesnet. Výsledky sice ještě nebyly vyhlášeny, ale protože v případě shody bodů rozhoduje čas a Tomáš má (prý) plný počet bodů, nemůže ho (prý) již nikdo předstihnout a skončí na konečném 32. místě (z cca 800 účastníků). My mu sice nerozumíme, ale my mu věříme.

Soutěž The Catch

Publikováno 25.10.2017
All Day DevOps 2017

All Day DevOps je čtyřiadvacetihodinová online konference, během které v několika kanálech probíhají přes Youtube přednášky z oblastí CI/CD, DevSecOps, Modern Infrastructure a dalších. Nevěnovali jsme se tomu po celý den, ale kdo chtěl mohl si odběhnout do zasedačky na "promítání s diskusí".

Program (pro zobrazení je třeba kliknout na den)

Publikováno 13.10.2017
Playback č. 11

Výživná přednáška Petra Ferschmanna o GraphQL, která o samotném GraphQL skoro ani není. Nejprve se dozvíte o motivacích k tomu, proč se GrapQL vůbec zabývat (intenet je nejpomalejší, co kdy byl... a lepší to nebude). Následně Petr představí nástroje, jak s GraphQL pracovat (v javascriptu).

Petr Ferschmann - REST API je mrtvé, ať žije GraphQL a Relay

Publikováno 6.10.2017
Playback č. 10

Po prázdninovém volnu navazujeme v říjnu dalším promítáním. Tentokrát o tom, že pure funkce jsou fajn, jak vyndat stav z existující funkce, že jde potom vytvářet historii stavů a jak se k tomu hodí persistentní datové struktury.

Brian Maddy: State, Immutability, and Persistent Data Structures

Publikováno 20.9.2017
TeriBear - hýbe Travelportem

Ačkoliv jsme stále částečně v prázdninovém módu, někteří z nás si našli čas na běhání v rámci charitativní akce Teribear, kde jsme jako Travelport zároveň jedním z hlavních partnerů.

Statistika týmu Travelport

Publikováno 31.8.2017
SimpleDi

Z interních debat o tom, jak by asi měl vypadat jednoduchý Dependency Injection Container vzešla třída Cee\SimpleDi\Container.

SimpleDi na Githubu

Publikováno 23.8.2017
Konference Microservices

Návštěva na konferenci Microservices byla přínosná. Řečníci mluvili o motivaci, obecných principech, praktických zkušenostech a pokročilejších problémech s odolnosti aplikací proti výpadkům.

Zápisky z Microservices

Publikováno 4.8.2017
Průběh pohovorů

Do stránky Do týmu hledáme jsme doplnili krátkou informaci o průběhu pohovorů.

Průběh

Publikováno 18.7.2017
Přehled Playback meetupů

Přes léto si s pouštěním přednášek dáváme zatím trochu pauzu. Ale připravili jsme samostatnou stránku se seznamem proběhlých meetupů.

Přehled

Publikováno 23.6.2017
Playback meetup č. 9

Jak používají message brokera RabbitMQ v Mall.cz? Paralelizace procesů pomocí zpráv s využitím populární technologie. A ukázka simulátoru RabbitMQ v browseru.

Jan Blaško: Jak nám dupou králíci RabbitMQ

Publikováno 22.6.2017
Diagram GOL IBE

Doplnili jsme diagram popisující, z jakých částí se GOL IBE skládá a které technologie jsou v nich hlavně použity.

Diagram

Publikováno 16.6.2017
Playback meetup č. 8

Jaké je vhodné použití key-value storage? Cache a session. Možná - je třeba vyřešit problém zámků. Celkem solidní, rychlý úvod do používání Redisu.

Martin Štekl: Redis - nejen cache a sessions

Publikováno 8.6.2017
Refactoring a automatické testy

Při psaní testů během refactoringu nás čeká otázka: Má smysl napsat nejdřív test na původní chování a pak se pustit do refactoringu? Debatu nad tímto tématem jsme shrnuli do jednoho obrázku.

Obrázek

Publikováno 2.6.2017
Playback meetup č. 7

JSON má nějaké výhody a nějaké nevýhody. S chybějící formální validací se snaží popasovat JSON schema. Relativně elegantně. Sice je to už několik let pouze draft, ale už to má spoustu implementací pro spoustu jazyků.

Jan Tvrdík: Jak pomocí JSON schema validovat API požadavky/odpovědi

Publikováno 26.5.2017
Interní školení v end-to-end testech

Tester Libor připravil prezentaci, jak píše end-to-end testy. Rádi bychom jejich psaní využili už v rámci programování. Zatím se zdá, že interní testovací nadstavba postavená na Page Object Patternu dělá psaní některých testů dostatečně snadným, aby se jich programátoři ujmuli.

Page Object Pattern

Publikováno 26.5.2017
Playback meetup č. 6

Zvolili jsme jedno z těch témat, u kterých se programátoři vždycky nakonec nespokojeně ošívají a koukají do země - Bezpečnost. Vydařená přednáška Filipa Procházky. A vážně se netýká jen Nette. Stripujte ty Exify...

Filip Procházka: Časté bezpečnostní chyby nejen v Nette aplikacích

Publikováno 19.5.2017
GDPR bude větší pozdvižení než EET

Začínáme se zajímat o problematiku GDPR. Martin se vydal na přednášku organizovanou panem Kokešem z https://gdpr.systems/. Mise sledoval konferenci GDPR na Twitteru, kde se pár informací dozvíte i z animovaných obrázků. Další relevantní zdroj je třeba https://gdpr.cz.

Hastag #gdprkonference na Twitteru

Publikováno 12.5.2017
Playback meetup č. 5

Jako zdroj poznání jsme vyzkoušeli youtube kanál Zonky engineering teamu. Docker, microservicy a AWSko táhnou...

Michal Augustýn: Microservices v Dockeru a private cloudu

Publikováno 10.5.2017
UX konference

Tentokrát jsme vyrazili na UX konferenci od TUESDAY Business Network a Internet Info. Je fajn poslouchat, jak se dneska různí vývojáři různě perou nejen s uživatelským testováním, ale hlavně i s výzkumem a vyhodnocováním.

Miseho poznámky z UX konference

Publikováno 5.5.2017
Playback meetup č.4

S AWS Cloudem trochu koketujeme, tak jsme si pustili tipy na co si dát pozor od Soukiho. Jak sám protagonista říká "Je to jasné, když vám to říkám, ale nenapadne vás to, když to děláte."

Petr Soukup - Faily při provozu PHP v cloudu

Publikováno 2.5.2017
Deployment mergem z Gitlabu

Tyto stránky jsou nově nasazovány akceptováním Merge requestu z masteru do větve production. Jde o výsledek pokusů s využíváním Gitlab CI. Nyní budeme zvažovat použítí pro další projekty.

Základní představení Gitlab CI

Publikováno 28.4.2017
Playback meetup č.3

ELK už sice sporadicky používáme, ale i tak vyhrál hlasování. Mnoho nového jsme se nedozvěděli, ale aspoň jsme se pobavili na téma: Měl by každý programátor automaticky logovat, tak aby si sám po nasazení kódu do produkce ověřil, jak je funkcionalita používána uživateli?

InstallFest: ELK - sežere Vaše logy, Věroš Kaplan

Publikováno 24.4.2017
Monitoring na Twitteru

Neodolali jsme a pochlubili se vlastním monitoringem.

Čím větší květina...

Publikováno 21.4.2017
Playback meetup č.2

Druhé sezení se vzdělávacími videi. Tentokrát o Vue.js, javascriptovém frameworku, o kterém jsme slyšeli poprvé.

Apiary meetup: How we chose Vue.js (Jakub Mikuláš), Vue.js 101 (Jiří Kratochvíl)

Publikováno 7.4.2017
1. Playback meetup

Zkoušíme nový způsob, jak se dozvědět něco nového. V pátek ráno jsme sešli ke sledování videa o Dockeru a krátké diskusi nad ním. Přizvali jsme i kolegy z IDC-softwarehouse.

InstallFest: Docker pro neznalé (Václav Pavlín)

Publikováno 5.4.2017
Uživatelské testování Trawyse

Trawyse jsme si nechali otestovat Dobrým webem. Do pozorovatelské místnosti se vypravil každý, kdo měl chuť (nakonec všichni). Uživatelé se ukázali překvapivě schopní.

Dobrý web: Uživatelské testování

Publikováno 1.4.2017
Výprava na Devel.cz 2017

Jirka, Michal a Mise se vypravili na Devel.cz. Mise si poctivě dělal poznámky.

Poznámky z Devel.cz

Publikováno 28.3.2017
Vyladěné selhání testu v Codeception

Michal připravil článek s tipem, jak upravit zpracování screenshotů selhaných testů ve VisualCeption.

Celý článek

Publikováno 28.2.2017
Podílíme se na Codeception/VisualCeption

Michalovi se podařilo prosadit některé své úpravy pro VisualCeption do hlavního repositáře. Jde o rozšíření testovací frameworku Codeception, které umožňuje porovnávání screenshotů stránek. Autoři zároveň Michalovi nabídli správcovství projektu, které přijal. Slavíme.

Vyzkoušejte VisualCeption

Publikováno 10.2.2017
Trawys v testovacím provozu

Náš zbrusu nový nástroj na rezervování dodatečných služeb k letenkám - Trawys jsme nasadili do testovacího provozu. S návrhem uživatelského rozhraní nám pomáhal Dobrý web. Těšíme se na uživatelské testování.

Archív: 2016 | 2017 | 2018 | 2019

GOL IBE D4 - React
GOL IBE D4 - React

Vyvíjíme rezervační systém, kterému říkame GOL. Zkratka IBE znamená Internet booking (= rezervační) engine. Rezervujeme primárně letenky. Označení D4 značí čtvrtou generaci, vyvinutou v javascriptovém frameworku Next.js, postaveném na Reactu. Z původního Flow jsme přešli na Typescript. Testujeme v Jestu a Cypressu. Aktuálně máme první zákazníky, ladíme, doháníme funkcionalitu a rozjíždíme React Native verzi.

GOL IBE D3 - PHP
GOL IBE D3 - PHP

Starší verze GOLu. Systém stále intenzivně vyvíjíme a zároveň udržujeme v provozu přes 10 let. To znamená, že v začátcích GOLu vypadal webový vývoj úplně jinak než dnes. Ale neznamená to, že bychom ho dělali celou dobu stejně. Jsme na PHP 7.2, testy píšeme v Codeception a PHPUnit.

GOL API - C++
GOL API - C++

Uvnitř GOLu se skrývá C++ jádro staré více než 10 let. Historicky podporovalo několik zdrojů letenkových a hotelových dat, rezervace aut a pojištění. Stále je v něm co zlepšovat. Při vývoji si pomáháme mockováním všech externích zdrojů dat, se kterými spolupracujeme. To nám umožňuje psát automatické testy. Nový kód píšeme v C14 a když je to potřeba, využíváme Boost.

Trawys - PHP
Trawys - PHP

Vyvíjíme také rezervační systém pro dodatečné služby k letenkám Trawys. K již zakoupené letence umožňuje dokoupit služby, jako jsou konkrétní sedadlo, dodatečná zavazadla nebo jídlo na palubě. Verze PHP je 7.2 a využíváme PHPStan.

Co všechno tedy používáme
  • Next.js, React, Typescript
  • PHP 7.2, začínáme s PHPStan
  • PHPUnit, Selenium, VisualCeption, Jest, Cypress
  • C++ (s možností využívat C11 a C14), Boost
  • Git (Gitlab, včetně CI)
  • Mysql, Memcached, Redis
  • Munin, ELK
  • koketujeme s AWS lambda
  • Debian spravovaný pomocí Ansible
  • nějaký ten Shell a trocha toho Pythonu
  • a mobilní aplikace pro nás vyvíjí externisté
Externí API

Využíváme různá API z cestovního ruchu. Nejvíce používáme API k systému Galileo, které využívají i největší hráči v oboru. V ČR jsou to například Kiwi.com, StudentAgency, nebo Pelikan. Obdobné je to s API Travelfusion.

Hledáme kolegy

Podrobnější popis.

Čím je naše práce specifická
Čím je naše práce specifická
  • Vyvíjíme v týdenních cyklech
  • Refaktorujeme, automatizujeme
  • Produktu držíme podporu
  • Takže víme, jak se mu daří...
  • ... u nás, na Slovensku, v Albánii, v Srbsku...
  • ... nebo třeba Keni, Thajsku nebo Surinamu...