برنامه نویسی

🔀 گردش کار Git کارآمد برای برنامه های وب: پیشرفت تدریجی از ابتدا تا پیشرفت

Summarize this content to 400 words in Persian Lang

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

توسعه دهندگان، حتی افراد با تجربه، اغلب با Gitflow معروف مبارزه کرده اند:

با این حال، حقیقت این است که ما از روز اول به این پیچیدگی نیاز نداریم. بسیاری از توسعه دهندگان حتی استدلال می کنند که این سطح از پیچیدگی هرگز در هیچ موردی ضروری نیست، بلکه نشانه ای از یک مشکل سازمانی است.

بیایید متفاوت با آن برخورد کنیم: از نیازهای تیمی تا گردش کار.

همانطور که تیم را جمع آوری می کنیم و برای نوشتن اولین خطوط کد آماده می شویم، اعضای تیم توسعه چند الزام دارند:

یک پایه کد مشترک را به اشتراک بگذارید
در کار در حال پیشرفت همکاری کنید
انجام تست

اکثر برنامه های کاربردی وب از یک ماژول frontend و یک ماژول باطن تشکیل شده اند. سوال استفاده از مولتی ریپو یا مونو ریپو مطرح می شود.

این مقاله درباره موضوع بحث‌برانگیز توضیح نمی‌دهد، اما برای شروع یک پروژه برنامه کاربردی وب، ما یک مخزن مونو به دلایل زیر انتخاب می‌کنیم:

بدون نیاز به نسخه داخلی
وابستگی های ماژول مشترک محلی
یک ویژگی، یک شاخه ویژگی
ادغام مداوم آسان

در این مرحله از پروژه، به شعبه های زیر بیشتر نیاز نداریم:

شاخه های ویژگی کوتاه مدت که در آنها ادغام می شوند main در صورت آماده شدن، هر چند وقت یکبار
الف main شعبه برای کد ادغام شده

در هفته های اولیه آزمایش و نمایش، رایانه های محلی کافی است. این به مهندس پلتفرم زمان می دهد تا محیط های واقعی را آماده کند.

برای بررسی کد، هر پلتفرم Git، مانند GitLab یا GitHub، کافی است.

گردش کار

پس از چند هفته، کد و ویژگی ها شروع به جمع شدن می کنند. ردیابی اشکالات و انجام آزمایش مناسب ضروری است. اگر ابزار اجازه می دهد، این آزمایش ها باید قبل از ادغام انجام شود. تظاهرات باید در یک محیط مشترک به جای رایانه های محلی برگزار شود.

برای دستیابی به این هدف، ما یک محیط یکپارچه ایجاد می کنیم که منعکس کننده آن است main شاخه

اگر فناوری‌های مناسب CI/CD را داشته باشیم، می‌توانیم محیطی را برای هر شاخه ایجاد کنیم که کارایی تیم را بسیار افزایش می‌دهد. Kubernetes و GitLab می توانند به ما در رسیدن به این هدف با حداقل تلاش کمک کنند.

گردش کار Git ما در این مرحله به شکل زیر است:

شاخه های ویژگی کوتاه مدت و محیط های مربوط به آنها در ادغام می شوند main

main شعبه و محیط برای همکاری تیم توسعه و نمایش مشتری استفاده می شود

مخزن زیرساخت جداگانه؟

این موضوع بحث برانگیز و کمی خارج از موضوع است، اما این هنوز یک موضوع مرتبط با انتخاب کارایی در خطر است.

بسیاری از تیم ها مخازن برنامه و زیرساخت را جدا می کنند. با این حال معتقدم دلیل اصلی این جدایی حاکمیت و سیاست است نه کارآمدی.

ما انتخاب می کنیم که اسکریپت های زیرساختی در همان مخزن کد وجود داشته باشد. اگرچه چرخه های عمر متفاوت است، جداسازی آنها می تواند منجر به خطوط لوله پیچیده شود اگر همه چیز خودکار باشد، درست است؟

اما آیا واقعاً برای زیرساخت به اتوماسیون کامل نیاز داریم؟ در حالی که زیرساخت به عنوان کد مطلوب است، اتوماسیون استقرار ممکن است ضروری نباشد. ما دوست داریم از این قانون پیروی کنیم: “قبل از اینکه خسته کننده باشد، خودکار نکنید.” از آنجایی که محصول ما تازه شروع شده است، هیچ چیز در مورد زیرساخت خسته کننده نیست. لازم نیست هر هفته خوشه Kubernetes خود را مجدداً معرفی کنیم.

به این دلایل، ما زیرساخت را کدنویسی و نسخه می کنیم، اما استقرار آن را خودکار نمی کنیم.

دیر یا زود، ذینفعان برنامه را آزمایش خواهند کرد. استقرار مجدد مکرر main محیط منجر به خرابی ها و اشکالات گاه به گاه می شود که تجربه را خراب می کند.

زمان معرفی است demo محیط زیست این محیط منعکس کننده محتوای main محیط و قبل از هر نمایش برنامه ریزی شده به روز می شود. در این میان ثابت می ماند.

برای تطبیق جریان، به روز رسانی می تواند توسط یک تگ Git یا یک شاخه Git راه اندازی شود. در اینجا، ما انتخاب می کنیم که یک جدید ایجاد کنیم demo شاخه گیت.

گردش کار Git ما اکنون به شکل زیر است:

شاخه های ویژگی کوتاه مدت و محیط های مربوط به آنها در ادغام می شوند main و سپس حذف شد

main شاخه و محیط در ادغام می شوند demo قبل از تظاهرات

demo شاخه و محیط برای نمایش استفاده می شود

با نزدیک شدن به MVP (حداقل محصول قابل دوام)، یک محیط تولید از ابتدا ساخته شده است و به زودی عمومی خواهد شد. زمان آن رسیده است که برنامه خود را در زیرساخت تولید هدف مستقر کنیم.

برای تطبیق جریان، استقرار تولید می تواند توسط یک تگ Git یا یک شاخه Git راه اندازی شود. ما انتخاب می‌کنیم که از برچسب‌ها استفاده کنیم، زیرا در حال حاضر نیازی به رفع مشکل نداریم و راه‌اندازی کارهای استقرار را می‌توان به صورت دستی انجام داد.

ما آبشاری ادغام از main به demo به production. را demo و production محیط ها چرخه های زندگی را از هم جدا کرده اند.

گردش کار Git ما اکنون به شکل زیر است:

شاخه های ویژگی کوتاه مدت و محیط های مربوط به آنها در ادغام می شوند main و سپس حذف شد

main شاخه و محیط در ادغام می شوند demo قبل از تظاهرات

demo شاخه و محیط برای نمایش استفاده می شود
کارهای استقرار تولید دستی روی برچسب ها (ایجاد شده در main یا demoبسته به ترجیح تیم)

همانطور که از ابتدا امیدوار بودیم، اکنون مشتریان خوشحالی داریم.

ما می خواهیم اطمینان حاصل کنیم که تجربه آنها را خراب نمی کنیم. وقتی مشکلاتی در گردش کار آنها رخ می دهد، ما می خواهیم بتوانیم آنها را در یک محیط همزاد تولید کنیم، آنها را برطرف کنیم و در یک محیط پیش تولید نیز آزمایش کنیم. ما به این محیط می گوییم staging.

از آنجایی که staging مشتریان واقعی ندارد، ما می‌توانیم به‌طور خودکار با استفاده از همان برچسب‌هایی که استقرار تولید دستی را آغاز می‌کنند، مستقر کنیم.

گردش کار Git ما اکنون به شکل زیر است:

شاخه های ویژگی کوتاه مدت و محیط های مربوط به آنها در ادغام می شوند main و سپس حذف شد

main شاخه و محیط در ادغام می شوند demo قبل از تظاهرات

demo شاخه و محیط برای نمایش استفاده می شود
خودکار staging استقرار و دستی production استقرار توسط برچسب ها آغاز می شود

ما هنوز به تعمیرات داغ تولید به طور جداگانه رسیدگی نمی کنیم. کل محتوای main برای تولید روی برچسب ها مستقر شده است. محتوای ناتمام در ادغام نمی شود main یا توسط یک commit غیرفعال می شود.

اکنون برنامه ما تا حدودی موفق است و مشتریان زیادی روزانه از آن استفاده می کنند.

پول نقد جریان دارد و تیم توسعه در حال رشد است. پیدا کردن یک رضایت بخش به طور فزاینده ای دشوار می شود main یا demo ایالتی که برای تولید مستقر شود.

اکنون زمان اضافه کردن کلیدهای ویژگی (همچنین به عنوان پرچم های ویژگی یا چرخاندن ویژگی شناخته می شود) است. هر چیزی را می توان در تولید مستقر کرد تا زمانی که توسط یک سوئیچ محافظت شود تا آن را فعال کند یا نه.

گردش کار Git ما اکنون به شکل زیر است:

شاخه های ویژگی کوتاه مدت و محیط های مربوط به آنها در ادغام می شوند main و سپس حذف شد

main شاخه و محیط در ادغام می شوند demo قبل از تظاهرات

demo شاخه و محیط برای نمایش استفاده می شود
خودکار staging و production استقرار توسط برچسب های ایجاد شده در راه اندازی می شود mainو کلیدهای ویژگی بر اساس اطمینان فعال می شوند

ما سفر یک پروژه شروع را دنبال کردیم که به تدریج فقط پیچیدگی لازم را به جریان git اضافه کرد.

با پیروی از این گردش کار Git، ما معتقدیم که تیم‌های توسعه می‌توانند فرآیندهای خود را ساده‌سازی کنند، همکاری را بهبود بخشند و به طور مؤثر برنامه‌های کاربردی وب با کیفیت بالا را به مشتریان خود ارائه دهند.

بهترین تجربه شما از گردش کار Git چیست؟ لطفا در نظرات زیر به اشتراک بگذارید 🤓

تصاویر به صورت محلی توسط Pinokio با استفاده از پلاگین Stable Cascade ایجاد شده است

این مقاله با کمک یک مدل زبان هوش مصنوعی برای اطمینان از وضوح و دقت در محتوا بهبود یافته است، زیرا انگلیسی زبان مادری من نیست.

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

توسعه دهندگان، حتی افراد با تجربه، اغلب با Gitflow معروف مبارزه کرده اند:

https://mermaid.live/edit#pako:eNqdlEFPgzAUx79KU0N6YQubmiWcTbzMiyYeDJc3-oDG0pKumBmy725HxY0xcFou7e-9__uXB21DU82RxjQIGqGEjUlpZlDmGNTw5jUlQSmF CEbCRuHXRJlHEDZYLGx2Sb1arFQuPcNFCzqNTuGxh1s-8bWEE2Sm8-4Y9-b2XRxnzzI394Q mCRLnwo4GqIOvn2EdTXZbC-vnGgEoLUMGJW4W4w1s cHO5TQjLTB917U9q9HRPytLNDkOZF1qCUKdoX4DLhocVb76mWRiH1cUH_TaK0dbOhD -fAwvHNQb6fC_9_KL_3TycVfXNHr8XQbmVl40Pl00T gLm9BE7V0i1Fa_fKqUxtbUGNK64mDxQUBuoOxgBepNa7fMQG7dGrmw2jz5i6e9f_ZfNd5xRA

با این حال، حقیقت این است که ما از روز اول به این پیچیدگی نیاز نداریم. بسیاری از توسعه دهندگان حتی استدلال می کنند که این سطح از پیچیدگی هرگز در هیچ موردی ضروری نیست، بلکه نشانه ای از یک مشکل سازمانی است.

بیایید متفاوت با آن برخورد کنیم: از نیازهای تیمی تا گردش کار.

همانطور که تیم را جمع آوری می کنیم و برای نوشتن اولین خطوط کد آماده می شویم، اعضای تیم توسعه چند الزام دارند:

  • یک پایه کد مشترک را به اشتراک بگذارید
  • در کار در حال پیشرفت همکاری کنید
  • انجام تست

اکثر برنامه های کاربردی وب از یک ماژول frontend و یک ماژول باطن تشکیل شده اند. سوال استفاده از مولتی ریپو یا مونو ریپو مطرح می شود.

این مقاله درباره موضوع بحث‌برانگیز توضیح نمی‌دهد، اما برای شروع یک پروژه برنامه کاربردی وب، ما یک مخزن مونو به دلایل زیر انتخاب می‌کنیم:

  • بدون نیاز به نسخه داخلی
  • وابستگی های ماژول مشترک محلی
  • یک ویژگی، یک شاخه ویژگی
  • ادغام مداوم آسان

در این مرحله از پروژه، به شعبه های زیر بیشتر نیاز نداریم:

  • شاخه های ویژگی کوتاه مدت که در آنها ادغام می شوند main در صورت آماده شدن، هر چند وقت یکبار
  • الف main شعبه برای کد ادغام شده

https://mermaid.live/edit#pako:eNqNkk1rxCAQhv-KWIKXFNIvAp4LvWwvLfRQvEx0TKSJBldLl5D_XldbdpcemvEy88w7r4eZhUqnkHJaVYuxJnefCFUQNHJaVYuxJnefCywYw4La Vv4A10I-5TdxGWpGC9Cc1RfNW2LatP8CZDpZpzeJuhvlTeZdiAPof3P_Bi_KGMN5oVlmI9vqoSNrWfPMwD2b3w0pVumkwoeefByoFohBAg9Xn_9VL 61ZfWNJmmTKVN5hUImlcjKE_paPohCCrsmoQQg3s9WEl58BFrGmcFAR8N9B4myjWM-0RnsO_OnWpUJjj_XG4ln8z6DXPhr28

در هفته های اولیه آزمایش و نمایش، رایانه های محلی کافی است. این به مهندس پلتفرم زمان می دهد تا محیط های واقعی را آماده کند.

برای بررسی کد، هر پلتفرم Git، مانند GitLab یا GitHub، کافی است.

گردش کار

پس از چند هفته، کد و ویژگی ها شروع به جمع شدن می کنند. ردیابی اشکالات و انجام آزمایش مناسب ضروری است. اگر ابزار اجازه می دهد، این آزمایش ها باید قبل از ادغام انجام شود. تظاهرات باید در یک محیط مشترک به جای رایانه های محلی برگزار شود.

برای دستیابی به این هدف، ما یک محیط یکپارچه ایجاد می کنیم که منعکس کننده آن است main شاخه

اگر فناوری‌های مناسب CI/CD را داشته باشیم، می‌توانیم محیطی را برای هر شاخه ایجاد کنیم که کارایی تیم را بسیار افزایش می‌دهد. Kubernetes و GitLab می توانند به ما در رسیدن به این هدف با حداقل تلاش کمک کنند.

گردش کار Git ما در این مرحله به شکل زیر است:

  • شاخه های ویژگی کوتاه مدت و محیط های مربوط به آنها در ادغام می شوند main
  • main شعبه و محیط برای همکاری تیم توسعه و نمایش مشتری استفاده می شود

مخزن زیرساخت جداگانه؟

این موضوع بحث برانگیز و کمی خارج از موضوع است، اما این هنوز یک موضوع مرتبط با انتخاب کارایی در خطر است.

بسیاری از تیم ها مخازن برنامه و زیرساخت را جدا می کنند. با این حال معتقدم دلیل اصلی این جدایی حاکمیت و سیاست است نه کارآمدی.

ما انتخاب می کنیم که اسکریپت های زیرساختی در همان مخزن کد وجود داشته باشد. اگرچه چرخه های عمر متفاوت است، جداسازی آنها می تواند منجر به خطوط لوله پیچیده شود اگر همه چیز خودکار باشد، درست است؟

اما آیا واقعاً برای زیرساخت به اتوماسیون کامل نیاز داریم؟ در حالی که زیرساخت به عنوان کد مطلوب است، اتوماسیون استقرار ممکن است ضروری نباشد. ما دوست داریم از این قانون پیروی کنیم: “قبل از اینکه خسته کننده باشد، خودکار نکنید.” از آنجایی که محصول ما تازه شروع شده است، هیچ چیز در مورد زیرساخت خسته کننده نیست. لازم نیست هر هفته خوشه Kubernetes خود را مجدداً معرفی کنیم.

به این دلایل، ما زیرساخت را کدنویسی و نسخه می کنیم، اما استقرار آن را خودکار نمی کنیم.

روباه به عنوان یک لوله کش لوله های پیچیده نارنجی را تعمیر می کند، manga src

دیر یا زود، ذینفعان برنامه را آزمایش خواهند کرد. استقرار مجدد مکرر main محیط منجر به خرابی ها و اشکالات گاه به گاه می شود که تجربه را خراب می کند.

زمان معرفی است demo محیط زیست این محیط منعکس کننده محتوای main محیط و قبل از هر نمایش برنامه ریزی شده به روز می شود. در این میان ثابت می ماند.

برای تطبیق جریان، به روز رسانی می تواند توسط یک تگ Git یا یک شاخه Git راه اندازی شود. در اینجا، ما انتخاب می کنیم که یک جدید ایجاد کنیم demo شاخه گیت.

گردش کار Git ما اکنون به شکل زیر است:

  • شاخه های ویژگی کوتاه مدت و محیط های مربوط به آنها در ادغام می شوند main و سپس حذف شد
  • main شاخه و محیط در ادغام می شوند demo قبل از تظاهرات
  • demo شاخه و محیط برای نمایش استفاده می شود

https://mermaid.live/edit#pako:enqnkk1lxdaqhv9kijrcktqvcjmk4gx1oobbepk20zbyj2 vggvklz4t5eh0ktykyrlpvef3mes_qiryiuilvd6wjru-vnhbnua3j7a0_s7-b0rgyzczammfjouspkpregpregq7azmzmnmnmnmnmnmnlmlllllllllllwkllvkkvkkvkkvkkvkkvkkvkkvkkvkkkvkkvkkkvkkvkkvlshklv tk3dyVechbfcs6akbllvRvo3_n-u3vhuamtlqinginfh8_4lguygod24nm9yvtnbjeij35vgk8qd9zhs3wtw-cchsaor6hbb9qdqdfjmrbkmr26hgmr26hgegex26hgmr26hbfjmrbkmr26hbb9qdfjmr26hb9qdfjmr26hb9qdsaa

با نزدیک شدن به MVP (حداقل محصول قابل دوام)، یک محیط تولید از ابتدا ساخته شده است و به زودی عمومی خواهد شد. زمان آن رسیده است که برنامه خود را در زیرساخت تولید هدف مستقر کنیم.

برای تطبیق جریان، استقرار تولید می تواند توسط یک تگ Git یا یک شاخه Git راه اندازی شود. ما انتخاب می‌کنیم که از برچسب‌ها استفاده کنیم، زیرا در حال حاضر نیازی به رفع مشکل نداریم و راه‌اندازی کارهای استقرار را می‌توان به صورت دستی انجام داد.

ما آبشاری ادغام از main به demo به production. را demo و production محیط ها چرخه های زندگی را از هم جدا کرده اند.

گردش کار Git ما اکنون به شکل زیر است:

  • شاخه های ویژگی کوتاه مدت و محیط های مربوط به آنها در ادغام می شوند main و سپس حذف شد
  • main شاخه و محیط در ادغام می شوند demo قبل از تظاهرات
  • demo شاخه و محیط برای نمایش استفاده می شود
  • کارهای استقرار تولید دستی روی برچسب ها (ایجاد شده در main یا demoبسته به ترجیح تیم)

https://mermaid.live/edit#pako:eNqVkj9rwzAQxb-KUDFa3OL0DwGNpdAl7dBCh-LlYp1lUUsKilQajL97ZbluHLI4mqTfe3e6g9fRygqknGZZp4WZypZyNB000T2005BBVBVZVZYP5UT1000T15BB000T15000T bQekYm-AFOwbbFfVS70pB4mFS-GMxX6_Wa5Ue4SlCIYg5vE6xPnXcJFlDP4f0fPCl_GMuLmo0snj5PyrODXcNIWkqDMo8OTNW8wrSItoz0PemzHKITOilqNST E7FG8MHh9c-5o2qw-rLBL2twWNRAo5N49unkGzad-4a6416raa8LhvyXl45Jcxr_jjcRw5ZSUtKUnpIOU7RKNn6Yo49GCN6-H0xFuXcjwPcxPt csY55Tq_heLI-Jv

روباه به عنوان یک لوله کش لوله های پیچیده نارنجی را تعمیر می کند، manga src

همانطور که از ابتدا امیدوار بودیم، اکنون مشتریان خوشحالی داریم.

ما می خواهیم اطمینان حاصل کنیم که تجربه آنها را خراب نمی کنیم. وقتی مشکلاتی در گردش کار آنها رخ می دهد، ما می خواهیم بتوانیم آنها را در یک محیط همزاد تولید کنیم، آنها را برطرف کنیم و در یک محیط پیش تولید نیز آزمایش کنیم. ما به این محیط می گوییم staging.

از آنجایی که staging مشتریان واقعی ندارد، ما می‌توانیم به‌طور خودکار با استفاده از همان برچسب‌هایی که استقرار تولید دستی را آغاز می‌کنند، مستقر کنیم.

گردش کار Git ما اکنون به شکل زیر است:

  • شاخه های ویژگی کوتاه مدت و محیط های مربوط به آنها در ادغام می شوند main و سپس حذف شد
  • main شاخه و محیط در ادغام می شوند demo قبل از تظاهرات
  • demo شاخه و محیط برای نمایش استفاده می شود
  • خودکار staging استقرار و دستی production استقرار توسط برچسب ها آغاز می شود

ما هنوز به تعمیرات داغ تولید به طور جداگانه رسیدگی نمی کنیم. کل محتوای main برای تولید روی برچسب ها مستقر شده است. محتوای ناتمام در ادغام نمی شود main یا توسط یک commit غیرفعال می شود.

اکنون برنامه ما تا حدودی موفق است و مشتریان زیادی روزانه از آن استفاده می کنند.

پول نقد جریان دارد و تیم توسعه در حال رشد است. پیدا کردن یک رضایت بخش به طور فزاینده ای دشوار می شود main یا demo ایالتی که برای تولید مستقر شود.

اکنون زمان اضافه کردن کلیدهای ویژگی (همچنین به عنوان پرچم های ویژگی یا چرخاندن ویژگی شناخته می شود) است. هر چیزی را می توان در تولید مستقر کرد تا زمانی که توسط یک سوئیچ محافظت شود تا آن را فعال کند یا نه.

گردش کار Git ما اکنون به شکل زیر است:

  • شاخه های ویژگی کوتاه مدت و محیط های مربوط به آنها در ادغام می شوند main و سپس حذف شد
  • main شاخه و محیط در ادغام می شوند demo قبل از تظاهرات
  • demo شاخه و محیط برای نمایش استفاده می شود
  • خودکار staging و production استقرار توسط برچسب های ایجاد شده در راه اندازی می شود mainو کلیدهای ویژگی بر اساس اطمینان فعال می شوند

ما سفر یک پروژه شروع را دنبال کردیم که به تدریج فقط پیچیدگی لازم را به جریان git اضافه کرد.

با پیروی از این گردش کار Git، ما معتقدیم که تیم‌های توسعه می‌توانند فرآیندهای خود را ساده‌سازی کنند، همکاری را بهبود بخشند و به طور مؤثر برنامه‌های کاربردی وب با کیفیت بالا را به مشتریان خود ارائه دهند.

بهترین تجربه شما از گردش کار Git چیست؟ لطفا در نظرات زیر به اشتراک بگذارید 🤓

روباه به عنوان یک لوله کش لوله های پیچیده نارنجی را تعمیر می کند، manga src

تصاویر به صورت محلی توسط Pinokio با استفاده از پلاگین Stable Cascade ایجاد شده است

این مقاله با کمک یک مدل زبان هوش مصنوعی برای اطمینان از وضوح و دقت در محتوا بهبود یافته است، زیرا انگلیسی زبان مادری من نیست.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا