এই ব্লগ পোস্ট সিরিজে, Valentin De Almeida, একজন লেজার লাইভ ডেভেলপার, বছরের পর বছর ধরে লেজার লাইভ কোডবেস বিবর্তনের মাধ্যমে আমাদের সাথে কথা বলেছেন। এই ব্লগ পোস্টে, আপনি শিখবেন যে এটি প্রথমে মাল্টি-রিপোজিটরি ভিত্তিক ছিল, পথে আমরা যে সমস্যার সম্মুখীন হয়েছিলাম এবং কেন এটি একটি মনো-রিপোজিটরি আর্কিটেকচারে বিকশিত হওয়ার প্রয়োজন ছিল। পরবর্তী ব্লগ পোস্টগুলিতে, আমরা ব্যাখ্যা করব কীভাবে এই প্রধান মাইগ্রেশন প্রকল্পটি পরিচালিত হয়েছিল।
খানিকটা ইতিহাস
2020 এবং 2021 সালে লেজারের বৃদ্ধি উল্লেখযোগ্য ছিল। আমরা আক্রমনাত্মকভাবে নতুন প্রতিভা নিয়োগ করেছি, আমাদের দলকে মুষ্টিমেয় থেকে 20 টির বেশি বিকাশকারীতে প্রসারিত করেছি। এর মানে অনেক নতুন প্রকৌশলী বিদ্যমান প্রকল্পে অনবোর্ড ছিল। আমাদের দল দ্রুত বৃদ্ধি পাওয়ার সাথে সাথে আমরা নতুন চ্যালেঞ্জের সম্মুখীন হলাম যা আমাদের দ্রুত সমাধান করতে হবে। এই নতুন অসুবিধা সত্ত্বেও, আমরা আমাদের লক্ষ্যে মনোনিবেশ করেছি এবং ব্যতিক্রমী কাজ প্রদান অব্যাহত রেখেছি।
আমরা একধাপ পিছিয়ে নিয়েছি এবং নতুন সমস্যাগুলির দিকে নজর দিয়েছি যেগুলি যখন আরও বেশি সংখ্যক লোক প্রকল্পে যোগ দেয় তখন উদ্ভূত হয়। এই নতুন চ্যালেঞ্জগুলির মধ্যে, আমরা নিম্নলিখিত প্রয়োজনগুলি তালিকাভুক্ত করতে পারি:
- সরল প্রবাহ।
- আগত এবং বহিরাগত অবদানকারীদের জন্য আরও ভাল নির্দেশিকা।
- টুলের একীভূত সেট।
- উন্নত নির্ভরতা ব্যবস্থাপনা।
- কেন্দ্রীভূত ওপেন সোর্স অবদান।
শিল্পের অবস্থা: মাইগ্রেশনের আগে
প্রাথমিকভাবে, এবং গত বছর পর্যন্ত, লেজার লাইভ একটি পলি-রিপোজিটরি আর্কিটেকচারের উপর ভিত্তি করে ছিল, মোবাইল এবং ডেস্কটপ উভয় ফ্রন্ট-এন্ডের জন্য, সেইসাথে এর পিছনে সমস্ত যুক্তি। এই পদ্ধতিতে কাজ করার জন্য এটি একটি সচেতন সিদ্ধান্ত ছিল না, তবে এটি শুধুমাত্র একটি প্রসারিত প্রকল্পের ফলাফল ছিল যার কোন বাস্তব স্থাপত্য নেতৃত্ব নেই। লেজার লাইভ এমন একটি প্রকল্প যা আমাদের ন্যানো ব্যবহারকারীদের কাছে সেরা এবং সবচেয়ে নিরাপদ অ্যাপ সরবরাহ করতে বিভিন্ন উপাদানকে একত্রিত করে এবং এটি কোডবেসে প্রতিফলিত হয়েছে।
আমাদের জায়গায় যে প্রবাহ ছিল তা সর্বোত্তমভাবে অস্পষ্ট ছিল, বেশিরভাগই এই কারণে যে আমরা কয়েক বছর আগে 6 বা 7 জন বিকাশকারী ছিলাম। যেহেতু কম দল জড়িত ছিল, যোগাযোগটি সহজ ছিল এবং আমরা এটি থেকে দূরে সরে গিয়েছিলাম। তবুও, আমরা যেভাবে কাজ করছিলাম তাতে কিছু ব্যথার বিষয় ছিল, বিশেষ করে বিকাশকারীর অভিজ্ঞতা এবং মুক্তির প্রক্রিয়ার চারপাশে।
দেব অভিজ্ঞতার প্রতিবন্ধকতা
নির্ভরতা
আমাদের প্রকল্পগুলির প্রকৃতির কারণে, আমরা একই সময়ে একাধিক সংগ্রহস্থলে কাজ করি, তাদের মধ্যে নির্ভরতা সহ। এখানে একটি দ্রুত ওভারভিউ আছে:
লেজার ওপেন সোর্স লাইব্রেরিগুলি ব্যবসায়িক যুক্তি দ্বারা ব্যবহৃত হয়, যা তারপরে ডেস্কটপ এবং মোবাইল অ্যাপ উভয়ই ব্যবহার করে। কিন্তু সেই অ্যাপগুলিও ওপেন সোর্স লাইব্রেরি ব্যবহার করে এবং একই লাইব্রেরির দুটি ভিন্ন সংস্করণ ব্যবহার করে (যেমন @ledgerhq/errors
উদাহরণস্বরূপ) অ্যাপটি ভেঙে দেবে।
আমাদের একদিকে সংস্করণটি বাম্প করতে হবে, তারপরে লাইব্রেরিগুলি প্রকাশ করতে হবে (হ্যাঁ, এনপিএম!!!), তারপর আবার চেষ্টা করুন যদি এটি কাজ না করে। আমরা নির্ভর করতে শুরু করলাম yalc
সিমলিংক প্রজেক্টগুলিতে, যা বেশিরভাগই ঠিক ছিল যতক্ষণ না আমাদের নির্ভরতার বিভিন্ন স্তর না থাকে (উদাহরণস্বরূপ, ওপেন সোর্স লাইব্রেরি থেকে ব্যবসায়িক লজিক এবং তারপরে ব্যবসায়িক যুক্তি থেকে অ্যাপস পর্যন্ত)। আমরা সাময়িকভাবে সাথে কাজ করার চেষ্টা করেছি yarn link
পাশাপাশি, কিন্তু মনে হচ্ছে এটি নেটিভ রিঅ্যাক্টের সাথে ধ্বংস হয়ে গেছে।
পরীক্ষামূলক
বিভিন্ন প্রকল্পের সমস্ত সর্বশেষ কোড সহ ইন্টিগ্রেশন পরীক্ষা করা প্রায় অসম্ভব ছিল। যেহেতু আমাদের লাইব্রেরিগুলিকে রেজিস্ট্রিতে প্রকাশ করার দরকার ছিল, তাই সর্বশেষ আপ টু ডেট কোড সহ সমস্ত উপাদান পরীক্ষা করা একটি দুঃস্বপ্ন ছিল
আমাদের ডুপ্লিকেট লজিক সহ বেশ কয়েকটি সিআই বজায় রাখতে হয়েছিল।
প্রসঙ্গ স্যুইচিং
সর্বদা বেশ কয়েকটি কোড এডিটর/প্রকল্প/ডিরেক্টরীতে ঘোরাফেরা করার ফলে ডেভ অভিজ্ঞতা সত্যিই দুর্বল দেখায়।
রিলিজ প্রক্রিয়া বাধা
ভারশনিং
বিভিন্ন প্রকল্পের সংস্করণ পরিচালনা করা কঠিন, বিশেষ করে যখন নির্ভরতার বিভিন্ন স্তর থাকে।
মুক্তি
প্রকল্পগুলি বিভক্ত হওয়ার কারণে রিলিজ ট্র্যাকিং জটিল ছিল এবং আমাদের বিভিন্ন প্রকল্পের প্রকাশ পরিচালনা করতে হয়েছিল
রিলিজ প্রক্রিয়া স্বয়ংক্রিয় করা অসম্ভব ছিল, আবার এই কারণে যে প্রকল্পগুলি বিভিন্ন সংগ্রহস্থলে বিভক্ত ছিল।
এবং অবশ্যই, অবিচ্ছিন্ন ডেলিভারি এই সময়ে অচিন্তনীয় ছিল।
সম্ভাব্য সমাধান ?
অনুপ্রেরণার জন্য চারপাশে খুঁজছেন, মনে হচ্ছে একটি মনো ভান্ডার আর্কিটেকচার হল কেন্দ্রীয় অংশ যা আমরা হারিয়েছিলাম। এটি একটি আরও ভাল উন্নয়ন প্রক্রিয়া সক্ষম করবে। এই আর্কিটেকচারের চারপাশে এমন সরঞ্জাম রয়েছে যা আমাদের অনুপস্থিত অংশগুলি অর্জন করতে সহায়তা করবে (রিলিজ, অটোমেশন, সংস্করণ…)।
কিন্তু, একটি মনো ভান্ডার কি?
এর মূল অংশে, একটি মনো সংগ্রহস্থল এমন একটি প্রকল্প যা একটি ফোল্ডার / গিট প্রকল্পের অধীনে অন্যান্য সমস্ত সম্পর্কিত প্রকল্প (অ্যাপ্লিকেশন, লাইব্রেরি, সরঞ্জাম) অন্তর্ভুক্ত করে। এটি আরও ভাল নির্ভরতা ব্যবস্থাপনা, সরঞ্জামগুলির ইউনিফর্মাইজেশন (যেমন কোড শৈলী এবং টাইপস্ক্রিপ্ট কনফিগারেশন), কেন্দ্রীভূত ক্রমাগত ইন্টিগ্রেশন, ইন্টিগ্রেশন টেস্টিং, ব্যবহৃত প্যাকেজগুলির অভিন্ন সংস্করণ (উদাহরণস্বরূপ প্রতিক্রিয়া)...
যেহেতু এটি একটি চমত্কার অজ্ঞেয়বাদী সিস্টেম, তাই আমাদের আবিষ্কার এবং প্রয়োগ করার জন্য কিছু বৈশিষ্ট্য বাকি ছিল। আশা করি, কিছু দুর্দান্ত কমিউনিটি টুল রয়েছে যা আমাদের বিল্ডগুলিতে অর্কেস্ট্রেশন যোগ করতে সাহায্য করতে পারে (সিকুয়েন্সিয়াল বিল্ড, CI-এর জন্য সহায়ক), সংস্করণ, চেঞ্জলগ জেনারেশন.. যা আমাদের রিলিজ প্রক্রিয়ায় আমরা যা হারিয়েছিলাম তা সম্পূর্ণ করবে।
মন্দ দিক
মনো সংগ্রহস্থলগুলি এমন একটি প্রেক্ষাপটে বোঝা যায় যেখানে বেশ কয়েকটি বিকাশকারী, বা বিকাশকারীদের একটি দল একই সময়ে বেশ কয়েকটি প্রকল্পে কাজ করে, তাদের মধ্যে নির্ভরতা সহ। যাইহোক, এটি সেটআপ পর্বের সময় জটিলতার কিছু স্তর যুক্ত করে (বিশেষ করে ইতিমধ্যেই আপ এবং চলমান প্রকল্পগুলির সাথে যার 4 বছরের ইতিহাস এবং সক্রিয় বিকাশ রয়েছে)। উল্লেখ করার মতো, প্রকল্পটি ডিস্কের স্থানের ক্ষেত্রে অনেক বড় (যেমন আরও বড়) হয়ে যায়। সমস্ত প্রকল্প এখন একই ফোল্ডার এবং সমস্ত নির্ভরতার অধীনে রয়েছে। কোন পরীক্ষা বাধ্যতামূলক? তাদের ট্রিগার কখন?
ভালো দিক
সময়, খরচ, এবং আমাদের উচ্চাকাঙ্ক্ষার সম্ভাব্যতা মূল্যায়ন করার পরে, এখানে এই পরিবর্তনের কিছু প্রত্যাশিত সুবিধা ছিল:
- উন্নত নির্ভরতা ব্যবস্থাপনা: একটি মনোরেপোর সাথে, বিভিন্ন প্রকল্পের মধ্যে নির্ভরতা পরিচালনা করা সহজ, কারণ সেগুলি একই সংগ্রহস্থলে সংরক্ষণ করা হয়। এটি সুতা লিঙ্ক বা মত workarounds জন্য প্রয়োজন কমাতে পারে
yalc
, এবং সমস্ত প্রকল্প নির্ভরতার সঠিক সংস্করণ ব্যবহার করছে তা নিশ্চিত করা সহজ করে তোলে। - আরও ভাল কোড সংস্থা: একটি মনোরেপো কোড সংগঠিত করা সহজ করে তুলতে পারে, কারণ সমস্ত প্রকল্প এবং তাদের নির্ভরতা একটি একক সংগ্রহস্থলে সংরক্ষণ করা হয়। এটি বোঝা সহজ যে কিভাবে বিভিন্ন প্রকল্প একসাথে ফিট করে এবং কিভাবে তারা একে অপরের উপর নির্ভর করে।
- উন্নত বিকাশকারীর অভিজ্ঞতা: একটি মনোরেপো ডেভেলপারদের জন্য একাধিক প্রকল্পে কাজ করা সহজ করে তুলতে পারে, কারণ তাদের বিভিন্ন কোডবেস বা সংগ্রহস্থলগুলির মধ্যে স্যুইচ করার প্রয়োজন নেই। এটি ইন্টিগ্রেশন পরীক্ষা চালানো সহজ করে তুলতে পারে, কারণ সমস্ত কোড একই সংগ্রহস্থলে সংরক্ষণ করা হয়।
- বর্ধিত অটোমেশন এবং ক্রমাগত ডেলিভারি: মনোরেপোর মাধ্যমে, বিল্ডিং, টেস্টিং এবং কোড রিলিজ করার মতো কাজগুলি স্বয়ংক্রিয় করা সহজ। এটি রিলিজ প্রক্রিয়াকে স্ট্রিমলাইন করতে এবং ক্রমাগত ডেলিভারি বাস্তবায়ন করা সহজ করতে সাহায্য করতে পারে।
- উন্নয়ন গতি বৃদ্ধি. যেহেতু বিভিন্ন দল একই রিপোজিটরিতে কাজ করে, তাই তাদের ফলাফল যাচাই করার জন্য রিলিজ পর্যন্ত অপেক্ষা করতে হবে না, ইন্টিগ্রেশনকে ত্বরান্বিত করে।
উপসংহার
সামগ্রিকভাবে, একটি মনোরেপো কাঠামোর বাস্তবায়ন উন্নয়ন প্রক্রিয়াকে উন্নত করতে, প্রকাশের প্রক্রিয়াটিকে প্রবাহিত করতে এবং বিকাশকারীর অভিজ্ঞতাকে উন্নত করতে সাহায্য করতে পারে।
এই সিরিজের পরবর্তী ব্লগ পোস্টগুলিতে, আমরা আপনাকে এই প্রধান মাইগ্রেশন প্রকল্পটি কীভাবে পরিচালিত হয়েছিল, আমরা যে সরঞ্জামগুলি ব্যবহার করেছি, আমরা যে পছন্দগুলি করেছি, ফলাফল এবং আরও অনেক কিছুর মাধ্যমে আপনাকে পথ দেখাব৷ পার্ট 2 এর জন্য সাথে থাকুন: টুলস!
ভ্যালেন্টিন ডি আলমেইডা
বিকাশকারীর অভিজ্ঞতা এবং মূল প্রযুক্তি - লেজার লাইভ
- এসইও চালিত বিষয়বস্তু এবং পিআর বিতরণ। আজই পরিবর্ধিত পান।
- PlatoData.Network উল্লম্ব জেনারেটিভ Ai. নিজেকে ক্ষমতায়িত করুন। এখানে প্রবেশ করুন.
- প্লেটোএআইস্ট্রিম। Web3 ইন্টেলিজেন্স। জ্ঞান প্রসারিত. এখানে প্রবেশ করুন.
- প্লেটোইএসজি। কার্বন, ক্লিনটেক, শক্তি, পরিবেশ সৌর, বর্জ্য ব্যবস্থাপনা. এখানে প্রবেশ করুন.
- প্লেটো হেলথ। বায়োটেক এবং ক্লিনিক্যাল ট্রায়াল ইন্টেলিজেন্স। এখানে প্রবেশ করুন.
- উত্স: https://www.ledger.com/blog/ledger-live-monorepo-project-part-1-problematics-make-it-pain
- : হয়
- :না
- :কোথায়
- $ ইউপি
- 1
- 20
- 2020
- 2021
- 7
- a
- ত্বরক
- অর্জন করা
- সক্রিয়
- যোগ
- ঠিকানা
- যোগ করে
- আবার
- পূর্বে
- সব
- অনুমতি
- বরাবর
- ইতিমধ্যে
- এছাড়াও
- উচ্চাভিলাষ
- মধ্যে
- an
- এবং
- অ্যাপ্লিকেশন
- অ্যাপ্লিকেশন
- অ্যাপস
- স্থাপত্য
- স্থাপত্য
- রয়েছি
- উঠা
- কাছাকাছি
- শিল্প
- AS
- At
- স্বয়ংক্রিয় পদ্ধতি প্রয়োগ করা
- স্বয়ংক্রিয়তা
- দূরে
- পিছনে
- ভিত্তি
- আগে
- পিছনে
- সুবিধা
- সর্বোত্তম
- উত্তম
- মধ্যে
- বড়
- বিট
- ব্লগ
- ব্লগ এর লেখাগুলো
- উভয়
- বিরতি
- ভবন
- তৈরী করে
- নির্মিত
- ব্যবসায়
- কিন্তু
- by
- CAN
- মধ্য
- কেন্দ্রীভূত
- চ্যালেঞ্জ
- পরিবর্তণের
- পছন্দ
- কোড
- কোডবেস
- যোগাযোগ
- সম্প্রদায়
- সম্পূর্ণ
- জটিলতা
- জটিল
- উপাদান
- পরিচালিত
- সচেতন
- প্রসঙ্গ
- অব্যাহত
- একটানা
- অবদানসমূহ
- অবদানকারী
- মূল
- ঠিক
- মূল্য
- পারা
- দম্পতি
- পথ
- তারিখ
- রায়
- প্রদান করা
- বিলি
- নির্ভরতা
- বশ্যতা
- ডেস্কটপ
- সত্ত্বেও
- দেব
- বিকাশকারী
- ডেভেলপারদের
- বিকাশকারীরা কাজ করে
- উন্নয়ন
- DID
- বিভিন্ন
- অসুবিধা
- ডিরেক্টরি
- আবিষ্কার করা
- do
- Dont
- দণ্ডপ্রাপ্ত
- কারণে
- সময়
- প্রতি
- সহজ
- সক্ষম করা
- encapsulates
- প্রকৌশলী
- উন্নত করা
- নিশ্চিত করা
- বিশেষত
- মূল্যায়নের
- বিবর্তন
- গজান
- উদাহরণ
- ব্যতিক্রমী
- বিদ্যমান
- বিস্তৃত
- প্রত্যাশিত
- অভিজ্ঞতা
- ব্যাখ্যা করা
- বহিরাগত
- সত্য
- বৈশিষ্ট্য
- প্রথম
- ফিট
- প্রবাহ
- দৃষ্টি নিবদ্ধ করা
- অনুসরণ
- জন্য
- থেকে
- প্রজন্ম
- git
- লক্ষ্য
- পেয়েছিলাম
- মহান
- বড় হয়েছি
- উন্নতি
- নির্দেশিকা
- ছিল
- থাবা
- কঠিন
- আছে
- সাহায্য
- সহায়ক
- এখানে
- ইতিহাস
- আশা রাখি,
- কিভাবে
- যাহোক
- HTTPS দ্বারা
- if
- বাস্তবায়ন
- বাস্তবায়ন
- অসম্ভব
- উন্নত করা
- in
- ইনকামিং
- অনুপ্রেরণা
- ইন্টিগ্রেশন
- মধ্যে
- জড়িত
- সমস্যা
- IT
- এর
- মাত্র
- গত
- গত বছর
- সর্বশেষ
- স্তর
- স্তর
- নেতৃত্ব
- শিখতে
- খতিয়ান
- লেজার লাইভ
- বাম
- কম
- লাইব্রেরি
- লাইব্রেরি
- মত
- LINK
- তালিকা
- সামান্য
- জীবিত
- যুক্তিবিদ্যা
- দীর্ঘ
- দেখুন
- তাকিয়ে
- অনেক
- প্রণীত
- বজায় রাখা
- মুখ্য
- করা
- পরিচালনা করা
- ব্যবস্থাপনা
- কার্যভার
- পদ্ধতি
- সর্বোচ্চ প্রস্থ
- মানে
- অভিপ্রয়াণ
- অনুপস্থিত
- মোবাইল
- মোবাইল অ্যাপস
- অধিক
- সেতু
- অধিকাংশ ক্ষেত্রে
- চলন্ত
- অনেক
- বহু
- ন্যানো
- স্থানীয়
- প্রকৃতি
- প্রয়োজন
- প্রয়োজন
- চাহিদা
- নতুন
- পরবর্তী
- না।
- এখন
- of
- ঠিক আছে
- on
- ONE
- কেবল
- খোলা
- ওপেন সোর্স
- or
- অর্কেস্ট্রারচনা
- সংগঠন
- অন্যান্য
- আমাদের
- শেষ
- ওভারভিউ
- গাঁটবন্দী
- ব্যথা
- অংশ
- দলগুলোর
- যন্ত্রাংশ
- সম্প্রদায়
- ফেজ
- টুকরা
- জায়গা
- Plato
- প্লেটো ডেটা ইন্টেলিজেন্স
- প্লেটোডাটা
- বিন্দু
- পয়েন্ট
- পোস্ট
- পোস্ট
- চমত্কার
- প্রক্রিয়া
- প্রকল্প
- প্রকল্প
- প্রকাশ করা
- দ্রুত
- দ্রুত
- দ্রুত
- প্রতিক্রিয়া
- দেশীয় প্রতিক্রিয়া
- বাস্তব
- সত্যিই
- হ্রাস করা
- প্রতিফলিত
- রেজিস্ট্রি
- সংশ্লিষ্ট
- মুক্তি
- রিলিজ
- মুক্তি
- নির্ভর করা
- রয়ে
- সংগ্রহস্থলের
- ফল
- চালান
- দৌড়
- একই
- নিরাপদ
- মনে হয়
- অনুভূতি
- ক্রম
- সেট
- সেটআপ
- বিভিন্ন
- পাশ
- গুরুত্বপূর্ণ
- থেকে
- একক
- সমাধান
- কিছু
- উৎস
- স্থান
- স্পীড
- বিভক্ত করা
- শুরু
- থাকা
- ধাপ
- এখনো
- সঞ্চিত
- স্ট্রিমলাইন
- গঠন
- সুইচ
- পদ্ধতি
- প্রতিভা
- কথাবার্তা
- কাজ
- টীম
- দল
- প্রযুক্তি
- শর্তাবলী
- পরীক্ষামূলক
- পরীক্ষা
- যে
- সার্জারির
- তাদের
- তাহাদিগকে
- তারপর
- সেখানে।
- এইগুলো
- তারা
- এই
- সেগুলো
- দ্বারা
- সময়
- থেকে
- একসঙ্গে
- গ্রহণ
- সরঞ্জাম
- অনুসরণকরণ
- রূপান্তর
- চেষ্টা
- ট্রিগার
- চেষ্টা
- দুই
- টাইপরাইটারে মুদ্রি
- অধীনে
- বোঝা
- সমন্বিত
- কল্পনাতীত
- পর্যন্ত
- us
- ব্যবহার
- ব্যবহৃত
- ব্যবহারকারী
- ব্যবহার
- বিভিন্ন
- যাচাই
- সংস্করণ
- সংস্করণ
- অপেক্ষা করুন
- পদব্রজে ভ্রমণ
- ছিল
- উপায়..
- we
- আমরা একটি
- ছিল
- কি
- কখন
- যে
- কেন
- ইচ্ছা
- সঙ্গে
- হয়া যাই ?
- কাজ
- মূল্য
- would
- বছর
- বছর
- হাঁ
- আপনি
- zephyrnet