মাইক্রোসফট Azure DevOps
সূচি:
সারসংক্ষেপ
বিষয়
আমরা আমাদের প্রকল্প বিল্ড, সমন্বয়, ডিপ্লয় ও হোস্ট করতে devops ব্যবহার করতে চাই। আমরা Microsoft Azure DevOps বিবেচনা করছি।
আমরা চাই ডেভেলপার অভিজ্ঞতা দ্রুত ও নির্ভরযোগ্য হোক, devops সেটআপের জন্য, যেমন কনফিগার করা, এবং চলমান ব্যবহারের জন্য, যেমন দ্রুত বিল্ড সময়।
আমরা প্রকল্পের অ্যাপ, ডেটাবেস ইত্যাদি হোস্ট করতে সামগ্রিকভাবে Microsoft Azure ব্যবহারের কথা বিবেচনা করতে চাই।
সিদ্ধান্ত
Microsoft Azure DevOps-এর বিপক্ষে সিদ্ধান্ত হয়েছে।
অবস্থা
সিদ্ধান্ত হয়েছে। নতুন উল্লেখযোগ্য তথ্য এলে পুনর্বিবেচনায় উন্মুক্ত।
বিস্তারিত
অনুমান
Accelerate বইয়ে যেমন আছে, সব প্রচলিত devops অনুমান।
দ্রুত বিল্ড উল্লেখযোগ্য সহায়ক। এটি প্রতিক্রিয়া চক্রকে ত্বরান্বিত করে।
আমরা বিকল্প বিক্রেতাদের অংশ বদলাতে পারি, অর্থাৎ আমরা হয়তো আমাদের নিজস্ব উচ্চ-গতির বিল্ড সার্ভার আনতে চাই, বা আমাদের পছন্দের ভার্সন কন্ট্রোল সিস্টেম ব্যবহার করতে চাই, বা স্ব-হোস্টেড ধারাবাহিক সমন্বয় সার্ভারের সঙ্গে সমন্বয় করতে চাই।
সুবিন্যস্ত ব্যবহারযোগ্যতা উল্লেখযোগ্য সহায়ক, ডেভেলপার অভিজ্ঞতার জন্য, এবং ফলে সামঞ্জস্য, স্পষ্টতা, নিরাপত্তা ও শেখার বক্ররেখার সহজতার মতো সূক্ষ্ম ক্ষেত্রের জন্য।
কিছু ভেঙে গেলে বা সমস্যাযুক্ত হলে আমরা সমস্যাটি জানানোর কার্যকর উপায় চাই। নিরাপত্তা-সংক্রান্ত যেকোনো সমস্যার জন্য এটি বিশেষভাবে গুরুত্বপূর্ণ।
সীমাবদ্ধতা
কোনো জানা সীমাবদ্ধতা নেই। বাহ্যিক টুলের সঙ্গে ভালোভাবে কাজ করার বিষয়ে Azure-এর প্রকাশিত প্রতিশ্রুতি আছে।
অবস্থানসমূহ
আমরা বিদ্যমান AWS-এর বিপরীতে Microsoft Azure Devops ব্যবহারের কথা বিবেচনা করেছি।
আমরা Azure DevOps, Azure Pipelines, Azure Repo এবং Terraform-এর মাধ্যমে Azure-এ নতুন সার্ভার চালু করা নিয়ে পরীক্ষা করেছি।
আমরা Microsoft প্রতিনিধিদের কাছ থেকে সহায়তা পাওয়ার চেষ্টা নিয়ে পরীক্ষা করেছি।
আমরা ব্লগ ও Hacker News-এ সহকর্মীদের কাছ থেকে তথ্য সংগ্রহ করেছি।
যুক্তি
Azure DevOps সেবার একটি চমৎকার সংগ্রহের বিজ্ঞাপন দেয়, কিন্তু সেগুলো টেকে না, একসঙ্গে ভালোভাবে কাজ করে না এবং সহায়তা দুর্বল।
আমাদের প্রত্যক্ষ অভিজ্ঞতা:
Azure সেটআপ UI-এর এক জগাখিচুড়ি, যার কিছু Microsoft অ্যাকাউন্টের সঙ্গে ওভারল্যাপ করে, কিছু করে না। যেমন একটি Azure সাইন ইন, একটি Microsoft.com সাইন ইন, একটি Live.com সাইন ইন ইত্যাদি আছে, এবং সবগুলো একই সঙ্গে চালু।
সেটআপের সময় আমরা একটি ছোট নিরাপত্তা সমস্যার মুখোমুখি হয়েছি এবং কোনো সমাধান পাইনি। আমরা এটি জানাতে অনেক উপায়ে, অনেক Microsoft প্রতিনিধির কাছে চেষ্টা করেছি, সফল হইনি। আমরা সফলভাবে এটি Microsoft নিরাপত্তা দলকে জানিয়েছি, যারা উত্তর দিয়েছে যে এটি ঠিক করা হবে না (won't fix)।
নথি প্রায়ই হয় ভুল নয় পুরোনো। এর অন্তত কিছুটা Microsoft-এর দুর্বল সার্চ ইঞ্জিনের কারণে, আর কিছুটা নিম্নমানের SEO-র কারণে।
Terraform সেটআপ ভালোভাবে নথিভুক্ত এবং কাজ করে। তবে AWS-এর তুলনায় Terraform সমর্থন দুর্বল, কারণ Microsoft চেইন-থ্রু Terraform সেটআপ উদাহরণ দিতে বিক্রেতাদের সঙ্গে ব্যবসায়িক সম্পর্ক গড়ে তুলছে।
আমাদের সহকর্মীদের অভিজ্ঞতা:
আমাদের নিজস্ব নিরপেক্ষ মূল্যায়নের পর আমরা সহকর্মীদের অভিজ্ঞতা খুঁজেছি। যা পেয়েছি, তা আমাদের অভিজ্ঞতা নিশ্চিত করেছে।
সহকর্মীরা বিল্ড সময়ে অতিরিক্ত সমস্যা এবং নিজস্ব বিল্ড সার্ভার আনার সমস্যার কথা জানিয়েছেন। এই সমস্যাগুলো UI সমস্যার চেয়ে উল্লেখযোগ্যভাবে বেশি গুরুতর, কারণ বিল্ড করা বিল্ড পাইপলাইনের মূল উদ্দেশ্য, এবং আমরা প্রতিদিন অনেকগুলো বিল্ড চালানোর আশা করি।
আমরা আলোচনার ক্ষেত্রে Azure সহকর্মীদের চমৎকার অংশগ্রহণ দেখেছি। এ জন্য Microsoft-কে সাধুবাদ। আমরা বিশেষ করে Azure PM ও প্রোগ্রামার Edward Thomson-এর অংশগ্রহণ, সরাসরি কথা বলা এবং প্রযুক্তিগত ব্যাখ্যায় মুগ্ধ হয়েছি।
প্রভাব
Microsoft Azure DevOps বেছে নিলে Azure বেছে না নেওয়ার তুলনায় সময় ও খরচে বেশি ব্যয়বহুল (~৩ গুণ) হওয়ার সম্ভাবনা দেখা যাচ্ছে।
সম্পর্কিত
সম্পর্কিত সিদ্ধান্ত
আমরা Azure DevOps বেছে নিলে Azure Repo, Azure Pipeline ইত্যাদিসহ অনেক সম্পর্কিত সেবা আছে। আমরা বিশ্বাস করি, Azure Devops বেছে নিলে আরও Azure সক্ষমতা ব্যবহার সহজ হতে পারে, অথবা অন্য বিক্রেতাদের সক্ষমতা ব্যবহার কঠিন হতে পারে।
আমরা বিশ্বাস করি Microsoft ডেভেলপার অভিজ্ঞতায় বড় অগ্রগতি করছে, এবং আমরা Microsoft-কে ডেভেলপার টুল (যেমন GitHub) ও নির্ভরতার (যেমন Citus) বড় অধিগ্রহণ করতে দেখছি।
আমরা Azure DevOps বেছে নিলে Microsoft-অধিগৃহীত সেবা বেছে নেওয়ার ওপর জোর দিতে চাইতে পারি, এবং সম্ভাব্য টিস্যু-প্রত্যাখ্যান, যেমন কর্মী-ত্যাগের ঝুঁকির কারণে অধিগৃহীত সেবাগুলোর ক্ষেত্রে আরও যত্ন/মূল্যায়নের সঙ্গে এগোতেও চাইতে পারি।
সম্পর্কিত প্রয়োজনীয়তা
আমরা বিল্ড সময় অত্যন্ত দ্রুত চাই। এর জন্য উচ্চ বাড়তি মূল্য দিতে আমরা রাজি। কারণ আমরা অত্যন্ত দ্রুত পুনরাবৃত্তি করতে চাই।
আমরা নির্ভরযোগ্যতা অত্যন্ত উচ্চ চাই। এর জন্য উচ্চ বাড়তি মূল্য দিতে আমরা রাজি। কারণ আমরা আর্থিক লেনদেন, গোপনীয় লেনদেন ইত্যাদিসহ উচ্চ-মূল্যের ব্যবহারক্ষেত্র পরীক্ষা করছি।
আমাদের শীর্ষ ৪টি devops KPI-তে গড় পুনরুদ্ধার সময় আছে, যার জন্য দ্রুত বিল্ড ও উচ্চ নির্ভরযোগ্যতা প্রয়োজন।
সম্পর্কিত উপকরণ
আমরা চাই বিল্ড সিস্টেম এমন উপকরণ আউটপুট দিক, যা Artifactory-র মতো অন্যান্য সিস্টেমে ব্যবহারের উপযুক্ত।
সম্পর্কিত নীতি
সহজে ফেরানো যায়। আমরা বিদ্যমান AWS-এর সমান্তরালে Azure DevOps মূল্যায়ন করতে পারি।
টীকা
Microsoft Devops CI: একটি অসন্তোষজনক অভিযান
https://toxicbakery.github.io/vsts-devops/microsoft-devops-ci/
ব্লগ পোস্ট।
"একজন সফটওয়্যার ডেভেলপার হিসেবে আমি প্রত্যক্ষ অভিজ্ঞতা থেকে জানি দ্রুত ও কম খরচে মানসম্পন্ন পণ্য তৈরি করা কত কঠিন। এটি এমন একটি শিল্প, যা আমরা কখনো ঠিকঠাক করতে পারি, আবার কখনো তা ওবামা আমলের স্বাস্থ্যসেবা সরকারি সাইটের মতো কিছুতে পরিণত হয়। ফলাফলের ওপর আমাদের নিয়ন্ত্রণের মাত্রা ভিন্ন, এবং ব্যর্থতার দায় প্রায়ই সিদ্ধান্ত গ্রহণ শ্রেণিবিন্যাসের ভুল মানুষদের ওপর পড়ে। Microsoft-এর Azure DevOps (পূর্বনাম Visual Studio Team Services), স্পষ্টতই ভালো উদ্দেশ্য সত্ত্বেও, খারাপ সিদ্ধান্ত ও দুর্বল বাস্তবায়নের এক নিখুঁত ঝড়।"
Hacker News আলোচনার উল্লেখযোগ্য অংশ
https://news.ycombinator.com/item?id=18983586
"আমার কাজে আমরা Azure DevOps ব্যাপকভাবে ব্যবহার করি, এবং GitHub, Gitlab, স্ব-হোস্টেড সমাধান, Jenkins, TeamCity ব্যবহার করার পর... Azure DevOps একেবারে শেষে।"
"UI সর্বত্র ভয়াবহ আড়ষ্ট। আমার জন্য সবচেয়ে খারাপ পুল রিকোয়েস্ট। পুল রিকোয়েস্টে মানুষের সঙ্গে কাজ করা অবিশ্বাস্য রকম কঠিন। আমি "একটি" নির্দিষ্ট সমস্যাও দেখাতে পারব না - আমাদের জন্য এটি সর্বত্র ভাঙা।"
"Azure Devops এমন কিছু, যা আমি ভালোবাসতে চাই। UI ক্রমাগত বদলায়, কিন্তু বহুকাল ধরে থাকা অন্তর্নিহিত বাগগুলো ঠিক করে না।"
"টুলগুলো ভালোভাবে সমন্বিত নয়, UI সত্যিই ধীর, আমার প্রিয় রিপোগুলোর সক্রিয় পুল রিকোয়েস্ট, বিল্ড, রিলিজ ইত্যাদির কোনো ড্যাশবোর্ড দৃশ্য নেই। বিল্ড/ডিপ্লয় সময় পাগলের মতো ধীর।"
"আমরা Azure Boards (Work Items, Boards, Backlogs ইত্যাদি)-ও ব্যবহার করার চেষ্টা করেছি। উফ। এটি বিচ্ছিন্ন ধারণার এক সম্পূর্ণ UI জগাখিচুড়ি। একটি জিনিস ভালোভাবে বাস্তবায়নের বদলে তারা এক ডজন জিনিস খারাপভাবে বাস্তবায়ন করেছে।"
Windows Development MVP
এখানে Windows Development MVP। আমার মনে হয় এই সমস্যাগুলো নিয়ে আরও জোরালো না হওয়ার দায়ের কিছু অংশ আমারও নেওয়া উচিত। কিন্তু বলতেই হবে, UX সমস্যায় আপনারা "বিস্মিত" শুনে আমি হতাশ। আমি আপনাদের লোকজনকে বলে আসছি যে UX ভয়াবহ (যেমন লঞ্চের আগে থেকেই) এবং বারবার শুনেছি "আমরা জানি, আমরা ঠিক করছি।" আমি প্রতিক্রিয়াকে আনুষ্ঠানিক রূপ দিতে এবং সেটি নালা দিয়ে এগিয়ে দিতে শুরু করব, সঙ্গে থাকুন। আমি স্থানীয়ও (Bellevue), এবং আসতে ও আমাদের তুলনামূলকভাবে সরল ওএসএস .net/wpf/uwp অ্যাপ একটি পাইপলাইনের মধ্য দিয়ে চালানোর চেষ্টা করতে চাই। আমার ধারণা এটি আমাদের দুজনেরই চোখ খুলে দেবে।
কিছু উদাহরণ:
সাবমডিউল আছে এমন git রিপো দিয়ে আপনি পাইপলাইন বিল্ড করতে পারেন না
কিছু কাস্টম টুলের জন্য PATH সম্পাদনা করা অসম্ভব পেয়েছি
New Pipeline অভিজ্ঞতার তেমন কোনো মানে হয় না, নতুন ব্যবহারকারীরা এখানে-সেখানে ক্লিক করতে করতে শেষ পর্যন্ত ভুল নথিতে গিয়ে পৌঁছাবেন।
Edward Thomson (Azure PM)-এর সারসংক্ষেপ
আপনাদের পুল রিকোয়েস্ট মার্জ করা কোডটা আমি লিখেছি। Microsoft-এ Azure DevOps-এর প্রোগ্রাম ম্যানেজার; পূর্বে GitHub, Microsoft, SourceGear-এ ভার্সন কন্ট্রোল টুলের সফটওয়্যার ইঞ্জিনিয়ার।
https://www.edwardthomson.com/
libgit2-এর সহ-রক্ষণাবেক্ষণকারী। https://libgit2.github.io
All Things Git-এর সহ-উপস্থাপক, Git নিয়ে পডকাস্ট। https://www.allthingsgit.com/
Developer Tools Weekly-র কিউরেটর, উন্নয়ন টুল নিয়ে একটি নিউজলেটার। https://developertoolsweekly.com/