Thuta Learning
Cloud & Deployment
BasicDevOps & Toolsbeginner

Domain နှင့် DNS အခြေခံ

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • Domain နှင့် DNS အခြေခံ concept ကို နားလည်ရှင်းပြနိုင်ရန်
  • Diagram ကို ဖတ်ပြီး architecture ထဲမှာ request/data ဘယ်လိုစီးဆင်းသလဲ ခြေရာခံနိုင်ရန်
  • ကိုယ့် project အတွက် ဘယ်လို ဆုံးဖြတ်သင့်သလဲ ရှင်းပြနိုင်ရန်

နားလည်ထားရမယ့် အချက်

thutatech.com လို domain တစ်ခုဟာ label အပိုင်းအစတွေနဲ့ ဖွဲ့စည်းထားတာဖြစ်ပြီး ဒါကို ဖတ်တတ်တာက hosting အကြောင်းကို ပိုနားလည်စေပါတယ်။

Pieceအဓိပ္ပာယ်
com (rightmost)Top-level domain (TLD) — org, io, uk, mm စသဖြင့် category။
thutatech (middle)Organization က register လုပ်ပြီး ပိုင်ဆိုင်တဲ့ domain ကိုယ်တိုင်။
learn (front)Subdomain — owner က အခမဲ့ ဖန်တီးနိုင်တဲ့ domain ရဲ့ subdivision။

DNS ကတော့ ဒီလို human-readable name တွေကို server အစစ်တွေဆီ map ပေးတဲ့ system တစ်ခုပါ။ အသုံးများဆုံး record type နှစ်ခုကတော့ A record (name ကို IP address တစ်ခုတည့်ကြောင်း ညွှန်ပြ) နဲ့ CNAME record (name ကို name အခြားတစ်ခုဆီ ညွှန်ပြ) ဖြစ်ကြပါတယ်။ ဒီ site ရဲ့ Networking tutorial က record type အားလုံးနဲ့ resolution mechanics ကို အသေးစိတ် ဖုံးလွှမ်းထားပါတယ်။

  • Registrar — domain name ကို ဝယ်ပြီး တရားဝင် ပိုင်ဆိုင်တဲ့ နေရာ (Namecheap, GoDaddy)
  • Host — application (သို့) ဖိုင်တွေ တကယ် နေထိုင်တဲ့ နေရာ
  • DNS — Registrar နဲ့ Host နှစ်ခုကို ချိတ်ဆက်ပေးတဲ့ တံတား
Domain
Organization တစ်ခုက register လုပ်ပြီး ပိုင်ဆိုင်တဲ့ name — thutatech.com ထဲက thutatech ကဲ့သို့။
Subdomain
Domain ရဲ့ အခမဲ့ subdivision တစ်ခု — learn.thutatech.com ထဲက learn ကဲ့သို့။
DNS
Domain name တွေကို IP address လို actual internet resource တွေဆီ map ပေးတဲ့ system။
text
ANATOMY OF A HOSTNAME
---------------------
      learn   .   thutatech   .   com
        |            |            |
    subdomain      domain         TLD
   (optional)    (registered)  (top-level)

 REGISTRAR (you own the name)   vs   HOST (app lives here)
   e.g. Namecheap, GoDaddy             e.g. Vercel, AWS, DigitalOcean
              |                                    |
              +--------- DNS record links them ----+

လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်

အောက်က parseHostname function က hostname string အပြည့်အစုံတစ်ခုကို subdomain, domain, TLD အပိုင်းများအဖြစ် ခွဲထုတ်ပေးပါတယ် — ဒီ lesson prose ထဲမှာ ဖြတ်သန်းလာခဲ့တဲ့ ခွဲခြားမှု အတိုင်းပါပဲ။ Hostname ကို dot တစ်ခုစီမှာ ခွဲပြီး ညာဘက်ကနေ စဉ်းစားတယ် — အနောက်ဆုံး piece ကတော့ TLD အမြဲတမ်းဖြစ်ပြီး၊ ရှေ့က piece ကတော့ domain ဖြစ်ပြီး၊ ကျန်တဲ့ label တွေ (တစ်ခုထက်ပိုနိုင်တယ်) ကတော့ subdomain အဖြစ် သတ်မှတ်ပါတယ်။

thutatech.com, learn.thutatech.com, api.staging.thutatech.com တွေကို run ကြည့်တာက pattern ကို ရှင်းရှင်းလင်းလင်း ပြပါတယ် — bare domain မှာ subdomain လုံးဝ မရှိဘူး၊ learn လို label တစ်ခုတည်းက subdomain ဖြစ်သွားတယ်၊ api.staging လို label အများကြီးက subdomain value တစ်ခုတည်းအဖြစ် ပြန်ချိတ်ပါတယ်။ ဒါက intuition တည်ဆောက်ဖို့ ရိုးရှင်းအောင် ဆောက်ထားတဲ့ parser တစ်ခုပါ၊ production-grade implementation မဟုတ်ပါ — hostname parsing အစစ်မှာ co.uk လို TLD နှစ်လုံး label ရှိတဲ့ edge case တွေ ပိုများပါသေးတယ်၊ ဒီ simple version ကတော့ မကိုင်တွယ်ပါ။

ဒီမှာ ရည်ရွယ်တာက pattern recognition ပါ — hostname တစ်ခုကို ဒီ piece သုံးခုအဖြစ် တွေ့ချက်ချင်း ခွဲမြင်တတ်ပြီဆိုရင် DNS record တွေနဲ့ hosting configuration နှစ်ခုစလုံးက ပို၍ အဓိပ္ပာယ်ရှိလာပါလိမ့်မယ်။

အတူတူ စမ်းရေးကြည့်မယ်

javascript
function parseHostname(hostname) {
  const parts = hostname.split(".");
  if (parts.length <= 2) {
    return { subdomain: null, domain: parts[0], tld: parts[1] };
  }
  const tld = parts[parts.length - 1];
  const domain = parts[parts.length - 2];
  const subdomain = parts.slice(0, parts.length - 2).join(".");
  return { subdomain, domain, tld };
}

const hosts = ["thutatech.com", "learn.thutatech.com", "api.staging.thutatech.com"];

for (const host of hosts) {
  const { subdomain, domain, tld } = parseHostname(host);
  console.log(`${host} -> subdomain: ${subdomain}, domain: ${domain}, tld: ${tld}`);
}
You should see
thutatech.com -> subdomain: null, domain: thutatech, tld: com
learn.thutatech.com -> subdomain: learn, domain: thutatech, tld: com
api.staging.thutatech.com -> subdomain: api.staging, domain: thutatech, tld: com

၅ မိနစ် စမ်းကြည့်

hosts array ထဲကို "blog.learn.thutatech.com" ဆိုတဲ့ hostname အသစ်တစ်ခု ထပ်ထည့်ပါ၊ run ပြီး subdomain value က label နှစ်ခု ပါဝင်လာတာကို confirm လုပ်ပါ။

သတိလေးတစ်ချက်

Domain ကို ဝယ်ထားလို့ hosting ပါ အလိုအလျောက် ရရှိပြီးသားလို့ ထင်ခြင်း — registrar နှင့် host ခွဲခြားမသိခြင်း

Subdomain တစ်ခုကို domain အသစ်တစ်ခုလို့ ထင်ခြင်း — DNS configuration အတွက် parent domain ပေါ်မှာသာ မှီခိုနေတာကို လျစ်လျူရှုခြင်း

MDN Glossary: Domain nameCloud & Deployment

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • Domain ကို ဝယ်ထားလို့ hosting ပါ အလိုအလျောက် ရရှိပြီးသားလို့ ထင်ခြင်း — registrar နှင့် host ခွဲခြားမသိခြင်း
  • Subdomain တစ်ခုကို domain အသစ်တစ်ခုလို့ ထင်ခြင်း — DNS configuration အတွက် parent domain ပေါ်မှာသာ မှီခိုနေတာကို လျစ်လျူရှုခြင်း
  • Localhost မှာ အလုပ်လုပ်တာနဲ့ Production မှာ အလိုအလျောက်အလုပ်လုပ်မယ်လို့ မယူဆပါနှင့် — environment, network, database, security ကွာခြားချက်တွေ ရှိနိုင်ပါတယ်။

လေ့ကျင့်ခန်း

hosts array ထဲကို "blog.learn.thutatech.com" ဆိုတဲ့ hostname အသစ်တစ်ခု ထပ်ထည့်ပါ၊ run ပြီး subdomain value က label နှစ်ခု ပါဝင်လာတာကို confirm လုပ်ပါ။

You'll know it worked when: thutatech.com -> subdomain: null, domain: thutatech, tld: com learn.thutatech.com -> subdomain: learn, domain: thutatech, tld: com api.staging.thutatech.com -> subdomain: api.staging, domain: thutatech, tld: com

Domain နှင့် DNS အခြေခံ | Thuta Learning