# Технології

Інструмент — лише засіб. Клієнт купує вміння обрати правильний і дисципліну,
щоб добре його експлуатувати. Але ви запитали, з чим ми працюємо, — тож ось
перелік, і кожен його рядок підтверджено роботою в [портфоліо](/uk/portfolio/).

## Мови та середовища виконання

**Python** — для роботи з даними, автоматизації та сервісів. **Go** — там, де
важливі один статичний бінарник і низькі накладні витрати. **TypeScript** і
сучасний JavaScript — на вебрівні. **SQL** — як повноцінна мова, а не те, що
генерує ORM: саме там здебільшого й лежить робота з продуктивністю, заради якої
нас запрошують. **Bash** — для «клею» між компонентами, і написаний так, щоб
його можна було прочитати.

## Дані

**PostgreSQL** — наш вибір за замовчуванням, і ми використовуємо його
можливості по максимуму, перш ніж братися за щось інше: партиціонування,
реплікацію, розширення та планувальник запитів. Ми також працюємо з
**MS SQL Server**, **BigQuery**, **SQLite** і **Redis**, а поверх них — із
геопросторовим стеком: **PostGIS**, **QGIS**, **GDAL** та **ArcGIS**.
Пайплайни будуємо так, щоб їх можна було перезапускати і щоб вони були
ідемпотентними, бо після інциденту завжди постає одне питання: чи можна
прогнати це ще раз.

## Хмара та інфраструктура

**Google Cloud** і **AWS**, а **Azure** — там, де клієнт уже в ньому працює.
**Linux** в основі всього — Debian і Ubuntu. **Docker** і **Kubernetes** — для
навантажень, які цього справді варті, і звичайні юніти systemd для решти.
**Ansible** і **Terraform** описують машини, тож середовище — це документ, а не
археологічні розкопки. **Caddy** і **nginx** — на вході.

## Експлуатація в продакшні

**Prometheus** і **Grafana** — для метрик, структуроване журналювання — для
решти, а сповіщення спрацьовують на симптоми, які помітить користувач, а не на
кожне смикання графіка. CI-завдання збирають, тестують, сканують і розгортають
без участі людини. Резервні копії робимо, а відновлення з них перевіряємо.

## Вебрівень

Статика насамперед, де це доречно, бо сторінка-файл — це сторінка, яка не
може впасти: **Hugo** збирає цей сайт. **Django** і **PHP** — там, де є
застосунок, який треба обслуговувати. Семантичний HTML, написаний вручну CSS і
доступність як вимога, а не як зауваження аудиту.

## Як ми обираємо

Нудна технологія, обрана свідомо, краща за новітню, обрану за інерцією. Ми
обираємо під завдання, під те, що ваша команда зможе експлуатувати, коли ми
підемо, і з огляду на те, як система поводиться під час збою, а не як вона
виглядає на демонстрації. Коли правильна відповідь — стек, який у вас уже є, ми
так і кажемо, а коли ні — кажемо й це та письмово обґрунтовуємо чому.

Цей сайт і сам є наочним прикладом: [сторінка подяк](/uk/credits/) називає
кожну технологію, що за ним стоїть, аж до гарнітури й інструмента резервного
копіювання.

Якщо вам потрібен підрядник із власними переконаннями, а не зі списком
уподобань,
[розкажіть, що ви будуєте](/uk/contact/) *(і ми будемо їх обстоювати)*.

<https://support.engineer.company/uk/tech-stack/>
