যেকোন সফ্টওয়্যার বিকাশকারী দক্ষতার সাথে যে কোনও আকার বা জটিলতার যে কোনও প্রকল্প তৈরি করতে, পরীক্ষা করতে এবং প্যাকেজ করতে পারে, টুলিং সহ যা গ্রহণ করা এবং প্রসারিত করা সহজ।
প্রকৌশলীরা মঞ্জুর জন্য বিল্ড মৌলিক নিতে পারেন. সফ্টওয়্যার বিকাশকারীরা কোড লেখার সৃজনশীল প্রক্রিয়ার উপর ফোকাস করে কারণ নির্মাণ এবং পরীক্ষার যান্ত্রিক প্রক্রিয়াটি সমাধান করা হয়। নতুন ভাষা বা অনন্য সাংগঠনিক প্রয়োজনগুলিকে সমর্থন করার জন্য বিল্ড সিস্টেমকে কাস্টমাইজ করার সময়, ব্যবহারকারীরা মৌলিক নদীর গভীরতানির্ণয় পুনরায় উদ্ভাবন না করেই তাদের ব্যবহারের ক্ষেত্রে অনন্য এক্সটেনসিবিলিটির দিকগুলিতে ফোকাস করেন।
প্রকৌশলীরা সহজেই যেকোনো প্রকল্পে অবদান রাখতে পারেন। একজন বিকাশকারী যিনি একটি নতুন প্রকল্পে কাজ শুরু করতে চান তিনি কেবল প্রকল্পটি ক্লোন করতে পারেন এবং বিল্ডটি চালাতে পারেন। স্থানীয় কনফিগারেশনের কোন প্রয়োজন নেই - এটি কাজ করে। ক্রস-প্ল্যাটফর্ম রিমোট এক্সিকিউশনের মাধ্যমে, তারা যেকোনো জায়গায় যেকোনো মেশিনে কাজ করতে পারে এবং প্রকল্পের লক্ষ্যমাত্রা সমস্ত প্ল্যাটফর্মের বিরুদ্ধে তাদের পরিবর্তনগুলি সম্পূর্ণরূপে পরীক্ষা করতে পারে। প্রকৌশলীরা দ্রুত একটি নতুন প্রকল্পের জন্য বিল্ড কনফিগার করতে পারেন বা একটি বিদ্যমান বিল্ডকে ক্রমবর্ধমানভাবে স্থানান্তর করতে পারেন।
প্রকল্পগুলি যে কোনও আকারের কোডবেস, যে কোনও আকারের দলে স্কেল করতে পারে। দ্রুত, ক্রমবর্ধমান পরীক্ষা দলগুলিকে প্রতিটি পরিবর্তন প্রতিশ্রুতিবদ্ধ হওয়ার আগে সম্পূর্ণরূপে যাচাই করতে দেয়৷ এমনকি রেপো বৃদ্ধির সাথে সাথে, প্রকল্পগুলি একাধিক রেপো বিস্তৃত হওয়ার সাথে সাথে এবং একাধিক ভাষা চালু হওয়ার পরেও এটি সত্য থাকে। পরিকাঠামো বিকাশকারীদের বিল্ড গতির জন্য টেস্ট কভারেজ ট্রেড করতে বাধ্য করে না।
আমরা বিশ্বাস করি Bazel এই স্বপ্ন পূরণ করার সম্ভাবনা আছে.
Bazel তৈরি করা হয়েছিল এমন বিল্ডগুলিকে সক্ষম করার জন্য যা পুনরুত্পাদনযোগ্য (ইনপুটের একটি সেট সর্বদা একই আউটপুট তৈরি করবে) এবং পোর্টেবল (আউটপুটকে প্রভাবিত না করেই যে কোনও মেশিনে একটি বিল্ড চালানো যেতে পারে)।
এই বৈশিষ্ট্যগুলি নিরাপদ বৃদ্ধিকে সমর্থন করে (শুধুমাত্র পরিবর্তিত ইনপুটগুলি পুনর্নির্মাণ করা দুর্নীতির ঝুঁকি প্রবর্তন করে না) এবং বিতরণযোগ্যতা (বিল্ড অ্যাকশনগুলি বিচ্ছিন্ন এবং অফলোড করা যেতে পারে)। একটি সঠিক বিল্ড করার জন্য প্রয়োজনীয় কাজ কমিয়ে এবং একাধিক কোর এবং রিমোট সিস্টেম জুড়ে সেই কাজটিকে সমান্তরাল করে, Bazel যেকোনো বিল্ড দ্রুত করতে পারে।
Bazel এর বিমূর্ততা স্তর - ভাষা, প্ল্যাটফর্ম এবং টুলচেইনগুলির জন্য নির্দিষ্ট নির্দেশাবলী একটি সাধারণ এক্সটেনসিবিলিটি ভাষায় প্রয়োগ করা হয়েছে - এটিকে যেকোনো প্রসঙ্গে সহজেই প্রয়োগ করার অনুমতি দেয়।
Bazel মূল দক্ষতা
- Bazel বহু-ভাষা, মাল্টি-প্ল্যাটফর্ম তৈরি এবং পরীক্ষা সমর্থন করে। আপনি আপনার সমগ্র সোর্স ট্রি তৈরি এবং পরীক্ষা করার জন্য একটি একক কমান্ড চালাতে পারেন, আপনি যে ভাষা এবং প্ল্যাটফর্মগুলিকে লক্ষ্য করেন না কেন।
- Bazel বিল্ড দ্রুত এবং সঠিক . প্রতিটি বিল্ড এবং টেস্ট রান ক্রমবর্ধমান, আপনার ডেভেলপারদের মেশিনে এবং CI-এ।
- Bazel কোনো ভাষা বা প্ল্যাটফর্মের জন্য বিল্ড সংজ্ঞায়িত করার জন্য একটি অভিন্ন, এক্সটেনসিবল ভাষা প্রদান করে।
- Bazel রিমোট এক্সিকিউশন এবং ক্যাশিং পরিষেবাগুলির সাথে সংযোগ করে আপনার বিল্ডগুলিকে স্কেল করার অনুমতি দেয়৷
- Bazel সমস্ত প্রধান উন্নয়ন প্ল্যাটফর্ম জুড়ে কাজ করে (Linux, MacOS, এবং Windows)।
- আমরা স্বীকার করি যে Bazel গ্রহণ করার জন্য প্রচেষ্টা প্রয়োজন, কিন্তু ধীরে ধীরে গ্রহণ করা সম্ভব। একটি প্রদত্ত ভাষা/প্ল্যাটফর্মের জন্য ডি-ফ্যাক্টো স্ট্যান্ডার্ড সরঞ্জামগুলির সাথে বেজেল ইন্টারফেস।
ভাষা সম্প্রদায় পরিবেশন
সফ্টওয়্যার ইঞ্জিনিয়ারিং ভাষা সম্প্রদায়ের প্রেক্ষাপটে বিকশিত হয় - সাধারণত, সাধারণ সরঞ্জাম এবং অনুশীলনগুলি ব্যবহার করে এমন লোকদের স্ব-সংগঠিত গোষ্ঠী।
একটি ভাষা সম্প্রদায়ের সদস্যদের কাজে লাগানোর জন্য, উচ্চ-মানের Bazel নিয়মগুলি অবশ্যই উপলব্ধ হতে হবে যা সেই সম্প্রদায়ের কর্মপ্রবাহ এবং সম্মেলনগুলির সাথে একীভূত হয়৷
Bazel সম্প্রসারণযোগ্য এবং উন্মুক্ত হতে প্রতিশ্রুতিবদ্ধ, এবং যেকোনো ভাষার জন্য ভালো নিয়মকানুন সমর্থন করতে।
একটি ভাল নিয়মের প্রয়োজনীয়তা
- নিয়মগুলি কোড কভারেজ সহ ভাষার জন্য দক্ষ নির্মাণ এবং পরীক্ষাকে সমর্থন করতে হবে।
- নিয়মগুলিকে ভাষার জন্য একটি বহুল ব্যবহৃত "প্যাকেজ ম্যানেজার" এর সাথে ইন্টারফেস করতে হবে (যেমন জাভার জন্য ম্যাভেন), এবং অন্যান্য বহুল-ব্যবহৃত বিল্ড সিস্টেম থেকে ক্রমবর্ধমান মাইগ্রেশন পাথ সমর্থন করতে হবে।
- "বাজেল স্যান্ডউইচ" নীতি অনুসরণ করে নিয়মগুলিকে এক্সটেনসিবল এবং ইন্টারঅপারেবল হতে হবে।
- নিয়মগুলি দূরবর্তী কার্যকর করার জন্য প্রস্তুত হওয়া দরকার। অনুশীলনে, এর অর্থ টুলচেইন প্রক্রিয়া ব্যবহার করে কনফিগারযোগ্য ।
- নিয়মগুলি (এবং বেজেল) ভাষার জন্য একটি ব্যাপকভাবে ব্যবহৃত IDE এর সাথে ইন্টারফেস করতে হবে, যদি একটি থাকে।
- নিয়মগুলির পুঙ্খানুপুঙ্খ, ব্যবহারযোগ্য ডকুমেন্টেশন থাকতে হবে, নতুন ব্যবহারকারীদের জন্য পরিচায়ক উপাদান সহ, বিশেষজ্ঞ ব্যবহারকারীদের জন্য ব্যাপক নথি থাকতে হবে।
এই আইটেমগুলির প্রতিটি অপরিহার্য এবং শুধুমাত্র একসাথে তারা তাদের নির্দিষ্ট বাস্তুতন্ত্রের জন্য Bazel এর দক্ষতা প্রদান করে।
এগুলিও, ব্যাপকভাবে, যথেষ্ট - একবার সব পূর্ণ হয়ে গেলে, Bazel সম্পূর্ণরূপে সেই ভাষা সম্প্রদায়ের সদস্যদের কাছে তার মূল্য প্রদান করে৷