Хипстеры в энтерпрайзе
TRANSCRIPT
Хипстеры в энтерпрайзеХи ́пстер, хипстеры — появившийся в США в 40-х годах термин, образованный от жаргонного “to be hip”, что переводится приблизительно как “быть в теме”
@tolkv
2
2
@aatarasoff
3
3
Все события и персонажи вымышлены.
Любое сходство с реальными событиями и именами случайно.
Discalimer
4
Это про нас
5
План
6
● Капитанская часть
● Что такое хорошо?
○ и что такое плохо?
● Что со всем этим делать?
● Результат
● Q&A
Люди говорят:
Надо быть гибким
7
Эволюция везде
8
Дано
9
Найди себя
Manager
DBA BA
UXDeveloper QA
Operations
10
Колодцы
Manager
DBA BA
UXDeveloper QA
Operations
11
12
Пример №0: департамент версионирования
13
14
Внедряем Agile
15
Слепые пятна после второго прихода
Manager
DBA BA
UXDeveloper QA
Operations
16
А что если не летит?
17
Проблема последней мили
Lead Time
Full Delivery Time
Cycle Time Cycle Time
18
Нас спасут инженерные практики
19
Чёрная дыра инженерных практик
Инженерные практики20
Слагаемые успеха
ИнструментыАрхитектураи технологии
Инженерный подход21
График хуяфик
22
Пример №1: унылость тестирования
23
Пример №1: унылость тестирования
?
24
Пример №1: унылость тестирования
25
Пример №1: унылость тестирования
26
Пример №2: инструменты не для всех
Spec by ExampleWord/PDF
Код + тестыIDE
Тест-кейсыHP ALM
Developer QABA
27
Пример №3: всё не так
v.2014-12-31.1.0.1.1 v.2015-01-10.1.0.1.2
Настройки в установку.2015-01-10.v2
28
Инженерный подход (Dev)
● Мой код работает на моей машине
● Я написал инструкцию админам
● Я что-то сделал, пусть тестировщик тестирует
● Мой код работает у клиента
● Я написал скрипт развёртывания ПО
● Я должен написать тесты
29
Инженерный подход (Ops)
● Мне дали инструкцию как выкладывать продукт
● У вас ошибка в инструкции
● У меня есть документ как настраивать сервера
● Я написал скрипт выкладки продукта
● У нас баг в скрипте● У меня есть скрипт,
который настраивает сервера
30
Преодолеваем отставание
31
Как это сделать? Принцип огораживания
32
Как это сделать? Принцип огораживания
33
Как это сделать? Принцип огораживания
34
Как это сделать? Domain Driven Design
35
Три типа разделения
● по языкам/технологиям
● по типам источников данных
● по командам
36
Trade-Off: Принцип LSD
- L языков программирования- S в среднем фреймворков на язык- D типов источников данных
complexity = L * S * D37
Простой такой пример
- три языка программирования- два в среднем фреймворка на язык- семь типов источников данных
- legacy WS, mongo db- хранимые процедуры, JDBC-templates- elasticsearch, neo4j- мишкина база
complexity = 3 * 2 * 7 = 42 (!)38
Чем нельзя жертвовать?
min (L * S * D) -> ?
39
Закон трёх букв
min (L * S * D) -> max (D)
40
Какие инструменты вам помогут?
● Docker
● ???
● ???
41
Docker
● Инкапсуляция имплементации
● Унификация и стандартизация
● Изоляция ресурсов
42
Docker глазами разработчика
43
Docker глазами саппорта: stressless архитектура
44
Так зачем Docker в энтерпрайзе?
45
● Уменьшает уровень беспокойства у саппорта
● Развязывает руки команде разработки
Какие инструменты вам помогут?
● Docker
● API
● ???
46
API на примере Docker-а
FROM docker.moscow.alfaintra.net/java8
MAINTAINER [email protected]
ADD payments-api.tar /
ENTRYPOINT ["/payments-api/bin/payments-api.sh"]
EXPOSE 8080
docker run -P --name payments-api docker.moscow.alfaintra.net/payments-api:0.0.1
47
docker pull
docker run
docker logs
docker stop
docker start
API на пример Ansible-а
48
Какие инструменты вам помогут?
● Docker
● API
● Mesos Ecosystem
49
50
51
О чём мы не хотим беспокоиться?
● о серверах
● о кластерах
● о бюрократии
52
Apache Mesos
53
Кратко о возможностях: ● масштабируй● изолируй● управляй● мониторь
Профит
● Упрощение архитектуры: единый интерфейс для управления ресурсами
● Автоматизация: никто не любит быть разбуженным посреди ночи - придаем свойство самовосстановления своим системам
● Эффективность: динамическое распределение ресурсов с гарантированной изоляцией
● API самообслуживания: прямой доступ к ресурсам для команды разработки
54
Выводы
55
ManagerDBA
BA
UX
Developer QA
Operations
Software Engineer
Выводы
56
И на ход ноги
● Не забывайте про закон трёх букв
min (L * S * D) -> max (D)
57
58
Спасибо! Будем рады ответить на ваши вопросы.
@tolkv
@aatarasoff