Vývoj v Aukru
Rozvíjíme a udržujeme platformu, která má svoje výzvy - pro představu pracujeme s následujícími čísly (září 2021)
- 98 miliónů inzerátů
- Měsíční nárůst inzerce cca 2 milióny nových inzerátů
- Na zveřejněné nabídky na naší platformě evidujeme 3.8 miliónů příhozů měsíčně, což je cca 128 tisíc denně
- V peaku máme 100 příhozů/s
- PostgreSQL DB ~ velikost 1.4 TB
- Pracujeme na partitioningu a lepším doménovém rozdělení
- Elastic Search - 200 GB, 8 shard
- 14 TB obrázků
- 200 GB faktur
Pracujeme v distribuovaných teamech napříč celou ČR/zahraničím. K tomuto účelu používáme vyladěný stack nástrojů, který nám umožňuje v takovém prostředí fungovat co nejefektivněji. Díky tomuto modelu nás COVID-19 v tomto ohledu nijak neomezil, homeoffice fungoval i tak výborně, přestože osobní kontakt má svoje výhody.
SCRUM
Pro běh projektu využíváme agilní metodologii scrumu, kterou jsme upravili pro naše potřeby, čímž jsme dosáhli vyšší efektivnosti v teamové práci.
- 2 týdenní sprint
- Releasujeme nezávislé na sprintu (netřeba čekat, na jeho dokončení)
- Ke každému úkolu máme popsaný Ready for development, Definition of Done
- Klademe velký důraz na automatizaci, ač rozhodně nejsme v cílovém stavu
- Unit testy (JUnit 5)
- Integrační testy (Junit 4 v procesu migrace na 5)
- E2e testy (https://www.cypress.io)
- Držíme meetingy
- Standup (každé ráno 15minut)
- Grooming - seznámení se a odhadování stories ve story pointech (míře komplexity), 1 hodina týdně
- Capacity planning, před koncem sprintu, plánujeme kapacitu na další sprint
- Sprint commitment & start (před polednem 1. den týdne)
- Retrospektivy, 1x měsíčně
- Kaizen, co nás trápí, co a jak můžeme zlepšit
Protože pracujeme distribuovaně - Zlín, Brno, Praha, Plzeň, všechny meetingy jsou online.
Google workspace
Interně používáme Google Workspace stack pro vnitrofiremní komunikaci.
- Gmail
- Kalendář
- Google Meet na video chat/meetingy
- Google Drive
- Docs
- Sheets
- Pro občasnou komunikaci a synchronizaci s externími firmami používáme Slack. Prošli jsme si i vlastní šelf-hostovanou instanci Rocket.Chat, kterou jsme opustili, nechtěli jsme se zabývat její správou a provozem.
Asana
Umožňuje nám spravovat projekty, firemní procesy i dílčí úkoly a zefektivňovat tak naši spolupráci, specielně v produktovém oddělení. Díky tomu máme přehled, řídíme práci snadněji, s menším množstvím chyb a s kvalitnějším výstupem.
DEV tools
IntellijIDEA
- Nejspíše netřeba představovat, momentálně asi nejoblíbenější IDE v Java světě
Visual Studio Code
- Lightweight
- Remote development (SSH)
- Angular & Java, univerzální editor
- Datagrip / DBeaver
- Opět jebrains stack
- Jsme schopni sdílet a verzovat ad-hoc SQL kód
Kubernets tools
- Více v Kubernetes a Skaffold
Další užitečné informace
- http://sqlfiddle.com/
- Pro izolované testování a ladění části DB, které jsme schopni snadno interně i externě nasdilet
JIRA
Používáme několik projektů v Jire, pro různá oddělení
- Business pro produkt
- Scrum pro vývoj
- Kanban pro IT/DevOps
Pluginy, bez kterých si nedovedeme představit v Jire fungovat
- Worklogs
- 1.2 USD/uživatel/měsíc
- Umožňuje nám vykazovat odvedenou práci
- Issue checklist Free
- Zdarma
- Checklisty k úkolům
- Obzvlášť užitečné u repetetivních úkolů, kdy je potřeba v rámci úkolů projit seznamem jednotlivých kroků
- Structure
- 1 USD/uživatel/měsíc
- Umožňuje zobrazit reporty v uživatelsky definované formě
- S neomezeným zanořením - ideální pro přehled nad více projekty/epicy
Gitlab
Na hostování zdrojových kódů používáme Gitlab spolu s Gitlab-CI. Používáme téměř všechny její funkce, merge requesty na review počínaje, automatizaci deploymentu konce. Vyčítáme a evidujeme v tomto prostředí běhy testu.
Používáme Git-flow
Branche
- master - obraz produkce
- develop - změny pro další release (kdykoliv deployovatelná)
- feature/xx - z develop branche, úkoly, na kterých se pracuje - máme provázáno s Jira, tzn. z branche se lze proklikout do Jira úkolu, a Jira k úkolu naváže merge requesty (branche v gitlabu)
- hoftix/xx - hotfixy, z master branche
- Merge request zakládá a review dělají 1-2 vývojáři, v závislosti na složitosti / potenciálnímu dopadu na vyvíjenou funkcionalitu
- Automatizace nepustí špatný build zmergovat (compile/unit test/integrační test/e2e test)
Zdroje:
https://nvie.com/posts/a-successful-git-branching-model/
Pokud Tě informace a naše práce zaujaly, neváhej se podívat na Volné pozice