Рубрика развивается при поддержке

Как нужно вести нфраструктуру разработки проекта в сфере информационных технологий

Аннотация: статья о том, как нужно строить инфраструктуру разработки проекта, с какими трудностями придется столкнуться, какие ресурсы следует использовать, каких правил нужно придерживаться, как следует управлять работой. В качестве примера рассмотрим проект на Unity.

В закладки

Ключевые слова: инфраструктура, разработка, проект, управление.

Термин инфраструктура означает «комплекс взаимосвязанных обслуживающих структур или объектов, составляющих и обеспечивающих основу функционирования системы». Не так давно это слово вошло в обиход, но проще говоря, инфраструктура – это фундамент, который позволяет создавать что-либо, в том числе игровые проекты.

Инфраструктура проекта существует даже тогда, когда ею никто специально не занимается. В качестве примера можно привести постройку какого-нибудь сарая без фундамента, со временем где-то появятся подпорки, пол утрамбуется, то есть образуется инфраструктура. Но это не значит, что инфраструктура проекта возникнет сама по себе и заниматься ею не нужно. Необходимо придерживаться принципа: если известно, что появятся какие-то большие и сложные задачи, то лучше о них подумать заранее, что бы избежать проблем в дальнейшем.

Вилков В.Е.

Возьмем большой многопользовательский проект, разрабатываемый в Unity. Можно предположить, что проект будет охватывать несколько областей, либо больших, либо сложных. В ходе реализации проекта планируется задействовать множество людей, сам проект будет долго разрабатываться. Будет использоваться много данных и в процессе производства проекта, и в дальнейшем процессе функционирования проекта. Будет много пользователей, и нужно придумать какие-то решения, какие-то процессы для коммуникаций во время разработки. В процессе работы будут появляться множества знаний, нужно будет заниматься безопасностью, и придумывать массу технических решений.

Вилков В.Е.

В первую очередь будет необходимо общаться. Кажется, что это легко, но на самом деле, кода коллектив превышает 10 человек, то это совсем не просто, а когда возникают разнопрофильные команды, а их будет не 2, не 4, а от 6 до 10, это еще сложнее. И это только команда проекта. Также существуют другие сотрудники компании, это менеджмент компании, с ними тоже нужно общаться, потому что они финансируют проект. Также есть люди из внешнего окружения, ими могут выступать партнеры, которые являются держателями платформ. Во время разработки, необходимо будет общаться с ними. Как это все реализуется? Есть средства, для мгновенной коммуникации, которые на первый взгляд кажутся весьма удобными. Это, например, чаты Telegram: чат по командам, чат проекта, чат компании. Это удобно, но проблема в том, что мгновенные сообщения работают, если их прочитали сейчас, здесь, в течение часа или дня. Если человека не было, он болел, был в отпуске или пришел в проект через два дня после сообщения, вся информация в чатах будет для него потеряна. Поэтому достаточно надежным каналом коммуникаций выступает email, но он тоже не решает всех проблем. Это – канал, который точно доставит информацию, которую могут прочитать все участники проекта. Но не все умеют общаться почтой, эту «культуру» нужно прививать. Канал коммуникации должен работать как на внутреннюю, так и на внешнюю среду проекта. Когда запускается проект, всем интересно, что происходит в нем, в итоге все спрашивают, что происходит внутри разработки. Для этого можно создать блог, в котором можно рассказывать о тех или иных интересных решениях. С одной стороны это снимает каждодневные вопросы: «Что у Вас?», «Как у Вас?». С другой стороны это порождает новые, какие-нибудь конкретные советы или вопросы по уже опубликованному материалу. Также можно устраивать ежедневные demo, которые могут опробовать другие коллеги, это позволяет держать всех участников в курсе происходящего. Это полезно тем, что можно узнать «новое» мнение. Это – повод, чтобы задуматься, пересмотреть какие-нибудь подходы.

Вилков В.Е.

Когда разрабатывается большой проект, нужно помнить массу вещей. Производится большое количество документов, артефактов, решений, если это где-то не запомнить, то потом будет невозможно понять, для чего делается то или иное в проекте. В процессе разработки и реализации проекта появляется документация, но также важно помнить: «что мы решили?», «почему решили когда-то давно?». Если проект длится не один месяц и не один год, то это необходимо, потому что команда ротируется, команда растет, а если есть несколько человек, которые помнят все о проекте, не факт, что они будут работать над ним через полгода, через год. Важную информацию нужно фиксировать, и ход мыслей «почему что-либо было совершено» тоже лучше фиксировать. Это также касается записи собраний, экспериментов, чтобы что-то не проводить дважды, трижды. Для этого можно использовать GoogleSuite, таблицы, документы. Они удобны, в них могут одновременно работать несколько человек. Так же можно использовать сервис Confluence, он очень удобен для командной разработки.

Вилков В.Е.

Нужно работать по правилам. Одной из важных вещей инфраструктуры являются процессы, по которым работают. Нужно создать у команды общее понимание в тех или иных ситуациях, к кому обращаться, что делать, и в этом помогают процессы. Например, если нужно что-то нарисовать, нужно идти к художникам, или к какому-нибудь конкретному художнику, то есть к человеку, который исполняет определенную роль. Роли тоже нужно распределить. Необходимо определять задачи и работать над ними. Все это нужно делать, и это занимает время. Очень важно скоординировать работу между командами. Например, в начале разработки проекта вся команда находилась в одной комнате, потом команда выросла и стала находиться в двух, в трех комнатах, это сильно снижает уровень коммуникации. Если раньше можно было что сказать сидящему рядом коллеге, то сейчас нужно написать в чат, а его могут не прочитать. Получается, что некоторые несложные вопросы зависают и решения по ним не принимаются. Можно начать с простой инфраструктуры – поставить доску и вешать на нее заметки: что нужно сделать, когда, что важно, что неважно и т.д. Это хорошо работает, кода в команде от 4 до 5 человек. Когда людей в команде много, нужно их поделить на новые команды, в которых они будут заниматься определенным процессом. Эти процессы могут меняться.

Вилков В.Е.

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

Большой частью в разработке проекта являются технические решения. Например, если разработчиков много, то часть вопросов можно решить через внешние сервисы (Чаты, GoogleSuite), но не стоит полагаться только на них. Поэтому нужно предполагать несколько решений. Условно за центр можно взять серверы, которые предлагают много разных решений по обеспечению сохранности кода, по работе с задачами, по работе со знаниями. Также есть файловое хранилище, окружение для работы проекта, игровые «логи» (все данные, которые будут производиться проектом, их нужно хранить, с точки зрения аудита, для разбора каких-то ситуаций у пользователя, а также для аналитики). Необходимо иметь «бэкап», чтобы в случае проблемы все данные можно было восстановить.

Вилков В.Е.

Нужно хранить большой объём данных. Требуется хранить проект, потому что там проявляется достаточно много бинарных данных, это могут быть гигабайты, десятки гигабайтов данных. Нужно хранить оригинальные «ассеты», они могут достигать десятки терабайтов, это то, что создают в основном художники, также и аудиоинженеры. Это сырые исходные данные, то, из чего потом собирается проект, импортируются модели, текстуры, все что угодно. В качестве инфраструктуры выступает код. Артефактами являются «логи». В качестве хранилища можно использовать GoogleDrive.

Вилков В.Е.

Так как ожидается большое количество пользователей, то важным инфраструктурным вопросом является наличие большого количества «железных машин», которые должны обеспечить сессии пользователям. Хочется, чтобы весь этот «парк машин» работал предсказуемо, чтобы была возможность дополнять новыми машинами, или изымать другие машины. Будут сотни хостов, все это нужно обновлять, ставить «софт», как свой, так и чужой. Так как задача выглядит сложной, то нужно её полностью автоматизировать, то есть всё запрограммировать. Для этого можно выбрать Ansible («Используется для автоматизации настройки и развертывания программного обеспечения. »).

Вилков В.Е.

У всех участников проекта есть свои требования, которые могут противоречить друг другу. Часть людей, то есть разработчики хотят работать с нестабильным окружением. Им нужно очень быстро делать «фичи», запускать, смотреть, проверять их функционирование. С другой стороны, тестировщикам нужно стабильное окружение, чтобы провести весь цикл тестов. И, естественно, нужно стабильное окружение на «продакшн». Поэтому нужно развернуть подобные инфраструктуры для всего окружения, и уметь разворачивать разные версии приложений для него.

Вилков В.Е.

Важным вопросом является анализ рисков. Его нужно проводить раз в год, полгода, квартал. Могут случаться разные непредвиденные, в том числе форс-мажорные ситуации. Нужно подумать, что требуется сделать, чтобы этого не произошло, либо как можно больше снизить последствия всех этих рисков. Учёт возможных рисков помогает в планировании работы.

Вилков В.Е.

Также следует помнить о безопасности. Фактически, это – следствие рисков. Всё это не просто, так как могут быть физические угрозы безопасности (например, воровство компьютера), так и угрозы цифровой безопасности (например, вирусы). Дело в том, что проекты, как правило,стоят дорого, инвестор тратит деньги, и он не хочет, чтобы внезапно код сервера клиента оказался еще у кого-нибудь, и еще кто-то вместо того, кто платит деньги, стал зарабатывать. Необходимо защищать свои инвестиции.

Вилков В.Е.

Инфраструктура – это важно, но дорого, если ею серьезно заниматься, то это еще и сложно, и требует затрат времени. Из положительных черт можно выделить то, что в отличие от строителей домов, у разработчиков проекта есть возможность делать инфраструктуру интерактивно. Можно попробовать одно решение, или заменить его другим, может быть, более эффективным.Есть возможность делать фундамент даже во время «постройки» проекта.

Инфраструктура проекта зависит от инфраструктуры всей компании. Эффективные решения, уже используемые в компании, можно применять для управления проектом. Интересные решения, которые появляются в процессе работы над проектом, можно внедрить в деятельность компании для повышения её результативности.

Материал опубликован пользователем.
Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Владислав Вилков", "author_type": "self", "tags": [], "comments": 0, "likes": -6, "favorites": 6, "is_advertisement": false, "subsite_label": "dev", "id": 74963, "is_wide": true, "is_ugc": true, "date": "Thu, 11 Jul 2019 18:34:04 +0300", "is_special": false }
Выделенные серверы
Готовы к работе за 120 секунд
0
{ "id": 74963, "author_id": 325604, "diff_limit": 1000, "urls": {"diff":"\/comments\/74963\/get","add":"\/comments\/74963\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/74963"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 235819, "last_count_and_date": null }
Комментариев нет
Популярные
По порядку
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "Article Branding", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cfovx", "p2": "glug" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Баннер в ленте на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "disable": true, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ] { "page_type": "default" }