লেজার লাইভ মনোরেপো প্রকল্প: পার্ট 1 - সমস্যা (এটি ব্যথা করুন) | খাতা

লেজার লাইভ মনোরেপো প্রকল্প: পার্ট 1 – সমস্যা (এটি ব্যথা করুন) | খাতা

এই ব্লগ পোস্ট সিরিজে, Valentin De Almeida, একজন লেজার লাইভ ডেভেলপার, বছরের পর বছর ধরে লেজার লাইভ কোডবেস বিবর্তনের মাধ্যমে আমাদের সাথে কথা বলেছেন। এই ব্লগ পোস্টে, আপনি শিখবেন যে এটি প্রথমে মাল্টি-রিপোজিটরি ভিত্তিক ছিল, পথে আমরা যে সমস্যার সম্মুখীন হয়েছিলাম এবং কেন এটি একটি মনো-রিপোজিটরি আর্কিটেকচারে বিকশিত হওয়ার প্রয়োজন ছিল। পরবর্তী ব্লগ পোস্টগুলিতে, আমরা ব্যাখ্যা করব কীভাবে এই প্রধান মাইগ্রেশন প্রকল্পটি পরিচালিত হয়েছিল। 

খানিকটা ইতিহাস 

2020 এবং 2021 সালে লেজারের বৃদ্ধি উল্লেখযোগ্য ছিল। আমরা আক্রমনাত্মকভাবে নতুন প্রতিভা নিয়োগ করেছি, আমাদের দলকে মুষ্টিমেয় থেকে 20 টির বেশি বিকাশকারীতে প্রসারিত করেছি। এর মানে অনেক নতুন প্রকৌশলী বিদ্যমান প্রকল্পে অনবোর্ড ছিল। আমাদের দল দ্রুত বৃদ্ধি পাওয়ার সাথে সাথে আমরা নতুন চ্যালেঞ্জের সম্মুখীন হলাম যা আমাদের দ্রুত সমাধান করতে হবে। এই নতুন অসুবিধা সত্ত্বেও, আমরা আমাদের লক্ষ্যে মনোনিবেশ করেছি এবং ব্যতিক্রমী কাজ প্রদান অব্যাহত রেখেছি।

আমরা একধাপ পিছিয়ে নিয়েছি এবং নতুন সমস্যাগুলির দিকে নজর দিয়েছি যেগুলি যখন আরও বেশি সংখ্যক লোক প্রকল্পে যোগ দেয় তখন উদ্ভূত হয়। এই নতুন চ্যালেঞ্জগুলির মধ্যে, আমরা নিম্নলিখিত প্রয়োজনগুলি তালিকাভুক্ত করতে পারি:

  • সরল প্রবাহ।
  • আগত এবং বহিরাগত অবদানকারীদের জন্য আরও ভাল নির্দেশিকা।
  • টুলের একীভূত সেট।
  • উন্নত নির্ভরতা ব্যবস্থাপনা।
  • কেন্দ্রীভূত ওপেন সোর্স অবদান।
শিল্পের অবস্থা: মাইগ্রেশনের আগে
Ledger Live Monorepo Project: Part 1 - Problematics (Make it Pain) | Ledger PlatoBlockchain Data Intelligence. Vertical Search. Ai.
লেজার লাইভ মনোরেপো প্রকল্প: পার্ট 1 - সমস্যা (এটি ব্যথা করুন) | খাতা

প্রাথমিকভাবে, এবং গত বছর পর্যন্ত, লেজার লাইভ একটি পলি-রিপোজিটরি আর্কিটেকচারের উপর ভিত্তি করে ছিল, মোবাইল এবং ডেস্কটপ উভয় ফ্রন্ট-এন্ডের জন্য, সেইসাথে এর পিছনে সমস্ত যুক্তি। এই পদ্ধতিতে কাজ করার জন্য এটি একটি সচেতন সিদ্ধান্ত ছিল না, তবে এটি শুধুমাত্র একটি প্রসারিত প্রকল্পের ফলাফল ছিল যার কোন বাস্তব স্থাপত্য নেতৃত্ব নেই। লেজার লাইভ এমন একটি প্রকল্প যা আমাদের ন্যানো ব্যবহারকারীদের কাছে সেরা এবং সবচেয়ে নিরাপদ অ্যাপ সরবরাহ করতে বিভিন্ন উপাদানকে একত্রিত করে এবং এটি কোডবেসে প্রতিফলিত হয়েছে।

আমাদের জায়গায় যে প্রবাহ ছিল তা সর্বোত্তমভাবে অস্পষ্ট ছিল, বেশিরভাগই এই কারণে যে আমরা কয়েক বছর আগে 6 বা 7 জন বিকাশকারী ছিলাম। যেহেতু কম দল জড়িত ছিল, যোগাযোগটি সহজ ছিল এবং আমরা এটি থেকে দূরে সরে গিয়েছিলাম। তবুও, আমরা যেভাবে কাজ করছিলাম তাতে কিছু ব্যথার বিষয় ছিল, বিশেষ করে বিকাশকারীর অভিজ্ঞতা এবং মুক্তির প্রক্রিয়ার চারপাশে।

দেব অভিজ্ঞতার প্রতিবন্ধকতা

নির্ভরতা

আমাদের প্রকল্পগুলির প্রকৃতির কারণে, আমরা একই সময়ে একাধিক সংগ্রহস্থলে কাজ করি, তাদের মধ্যে নির্ভরতা সহ। এখানে একটি দ্রুত ওভারভিউ আছে:

Ledger Live Monorepo Project: Part 1 - Problematics (Make it Pain) | Ledger PlatoBlockchain Data Intelligence. Vertical Search. Ai.
লেজার লাইভ মনোরেপো প্রকল্প: পার্ট 1 - সমস্যা (এটি ব্যথা করুন) | খাতা

লেজার ওপেন সোর্স লাইব্রেরিগুলি ব্যবসায়িক যুক্তি দ্বারা ব্যবহৃত হয়, যা তারপরে ডেস্কটপ এবং মোবাইল অ্যাপ উভয়ই ব্যবহার করে। কিন্তু সেই অ্যাপগুলিও ওপেন সোর্স লাইব্রেরি ব্যবহার করে এবং একই লাইব্রেরির দুটি ভিন্ন সংস্করণ ব্যবহার করে (যেমন @ledgerhq/errors উদাহরণস্বরূপ) অ্যাপটি ভেঙে দেবে।

আমাদের একদিকে সংস্করণটি বাম্প করতে হবে, তারপরে লাইব্রেরিগুলি প্রকাশ করতে হবে (হ্যাঁ, এনপিএম!!!), তারপর আবার চেষ্টা করুন যদি এটি কাজ না করে। আমরা নির্ভর করতে শুরু করলাম yalc সিমলিংক প্রজেক্টগুলিতে, যা বেশিরভাগই ঠিক ছিল যতক্ষণ না আমাদের নির্ভরতার বিভিন্ন স্তর না থাকে (উদাহরণস্বরূপ, ওপেন সোর্স লাইব্রেরি থেকে ব্যবসায়িক লজিক এবং তারপরে ব্যবসায়িক যুক্তি থেকে অ্যাপস পর্যন্ত)। আমরা সাময়িকভাবে সাথে কাজ করার চেষ্টা করেছি yarn link পাশাপাশি, কিন্তু মনে হচ্ছে এটি নেটিভ রিঅ্যাক্টের সাথে ধ্বংস হয়ে গেছে।

পরীক্ষামূলক

বিভিন্ন প্রকল্পের সমস্ত সর্বশেষ কোড সহ ইন্টিগ্রেশন পরীক্ষা করা প্রায় অসম্ভব ছিল। যেহেতু আমাদের লাইব্রেরিগুলিকে রেজিস্ট্রিতে প্রকাশ করার দরকার ছিল, তাই সর্বশেষ আপ টু ডেট কোড সহ সমস্ত উপাদান পরীক্ষা করা একটি দুঃস্বপ্ন ছিল

আমাদের ডুপ্লিকেট লজিক সহ বেশ কয়েকটি সিআই বজায় রাখতে হয়েছিল।

প্রসঙ্গ স্যুইচিং

সর্বদা বেশ কয়েকটি কোড এডিটর/প্রকল্প/ডিরেক্টরীতে ঘোরাফেরা করার ফলে ডেভ অভিজ্ঞতা সত্যিই দুর্বল দেখায়।

রিলিজ প্রক্রিয়া বাধা

ভারশনিং

বিভিন্ন প্রকল্পের সংস্করণ পরিচালনা করা কঠিন, বিশেষ করে যখন নির্ভরতার বিভিন্ন স্তর থাকে।

মুক্তি

প্রকল্পগুলি বিভক্ত হওয়ার কারণে রিলিজ ট্র্যাকিং জটিল ছিল এবং আমাদের বিভিন্ন প্রকল্পের প্রকাশ পরিচালনা করতে হয়েছিল

রিলিজ প্রক্রিয়া স্বয়ংক্রিয় করা অসম্ভব ছিল, আবার এই কারণে যে প্রকল্পগুলি বিভিন্ন সংগ্রহস্থলে বিভক্ত ছিল।

এবং অবশ্যই, অবিচ্ছিন্ন ডেলিভারি এই সময়ে অচিন্তনীয় ছিল।

সম্ভাব্য সমাধান ?
Ledger Live Monorepo Project: Part 1 - Problematics (Make it Pain) | Ledger PlatoBlockchain Data Intelligence. Vertical Search. Ai.
লেজার লাইভ মনোরেপো প্রকল্প: পার্ট 1 - সমস্যা (এটি ব্যথা করুন) | খাতা

অনুপ্রেরণার জন্য চারপাশে খুঁজছেন, মনে হচ্ছে একটি মনো ভান্ডার আর্কিটেকচার হল কেন্দ্রীয় অংশ যা আমরা হারিয়েছিলাম। এটি একটি আরও ভাল উন্নয়ন প্রক্রিয়া সক্ষম করবে। এই আর্কিটেকচারের চারপাশে এমন সরঞ্জাম রয়েছে যা আমাদের অনুপস্থিত অংশগুলি অর্জন করতে সহায়তা করবে (রিলিজ, অটোমেশন, সংস্করণ…)।

কিন্তু, একটি মনো ভান্ডার কি?

এর মূল অংশে, একটি মনো সংগ্রহস্থল এমন একটি প্রকল্প যা একটি ফোল্ডার / গিট প্রকল্পের অধীনে অন্যান্য সমস্ত সম্পর্কিত প্রকল্প (অ্যাপ্লিকেশন, লাইব্রেরি, সরঞ্জাম) অন্তর্ভুক্ত করে। এটি আরও ভাল নির্ভরতা ব্যবস্থাপনা, সরঞ্জামগুলির ইউনিফর্মাইজেশন (যেমন কোড শৈলী এবং টাইপস্ক্রিপ্ট কনফিগারেশন), কেন্দ্রীভূত ক্রমাগত ইন্টিগ্রেশন, ইন্টিগ্রেশন টেস্টিং, ব্যবহৃত প্যাকেজগুলির অভিন্ন সংস্করণ (উদাহরণস্বরূপ প্রতিক্রিয়া)...

যেহেতু এটি একটি চমত্কার অজ্ঞেয়বাদী সিস্টেম, তাই আমাদের আবিষ্কার এবং প্রয়োগ করার জন্য কিছু বৈশিষ্ট্য বাকি ছিল। আশা করি, কিছু দুর্দান্ত কমিউনিটি টুল রয়েছে যা আমাদের বিল্ডগুলিতে অর্কেস্ট্রেশন যোগ করতে সাহায্য করতে পারে (সিকুয়েন্সিয়াল বিল্ড, CI-এর জন্য সহায়ক), সংস্করণ, চেঞ্জলগ জেনারেশন.. যা আমাদের রিলিজ প্রক্রিয়ায় আমরা যা হারিয়েছিলাম তা সম্পূর্ণ করবে।

মন্দ দিক

মনো সংগ্রহস্থলগুলি এমন একটি প্রেক্ষাপটে বোঝা যায় যেখানে বেশ কয়েকটি বিকাশকারী, বা বিকাশকারীদের একটি দল একই সময়ে বেশ কয়েকটি প্রকল্পে কাজ করে, তাদের মধ্যে নির্ভরতা সহ। যাইহোক, এটি সেটআপ পর্বের সময় জটিলতার কিছু স্তর যুক্ত করে (বিশেষ করে ইতিমধ্যেই আপ এবং চলমান প্রকল্পগুলির সাথে যার 4 বছরের ইতিহাস এবং সক্রিয় বিকাশ রয়েছে)। উল্লেখ করার মতো, প্রকল্পটি ডিস্কের স্থানের ক্ষেত্রে অনেক বড় (যেমন আরও বড়) হয়ে যায়। সমস্ত প্রকল্প এখন একই ফোল্ডার এবং সমস্ত নির্ভরতার অধীনে রয়েছে। কোন পরীক্ষা বাধ্যতামূলক? তাদের ট্রিগার কখন?

ভালো দিক

সময়, খরচ, এবং আমাদের উচ্চাকাঙ্ক্ষার সম্ভাব্যতা মূল্যায়ন করার পরে, এখানে এই পরিবর্তনের কিছু প্রত্যাশিত সুবিধা ছিল:

  • উন্নত নির্ভরতা ব্যবস্থাপনা: একটি মনোরেপোর সাথে, বিভিন্ন প্রকল্পের মধ্যে নির্ভরতা পরিচালনা করা সহজ, কারণ সেগুলি একই সংগ্রহস্থলে সংরক্ষণ করা হয়। এটি সুতা লিঙ্ক বা মত workarounds জন্য প্রয়োজন কমাতে পারে yalc, এবং সমস্ত প্রকল্প নির্ভরতার সঠিক সংস্করণ ব্যবহার করছে তা নিশ্চিত করা সহজ করে তোলে।
  • আরও ভাল কোড সংস্থা: একটি মনোরেপো কোড সংগঠিত করা সহজ করে তুলতে পারে, কারণ সমস্ত প্রকল্প এবং তাদের নির্ভরতা একটি একক সংগ্রহস্থলে সংরক্ষণ করা হয়। এটি বোঝা সহজ যে কিভাবে বিভিন্ন প্রকল্প একসাথে ফিট করে এবং কিভাবে তারা একে অপরের উপর নির্ভর করে।
  • উন্নত বিকাশকারীর অভিজ্ঞতা: একটি মনোরেপো ডেভেলপারদের জন্য একাধিক প্রকল্পে কাজ করা সহজ করে তুলতে পারে, কারণ তাদের বিভিন্ন কোডবেস বা সংগ্রহস্থলগুলির মধ্যে স্যুইচ করার প্রয়োজন নেই। এটি ইন্টিগ্রেশন পরীক্ষা চালানো সহজ করে তুলতে পারে, কারণ সমস্ত কোড একই সংগ্রহস্থলে সংরক্ষণ করা হয়।
  • বর্ধিত অটোমেশন এবং ক্রমাগত ডেলিভারি: মনোরেপোর মাধ্যমে, বিল্ডিং, টেস্টিং এবং কোড রিলিজ করার মতো কাজগুলি স্বয়ংক্রিয় করা সহজ। এটি রিলিজ প্রক্রিয়াকে স্ট্রিমলাইন করতে এবং ক্রমাগত ডেলিভারি বাস্তবায়ন করা সহজ করতে সাহায্য করতে পারে।
  • উন্নয়ন গতি বৃদ্ধি. যেহেতু বিভিন্ন দল একই রিপোজিটরিতে কাজ করে, তাই তাদের ফলাফল যাচাই করার জন্য রিলিজ পর্যন্ত অপেক্ষা করতে হবে না, ইন্টিগ্রেশনকে ত্বরান্বিত করে।
উপসংহার

সামগ্রিকভাবে, একটি মনোরেপো কাঠামোর বাস্তবায়ন উন্নয়ন প্রক্রিয়াকে উন্নত করতে, প্রকাশের প্রক্রিয়াটিকে প্রবাহিত করতে এবং বিকাশকারীর অভিজ্ঞতাকে উন্নত করতে সাহায্য করতে পারে।

এই সিরিজের পরবর্তী ব্লগ পোস্টগুলিতে, আমরা আপনাকে এই প্রধান মাইগ্রেশন প্রকল্পটি কীভাবে পরিচালিত হয়েছিল, আমরা যে সরঞ্জামগুলি ব্যবহার করেছি, আমরা যে পছন্দগুলি করেছি, ফলাফল এবং আরও অনেক কিছুর মাধ্যমে আপনাকে পথ দেখাব৷ পার্ট 2 এর জন্য সাথে থাকুন: টুলস!


ভ্যালেন্টিন ডি আলমেইডা
বিকাশকারীর অভিজ্ঞতা এবং মূল প্রযুক্তি - লেজার লাইভ

সময় স্ট্যাম্প:

থেকে আরো খতিয়ান