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