Есть автоматизированная воронка одобрения кредита. Те этапы которые не поддаются автоматизации делегированы человеку, который в CRM-системе вручную проверяет документы по заявке и выносит вердикт. Это и есть сервис ручного андеррайтинга.
Разовые достижения:
- Заимплементировал требования для ручного этапа одобрения кредита.
- Заимплементировал юнит- и функциональные тесты.
- Закастомизировал Newrelic чтобы иметь уместные алерты (а не всё подряд).
Повторяющиеся практики:
- дежурства: среагировал алерты с продуктивной среды путём разборка и починки и описания post-mortem;
- поддержка: заимплементил обновления со стороны платформы, создал тикеты на команды от которых зависит починка багов.
- периодические сквозные имплементации - когда фича глобальная и ветвление логики задействует несколько микросервисов.
Стек:
- kotlin, Spark;
- Postgress, SQL, JOOQ, Flyway;
- JUnit, Mockito, Wiremock, Docker+testcontainers;
- NewRelic, GCP, Gradle, Teamcity, Bitbucket, git;
- Kafka - аналог написанный внутри компании.
Технические детали:
- Модульный микросервис, Предметно-ориентированное проектирование (DDD, ограниченный контекст, общий язык);
- Архитектура слоёв, CQRS, пессимистичные блокировки;
- идемпонентность, strategy, проверка прав, status transitions, decorator, factory, VO, DTO, ручное управление зависимостями и ручная конфигурация (без Spring);
- doc ops: ADR.
Мультиплеер:
- процесс: 1-недельные спринты; дейли;
- 25 разработчиков микросервисов в кредитном отделе;
- моя под-команда: изначально 3 программиста, затем 1 программист (я, без QA); 1 бадди; 1 кросс-командный владелец продукта;