agiledays 2016. Внедрение agile в Банке
TRANSCRIPT
Внедрение Agile в Банке
Михаил Кононов
ООО «Хоум Кредит энд Финанс Банк»
MEMBER OF
PPF GROUP AGILE
Автор: Кононов М.14.03.2016
2
MEMBER OF
PPF GROUP
Agenda
1. О Банке HomeCredit2. Блок информационных технологий3. Agile4. Пилотные проекты5. Что от финтех-а применяем6. Микросервисная архитектура7. Open API 8. Результаты пилотов9. Что дальше?10. Вопросы
3
MEMBER OF
PPF GROUP
Один из крупнейших банков России
1 5 137место
по POS-кредитам
местопо кредитамналичными
местопо депозитам
физических лиц
местопо кредитным
картам
29.9 млн.клиентов
Нас выбрала почти каждаявторая семья России!
4
MEMBER OF
PPF GROUP
Один из крупнейших банков России
87 107точек продаж
4 561
13 880
2 000
805
офисов
сотрудников
населенных пунктов
банкоматов
более
5
MEMBER OF
PPF GROUP
Что такое БИТ Home Credit
~600 сотрудников300 - развитие, 300 - сопровождение
Waterfall релизы200 сотрудников развития на релизах
6
MEMBER OF
PPF GROUP
TTM
1 неделя -1 месяц
5 месяцев
Small tasks
Express Releases
Releases 8 месяцев7
MEMBER OF
PPF GROUP
Что такое Agile?
Набор ценностей и принципов
Набор практик и методик
Другой образ мышления и подход нацеленный на достижение результата в кратчайшие сроки
8
MEMBER OF
PPF GROUP
Зачем Agile?
1. Гибкость2. Сокращение TTM3. Повышение эффективности
+4. Применить технологии ФИНТЕХ-ов
9
MEMBER OF
PPF GROUP
Другой подход
10
MEMBER OF
PPF GROUP
Конвертация развития в бимодальную схемуРежим 1 Режим 2
Стабильность Цель Гибкость
Предсказуемая производительность за известную цену
Ценности Бренд, впечатления клиента
Waterfall Подход Agile
На основе согласованного плана Управление Непрерывное, адаптируемое на основе опыта
Большие вендоры, корпоративные интеграторы, долгосрочные договора
РесурсыНебольшие\новые вендоры и поставщики, краткосрочные контракты
Эффективен в традиционных процессах и проектах
СпособностиНовые проекты с элементаминеопределенности
IT-центричная, отдаленная от клиента Культура Бизнес-центричная, приближенная к клиенту
Долгое (месяцы) Время цикла Короткое (недели)11
MEMBER OF
PPF GROUP
Что такое Agile с технической стороны
1. Continuous Delivery2. Continuous Testing3. DevOps
12
MEMBER OF
PPF GROUP
Что такое Agile с точки зрения ИТ в нашем Банке
1. Отстроенный процесс разработки ПО на базе коротких спринтов2. Автоматизация
o Инфраструктуры в подходе Infrastructure as a Codeo Сетевых конфигураций и доступов
• Мониторинг• Централизованное логирование
13
MEMBER OF
PPF GROUP
Что такое Agile с точки зрения ИТ в нашем Банке
3. Частая поставка ПО - pipeline для работы с парадигмой ContinuousDelivery
• Автоматизированное развертывание на тестовую \ интеграционные \ нагрузочныесреды
• Автотесты• Нагрузочное тестирование• Автоматизированное развертывание в концепции обновление без остановки
14
MEMBER OF
PPF GROUP
Входные данные
1. Использование Open Source2. Delivery Pipeline3. Уход от монолитных приложений
15
MEMBER OF
PPF GROUP
С чего мы начали
1. Выделение 2 команд по 4 FTE от ИТ + 2-3 от бизнесана 3 месяца
2. Пилотные проекты:• Проект “Микросервисная Архитектура”• Проект с монолитной legacy системой
16
MEMBER OF
PPF GROUP
Микросервисы vs Монолит
17
MEMBER OF
PPF GROUP
Микросервисы vs Монолит
18
MEMBER OF
PPF GROUP
Архитектура
Архитектуранабор небольших сервисов, каждый из которых исполняется в отдельном процессе и коммуницирует с внешним миром через легковесное API.
РазвертываниеКаждый сервис устанавливается на среду исполнения независимо, при помощи
полностью автоматизированного механизма.
Полностью виртуальная инфраструктураВсе сервера, на которых разворачивается платформа – виртуальные и однотипные.
Разновидности контейнеровJava и .Net.
Непрерывная сборка (Continuous Integration)Commit в систему приводит к сборке микросервиса на билд-сервере и развертывании на тестовой среде. 19
MEMBER OF
PPF GROUP
Архитектура
АвтотестированиеПроверка микросервиса на уровне исполнения бизнес сценариев
Обновление без даунтаймаМикросервисные приложения обновляются последовательно, без остановки
бизнес сервиса.
Конфигурация также в виде кодаВся специфика конфигурирования сред вынесена в отдельные настройки и также хранится под версионным контролем.
20
MEMBER OF
PPF GROUP
GW Load BalancerService
Discovery
ELK
Microservice A
API
Microservice B
API
Microservice A
API
DB DB
Reverse Proxy
Microservice
API GW
https
http
https
https
Internet access
Balancing
Logging
Monitoring
Service
discovery
For requests
from Internet
Микросервисная архитектура
Service B Load
Balancer
https
API access control, audit,
throttling, etc
http
Service A Load Balancer
API GW
21
MEMBER OF
PPF GROUP
ТехнологииТехнология As Is Пилоты
БД Oracle PostgreSQL
Middleware IIS, Weblogic -
Балансировщик Apache Nginx
Configuration MGMT Ant + ручные операции Ansible
Build MGMT Jenkins Jenkins
Service Discovery - Consul
Container - OS + VM
Development Framework .NET, JAVA NET, JAVA
API Gateway - Netflix ZUUL
22
MEMBER OF
PPF GROUP
Pipeline
23
Ключевые принципы• TDD• BDD (Behavior Driven Development)• Тесты не привязанные к среде (1 спецификация тестов на много сред)
Тестирование микросервисов• Unit Тесты• Scenario тесты• Interface тесты
Технологии • CUCUMBER
Запуск тестов• Jenkins• Ручной пуск
Continuous TestingMEMBER OF
PPF GROUP
24
MEMBER OF
PPF GROUP
Continuous Testing
25
MEMBER OF
PPF GROUP
@Когда("^выполнен запрос на отправку PASS code с типом шаблона
([\\w_]+)$")
public void createPassCodeJD(String templateCode) throws Exception{
PassCodeRequest request = new PassCodeRequest();
request.setExtId("cucumber");
request.setMobilePhone("9160000000");
request.setTemplate(templateCode);
MvcResult result = mockMvc.perform(post("/PassCode/v1/passcode")
.contentType(MediaType.APPLICATION_JSON)
.content(mapper.writeValueAsString(request)))
.andExpect(status().is2xxSuccessful())
.andReturn();
context.setResponseStatus(result.getResponse().getStatus());
context.setSessionId(mapper.readValue(result.getResponse().getConte
ntAsString(), ObjectNode.class).get("id").asText());
context.setPassCode(service.get(context.getSessionId()).getPassCode
());
}
Continuous Testing
26
MEMBER OF
PPF GROUP
- name: Create directories for binaries
become: yes
file: path="/opt/{{service_name}}" state=directory
owner={{service_name}} group={{service_name}} mode=0755
- name: Create directories for logs
become: yes
file: path="{{log_dir}}" state=directory mode=0755
- name: Install java
become: yes
yum: name={{ java_pkg }}
register: installed_java_result
- name: Create service
become: yes
file: state=link src="/opt/{{service_name}}/{{service_name}}-
latest.jar" dest="/etc/init.d/{{service_name}}"
owner="{{service_name}}" mode=a+x force=yes
Инфраструктура как код
27
Комбинация инструментов:• ELK (LogStash + ElasticSearch + Kibana)• CA WILLy – API• MS SCOM
ELK• Все инфраструктурные компоненты (NGINX, app server, DB)• Приложение / микросервис
Microservice A Microservice B
Elastic
Search
KIBANA
LogStash LogStash
GUI
MEMBER OF
PPF GROUP
Monitoring & Logging
28
MEMBER OF
PPF GROUP
API
29
1. Успешное завершение разработки и тестирования
2. Деплой в продуктив3. Открытое API для наших партнеров
MEMBER OF
PPF GROUP
Результаты
30
MEMBER OF
PPF GROUP
Проблемы
Пилот “Микросервисная архитектура”• Для ИТ – Agile, для всех остальных подразделений –
waterfall• Ресурсная проблема (QA дб 1 на 2 Dev)
Пилот с монолитной legasy системой• Нечеткое формулирование требований (не
подготовлены, часто все “Critical” приоритета • Нет выделенной среды – совмещение с waterfall
релизами • Другие подразделения по прежнему в waterfall!
31
MEMBER OF
PPF GROUP
Agile Roadmap на 3 месяца
1. Визуализация Scrum процессов — 04.20162. Расширить автотестирование на мобильное
направление — 05.20163. CI \ CD на мобильное направление— 06.20164. Метрики и измерения — 06.2016
32
MEMBER OF
PPF GROUP
Итоги
1. DEVPORTAL (описание сервисов для партнеров)2. OPEN API
33
MEMBER OF
PPF GROUP
Дальше
1. Появление новых команд (мобильные приложения)2. Синхронизация команд3. Уменьшение waterfall в пользу agile (50% на 50%)
34