Why api

আচ্ছা, আপনি বললেন, ‘এপিআই’ এবং মডার্ন প্রোগ্রামিং ল্যাঙ্গুয়েজ তো আর নতুন কিছু নয়? তাহলে এটা নিয়ে ইদানিং এত হাইপ কেন?

ঠিক ধরেছেন। ঠিক মেশিন লার্নিং এর মতো জিনিসটা। ২০/৩০ বছর আগেও তো মেশিন লার্নিং ছিল। আগে দুর্দান্ত হার্ডওয়ার, র‍্যাম, স্টোরেজ ডিভাইস, প্রসেসিং ক্ষমতা, ক্লাউড ইত্যাদি ইত্যাদির দাম হাতের নাগালে ছিল না বলেই মেশিন লার্নিং বা কৃত্রিম বুদ্ধিমত্তা তখন হালে পানি পায়নি। এখন সবকিছুর এভেইলেবিলিটি এবং দাম নাগালে এসেছে বলে সেটা পাচ্ছে। সেই একই জিনিস ঘটেছে মর্ডান প্রোগ্রামিং ল্যাঙ্গুয়েজ এবং ট্যুলগুলোর ব্যবহারে। এগুলো এখন অনেক ‘ম্যাচিওরড’ হয়েছে। সফটওয়্যার ইন্ডাস্ট্রি এখন অন্য লেভেলে পৌঁছে গেছে।

মর্ডান প্রোগ্রামিং ল্যাঙ্গুয়েজ যেমন জাভাস্ক্রিপ্ট, পাইথন, গো, সুইফট ইত্যাদি ইত্যাদি আর আগের মত ঝামেলা পূর্ণ নয়। এগুলোর সাথে হাজারো ‘হেল্পার’ লাইব্রেরী চলে এসছে যেটা চিন্তাই করা যায় না। আগে, যেকোনো ‘সাবস্টেন্শিয়াল’ কিছু করতে ‘সি’ অথবা ‘সি++’ এর দশ হাজার লাইন কোডের জন্য মাথা খাটাতে হতো। এখন মডেল ল্যাঙ্গুয়েজ এবং তার প্যাকেজ বিশেষ করে তার হেল্পার লাইব্রেরীগুলো (সঙ্গে হাজারো রিউজেবল কোড, ফোরামের সাপোর্ট, গিটহাবের অনেক উদাহরণ) আমাদেরকে ওই একই জিনিস করে দিতে পারে ৫০-১০০/২০০ লাইনের ভিতরে। ভাবা যায়? এখন চ্যাট-জিপিটি, গিটহাব কো-পাইলটের যুগে অনেকেই চিন্তা করছে ৮০ শতাংশ কোড লিখে দিবে যন্ত্র। তবে, সেটাও আমরা ধরে নিচ্ছি না।

সত্যি কথা বলতে, এই নতুন মডার্ন ল্যাঙ্গুয়েজগুলো চলে আসে অনেক ক্ষমতাশালী ডেভেলপমেন্ট টুল এবং প্ল্যাটফর্ম নিয়ে। এই জিনিসগুলো আমাদেরকে সাহায্য করছে নেটওয়ার্কের বিভিন্ন ধরনের টাস্ক এবং প্রসেসগুলোকে অটোমেট করতে। এগুলোর সাথে আমাদের নিজস্ব টুল এবং পাওয়ারফুল ওয়ার্ক ফ্লু তৈরি করা যায় যেগুলো খুব সহজেই যুক্ত করা যায় আরো অন্যান্য ‘অসাধারণ’ মর্ডান ডেভেলপমেন্ট টুল এর সাথে।

এই ডেভলপমেন্ট টুলগুলো কি হতে পারে?

  1. গিট রিপোজিটেরি, গিটহাব, গিটল্যাব এর মত অসাধারণ প্ল্যাটফর্ম
  2. সফটওয়্যারগুলোর প্যাকেজ ম্যানেজমেন্ট সিস্টেম এখন অনেকটাই স্বয়ংক্রিয়
  3. ভার্চুয়াল এনভায়রনমেন্ট আমাদেরকে নিমিষেই ডেভেলপমেন্ট প্লাটফর্ম তৈরি করে দেয়
  4. মাইক্রোসফটের ভিজুয়াল স্টুডিও কোড এবং পাইচার্মের মতো ইন্টিগ্রেটেড ডেভেলপমেন্ট এনভায়রনমেন্ট

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

ধরা যাক, আমরা আমাদের একটা রাউটারকে প্রোগ্রাম করতে চাই সফটওয়্যার এর মাধ্যমে। মানুষ না, সফটওয়্যার ওয়েবসার্ভিস দিয়ে কনফিগারেশন পাল্টাবো এখানে। রাউটারের একটা ইন্টারফেস যোগ অথবা ডিলিট করবো আমাদের তৈরি সফটওয়্যার থেকে। এই জিনিসটা আমরা করতে চাই ‘এইচটিটিপিএস’ ওয়েব সার্ভিসের মাধ্যমে। আমরা যেহেতু মানুষ কাজ করবো না, সে কারণে “কনসোল পোর্ট, টেলনেট অথবা সিকিউর শেল” এগুলোর কোনটাই ব্যবহার করব না। আমি সফটওয়্যারকে বলব, সে নিজে থেকেই রাউটারের সাথে যোগাযোগ করে যা কাজ করার সে করে ফেলবে। এই যোগাযোগটা হবে ‘সিকিউরিটি’ নীতিমালা ঠিকমতো মেনে। এখানে আমরা ব্যবহার করবো, ‘রেস্ট এপিআই’ যাকে অনেকে ‘ওয়েব এপিআই’ ও বলে থাকেন। আমার বাসায় প্রচুর আইওটি ডিভাইস আছে, যেগুলোর সাথে প্রতিনিয়ত ‘রেস্ট ওয়েবসার্ভিস’ এপিআই কথা বলছে আমার মোবাইল এর মধ্যে ইনস্টল করা অ্যাপ। সেই একই জিনিস হতে হবে আমাদের রাউটার/সুইচের সাথে নেটওয়ার্ক ইঞ্জিনিয়ারের তৈরি সফটওয়্যারে। একটা কথা বলে রাখি, এখানে আমাদের সফটওয়্যার যেই এপিআই ব্যবহার করবে সেটা “এইচটিটিপিএস” রিকোয়েস্ট করে পাঠাবে।

এটা একজন ডেভলপার যদি তৈরি করতেন সফটওয়্যারটা, তাহলে তাকে কি কি করতে হতো,

  1. একটা ‘টিসিপি’ কানেকশন চালু করতে হতো ৪৪৩ পোর্টে
  2. সার্টিফিকেট নেগোসিয়েশন বা এক্সচেঞ্জ এর জন্য ‘টিএলএস’কে হ্যান্ডেল করতে হতো
  3. সার্টিফিকেটটাকে ভ্যালিডেট করতে হতো যাতে সিকিউর কানেকশন থাকে
  4. ওই ‘টিসিপি’ কানেকশনটাকে ঠিকমতো ম্যানেজ করতে হতো
  5. এইচটিটিপি রিকোয়েস্টটাকে ঠিকমত ফরম্যাট করতে হতো (যেমন, জেসন)
  6. রাউটার থেকে এইচটিটিপি রেসপন্সটাকে ঠিকমতো ইন্টারপ্রেট করতে হতো

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

ফিরে আসি আমাদের কাজে। উপরের ছয়টা কাজ কয়েক লাইনে করতে আমাদের প্রয়োজন পাইথনের একটা ‘এইচটিটিপি’ হেল্পার লাইব্রেরি। খুবই ছোট, কিন্তু কাজের। পাইথন প্যাকেজটা ইন্সটল করতে চাইলে লিখে ফেলুন,

$ pip install requests
ইন্টারনেটের সংযোগ থাকলে আমাদের এখানে ‘রিকোয়েস্টস’ প্যাকেজটা ইন্সটল হয়ে যাবে। ‘পিপ’ হচ্ছে পাইথনের প্যাকেজ ইনস্টলার। এখন এটার একটা ছোট কাজ দেখি, অনলাইনে এইচটিটিপিএস লিংকে কাজ করে কিনা।
$ python
>>> import requests
>>> requests.get("https://api.github.com")
<Response [200]>
শুরুতেই পাইথন কমান্ড দিয়ে পাইথনের ইন্টারেক্টিভ শেলটা চালু করলাম। এরপর, ‘ইমপোর্ট রিকোয়েস্টস’ লিখে পাইথন কোড এর মধ্যে আমাদের রিকোয়েস্টস লাইব্রেরীটাকে ইমপোর্ট করে আনলাম।

এর পরের লাইনে এটা একটা ‘এইচটিটিপিএস’ রিকুয়েস্ট পাঠাচ্ছে https://api.github.com লিংকে, এবং ফাইনালি সেই রিকোয়েস্টের রেসপন্স [২০০] রিমোট সার্ভার থেকে এনে দিচ্ছে যার অর্থ হচ্ছে রিকোয়েস্টটা সার্থক ভাবে কাজ করেছে। বুঝতে পারছেন, এই সফটওয়্যার এর কাজের জন্য একজন সফটওয়্যার ডেভেলপারের প্রয়োজন নেই। আমাদের নেটওয়ার্ক ইঞ্জিনিয়ারদের যে কেউই এই প্যাকেজটা ইন্সটল করে সরাসরি তার রাউটার বা সুইচের সাথে যোগাযোগ করতে পারেন। এই পুরো বইটাতে আমরা রেস্ট এপিআই ব্যবহার করব কারণ এটা ‘স্ট্যান্ডারাইজড’ হয়ে গেছে ইন্ডাস্ট্রি ধরে এবং এটা জেসন (JSON) ডাটা ফরম্যাটকে সাপোর্ট করে।

আপনার নিজের সফটওয়্যার যেটা ঠিকমতো ‘রেস্ট এপিআই’ ব্যবহার করে রাউটার/সুইচকে ঠিকমতো প্রোগ্রাম করতে পারছে কিনা সেটার জন্য একটা টেস্ট করা যেতে পারে। অফিসের রাউটার একটা ভালো অপশন। তা না হলে, EVE NG এর মতো রাউটার সিমুলেশন। কম রিসোর্সে হয়ে যায়। আর, ফাইনালি, কোন কিছু করতে ইচ্ছা না করলে সিসকো’র ডেভনেটের অলওয়েজ-অন IOS XE স্যান্ডবক্স। আসল চালু সুইচ, ২৪/৭ ঘন্টা, চলে সবসময়। পয়েন্ট করেন, https://devnetsandboxiosxe.cisco.com এখানে। তবে, সফটওয়্যার দিয়ে না দেখে একটা টুল ব্যবহার করি, পোস্টম্যান। ওয়েবসার্ভিসেস ‘এপিআই’ দিয়ে সহজে কাজ করার জন্য ডেভেলপারদের প্রিয় জিনিস পোস্টম্যান।

চলুন পরের চ্যাপ্টারে।