Миграция jira - безобразие или безрассудство

24
Миграция JIRA – безобразие или безрассудство? Никита Налютин Experian Decision Analytics

Upload: sqalab

Post on 24-Jul-2015

186 views

Category:

Education


5 download

TRANSCRIPT

Page 1: Миграция JIRA - безобразие или безрассудство

Миграция JIRA – безобразие или безрассудство?

Никита НалютинExperian Decision Analytics

Page 2: Миграция JIRA - безобразие или безрассудство

Пару слов о себе1996-2002 разработчик

1999 получил Excellence in Computer Science Award

2002 пришел в тестирование

2002-2015 самолеты-трейдинг-видео-банки…

2007 книга «Верификация ПО», издана при поддержке

2008 кандидат технических наук

2012- Тест-менеджер

Выступаю на SQA Days2009-2015

Page 3: Миграция JIRA - безобразие или безрассудство

Пару слов о себе1996-2002 разработчик

1999 получил Excellence in Computer Science Award

2002 пришел в тестирование

2002-2015 самолеты-трейдинг-видео-банки…

2007 книга «Верификация ПО», издана при поддержке

2008 кандидат технических наук

2012- Тест-менеджер

Выступаю на SQA Days2009-2014 с бородой2015- без бороды

Page 4: Миграция JIRA - безобразие или безрассудство

Предупреждение

В презентации есть

быдлокод (с багами)

и

XML

Page 5: Миграция JIRA - безобразие или безрассудство

О чем будем говорить

• Миграция JIRA в крупной компании• Какие процессы не видны с самого начала• Какие подразделения вовлечены в процесс• Как поковыряться во внутренностях JIRA

Page 6: Миграция JIRA - безобразие или безрассудство

Как понять, что уже пора?

• Количество сбоев JIRA слишком велико• Поддержка JIRA внешним вендором

дороже поддержки своими силами• Нет возможности установить в JIRA нужные

расширения• Настройки JIRA не соответствуют

внутреним политикам безопасности

Page 7: Миграция JIRA - безобразие или безрассудство

Процесс в маленькой компании

го джира, я создал

Page 8: Миграция JIRA - безобразие или безрассудство

Процесс в средней компании1 2 3

JIRA админ

Финансы

Закупки

Железо и софт

Пользователи

Page 9: Миграция JIRA - безобразие или безрассудство

Энтерпрайз: бессмысленный и беспощадный1 2 3 4 5 6 7 8 9 10 11 12

JIRA админ

PM

Принятие решений

Финансы

Закупки

Железо

Софт

Аутентификация

Файерволлы

Пентест

Вендор

Пользователи

Page 10: Миграция JIRA - безобразие или безрассудство

Кто на самом деле вовлечен в процесс миграции?

• Администратор JIRA• Лица, принимающие решения• Финансовый департамент• Отдел закупок• ИТ-департамент

– железо– софт

• Отдел ИБ– сетевые экраны– аутентификация– пентест

• Предыдущий вендор

Page 11: Миграция JIRA - безобразие или безрассудство

Медленно и печально завершаем отношения с вендором

• Предупреждаем о завершении отношений только когда сами понимаем, что готовы

• Собираем все неоплаченные счета• Определяем самую дешевую дату для

переноса

• Определяем процедуру передачи данных

• Договариваемся овремени реакции

Page 12: Миграция JIRA - безобразие или безрассудство

Планирование внутренней инфраструктуры: CAPEX

H/W CAPEX S/W CAPEX

Назначение Тип Цена сервера Цена диска Цена JIRA Цена СУБД Цена ОС

Прод Физ $$$$ $$$ $$$$ - $$

Тест VM $ $ $ - $$

Бэкап Физ $$ $$$$ - - -

Existing Server(s)? NoExisting Hardware? YesLocation DatacenterServer type Dev VMware

CPUs 1 Cores per CPU 4

Memory 8GBOperating system Windows 2008 R2 std 64-bitDrive Size Tier Existing HW?Backup?C: 40GB 1 (no mirror) No YesD: Data 25GB 1 (no mirror) No YesE: 28GB 1 (no mirror) No YesUsers User 1Monitoring NonePatching Contact User 2

Page 13: Миграция JIRA - безобразие или безрассудство

Планирование внутренней инфраструктуры: OPEX

Активности

Управление проектом

Технический консалтинг

Технические спецификации

Планирование аппаратного обеспечения

Планирование хранения

Администрирование БД

Мониторинг сервисов

Резервное копирование

Мониторинг безопасности

Тест на проникновение

Все это – минимумна год вперед

Page 14: Миграция JIRA - безобразие или безрассудство

Планирование внутренней инфраструктуры: сеть и фаерволлы

TCP 80,443,

8080

MAIL RELAY

TCP 25

TCP80, 443,8080

SVN VLAN

JIRA UAT

uat-jira.internal

JIRA Prod

prod-jira.internal

Internet

Jira updateService

TCP 25

TCP3690

Offices

10.0.0.0/8

TCP

21,8

0,33

06

3389

TCP 21,80,3306

3389

TC

P 2

1 ,8

0 ,4

43 ,

36

903

389

atlassian. com131. 103.28.5131. 103.28.7131. 103.28.11

Page 15: Миграция JIRA - безобразие или безрассудство

Внешняя аутентификация

• Защита от проникновения• Соответствие

корпоративным стандартам• Централизованное

управление доступом

• Необходимость в интеграции с внешним сервисом• Нужно четко прописывать процесс управления аккаунтами• Добавление пользователя может быть длительным• Процедура входа в систему может стать неудобной

Page 16: Миграция JIRA - безобразие или безрассудство

Препарируем Seraphimport javax.servlet.http.HttpServletRequest;import com.atlassian.seraph.filter.PasswordBasedLoginFilter;

public class SSOFilter extends PasswordBasedLoginFilter {

private static final String httpHeaderName_userId = “remote-user";

@Override protected UserPasswordPair extractUserPasswordPair( HttpServletRequest request) { String username = request.getHeader(httpHeaderName_userId);

if (username != null && username.trim().length() != 0) { return new PasswordBasedLoginFilter.UserPasswordPair( username, "DUMMY", false); } return null; }}

Page 17: Миграция JIRA - безобразие или безрассудство

Препарируем Seraphimport java.security.Principal;import com.atlassian.seraph.auth.*;import com.atlassian.crowd.embedded.api.CrowdService;import com.atlassian.jira.component.ComponentAccessor;

public class SSOAuthenticator extends DefaultAuthenticator {

private static final long serialVersionUID = 1L; protected boolean authenticate(Principal user, String password) throws AuthenticatorException { return true; }

protected Principal getUser(String username) { return getCrowdService().getUser(username); }

private CrowdService getCrowdService() {return

(CrowdService)ComponentAccessor.getComponent(CrowdService.class); }}

Page 18: Миграция JIRA - безобразие или безрассудство

Выкидываем родной ввод пароля

seraph-config.xml:

<authenticator class="com.company.jira.SSOAuthenticator"/>

web.xml:

<filter> <filter-name>login</filter-name> <filter-class>com.company.jira.SSOFilter</filter-class> </filter>

jpm.xml:

Убираем login gadget

jira-config.properties:

jira.websudo.is.disabled = true

Page 19: Миграция JIRA - безобразие или безрассудство

Перенос настроек проектов

• Переносим все проекты• Удаляем их, оставляем только настройки• Делаем бэкап• Для каждого нового проекта создаем его с нуля• Создаем такие же настройки как в старой

системе: workflow, roles, screens, …• Переносим проекты по одному

Page 20: Миграция JIRA - безобразие или безрассудство

Файлы экспорта под микроскопом

Версия JIRA

<OSPropertyString id="10037" value="6338"/>

Ненужные записи журнала аудита

<data tableName="AO_78C957_AUDITEVENTS"><data tableName="AO_78C957_AUDITHINT"><data tableName="AO_78C957_NOTIFICATION_HIST">

Версии плагинов

<PluginVersion id="10966" name="User Group Picker" key="com.keplerrominfo.jira.plugins.usergrouppicker" version="2.6.4-J631" created="2014-10-31 15:13:52.0"/><SequenceValueItem seqName="PluginVersion" seqId="10970"/>

Селекторы пользователей<CustomField id="10011" customfieldtypekey="com.iamhuy.jira.plugin.issue-alternative-assignee:userselectbox-customfield" customfieldsearcherkey="com.iamhuy.jira.plugin.issue-alternative-assignee:userpickerprojectrolesearcher" name="Internal contact"/>

Page 21: Миграция JIRA - безобразие или безрассудство

Поэтапный перенос проектовСервер Жив? Клиент? Данные есть? Обновлен Миграция Проект Руководитель

P U да да запрошены 10.05.15 15.05.15 BEEF J. Doe

P нет да 30.04.15 25.04.15 02.05.15 CODE V. Pupkin

P да нет 01.05.15 30.04.15 asap COOL H. Grant

P нет нет 01.02.15 30.12.14 late DEAD V. Lenin

• Учим пользователей заранее• Согласовываем дату переноса• Объединяем проекты в волны• Следим за изменениями на старом

сервере• Спокойно относимся к переносам сроков• Отслеживаем целостность данных• Не забываем оповещать о переходе

Page 22: Миграция JIRA - безобразие или безрассудство

Как убедиться, что все хорошо

• Не тестировать на production• Делать повторный экспорт• Сравнивать XML• Сравнивать базы• Проверять вручную самому• Давать проверять пользователям

Page 24: Миграция JIRA - безобразие или безрассудство

Вопросы?

Я все еще Никита Налютин

Задать вопросы можно

- здесь (навыки поиска не нужны)- в соцсетях (умение искать пригодится)