Skip to content

GraphQL

স্কিমা ডিজাইন, রিজলভার, সাবস্ক্রিপশন

0/11 অধ্যায় · 0 XP অর্জিত

  1. 00 GraphQL Building — রোডম্যাপ দশটি অধ্যায় যা 'একটা query তো নিছক একটা string' থেকে শুরু করে batched resolver, auth, subscription আর depth limit সহ nginx-এর পিছনে বসানো একটা self-hosted GraphQL server পর্যন্ত নিয়ে যায়।
  2. 01 GraphQL কী আর কখন ব্যবহার করবেন GraphQL কোনো database নয়, কোনো transport নয়, আর HTTP-এর বিকল্পও নয়। এটা একটা query language আর একটা typed contract — আর এই পার্থক্যটাই এখান থেকে আপনার প্রতিটা সিদ্ধান্তকে আকার দেয়।
  3. 02 Schema-first design Schema হলো আজ পর্যন্ত যত ক্লায়েন্ট আছে তাদের প্রত্যেকের সাথে আপনার contract। প্রথম দুপুরে নেওয়া সিদ্ধান্তগুলো — types, nullability, ID — বছরের পর বছর আপনাকে বয়ে বেড়াতে হয়।
  4. 03 তোমার প্রথম সার্ভার চালানো graphql-yoga, শুরু থেকে শেষ পর্যন্ত, ষাট লাইনে। এই চ্যাপ্টার শেষে তোমার ল্যাপটপে একটা সত্যিকারের GraphQL সার্ভার থাকবে, curl দিয়ে কোয়েরি করা, Postgres-এর সাথে কথা বলছে।
  5. 04 Resolvers আর execution tree একটা resolver হলো একটা ফাংশন যা একটা ভ্যালু রিটার্ন করে। এগুলোকে একটা tree-তে সাজাও, আর সেই tree-ই তোমার API। একবার walk-টা দেখে ফেললে, প্রতিটা অদ্ভুত GraphQL বাগ স্পষ্ট হয়ে যায়।
  6. 05 N+1 সমস্যা তোমার GraphQL সার্ভার এগারোটা SQL কোয়েরি চালায় যেখানে দুটো চালানো উচিত। প্রতিটা backend টিম এটা কঠিন পথে শেখে। এই চ্যাপ্টার হলো রোগনির্ণয় — চ্যাপ্টার 6 হলো নিরাময়।
  7. 06 DataLoader DataLoader একটা ছোট লাইব্রেরি যা একটা event loop tick-এর ভেতরে load গুলো batch করে আর একটা request-এর সময়কাল জুড়ে key ধরে cache করে N+1 সমস্যা ঠিক করে। একবার wire করে দিলে তোমার resolver গুলো পরিষ্কার থাকে আর SQL graph collapse করে যায়।
  8. 07 Mutations, input types, validation Write শুধু side effect সহ query নয়। এদের input type, validation, transaction, idempotency, আর এমন একটা return shape লাগে যা client-কে দ্বিতীয়বার fetch না করেই তার cache update করতে দেয়।
  9. 08 Authentication এবং authorization GraphQL-এ auth মূলত REST-এর মতোই — HTTP-তে JWT বা session, context-এ identity — শুধু পার্থক্য এই যে প্রতিটি field নিজেই একটা ছোট endpoint যার authorization check দরকার। layering-টা ঠিকমতো করো, নাহলে এটা তোমাকে ভোগাবে।
  10. 09 WebSockets-এর উপর Subscriptions Subscription হলো realtime query — client একটা long-lived connection খোলে আর server ঘটনা ঘটার সাথে সাথে event push করে। query আর mutation-এর তুলনায় ভিন্ন transport, ভিন্ন lifecycle, ভিন্ন failure mode।
  11. 10 Production hardening এবং self-host Depth limit, complexity limit, persisted query, error sanitisation, federation, আর পুরো self-hosted nginx deploy। 'আমার laptop-এ চলে' আর 'বৈরী internet-এ টিকে থাকে' — এই দুইয়ের মাঝের সবকিছু।