محمد مهیار احمدی

محمد مهیار احمدی (Mohammad Mahyar Ahmadi)،‏ متخصص Atlassian و زیرساخت در مسیر SysAdmin و AI Engineering

مهیار یعنی یارِ ماه.

Mohammad Mahyar Ahmadi

Atlassian Administrator در اسنپ‌مارکت

Jira با حدود ۷ میلیون تیکت و روزانه بیش از ۱۰ هزار تیکت جدید. بیش از پنج سال در IT،‏ و قدم بعدی: SysAdmin و AI Engineering.

تماس برای همکاریرزومه (PDF)

یار

دستیار هوش مصنوعی مهیار. هر سؤالی درباره‌ی کار و سابقه‌اش داری بپرس.

درباره‌ی من

از اسفند ۱۳۹۹ کارم رو با سخت‌افزار و پشتیبانی شروع کردم، بعد رفتم سراغ شبکه و زیرساخت. توی ابرآروان اول IT Administrator بودم و از مرداد ۱۴۰۳ Jira Administrator،‏ و الان Atlassian Administrator اسنپ‌مارکتم: Jira،‏ Confluence و Jira Service Management،‏ Workflow،‏ دسترسی‌ها و اسکریپت‌هایی که کارهای تکراری رو از دوش تیم برمی‌دارن. Jira‌ای که روش کار می‌کنم حدود ۷ میلیون تیکت داره و روزانه بیش از ۱۰ هزار تیکت جدید توش ساخته می‌شه. مسیر بعدیم روشنه: SysAdmin و AI Engineering،‏ با Linux،‏ Python،‏ n8n و مدل‌های زبانی.

یه اصل رو همیشه نگه داشتم: AI سرعت دیباگ رو بالا می‌بره، ولی هیچ نتیجه‌ای رو بدون تست روی محیط خودم و چک کردن با داکیومنت رسمی منتشر نمی‌کنم.

سابقه
بیش از پنج سال در IT (از اسفند ۱۳۹۹)
الان
Atlassian Administrator،‏ اسنپ‌مارکت
مقیاس
حدود ۷ میلیون تیکت در Jira،‏ با بیش از ۱۰ هزار تیکت جدید در روز
تحصیلات
کارشناسی مهندسی کامپیوتر (نرم‌افزار)،‏ دانشگاه آزاد تهران مرکزی
دوره‌ها
Network+‎،‏ MCSA و CCNA
زبان
انگلیسی و آلمانی، سطح متوسط
نظام وظیفه
معاف
شهر
تهران

دارم شکل می‌گیرم

مسیرم رو مثل یه rule اتوماسیون بخون. ماه می‌شه هسته‌ی این ماشین و هر مرحله یه تیکه ازش رو می‌سازه.

  1. When

    کارشناس شبکه و سخت‌افزاراسفند ۱۳۹۹ تا بهمن ۱۴۰۰

    کسرا (کیمیاگران سرزمین رایانه)

    اولین قطعه‌ها روی برد سبز می‌شن: رم، کیبورد و کیس.

    • عیب‌یابی و پشتیبانی سخت‌افزار و نرم‌افزار روی Windows،‏ Linux و Mac
    • نگهداری سرویس‌ها و سیستم‌های VoIP
    • ریشه‌یابی مشکلات زیرساختی و راه‌اندازی ماشین‌های اداری
    • طراحی و اجرای شبکه‌ی پسیو یک واحد اداری ۲۰۰ متری (شهریور ۱۴۰۰)
  2. If

    Network Engineerاسفند ۱۴۰۰ تا مرداد ۱۴۰۲

    ارزش‌پرداز آریان (مشاور سرمایه‌گذاری ساتراپ پاسارگاد)

    مسیرهای مدار روشن می‌شن و پکت‌ها راه می‌افتن.

    • پیکربندی سوییچ برای تقسیم‌بندی ترافیک و امنیت: VLAN،‏ Access Port و Port Security
    • طراحی، کانفیگ و رفع مشکل روتر، سوییچ و فایروال؛ پشتیبانی شبکه و اینترنت
    • اسمبل سیستم، مشاوره و خرید تجهیزات شبکه و سرور
  3. If

    IT Administratorشهریور ۱۴۰۲ تا مرداد ۱۴۰۳

    ابرآروان (مسئول Service Desk)

    رک سرورها بالا میاد و LED‌ها یکی‌یکی روشن می‌شن.

    • مدیریت سرویس‌های سازمانی: Vault،‏ Mattermost،‏ میل‌سرور، Issabel،‏ Google Workspace،‏ Jira و Confluence
    • Onboarding و Offboarding همکارها: دسترسی‌ها، تجهیزات، VPN و ایمیل سازمانی
    • خرید و ارزیابی تجهیزات، YubiKey،‏ سیم‌کارت‌های سازمانی و دوربین‌های مداربسته
    • مستندسازی فرایندها و پشتیبانی فنی چند دوره از مسابقات WorldSkills
  4. If

    Jira Administratorمرداد ۱۴۰۳ تا دی ۱۴۰۴

    ابرآروان

    مانیتور بوت می‌شه و Board باز می‌شه.

    • مالکیت Jira و Confluence:‏ Workflow‌های پیشرفته با Validator و Post Function،‏ Custom Field،‏ Screen و Issue Type
    • Role،‏ Permission Scheme و Notification Scheme
    • Asset Management،‏ پرتال درخواست‌ها و Board‌ها، با اتوماسیون و تنظیم دسترسی
    • اتوماسیون Offboarding،‏ اطلاع‌رسانی وضعیت تسک‌ها در تلگرام و ایمیل، و اسکریپت‌نویسی با Groovy و Python
    • یکدست‌سازی ساختار Jira بین تیم‌ها و آموزش کاربرها
  5. If

    Atlassian Administratorبهمن ۱۴۰۴ تا امروز

    اسنپ‌مارکت (تنها ادمین Atlassian)

    Jira با حدود ۷ میلیون تیکت و روزانه بیش از ۱۰ هزار تیکت جدید.

    • مدیریت Jira و Confluence در Production:‏ Workflow،‏ Custom Field،‏ Permission و Space؛‏ کاربرها و اتصال به LDAP/AD
    • اتوماسیون با Jira Automation،‏ ScriptRunner (Groovy) و REST API؛‏ n8n برای نوتیفیکیشن تلگرام و ساخت خودکار تیکت
    • اسکریپت Groovy که حدود ۱۲ هزار Issue رو با همه‌ی جزئیات برای گزارش‌گیری به Kafka فرستاد
    • Jira Service Management (Queue،‏ Request Type،‏ Approval،‏ SLA،‏ Routing) و مانیتورینگ با Zabbix و Grafana
    • کنار کار اصلی: پیاده‌سازی و کانفیگ Jira برای ازکی
  6. Then

    SysAdmin & AI Engineerمسیر بعدی

    تراشه‌ی AI کنار هسته‌ی ماه روشن می‌شه و «یار» روی صفحه بیدار می‌شه.

    • لینوکس و DevOps:‏ Docker،‏ Kafka،‏ PostgreSQL و Keycloak؛‏ همون چیزیه که الان دارم عمیق‌ترش می‌کنم
    • n8n و API‌های مدل‌های زبانی (Claude و OpenAI) برای اتوماسیون
    • همین سایت و «یار»: Cloudflare Worker و OpenAI

مهارت

Atlassian

  • Jira Cloud،‏ Server و Data Center
  • Confluence
  • Jira Service Management
  • Jira Assets
  • Workflow و Permission Design
  • JQL

اتوماسیون و اسکریپت

  • Jira Automation
  • ScriptRunner و Groovy
  • Python
  • n8n
  • REST API

لینوکس و زیرساخت

  • Linux
  • Docker
  • مجازی‌سازی و ESXi
  • PostgreSQL
  • Kafka
  • GitLab
  • Keycloak و SSO

شبکه

  • سوییچینگ و Port Security
  • روتر و فایروال
  • شبکه‌ی پسیو
  • VPN
  • VoIP و Issabel

سرویس‌های سازمانی

  • Vault
  • Google Workspace
  • Mattermost
  • میل‌سرور
  • YubiKey
  • دوربین مداربسته

مانیتورینگ

  • Zabbix
  • Grafana

هوش مصنوعی

  • API مدل‌های زبانی (Claude و OpenAI)
  • دیباگ با AI،‏ همراه تست واقعی
  • همین سایت و «یار» روی Cloudflare Workers

مسئله‌هایی که حل شد

یه پروژه، دو Workflow Scheme

Jira Data Center،‏ ScriptRunner
مسئله
پروژه‌ای که با REST API ساخته شده بود جواب ۲۰۱ گرفت، ولی بعداً ذخیره‌ی Workflow با خطای ۵۰۰ تموم می‌شد.
کاری که کردم
ریشه رو تا جدول NodeAssociation دنبال کردم: پروژه دو Workflow Scheme فعال داشت. با ScriptRunner اصلاحش کردم.
نتیجه
یه اسکریپت فقط‌خواندنی که همه‌ی پروژه‌های مشکل‌دار رو پیدا می‌کنه، و نوشتن کیس برای بقیه‌ی ادمین‌ها.
POST /rest/api/2/project      → 201 Created
save workflow                 → 500
root cause                    → NodeAssociation
correct field name            → "workflowSchemeId"

۱۲ هزار Issue،‏ با همه‌ی جزئیات، توی Kafka

Groovy،‏ ScriptRunner،‏ Kafka
مسئله
برای گزارش‌گیری و تحلیل، داده‌ی Issue‌های Jira اسنپ‌مارکت باید بیرون از Jira و با جزئیات کامل در دسترس می‌بود.
کاری که کردم
با Groovy روی ScriptRunner اسکریپتی نوشتم که هر Issue رو همراه با فیلدها و Custom Field‌ها، کامنت‌ها، تاریخچه‌ی تغییرات و Worklog/پیوست‌ها به Kafka می‌فرسته.
نتیجه
حدود ۱۲ هزار Issue با همه‌ی این جزئیات برای گزارش‌گیری و تحلیل به Kafka رسید.
source        Jira · SnappMarket
script        Groovy on ScriptRunner
payload       fields + custom fields
              comments · changelog
              worklog / attachments
sent          ~12,000 issues → Kafka
purpose       reporting & analysis

Offboarding بدون دسترسی جامونده

Jira Automation
مسئله
موقع خروج همکارها بعضی دسترسی‌ها سهواً فراموش می‌شد.
کاری که کردم
یه اتوماسیون توی Jira نوشتم که با ثبت Offboarding،‏ تیم مسئول هر سرویس رو خودکار خبر می‌کنه.
هدف
هیچ دسترسی‌ای بعد از رفتن همکار باز نمونه.
When   employee offboarding created
If     access still active in a service
Then   notify the owning team
       so all access gets revoked
۶ کار دیگه
محیط تست Jira با DockerDocker،‏ JIRA_HOME

هیچ تغییری نباید مستقیم روی Production بره. برای همین یه محیط تست Jira با Docker راه انداختم و نکته‌ی مهمش، یعنی JIRA_HOME،‏ رو مستند کردم.

وضعیت تسک‌ها توی تلگرام و ایمیلJira،‏ Telegram

به‌جای اینکه کاربرها مدام Jira رو چک کنن، تغییر وضعیت تسک‌ها مستقیم از طریق تلگرام و ایمیل بهشون اطلاع داده می‌شه.

Asset Management در JiraJira Assets

ساخت آبجکت‌های Asset Management بر اساس نیاز تیم‌ها، همراه با اتوماسیون و تنظیم دسترسی‌ها، تا اطلاعات تجهیزات و سرویس‌ها یه جای مشخص داشته باشه.

صف، SLA و Routing در JSMJira Service Management

پشتیبانی Jira Service Management در اسنپ‌مارکت: Queue،‏ Request Type،‏ Approval،‏ SLA و Routing تیکت‌ها.

مانیتورینگ با Zabbix و GrafanaMonitoring

داشبوردها و Alert‌های Zabbix و Grafana برای اینکه مشکل قبل از رسیدن به کاربر دیده بشه.

پسیو، دوربین و سرورزیرساخت

طراحی و اجرای شبکه‌ی پسیو یه واحد اداری ۲۰۰ متری، نظارت تصویری اتاق سرور و ورودی یه مجموعه‌ی اداری، و خرید، نصب و کانفیگ سرورهای HP نسل G9 و G10.

جاهایی که نوشتم

jirasupport.ir سایت فارسی آموزش و مشاوره‌ی Jira و Confluence که خودم ساختم و می‌نویسم: ۲۱ مقاله درباره‌ی Workflow،‏ Automation،‏ JQL،‏ نصب، Data Center و Jira Service Management. دیدن سایت
عنوانمحل انتشارموضوع
پیدا کردن و حذف امن Issue Type Scheme‌های تکراریAtlassian CommunityJira Data Center
Release گم‌شده: آرشیو شده یا حذف شده؟Atlassian CommunityREST API
دو Workflow Scheme روی یک پروژه و ریشه‌اش در NodeAssociationLinkedInScriptRunner
راه‌اندازی محیط تست Jira با Docker و اهمیت JIRA_HOMEویرگولDocker

یار چطور ساخته شده

یه سؤال واقعی رو دنبال کن، از لحظه‌ای که می‌نویسیش تا وقتی یار جواب می‌ده.

  1. مرورگر تو

    سؤال رو می‌نویسی. فقط متن سؤال و چند پیام آخر همین گفتگو فرستاده می‌شه: نه کوکی، نه اطلاعات حساب، نه کلید.

    POST /api/chat
    { "messages": [
      { "role": "user",
        "content": "What has he built with ScriptRunner?" }
    ] }
  2. Cloudflare Worker

    سؤال به نزدیک‌ترین سرور Cloudflare می‌رسه. Worker پیام‌ها رو تمیز می‌کنه: حداکثر ده پیام و هر کدوم هزار کاراکتر. کلید API فقط همین‌جا به‌شکل Secret نگه داشته می‌شه و هیچ‌وقت به مرورگر نمی‌رسه.

    cleanMessages(body.messages)
      → last 10 turns · 1000 chars each
    headers: {
      "x-api-key": env.ANTHROPIC_API_KEY  // secret
    }
  3. OpenAI و پروفایل من

    Worker سؤال رو همراه قانون‌های یار و پروفایل من به مدل OpenAI می‌ده. پروفایل cache می‌شه تا جواب سریع‌تر و ارزون‌تر باشه. قانون اول: فقط از روی همین پروفایل جواب بده.

    model: "claude-sonnet-5-5"
    system: [
      rules + knowledge.txt,
      cache_control: { type: "ephemeral" }
    ]
  4. جواب، یا «نمی‌دونم»

    جواب کلمه‌به‌کلمه برات تایپ می‌شه. اگه چیزی توی پروفایل نباشه، یار از خودش نمی‌سازه: صادقانه می‌گه نمی‌دونه و می‌فرستت سراغ خودم.

    حقوق مدنظرش چقدره؟

    یاراین رو توی اطلاعاتم ندارم و از خودم عدد نمی‌سازم. بهتره مستقیم از خود مهیار بپرسی؛ راه‌های تماس پایین صفحه‌ست.

یه سؤال سخت از یار بپرس

تماس