Всем привет! Мы инженеры-автоматизаторы из компании مثبت ټیکنالوژي и занимаемся сопровождением разработки продуктов компании: поддерживаем весь сборочный конвейер от коммита строчки кода разработчиками до публикации готовых продуктов и лицензий на серверах обновлений. Неформально нас называют DevOps-инженеры. В этой статье мы хотим рассказать про технологические этапы процесса производства ПО, про то, как мы их видим и как классифицируем.
د موادو څخه به تاسو د څو محصولاتو پراختیا د همغږۍ پیچلتیا په اړه زده کړئ، تخنیکي نقشه څه ده او دا څنګه د حلونو تنظیم او نقل کولو کې مرسته کوي، د پراختیا پروسې اصلي مرحلې او مرحلې څه دي، د مسؤلیت ساحې څنګه په نښه شوي. زموږ په شرکت کې د DevOps او ټیمونو ترمنځ.
د Chaos او DevOps په اړه
راځئ چې په لنډ ډول یادونه وکړو چې د DevOps مفهوم کې د پراختیا وسیلې او خدمات شامل دي ، په بیله بیا میتودولوژي او د دوی کارولو لپاره غوره کړنې. راځئ چې نړیوال روښانه کړو هدف от внедрения идей DevOps в нашей компании: это последовательное снижение себестоимости производства и сопровождения продуктов в количественных показателях (человеко-часах или машино-часах, CPU, RAM, Disk etc.). Самый простой и очевидный способ снижения общей себестоимости разработки на уровне всей компании — это د عادي سریال دندو د ترسره کولو لګښت کمول د تولید په ټولو مرحلو کې. مګر دا مرحلې څه دي، دوی د عمومي پروسې څخه څنګه توپیر کولی شي، کوم پړاوونه لري؟
Когда компания разрабатывает один продукт, все более-менее понятно: обычно есть общий роадмап и схема разработки. Но что делать, когда продуктовая линейка расширяется и продуктов становится больше? На первый взгляд, у них похожие процессы и сборочные конвейеры и начинается игра «найди Х отличий» в логах и скриптах. А если в активной разработке уже 5+ проектов и требуется поддержка нескольких версий, разработанных за несколько лет? Хотим ли мы переиспользовать максимально возможное количество решений в продуктовых конвейерах или готовы тратиться на уникальную разработку под каждый?
Как найти баланс между уникальностью и серийностью решений?
د پراختیا رییس: «Парни, а мы как-то можем оценить, что делает DevOps для продуктов?»
موږ یو: "موږ نه پوهیږو، موږ دا پوښتنه نه ده کړې، مګر کوم شاخصونه باید محاسبه شي؟"
د پراختیا رییس: "څوک پوهیږي! فکر وکړه..."
لکه څنګه چې په دې مشهور فلم کې: "زه هوټل ته ځم! .." - "هو ... تاسو ماته لاره ښودلی شئ؟" له فکر کولو وروسته، موږ دې پایلې ته ورسیدو چې موږ باید لومړی د محصولاتو وروستي حالتونو په اړه پریکړه وکړو؛ دا زموږ لومړی هدف شو.
Итак, как же провести анализ десятка продуктов с достаточно крупными командами от 10 до 200 человек и определить измеримые метрики при тиражировании решений?
1: 0 په بلیډونو کې د Chaos ، یا DevOps په ګټه
موږ د BPwin لړۍ څخه د IDEF0 ډیاګرامونو او د سوداګرۍ مختلف پروسې ډیاګرامونو پلي کولو هڅه کولو سره پیل وکړ. ګډوډي د راتلونکي پروژې د راتلونکي مرحلې د پنځم مربع څخه وروسته پیل شوه، او د هرې پروژې لپاره دا چوکۍ په 50+ ګامونو کې د اوږد پیتون په لکۍ کې راښکته کیدی شي. ما د خپګان احساس وکړ او غوښتل چې په سپوږمۍ کې چیغې وکړم - دا په هیڅ ډول مناسب نه و.
د تولید عادي دندې
د تولید پروسې ماډل کول خورا پیچلي او دردناک کار دی: تاسو اړتیا لرئ د مختلف څانګو او تولید زنځیرونو څخه ډیری ډیټا راټول کړئ ، پروسس او تحلیل کړئ. تاسو کولی شئ پدې اړه نور په مقاله کې ولولئ "Моделирование производственных процессов в ИТ-компании".
کله چې موږ د خپل تولید پروسې ماډل کول پیل کړل، موږ یو ځانګړی هدف درلود - هر هغه کارمند ته چې زموږ د شرکت د محصولاتو په پراختیا کې ښکیل دي او د پروژې مدیرانو ته خبر ورکوي:
За последние пять лет в нашей работе накопилось множество однотипных и рутинных операций, а от наших разработчиков из других отделов в основном приходят так называемые عادي دندې، چې حل یې په بشپړ یا جزوي ډول اتومات دی ، د لوبغاړو لپاره ستونزې نه رامینځته کوي او د پام وړ کار ته اړتیا نلري. د مخکښو ساحو سره یوځای، موږ دا ډول دندې تحلیل کړې او د کار انفرادي کټګورۍ پیژندلو توان درلود، یا د تولید پړاوونه، مرحلې په نه ویشل کیدونکي مرحلو ویشل شوي ، او څو مرحلې اضافه کیږي производственная технологическая цепочка.
د ټیکنالوژیک سلسلې ترټولو ساده مثال په شرکت کې زموږ د هر محصول د راټولولو، پلي کولو او ازموینې مرحلې دي. په بدل کې، د بیلګې په توګه، د جوړونې مرحله د ډیری جلا معیاري مرحلو څخه جوړه ده: د GitLab څخه د سرچینو ډاونلوډ کول، د انحصار او دریم اړخ کتابتونونو چمتو کول، د واحد ازموینه او د جامد کوډ تحلیل، په GitLab CI کې د جوړونې سکریپټ اجرا کول، په ذخیره کې د آثارو خپرول. زموږ د داخلي ChangelogBuilder وسیلې له لارې هنري او تولیدي خوشې یادښتونه.
Вот как это работает. Все проекты выглядят типовыми: они включают конфигурацию сборок, которые попадают в snapshot-репозиторий на Artifactory, после чего осуществляется их развертывание и тестирование на тестовых стендах, а затем продвижение в релизный репозиторий. Сервис Artifactory является единой точкой распространения всех артефактов сборки между командами и другими сервисами.
که موږ زموږ د خوشې کولو سکیم خورا ساده او عمومي کړو، پدې کې لاندې مرحلې شاملې دي:
кроссплатформенная сборка продукта,
деплой на тестовые стенды,
запуск функциональных и иных тестов,
продвижение протестированных сборок в релизные репозитории на Artifactory,
د خپرولو خپرونه د سرورونو تازه کولو لپاره جوړوي،
تولید ته د ودانیو او تازه معلوماتو تحویل کول
د نصبولو او محصول تازه کولو پیل کول.
Рассмотрим для примера технологическую модель этой типовой релизной схемы (далее просто — Модель) в виде функциональной IDEF0-модели. В ней отражены основные этапы нашего CI-процесса. В IDEF0-моделях используется так называемая د ICOM یادښت (Input-Control-Output-Mechanism) для описания того, какие ресурсы используются на каждом этапе, на основании каких правил и требований выполняется работа, что получается на выходе и какие механизмы, сервисы или люди реализуют конкретный этап.
په بشپړ اندازه خلاصولو لپاره په عکس کلیک وکړئ
د یوې قاعدې په توګه، په فعاله موډلونو کې د پروسو تشریح کول او توضیح کول اسانه دي. مګر لکه څنګه چې د عناصرو شمیر وده کوي، د دوی په اړه یو څه پوهیدل خورا ستونزمن کیږي. مګر په ریښتیني پرمختګ کې مرستندویه مرحلې هم شتون لري: نظارت ، د محصول تصدیق ، د کار پروسې اتومات کول او نور. دا دقیقا د اندازه کولو ستونزې له امله دی چې موږ دا توضیح پریښود.
د امید زیږون
په یو کتاب کې موږ د پخواني شوروي نقشې سره ولیدل چې تخنیکي پروسې تشریح کوي (کوم چې نن ورځ په ډیری دولتي شرکتونو او پوهنتونونو کې کارول کیږي). انتظار وکړئ، انتظار وکړئ، موږ هم تخنیکي پروسه لرو!.. دلته مرحلې، پایلې، میټریکونه، اړتیاوې، شاخصونه، او نور شتون لري.... ولې زموږ د محصول لیږدونکو ته د تخنیکي نقشو پلي کولو هڅه نه کوئ؟ یو احساس شتون درلود: "دا دی! موږ سم تار موندلی دی، دا د دې وخت دی چې دا ښه ټګ ورکړئ!"
په یو ساده جدول کې، موږ پریکړه وکړه چې محصولات د کالمونو، او تخنیکي مرحلو او د محصول لیږدونکي مرحلې د قطارونو په واسطه ثبت کړو. مرحلې یو څه لوی دي، لکه د محصول د راټولولو مرحله. او مرحلې یو څه کوچني او ډیر مفصل دي ، د مثال په توګه ، د جوړونکي سرور ته د سرچینې کوډ ډاونلوډ کولو مرحله یا د کوډ تالیف کولو مرحله.
هیڅ معلومات نشته - یا غیر عملي. دا اړینه ده چې په محصول کې د مرحلې غوښتنې تحلیل کړئ. یا دا تحلیل لا دمخه ترسره شوی، مګر دا مرحله اوس مهال اړتیا نلري یا په اقتصادي توګه توجیه نلري.
ځنډول شوی - یا دا مهال اړونده نه وي. په پایپ لاین کې دې پړاو ته اړتیا ده، خو سږکال یې د پلي کولو لپاره انرژي نشته.
Это этапы сборки продуктов [Build], их деплоя на тестовые серверы [Deploy], тестирования [Test], продвижения сборок в релизные репозитории по итогам тестирования [Promote], генерации и публикации лицензий [License], публикации [Publish] на сервере обновлений GUS и доставки до серверов обновлений FLUS, инсталляции и обновления компонентов продуктов на инфраструктуре заказчика средствами Product Configuration Management [Install], а также сбор телеметрии [Telemetry] с установленных продуктов.
Кроме них можно выделить отдельные этапы: мониторинга состояния инфраструктуры [InfMonitoring], управления версиями исходного кода [SourceCodeControl], подготовки сборочного окружения [Prepare], управления проектами [Workflow], обеспечения команд средствами коммуникации [Communication], сертификации продуктов [Certification] и обеспечения самодостаточности CI-процессов [CISelfSufficiency] (например, независимости сборок от интернета). Десятки шагов в наших процессах даже не будем рассматривать, потому что они очень специфичные.
دا به خورا اسانه وي چې پوه شئ او د تولید ټول پروسې ته وګورئ که تاسو دا په شکل کې تصور کړئ تخنیکي نقشه; دا یو جدول دی په کوم کې چې د انفرادي تولید مرحلې او د ماډل تخریب شوي مرحلې په قطارونو کې ثبت شوي ، او په کالمونو کې د هغه څه توضیحات دي چې په هر مرحله یا مرحله کې ترسره کیږي. اصلي ټینګار په هغه سرچینو باندې دی چې هره مرحله چمتو کوي او د مسؤلیت ساحې محدودوي.
Карта для нас — это своеобразный классификатор. Она отражает крупные технологические части производства продуктов. Благодаря ей нашей команде автоматизаторов стало легче взаимодействовать с разработчиками и совместно планировать внедрение этапов автоматизации, а также понимать, какие трудозатраты и ресурсы (человеческие и «железные») для этого потребуются.
زموږ د شرکت دننه، نقشه په اوتومات ډول د جنجا ټیمپلیټ څخه د منظم HTML فایل په توګه رامینځته کیږي ، او بیا د GitLab مخونو سرور ته اپلوډ کیږي. د بشپړ تولید شوي نقشې مثال سره یو سکرین شاټ لیدل کیدی شي مخونه.
د معلوماتو سرچینې او خدمات چې په هره مرحله کې کارول کیږي په ګوته شوي؛
د هرې مرحلې او انفرادي ګام پایلې ښودل شوي؛
указана зона ответственности по каждому этапу и шагу;
определены технические ресурсы, например HDD (SSD), RAM, vCPU, и человеко-часы, необходимые для поддержки работ на данном этапе, как на текущий момент — факт, так и в будущем — план;
د هر محصول لپاره دا په ګوته کیږي چې کوم تخنیکي مرحلې یا مرحلې د دې لپاره پلي شوي ، د پلي کولو لپاره پلان شوي ، غیر اړونده دي یا ندي پلي شوي.
د تخنیکي نقشې پر بنسټ پریکړې کول
Изучив карту, возможно предпринять некоторые действия — в зависимости от роли сотрудника в компании (руководитель разработки, менеджер продукта, разработчик или тестировщик):
پوه شئ چې کوم پړاوونه په ریښتیني محصول یا پروژه کې ورک دي او د دوی پلي کولو اړتیا ارزوي؛
د څو څانګو ترمنځ د مسؤلیت ساحې محدود کړئ که چیرې دوی په بیلابیلو مرحلو کې کار کوي؛
Технологическая карта универсальна, расширяема и легко поддерживается. Разрабатывать и сопровождать описание процессов в таком виде гораздо легче, чем в строгой академичной IDEF0-модели. Кроме того, табличное описание проще, привычней и лучше структурировано, чем функциональная модель.
Статья получилась довольно длинной, но это неизбежно при описании моделирования сложных процессов. В конце хочется коротко зафиксировать наши основные идеи:
زموږ په شرکت کې د DevOps نظریاتو معرفي کولو هدف دا دی چې په دوامداره توګه د شرکت محصولاتو تولید او ساتنې لګښت په مقداري شرایطو کې کم کړي (د انسان ساعتونه یا ماشین ساعتونه ، vCPU ، RAM ، ډیسک).
Технологическая карта — это табличное представление этапов и шагов производственного процесса. Самое главное: карта позволяет увидеть весь процесс целиком, крупными кусками с возможностью их детализации.
На основе технологической карты можно оценить необходимость внедрения этапов в том или ином продукте, разграничить зоны ответственности, договориться о контрактах на входах и выходах этапов, более точно оценить потребность в ресурсах.