Skip to main content

🌐 Request āļ‘āļšāļš āļœāļ¸āļą: DNS → TCP → TLS → HTTP → App → DB


☕ ⎄ැāļŗිāļą්⎀ීāļ¸: Enter āļ‘āļš āļ”āļļāļ´ු āļ­āļ­්āļ´āļģāļēේ āļ¸ොāļšāļ¯ āˇ€ෙāļą්āļąේ?

āļ”āļēා phone āļ‘āļšෙāļą් daraz.lk āļšිāļēāļŊා type āļšāļģāļŊා Enter āļ”āļļāļąāˇ€ා. āļ­āļ­්āļ´āļģāļēāļšāļ§āļ­් āļ…āļŠු āļšාāļŊෙāļšිāļą් page āļ‘āļš load ⎀ෙāļąāˇ€ා. āļ’āļš āˇ„āļģිāļ¸ āˇƒාāļ¸ාāļą්‍āļē āļ¯ෙāļēāļš් ⎀āļœේ āļ´ේāļąāˇ€ා āļąේāļ¯? 🤔

āļ’āļ­් āļ‡āļ­්āļ­āļ§āļ¸ āļ’ āļ¸ිāļŊි āļ­āļ­්āļ´āļģ āļšීāļ´āļē āļ‡āļ­ු⎅ේ āļŊොāļšු āļœāļ¸āļąāļš් āļēāļąāˇ€ා. āļ”āļēාāļœේ request āļ‘āļš (server āļ‘āļšāļšිāļą් āļēāļ¸āļš් āļ‰āļŊ්āļŊāļą āļ´āļĢි⎀ිāļŠāļē) āļŊෝāļšāļēේ āļšො⎄ේ ⎄āļģි āļ­ිāļēෙāļą server āļ‘āļšāļš් ⎄ොāļēාāļœෙāļą, āļ†āļģāļš්⎂ිāļ­ āļ´ාāļģāļš් ⎄āļ¯ාāļœෙāļą, data āļœෙāļąāļ­් āļ†āļ´āˇ„ු āļ”āļēාāļœේ screen āļ‘āļšāļ§ āļ‘āļąāˇ€ා. 🚀

āļ¸ේāļš āˇ„ිāļ­āļą්āļą āļšො⎅āļš āļ‰āļŗāļą් āļœාāļŊ්āļŊේ āļēා⎅ු⎀ෙāļšුāļ§ āļŊිāļēුāļ¸āļš් āļē⎀āļąāˇ€ා ⎀āļœේ:

  • 📒 āļ¸ුāļŊිāļą්āļ¸ āļŊිāļ´ිāļąāļē ⎄ොāļēාāļœāļą්āļą āļ•āļąේ (DNS)
  • 📞 āļŠāļ§ āļ´āˇƒ්⎃ේ "āļ¸āļ¸ āļŊිāļēුāļ¸āļš් āļ‘⎀āļąāˇ€ා, āļŊැāļļුāļĢොāļ­් āļšිāļēāļą්āļą" āļšිāļēāļŊා confirm āļšāļģāļœāļą්āļąāˇ€ා (TCP)
  • 🔐 āļšāˇ€ුāļģුāļ­් āļšිāļē⎀āļą්āļą āļļැāļģි ⎀ෙāļą්āļą āļŊිāļēුāļ¸ seal āļšāļģāļąāˇ€ා (TLS)
  • ✉️ āļŊිāļēුāļ¸ āļ‡āļ­ු⎅ේ āļ¸ොāļąāˇ€āļ¯ āļ•āļąේ āļšිāļēāļŊා āļŊිāļēāļąāˇ€ා (HTTP)
  • 🧑‍đŸ’ŧ āļēා⎅ු⎀ා āļŊිāļēුāļ¸ āļšිāļē⎀āļŊා ⎀ැāļŠේ āļšāļģāļąāˇ€ා (App)
  • 🗄️ āļ’āļšāļ§ āļ…⎀⎁්‍āļē ⎀ි⎃්āļ­āļģ āļŊිāļ´ිāļœොāļąු⎀ෙāļą් ⎄ොāļēāļąāˇ€ා (Database)

āļ¸ේ blog āļ‘āļšෙāļą් āļ…āļ´ි āļ¸ේ ⎄ැāļ¸ āļ´ිāļē⎀āļģāļš්āļ¸ zero āļ‰āļŗāļą් architect level āļ‘āļš āˇ€ෙāļąāļšāļ¸් āļšāļ­ා āļšāļģāļ¸ු. Interview āļ‘āļšāļšāļ¯ී āļ…⎄āļą āļĸāļąāļ´්‍āļģිāļēāļ¸ āļ´්‍āļģ⎁්āļąāļēāļš් ⎀āļą "What happens when you type a URL in the browser?" āļ‘āļšāļ§āļ­් āļ¸ේāļšෙāļą් ⎄ොāļŗ āļ‹āļ­්āļ­āļģāļēāļš් āļŊැāļļෙāļēි. 💡

đŸ—ē️ āļ¸ු⎅ු āļœāļ¸āļąāļ¸ āļ‘āļš āļļැāļŊ්āļ¸āļšිāļą්

⎀ි⎃්āļ­āļģ ⎀āļŊāļ§ āļēāļą්āļą āļšāļŊිāļą්, āļ¸ු⎅ු āļœāļ¸āļąāļ¸ āļ´ිāļē⎀āļģ 6āļšිāļą් āļļāļŊāļ¸ු:

  1. DNS 📒 — daraz.lk āļšිāļēāļą āļąāļ¸, computer ⎀āļŊāļ§ āļ­ේāļģෙāļą IP address āļ‘āļšāļšāļ§ (āļ‹āļ¯ා: 104.18.20.35) ⎄āļģ⎀āļąāˇ€ා.
  2. TCP 🤝 — āļ”āļēාāļœේ device āļ‘āļšāļēි server āļ‘āļšāļēි āļ…āļ­āļģ ⎀ි⎁්⎀ා⎃āļ¯ාāļēāļš connection āļ‘āļšāļš් ⎄āļ¯āļąāˇ€ා.
  3. TLS 🔐 — āļ’ connection āļ‘āļš encrypt āļšāļģāļŊා, āļ…āļ­āļģāļ¸ැāļ¯ āļšාāļ§āˇ€āļ­් āļšිāļē⎀āļą්āļą āļļැāļģි āļšāļģāļąāˇ€ා.
  4. HTTP ✉️ — "āļ¸āļ§ home page āļ‘āļš āļ¯ෙāļą්āļą" ⎀āļœේ āļ‡āļ­්āļ­ āļ‰āļŊ්āļŊීāļ¸ āļē⎀āļąāˇ€ා.
  5. App ⚙️ — server āļ‘āļšේ āļ­ිāļēෙāļą code āļ‘āļš request āļ‘āļš āļ­ේāļģුāļ¸් āļ…āļģāļą් logic run āļšāļģāļąāˇ€ා.
  6. DB 🗄️ — āļ…⎀⎁්‍āļē data database āļ‘āļšෙāļą් āļ…āļģāļą් app āļ‘āļšāļ§ āļ¯ෙāļąāˇ€ා.

āļŠāļ§ āļ´āˇƒ්⎃ේ āļ‹āļ­්āļ­āļģāļē āļ†āļ´ු āļ´ාāļģෙāļ¸ āļ†āļ´āˇ„ු āļ”āļēාāļœේ browser āļ‘āļšāļ§ āļœි⎄ිāļą් screen āļ‘āļšේ āļ´ෙāļą්āļąāļąāˇ€ා. 🔁


āļ´ිāļē⎀āļģ

Sri Lankan analogy 🇱🇰

āļ´්‍āļģ⎁්āļąāļēāļ§ āļ¯ෙāļą āļ‹āļ­්āļ­āļģāļē

DNS

1919 āļ§ call āļšāļģāļŊා āļšāļŠේ āļŊිāļ´ිāļąāļē āļ…⎄āļąāˇ€ා

"āļšො⎄ෙāļ¯?"

TCP

āļšāļŠේāļ§ call āļšāļģāļŊා "āļ‡āˇ„ෙāļąāˇ€āļ¯?" "āļ”⎀් āļ‡āˇ„ෙāļąāˇ€ා"

"⎃āļ¸්āļļāļą්āļ° āˇ€ෙāļŊාāļ¯?"

TLS

āļģāˇ„āˇƒ් code ⎀āļ āļąāļēāļš් āļ‘āļšāļŸ āˇ€ෙāļąāˇ€ා

"āļ†āļģāļš්⎂ිāļ­āļ¯?"

HTTP

"āļšොāļ­්āļ­ු āļ‘āļšāļš් āļ‘⎀āļą්āļą" āļšිāļēāļŊා order āļ‘āļš āļ¯ෙāļąāˇ€ා

"āļ¸ොāļšāļš්āļ¯ āļ•āļąේ?"

App

āļšāļŠේ āļļා⎃් order āļ‘āļš āˇ„āļ¯āļąāˇ€ා

"āļšො⎄ොāļ¸āļ¯ āļšāļģāļą්āļąේ?"

DB

āļœāļļāļŠා⎀ෙāļą් āļļāļŠු āļœāļą්āļąāˇ€ා

"data āļšො⎄ෙāļ¯?"

📒 āļ´ිāļē⎀āļģ 1: DNS — Internet āļ‘āļšේ āļ¯ුāļģāļšāļŽāļą āļąාāļ¸ා⎀āļŊිāļē

āļ¸ොāļšāļš්āļ¯ DNS?

DNS (Domain Name System) āļšිāļēāļą්āļąේ website āļąāļ¸් (āļ‹āļ¯ා: google.com) IP address ⎀āļŊāļ§ āˇ„āļģ⎀āļą system āļ‘āļš. Computer ⎀āļŊāļ§ āļąāļ¸් āļ­ේāļģෙāļą්āļąේ āļąෑ, āļ’⎀āļ§ āļ­ේāļģෙāļą්āļąේ āļ…ංāļš āˇ€ිāļ­āļģāļēි. đŸ”ĸ

āļ…āļ´ි phone āļ‘āļšේ "āļ…āļ¸්āļ¸ා" āļšිāļēāļŊා save āļšāļģāļŊා āļ­ිāļēෙāļąāˇ€ා, āļ…ංāļšāļē āļ¸āļ­āļš āļ­ිāļēාāļœāļą්āļąේ āļąෑ. DNS āļšāļģāļą්āļąෙāļ­් āļ’āļšāļ¸āļēි — Internet āļ‘āļšේ contact list āļ‘āļš. 📱

āļšො⎄ොāļ¸āļ¯ DNS ⎀ැāļŠ āļšāļģāļą්āļąේ? ⚙️

āļ”āļēා www.daraz.lk type āļšāˇ…ාāļ¸, browser āļ‘āļš āļ¸ේ ⎀ිāļ¯ිāļēāļ§ āļ´ි⎅ිāļ­ුāļģ ⎄ොāļēāļąāˇ€ා:

  1. Browser cache — "āļ¸āļ¸ āļšāļŊිāļą් āļ¸ේāļš āˇ„ොāļēāļŊා āļ­ිāļēෙāļąāˇ€āļ¯?" āļļāļŊāļąāˇ€ා.
  2. OS cache — Operating System āļ‘āļšේ āļ¸āļ­āļšāļē āļļāļŊāļąāˇ€ා.
  3. Recursive Resolver — ⎃ාāļ¸ාāļą්‍āļēāļēෙāļą් āļ”āļēාāļœේ ISP āļ‘āļšේ (Dialog, SLT ⎀āļœේ) ⎄ෝ 8.8.8.8 ⎀āļœේ public DNS server āļ‘āļšāļš්. āļ¸ෙāļēා āļ­āļ¸āļēි āļ”āļēා ⎀ෙāļąු⎀ෙāļą් ⎄ොāļēāļą "āļ…āļ­āļģāļ¸ැāļ¯ිāļēා".
  4. Root Server — ".lk āļœැāļą āļ¯āļą්āļąේ āļ¸ෙāļēා" āļšිāļēāļŊා TLD server āļ‘āļšāļ§ āļēොāļ¸ු āļšāļģāļąāˇ€ා.
  5. TLD Server (.lk) — "daraz.lk āļœැāļą āļ¯āļą්āļąේ āļ¸ෙāļēා" āļšිāļēāļŊා Authoritative server āļ‘āļšāļ§ āļēොāļ¸ු āļšāļģāļąāˇ€ා.
  6. Authoritative Server — āļ…āˇ€āˇƒාāļą āļ‹āļ­්āļ­āļģāļē, āļ‡āļ­්āļ­ IP address āļ‘āļš āļ¯ෙāļąāˇ€ා. ✅


āļ¸ේāļš āˇ„āļģිāļēāļ§ āļļ⎃් āļ‘āļšේ āļšොāļą්āļ¯ො⎃්āļ­āļģ āļ¸āˇ„āļ­්āļ­āļēāļœෙāļą් āļ´ාāļģ āļ…⎄āļąāˇ€ා ⎀āļœේ: "āļœාāļŊ්āļŊāļ§ āļēāļą්āļą āļ¸ාāļ­āļģ āļļ⎃් āļ‘āļšāļ§ āļąāļœිāļą්āļą", "āļšොāļ§ු⎀ේ āļļ⎄ිāļą්āļą", "āļ‘āļ­āļąිāļą් ⎀āļ¸් āļ´ැāļ­්āļ­āļ§". ⎄ැāļ¸ āļšෙāļąෙāļš්āļ¸ āļŠāˇ…āļŸ āļ´ිāļē⎀āļģ āļšිāļēāļąāˇ€ා. 🚌

TTL āˇƒāˇ„ Caching 💾

⎄ැāļ¸ āļ´ාāļģāļ¸ āļ¸ේ āļ¸ු⎅ු āļœāļ¸āļą āļēāļą āļ‘āļš āļ¸āļą්āļ¯āļœාāļ¸ී āļąි⎃ා, āļ‹āļ­්āļ­āļģāļē āļ§ිāļš āļšාāļŊāļēāļš් cache āļšāļģāļąāˇ€ා. āļ’ āļšාāļŊāļēāļ§ āļšිāļēāļą්āļąේ TTL (Time To Live) — āļ‹āļ­්āļ­āļģāļē āļ¸āļ­āļš āļ­ිāļēාāļœāļą්āļą āļ´ු⎅ු⎀āļą් āļ­āļ­්āļ´āļģ āļœāļĢāļą.

daraz.lk.   300   IN   A   104.18.20.35
#           ↑ TTL = āļ­āļ­්āļ´āļģ 300 (⎀ිāļąාāļŠි 5)

Command line āļ‘āļšෙāļą් āļ”āļēාāļ§āļ¸ try āļšāļģāļą්āļą āļ´ු⎅ු⎀āļą්:

nslookup google.com
dig google.com +trace

💡 Pro Tip: Server āļ‘āļšāļš් migrate āļšāļģāļą්āļą āļšāļŊිāļą් āļ¯āˇ€āˇƒāļšāļ§ āļšāļŊිāļą් TTL āļ‘āļš 60s ⎀āļœේ āļ…āļŠු āļšāļģāļą්āļą. āļ‘āļ­āļšොāļ§ IP āļ‘āļš āļ¸ාāļģු āļšāˇ…ාāļ¸ āļ‰āļš්āļ¸āļąිāļą්āļ¸ āˇ„ැāļ¸ෝāļ§āļ¸ āļ…āļŊුāļ­් IP āļ‘āļš āļŊැāļļෙāļąāˇ€ා.

⚠️ Common Mistake: "DNS change āļšāˇ…ා, āļ’āļ­් ⎀ැāļŠ āļšāļģāļą්āļąේ āļąෑ!" āļšිāļēāļŊා āļšāļŊāļļāļŊ ⎀ෙāļąāˇ€ා. āļļො⎄ෝ⎀ිāļ§ āļ´āļģāļĢ TTL āļ‘āļš āļ‰āˇ€āļģ ⎀ෙāļąāļšāļ¸් cache āļ‘āļšේ āļ´āļģāļĢ IP āļ‘āļš āļ­ිāļēෙāļąāˇ€ා. āļ‰āˇ€āˇƒāļą්āļą ⏳

🤝 āļ´ිāļē⎀āļģ 2: TCP — "āļ‡āˇ„ෙāļąāˇ€āļ¯?" "āļ”⎀් āļ‡āˇ„ෙāļąāˇ€ා!"

āļ¸ොāļšāļš්āļ¯ TCP?

TCP (Transmission Control Protocol) āļšිāļēāļą්āļąේ data āļąැāļ­ි āļąො⎀ී, āļ´ි⎅ි⎀ෙāļŊāļ§, āļąි⎀ැāļģāļ¯ි⎀ āļē⎀āļą්āļą āˇ„āļ¯āļ´ු āļąීāļ­ි āļ¸ාāļŊා⎀āļš් (protocol āļ‘āļšāļš්). IP address āļ‘āļš āļ¯ැāļą් āļ…āļ´ි ⎅āļŸ āļ­ිāļēෙāļąāˇ€ා, āļ’āļ­් āļšāļ­ා āļšāļģāļą්āļą āļšāļŊිāļą් connection āļ‘āļšāļš් ⎄āļ¯ාāļœāļą්āļą āļ•āļąේ.

3-Way Handshake 🤝

TCP connection āļ‘āļšāļš් āļ´āļ§āļą් āļœāļą්āļąේ āļ´āļĢි⎀ිāļŠ 3āļšිāļą්:

  1. SYN — Client: "⎄āļŊෝ, āļšāļ­ා āļšāļģāļą්āļą āļ´ු⎅ු⎀āļą්āļ¯?"
  2. SYN-ACK — Server: "āļ”⎀්, āļ¸āļ§ āļ‡āˇ„ෙāļąāˇ€ා. āļ”āļēාāļ§ āļ¸ා⎀ āļ‡āˇ„ෙāļąāˇ€āļ¯?"
  3. ACK — Client: "āļ”⎀් āļ‡āˇ„ෙāļąāˇ€ා, āļ´āļ§āļą් āļœāļ¸ු!" ✅


āļ…āļ´ේ āļœāļ¸්⎀āļŊ phone call āļ‘āļšāļš් ⎄ිāļ­āļą්āļą: "⎄āļŊෝ... āļ‡āˇ„ෙāļąāˇ€āļ¯?" "āļ† āļ”⎀් āļ”⎀් āļ‡āˇ„ෙāļąāˇ€ා, āļ”āļēාāļ§ āļ¸ා⎀ āļ‡āˇ„ෙāļąāˇ€āļ¯?" "āļ”⎀්, ⎄āļģි āļ¯ැāļą් āļšිāļēāļą්āļą." 📞 āļ’āļš āļ­āļ¸āļēි 3-way handshake āļ‘āļš!

Port āļšිāļēāļą්āļąේ āļ¸ොāļšāļš්āļ¯? đŸšĒ

IP address āļ‘āļš āļœොāļŠāļąැāļœිāļŊ්āļŊේ āļŊිāļ´ිāļąāļē āļąāļ¸්, port āļ‘āļš āļšිāļēāļą්āļąේ āļšාāļ¸āļģ āļ…ංāļšāļē. āļ‘āļšāļ¸ server āļ‘āļšේ services āļœොāļŠāļš් āļ¯ු⎀āļąāˇ€ා, port āļ‘āļšෙāļą් āļ­āļ¸āļēි ⎄āļģි service āļ‘āļšāļ§ āļēāļą්āļąේ.

  • Port 80 → HTTP
  • Port 443 → HTTPS
  • Port 5432 → PostgreSQL database
  • Port 3306 → MySQL database

TCP āļ‘āļšේ ⎃ුāļ´ිāļģි ⎄ැāļšිāļēා⎀āļą් đŸ’Ē

  • Reliability — packet āļ‘āļšāļš් āļąැāļ­ි ⎀ුāļĢොāļ­් āļ†āļ´āˇ„ු āļē⎀āļąāˇ€ා.
  • Ordering — packets āļ…⎀ුāļŊ් āļ´ි⎅ි⎀ෙāļŊāļ§ āļ†āˇ€āļ­් ⎄āļģි āļ´ි⎅ි⎀ෙāļŊāļ§ āˇ„āļ¯āļąāˇ€ා.
  • Flow control — receiver āļ‘āļšāļ§ āļ¯āļģාāļœāļą්āļą āļļැāļģි ⎀ේāļœෙāļą් āļē⎀āļą්āļąේ āļąෑ.

💡 Pro Tip: Handshake āļ‘āļšāļ§ round trip āļ‘āļšāļš් (āļēāļą්āļą-āļ‘āļą්āļą āļēāļą āļšාāļŊāļē) āļēāļąāˇ€ා. āļšො⎅āļš āļ‰āļŗāļą් Singapore server āļ‘āļšāļšāļ§ 40ms ⎀ිāļ­āļģ, US server āļ‘āļšāļšāļ§ 200ms+ ⎀ෙāļą්āļą āļ´ු⎅ු⎀āļą්. āļ’ āļąි⎃ා users āļŊාāļ§ āˇ…āļŸ server (region) āļ­ෝāļģāļą්āļą.

⚠️ Common Mistake: ⎄ැāļ¸ request āļ‘āļšāļšāļ§āļ¸ āļ…āļŊුāļ­් TCP connection āļ‘āļšāļš් ⎄āļ¯āļą āļ‘āļš. Keep-alive āļ´ා⎀ිāļ ්āļ ි āļšāļģāļŊා connection āļ‘āļš reuse āļšāļģāļą්āļą — handshake āļ‘āļšේ ⎀ිāļēāļ¯āļ¸ āļ‘āļš āļ´ාāļģāļēි.

🔐 āļ´ිāļē⎀āļģ 3: TLS — āļģāˇ„āˇƒ් āļšāļ­ා⎀ āļ†āļģāļš්⎂ා āļšāļģāļą āļ…āļœුāļŊ

āļ¸ොāļšāļš්āļ¯ TLS?

TLS (Transport Layer Security) āļšිāļēāļą්āļąේ āļ”āļēාāļœේ device āļ‘āļšāļēි server āļ‘āļšāļēි āļ…āļ­āļģ āļēāļą data encrypt āļšāļģāļą (āļšාāļ§āˇ€āļ­් āļšිāļē⎀āļą්āļą āļļැāļģි āļšේāļ­āļēāļšāļ§ āˇ„āļģ⎀āļą) protocol āļ‘āļš. Browser āļ‘āļšේ 🔒 āļ…āļœුāļŊ āˇƒāˇ„ https:// āļ‘āļšේ āļ­ිāļēෙāļą S āļ‘āļš āļ†āˇ€ේ TLS āļąි⎃ා.

TLS āļąැāļ­ු⎀ āļ”āļēා cafÊ WiFi āļ‘āļšāļšිāļą් bank āļ‘āļšāļ§ login ⎀ුāļĢොāļ­්, āļ’ network āļ‘āļšේ āļ‰āļą්āļą āļ•āļąෑāļ¸ āļšෙāļąෙāļš්āļ§ password āļ‘āļš āļšිāļē⎀āļą්āļą āļ´ු⎅ු⎀āļą්. 😱

TLS Handshake āļ‘āļšේ āļ´්‍āļģāļ°ාāļą āļ¯ේ⎀āļŊ් 3āļš්

  1. Server āļ‘āļš āļšāˇ€ුāļ¯ āļšිāļēāļŊා āļ”āļ´්āļ´ු āļšāļģāļąāˇ€ා đŸĒĒ — Server āļ‘āļš certificate āļ‘āļšāļš් āļ´ෙāļą්āļąāļąāˇ€ා. āļ’āļš Let's Encrypt, DigiCert ⎀āļœේ ⎀ි⎁්⎀ාāˇƒāˇ€āļą්āļ­ Certificate Authority (CA) āļ‘āļšāļš් sign āļšāļģāļŊා āļ­ිāļēෙāļą්āļąේ. ⎄āļģිāļēāļ§ NIC āļ‘āļš āˇ€āļœේ: āļģāļĸāļē āļąිāļšුāļ­් āļšāˇ… āļąි⎃ා āļ…āļ´ි ⎀ි⎁්⎀ා⎃ āļšāļģāļąāˇ€ා.
  2. Encryption āļš්‍āļģāļ¸āļē āļ‘āļšāļŸ āˇ€ෙāļąāˇ€ා 🤝 — āļ¯ෙāļœොāļŊ්āļŊෝāļ¸ support āļšāļģāļą āˇ„ොāļŗāļ¸ algorithm āļ‘āļš āļ­ෝāļģāļąāˇ€ා.
  3. Session key āļ‘āļšāļš් ⎄āļ¯ාāļœāļą්āļąāˇ€ා 🔑 — Public-key cryptography āļ´ා⎀ිāļ ්āļ ි āļšāļģāļŊා, āļ…āļ­āļģāļ¸ැāļ¯ āļšෙāļąෙāļš්āļ§ āļąොāļ¯ැāļąෙāļą්āļą āļģāˇ„āˇƒ් key āļ‘āļšāļš් ⎄āļ¯ාāļœāļą්āļąāˇ€ා. āļŠāļ§ āļ´āˇƒ්⎃ේ ⎄ැāļ¸ data āļ‘āļšāļš්āļ¸ āļ’ key āļ‘āļšෙāļą් encrypt ⎀ෙāļąāˇ€ා.


TLS 1.2 vs TLS 1.3 ⚡

TLS 1.2

TLS 1.3

Handshake round trips

2

1

Repeat visits

1

0 (0-RTT)

āļ´āļģāļĢ, āļ¯ුāļģ්⎀āļŊ algorithms

Allowed

āļ‰āˇ€āļ­් āļšāļģāļŊා

TLS 1.3 āļąි⎃ා HTTPS āļ¯ැāļą් HTTP āļ­āļģāļ¸්āļ¸ āˇ€ේāļœāˇ€āļ­්. āļ‰āļ­ිāļą් "HTTPS slow" āļšිāļēāļą āļšāļ­ා⎀ āļ´āļģāļĢāļēි! 🚀

💡 Pro Tip: Production ⎀āļŊ TLS 1.2 āļ§ āļ…āļŠු versions disable āļšāļģāļą්āļą, certificates auto-renew ⎀ෙāļą්āļą āˇƒāļšāˇƒ් āļšāļģāļą්āļą (Let's Encrypt + certbot ⎄ෝ cloud provider āļœේ managed certificates).

⚠️ Common Mistake: Certificate āļ‘āļš expire ⎀ෙāļą āļ¯ිāļąāļē āļ…āļ¸āļ­āļš āļšāļģāļą āļ‘āļš. āļŊොāļšු ⎃āļ¸ාāļœāļ¸් ⎀āļŊāļ§āļ­් āļ¸ේ āļąි⎃ා outages ⎀ෙāļŊා āļ­ිāļēෙāļąāˇ€ා. Expiry āļ‘āļšāļ§ āļ¯ිāļą 30āļšāļ§ āļšāļŊිāļą් alert āļ‘āļšāļš් āļ¯ාāļą්āļą đŸ“…

✉️ āļ´ිāļē⎀āļģ 4: HTTP — āļ‡āļ­්āļ­ order āļ‘āļš āļ¯ෙāļąāˇ€ා

āļ¸ොāļšāļš්āļ¯ HTTP?

HTTP (HyperText Transfer Protocol) āļšිāļēāļą්āļąේ browser āļ‘āļšāļēි server āļ‘āļšāļēි āļšāļ­ා āļšāļģāļą āļˇා⎂ා⎀. āļ´ාāļģāļ­් ⎄ැāļ¯ු⎀ා (TCP), āļ’āļš āļ†āļģāļš්⎂ිāļ­āļ­් āļšāˇ…ා (TLS). āļ¯ැāļą් āļ­āļ¸āļēි āļ‡āļ­්āļ­āļ§āļ¸ "āļ¸āļ§ āļ¸ොāļšāļš්āļ¯ āļ•āļąේ" āļšිāļēāļŊා āļšිāļēāļą්āļąේ.

āļšāļŠේāļ§ āļœි⎄ිāļą් "āļ…āļēිāļēේ, chicken āļšොāļ­්āļ­ු āļ‘āļšāļš්, āļŊොāļšු⎀āļ§, cheese āļ¯ාāļŊා" āļšිāļēāļąāˇ€ා ⎀āļœේ. 🍛

HTTP Request āļ‘āļšāļš් āļšො⎄ොāļ¸āļ¯ āļ´ේāļą්āļąේ?

GET /products/123 HTTP/1.1
Host: www.daraz.lk
User-Agent: Mozilla/5.0 (Android)
Accept: application/json
Cookie: session_id=abc123
  • Method (GET) — āļ¸ොāļšāļš්āļ¯ āļšāļģāļą්āļą āļ•āļąේ
  • Path (/products/123) — āļ¸ොāļą resource āļ‘āļšāļ¯
  • Headers — āļ…āļ¸āļ­āļģ ⎀ි⎃්āļ­āļģ (āļ¸ොāļą browser āļ‘āļšāļ¯, login session āļ‘āļš, āļ†āļ¯ිāļē)
  • Body — POST ⎀āļœේ āļ’⎀ාāļēේāļ¯ී āļē⎀āļą data (āļ‹āļ¯ා: form āļ‘āļšāļš āˇ€ි⎃්āļ­āļģ)

āļ´්‍āļģāļ°ාāļą HTTP Methods 🛠️

Method

⎀ැāļŠේ

āļšāļŠේ analogy

GET

Data āļœāļą්āļąāˇ€ා

Menu āļ‘āļš āļļāļŊāļąāˇ€ා

POST

āļ…āļŊුāļ­් āļ¯ෙāļēāļš් ⎄āļ¯āļąāˇ€ා

āļ…āļŊුāļ­් order āļ‘āļšāļš් āļ¯ෙāļąāˇ€ා

PUT / PATCH

āļ­ිāļēෙāļą āļ¯ෙāļēāļš් ⎀ෙāļąāˇƒ් āļšāļģāļąāˇ€ා

Order āļ‘āļšāļ§ cheese āļ‘āļšāļ­ු āļšāļģāļąāˇ€ා

DELETE

āļ¸āļšāļąāˇ€ා

Order āļ‘āļš cancel āļšāļģāļąāˇ€ා

Status Codes — Server āļ‘āļšේ āļ‹āļ­්āļ­āļģāļē 📊

  • 2xx ✅ ⎃ාāļģ්āļŽāļšāļēි — 200 OK, 201 Created
  • 3xx ↪️ ⎀ෙāļą āļ­ැāļąāļšāļ§ āļēāļą්āļą — 301 Moved Permanently
  • 4xx 🙋 āļ”āļēාāļœේ ⎀ැāļģැāļ¯්āļ¯ — 400 Bad Request, 401 Unauthorized, 404 Not Found
  • 5xx đŸ”Ĩ server āļ‘āļšේ ⎀ැāļģැāļ¯්āļ¯ — 500 Internal Server Error, 503 Service Unavailable

Server āļ‘āļšāļ§ āļšāļŊිāļą්: CDN āˇƒāˇ„ Load Balancer đŸšĻ

āļŊොāļšු systems ⎀āļŊ request āļ‘āļš āļšෙ⎅ිāļą්āļ¸ app server āļ‘āļšāļ§ āļēāļą්āļąේ āļąෑ:

  • CDN (Content Delivery Network) — āļŊෝāļšāļē āļ´ුāļģා ⎀ි⎃ිāļģුāļĢු servers. Images, CSS, JS ⎀āļœේ static files āļ”āļēාāļ§ āˇ…āļŸāļ¸ āļ­ැāļąිāļą් āļ¯ෙāļąāˇ€ා. Cloudflare, CloudFront ⎀āļœේ.
  • Load Balancer — āļ‘āļą requests app servers āļœොāļŠāļšāļ§ āļļෙāļ¯āļŊා āļ¯ෙāļąāˇ€ා. ⎄āļģිāļēāļ§ bank āļ‘āļšේ "āļŠāˇ…āļŸ customer, counter 3 āļ§" āļšිāļēāļą āļšෙāļąා ⎀āļœේ. đŸĻ

HTTP/1.1 → HTTP/2 → HTTP/3 🚀

  • HTTP/1.1 — āļ‘āļš connection āļ‘āļšāļšිāļą් āļ‘āļš āļ´ාāļģāļšāļ§ āļ‘āļš request āļ‘āļšāļēි.
  • HTTP/2 — āļ‘āļšāļ¸ connection āļ‘āļšෙāļą් requests āļœොāļŠāļš් āļ‘āļšāˇ€āļģ (multiplexing).
  • HTTP/3 — TCP ⎀ෙāļąු⎀āļ§ QUIC (UDP āļ¸āļ­) āļ´ා⎀ිāļ ්āļ ි āļšāļģāļąāˇ€ා. Handshake āļ‰āļš්āļ¸āļą්, mobile network āļ¸ාāļģු ⎀ුāļĢāļ­් connection āļ‘āļš āļšැāļŠෙāļą්āļąේ āļąෑ. đŸ“ļ

⚠️ Common Mistake: Error āļ‘āļšāļš් āļ†āˇ€āļ­් 200 OK āļ‘āļšāļš් return āļšāļģāļŊා body āļ‘āļšේ "error": true āļ¯ාāļą āļ‘āļš. ⎄āļģි status code āļ‘āļš āļ¯ාāļą්āļą — monitoring tools, caches, clients āļ”āļš්āļšොāļ¸ āļ’āļš āļ¸āļ­ āļēැāļ´ෙāļąāˇ€ා.

⚙️ āļ´ිāļē⎀āļģ 5: App — āļšāļŠේ āļšු⎃්⎃ිāļē

Request āļ‘āļš server āļ‘āļš āļ‡āļ­ු⎅āļ§ āļ†āˇ€āļ§ āļ´āˇƒ්⎃ේ

Load balancer āļ‘āļšෙāļą් āļ´āˇƒ්⎃ේ request āļ‘āļš āļ¸ුāļŊිāļą්āļ¸ āļēāļą්āļąේ reverse proxy āļ‘āļšāļšāļ§ (āļ‹āļ¯ා: Nginx) — app āļ‘āļš āļ‰āļ¯ිāļģිāļēේ āļ‰āļą්āļą āļ¯ොāļģāļ§ුāļ´ාāļŊāļēා đŸšĒ. āļ’āļš TLS āļ…āˇ€āˇƒāļą් āļšāļģāļą්āļą, compress āļšāļģāļą්āļą, rate limit āļšāļģāļą්āļą āļ´ු⎅ු⎀āļą්. āļŠāļ§ āļ´āˇƒ්⎃ේ āļ­āļ¸āļēි āļ”āļēාāļœේ application server āļ‘āļšāļ§ (Node.js, Spring Boot, Django, .NET ⎀āļœේ) āļēāļą්āļąේ.

App āļ‘āļš āļ‡āļ­ු⎅ේ āļ¸ොāļšāļ¯ āˇ€ෙāļą්āļąේ? 🧠

  1. Routing — /products/123 āļ‘āļš āˇ„āˇƒුāļģු⎀āļą්āļąේ āļ¸ොāļą function āļ‘āļšāļ¯ āļšිāļēāļŊා ⎄ොāļēāļąāˇ€ා.
  2. Middleware — logging, authentication (āļ”āļēා āļšāˇ€ුāļ¯?), authorization (āļ”āļēාāļ§ āļ¸ේāļš āļšāļģāļą්āļą āļ…āˇ€āˇƒāļģ āļ­ිāļēෙāļąāˇ€āļ¯?) 🔐
  3. Validation — āļ‘āļą data ⎄āļģිāļ¯ āļšිāļēāļŊා check āļšāļģāļąāˇ€ා.
  4. Business logic — āļ‡āļ­්āļ­ āˇ€ැāļŠේ: āļ¸ිāļŊ āļœāļĢāļąāļē, discount, stock āļļāļŊāļąāˇ€ා.
  5. Cache check — "āļ¸ේ āļ‹āļ­්āļ­āļģāļē Redis āļ‘āļšේ āļ­ිāļēෙāļąāˇ€āļ¯?" āļ­ිāļēෙāļąāˇ€ා āļąāļ¸් DB āļ‘āļšāļ§ āļēāļą්āļąේ āļąෑ ⚡
  6. DB call — āļąැāļ­්āļąāļ¸් database āļ‘āļšෙāļą් āļ‰āļŊ්āļŊāļąāˇ€ා.
  7. Response — JSON ⎄ෝ HTML ⎄āļ¯āļŊා āļ†āļ´āˇ„ු āļē⎀āļąāˇ€ා.
// Express.js āļ‹āļ¯ා⎄āļģāļĢāļēāļš්
app.get('/products/:id', authenticate, async (req, res) => {
  const cached = await redis.get(`product:${req.params.id}`);
  if (cached) return res.json(JSON.parse(cached));   // ⚡ Cache hit

  const product = await db.query(
    'SELECT * FROM products WHERE id = $1', [req.params.id]
  );
  if (!product) return res.status(404).json({ message: 'Not found' });

  await redis.set(`product:${req.params.id}`, JSON.stringify(product), 'EX', 60);
  res.json(product);
});

āļšāļŠේ āļļා⎃් ⎀āļœේ: order āļ‘āļš āļšිāļē⎀āļąāˇ€ා, āļšāļŊිāļą් ⎄āļ¯āļŊා āļ­ිāļēෙāļą āļ‘āļšāļš් āļ­ිāļēෙāļąāˇ€āļ¯ āļļāļŊāļąāˇ€ා (cache), āļąැāļ­්āļąāļ¸් āļœāļļāļŠා⎀ෙāļą් āļļāļŠු āļ…āļģāļą් (DB) āļ…āļŊුāļ­ෙāļą් ⎄āļ¯āļąāˇ€ා. 👨‍đŸŗ

💡 Pro Tip: App servers stateless āļšāļģāļą්āļą — session data server memory āļ‘āļšේ āļąෙ⎀ෙāļēි, Redis ⎀āļœේ shared store āļ‘āļšāļš āļ­ිāļēāļą්āļą. āļ‘āļ­āļšොāļ§ load balancer āļ‘āļšāļ§ āļ•āļąෑāļ¸ server āļ‘āļšāļšāļ§ request āļē⎀āļą්āļą āļ´ු⎅ු⎀āļą්, scale āļšāļģāļą්āļąāļ­් āļŊේ⎃ිāļēි.

⚠️ Common Mistake: N+1 query problem — products 50āļš list āļ‘āļšāļšāļ§, āļ‘āļš query āļ‘āļšāļš් ⎀ෙāļąු⎀āļ§ queries 51āļš් āļē⎀āļą āļ‘āļš. ORM āļ´ා⎀ිāļ ්āļ ි āļšāļģāļąāļšොāļ§ āˇ€ි⎁ේ⎂āļēෙāļą් āļ´්‍āļģ⎀ේ⎁āļ¸් ⎀ෙāļą්āļą.

🗄️ āļ´ිāļē⎀āļģ 6: DB — āļœāļļāļŠා āļšාāļ¸āļģāļē

āļ¸ොāļšāļš්āļ¯ Database āļ‘āļšāļš්?

Database āļ‘āļšāļš් āļšිāļēāļą්āļąේ data āļ´ි⎅ි⎀ෙāļŊāļ§ āļœāļļāļŠා āļšāļģāļŊා, āļ‰āļš්āļ¸āļąිāļą් ⎄ොāļēාāļœāļą්āļą āļ´ු⎅ු⎀āļą් system āļ‘āļšāļš්. PostgreSQL, MySQL ⎀āļœේ SQL databases tables (Excel sheet ⎀āļœේ) ⎀ිāļ¯ිāļēāļ§ data āļ­ිāļēාāļœāļą්āļąāˇ€ා. MongoDB ⎀āļœේ NoSQL āļ’⎀ා documents ⎀ිāļ¯ිāļēāļ§.

Query āļ‘āļšāļš āļœāļ¸āļą đŸ”

App āļ‘āļš DB āļ‘āļšāļ§ query āļ‘āļšāļš් āļēැ⎀්⎀ාāļ¸:

  1. Connection pool āļ‘āļšෙāļą් connection āļ‘āļšāļš් āļœāļą්āļąāˇ€ා (āļ…āļŊුāļ­ෙāļą් ⎄āļ¯āļą්āļąේ āļąෑ).
  2. DB āļ‘āļš SQL āļ‘āļš parse āļšāļģāļąāˇ€ා (āļ­ේāļģුāļ¸් āļœāļą්āļąāˇ€ා).
  3. Query planner āļ‘āļš āˇ„ොāļŗāļ¸ āļš්‍āļģāļ¸āļē āļ­ෝāļģāļąāˇ€ා — index āļ‘āļšāļš් āļ´ා⎀ිāļ ්āļ ි āļšāļģāļąāˇ€āļ¯, āļ¸ු⎅ු table āļ‘āļšāļ¸ scan āļšāļģāļąāˇ€āļ¯?
  4. Data disk āļ‘āļšෙāļą් ⎄ෝ memory āļ‘āļšෙāļą් āļ…āļģāļą් result āļ‘āļš app āļ‘āļšāļ§ āļē⎀āļąāˇ€ා.

Index — āļ´ොāļ­ේ āļ…āļą්āļ­ිāļ¸ āļ´ිāļ§ු⎀ේ āļ­ිāļēෙāļą "⎃ූāļ ිāļē" 📖

Index āļ‘āļšāļš් āļąැāļ­්āļąāļ¸්, "product 123" ⎄ොāļēāļą්āļą rows āļŊāļš්⎂ āļœāļĢāļąāļš් āļ‘āļšිāļą් āļ‘āļš āļļāļŊāļą්āļą āˇ€ෙāļąāˇ€ා. Index āļ‘āļšāļš් āļ­ිāļēෙāļąāˇ€ා āļąāļ¸් āļ­āļ­්āļ´āļģāļēෙāļą් āļšොāļ§āˇƒāļšිāļą් ⎄ොāļēාāļœāļą්āļąāˇ€ා. ⚡

CREATE INDEX idx_products_category ON products(category_id);

-- Query āļ‘āļš index āļ‘āļš āļ´ා⎀ිāļ ්āļ ි āļšāļģāļąāˇ€āļ¯ āļļāļŊāļą්āļą:
EXPLAIN ANALYZE SELECT * FROM products WHERE category_id = 5;

Connection Pooling 🏊

DB connection āļ‘āļšāļš් ⎄āļ¯āļą āļ‘āļš āˇ€ිāļēāļ¯āļ¸් ⎀ැāļŠāļš් (TCP + auth + memory). āļ’ āļąි⎃ා connections 10–20āļš් āļšāļŊිāļą්āļ¸ āˇ„āļ¯āļŊා "pool" āļ‘āļšāļš āļ­ිāļēාāļœෙāļą, request āļ‘āļą āļ‘āļą āˇ€ිāļ¯ිāļēāļ§ āļĢāļēāļ§ āļ¯ීāļŊා āļ†āļ´āˇ„ු āļœāļą්āļąāˇ€ා. ⎄āļģිāļēāļ§ āļ­්‍āļģී⎀ීāļŊ් park āļ‘āļšāļš් ⎀āļœේ — ⎄ැāļ¸ āļ´ාāļģāļ¸ āļ…āļŊුāļ­් āļ­්‍āļģී⎀ීāļŊ් āļ‘āļšāļš් ⎄āļ¯āļą්āļąේ āļąෑ, park āļ‘āļšේ āļ‰āļą්āļą āļ‘āļšāļš් āļœāļą්āļąāˇ€ා. đŸ›ē

āļ†āļ´āˇ„ු āļœāļ¸āļą đŸ”

DB → App (JSON ⎄āļ¯āļąāˇ€ා) → Load Balancer → TLS encrypt → TCP → āļ”āļēාāļœේ browser āļ‘āļš → browser āļ‘āļš HTML/CSS/JS render āļšāļģāļŊා screen āļ‘āļšේ āļ´ෙāļą්āļąāļąāˇ€ා. 🎉

⚠️ Common Mistake: SELECT * āļ´ා⎀ිāļ ්āļ ි āļšāļģāļŊා āļ…⎀⎁්‍āļē āļąැāļ­ි columns 50āļš් āļœෙāļą්⎀āļą āļ‘āļš, WHERE āļ‘āļšේ āļ´ා⎀ිāļ ්āļ ි āļšāļģāļą columns ⎀āļŊāļ§ index āļąොāļ¯ාāļą āļ‘āļš. Slow apps ⎀āļŊිāļą් ⎀ැāļŠි āļ´්‍āļģāļ¸ාāļĢāļēāļš āļ¸ූāļŊāļē āļ¸ේ āļ¯ෙāļšāļēි.

🇱🇰 Real-World āļ‹āļ¯ා⎄āļģāļĢāļē: āļœාāļŊ්āļŊේ āļ‰āļŗāļą් Online Order āļ‘āļšāļš්

āļąිāļ¸ාāļŊි āļœාāļŊ්āļŊේ āļ‰āļŗāļą් Dialog 4G āļ‘āļšෙāļą්, online shop āļ‘āļšāļš app āļ‘āļšේ "Place Order" button āļ‘āļš āļ”āļļāļąāˇ€ා āļšිāļēāļŊා ⎄ිāļ­āļ¸ු. 📱 Servers āļ­ිāļēෙāļą්āļąේ Singapore AWS region āļ‘āļšේ.

āļ´āˇ…āļ¸ු āļ´ාāļģāļ§ āļ‘āļąāļšොāļ§ āļšාāļŊāļē āļļෙāļ¯ෙāļą āˇ€ිāļ¯ිāļē (āļ¯āˇ… āļ‡āˇƒ්āļ­āļ¸ේāļą්āļ­ු⎀āļš්, network āļ‘āļš āļ…āļąු⎀ ⎀ෙāļąāˇƒ් ⎀ෙāļąāˇ€ා):

āļ´ිāļē⎀āļģ

⎃ිāļ¯ු⎀ෙāļą āļ¯ේ

āļ¯āˇ… āļšාāļŊāļē

DNS

Resolver āļ‘āļšෙāļą් IP āļ‘āļš āˇ„ොāļēāļąāˇ€ා

20–100 ms

TCP

Singapore āļ‘āļšāļ§ handshake āļ‘āļš

~50 ms

TLS 1.3

Certificate + key exchange

~50 ms

HTTP

POST /orders request āļ‘āļš āļē⎀āļąāˇ€ා

~50 ms

App

Auth, stock check, payment gateway call

50–300 ms

DB

Order āļ‘āļš save āļšāļģāļąāˇ€ා (transaction)

5–20 ms

āļ¸ු⎅ු āļ‘āļšāļ­ු⎀ āļ´āˇ…⎀ෙāļąි āļ´ාāļģāļ§ 300–600ms ⎀ිāļ­āļģ. đŸ¤¯ āļ’āļ­් āļ¯ෙ⎀ෙāļąි order āļ‘āļšේāļ¯ී DNS cache ⎀ෙāļŊා, TCP/TLS connection āļ‘āļš reuse ⎀ෙāļą āļąි⎃ා 100–300ms ⎀āļœේ āļ…āļŠු ⎀ෙāļąāˇ€ා.

āļ¸ෙāļ­āļąිāļą් āļ´ේāļą āˇ€ැāļ¯āļœāļ­්āļ¸ āļ¯ේ: network round trips āļļො⎄ෝ⎀ිāļ§ DB āļ‘āļšāļ§ āˇ€āļŠා ⎀ැāļŠි āļšාāļŊāļēāļš් āļœāļą්āļąāˇ€ා. āļ’ āļąි⎃ා āļŊංāļšා⎀ේ users āļŊා target āļšāļģāļą apps ⎀āļŊāļ§ Singapore ⎄ෝ Mumbai ⎀āļœේ ⎅āļŸ region āļ‘āļšāļš් āļ­ෝāļģāļą āļ‘āļš āļŊොāļšු ⎀ෙāļąāˇƒāļš්. 🌏


Global āļ‹āļ¯ා⎄āļģāļĢ đŸŒ

  • Netflix / YouTube — ⎀ීāļŠිāļēෝ āļ”āļēාāļ§ āˇ…āļŸāļ¸ CDN server āļ‘āļšෙāļą් āļ¯ෙāļąāˇ€ා, āļ’ āļąි⎃ා HTTP step āļ‘āļš āļŊංāļšා⎀ේ ISP network āļ‘āļš āļ‡āļ­ු⎅ෙāļą්āļ¸ āļ‰āˇ€āļģ ⎀ෙāļą්āļąāļ­් āļ´ු⎅ු⎀āļą්.
  • Google — HTTP/3 (QUIC) āļ´ා⎀ිāļ ්āļ ි āļšāļģāļŊා handshake āļšාāļŊāļē āļ…āļŠු āļšāļģāļąāˇ€ා.
  • Banking apps — TLS, certificate pinning, DB transactions āļ‰āļ­ා āļ¯ැāļŠි⎀ āļ´ා⎀ිāļ ්āļ ි āļšāļģāļąāˇ€ා, āļ¸ොāļšāļ¯ āˇƒāļŊ්āļŊි ⎃āļ¸්āļļāļą්āļ° āļąි⎃ා 🔐💰

💡 Pro Tip: Chrome DevTools → Network tab → request āļ‘āļšāļš් click āļšāļģāļŊා Timing āļļāļŊāļą්āļą. āļ¸ේ blog āļ‘āļšේ āļšāļ­ා āļšāļģāļ´ු ⎄ැāļ¸ āļ´ිāļē⎀āļģāļš්āļ¸ (DNS lookup, Initial connection, SSL, Waiting/TTFB) āļ”āļēාāļ§āļ¸ āļ‡āˇƒිāļą් āļ¯āļšිāļą්āļą āļ´ු⎅ු⎀āļą්! 👀

🏛️ Architect-Level Insights: āļ…⎀ුāļģුāļ¯ු 20āļš āļ…āļ­්āļ¯ැāļšීāļ¸ෙāļą්

āļ¸ේ āļœāļ¸āļą āˇ„ොāļŗāļ§ āļ­ේāļģුāļ¸් āļœāļ­්āļ­ාāļ¸, performance āˇƒāˇ„ reliability āļ´්‍āļģ⎁්āļą āˇ„ොāļēāļą්āļą āļ”āļēාāļ§ "X-ray āļ‡āˇƒ්" āļŊැāļļෙāļąāˇ€ා. đŸĻ¸ āļ¸ෙāļą්āļą āļ¸āļ¸ āļŊොāļšු systems ⎀āļŊāļ¯ී āļ‰āļœෙāļą āļœāļ­්āļ­ āļ¯ේ⎀āļŊ්:

1. ⎄ැāļ¸ step āļ‘āļšāļš්āļ¸ failure point āļ‘āļšāļš් ⚠️ DNS down ⎀ුāļĢොāļ­්, certificate expire ⎀ුāļĢොāļ­්, DB connection pool āļ‘āļš āļ´ිāļģුāļĢොāļ­් — āļ•āļąෑāļ¸ āļ‘āļšāļšිāļą් āļ¸ු⎅ු system āļ‘āļšāļ¸ āļąāˇ€āļ­ිāļąāˇ€ා. Production incident āļ‘āļšāļšāļ¯ී āļ¸ේ āļ´ිāļē⎀āļģ 6 checklist āļ‘āļšāļš් ⎀ිāļ¯ිāļēāļ§ āļ´ා⎀ිāļ ්āļ ි āļšāļģāļą්āļą: "āļ´්‍āļģ⎁්āļąāļē āļ¸ොāļą hop āļ‘āļšේāļ¯?"

2. Latency āļ‘āļšāļ­ු ⎀ෙāļąāˇ€ා, āļ’ āļąි⎃ා round trips āļ…āļŠු āļšāļģāļą්āļą đŸ“‰ CDN, connection reuse (keep-alive, HTTP/2), TLS 1.3, caching — āļ¸ේ ⎄ැāļ¸ āļ‘āļšāļšāļ¸ āļ…āļģāļ¸ුāļĢ āļ‘āļšāļēි: āļ…āļąāˇ€āˇ්‍āļē āļœāļ¸āļą් āļ…āļŠු āļšāļģāļą āļ‘āļš.

3. Cache āļšāļģāļą්āļą āļ´ු⎅ු⎀āļą් ⎄ැāļ¸ layer āļ‘āļšāļšāļ¸ cache āļšāļģāļą්āļą đŸ’ž Browser cache → CDN → Redis → DB buffer cache. Request āļ‘āļšāļš් DB āļ‘āļšāļ§ āļēāļą්āļąāļ¸ āļ•āļąේ āļąැāļ­්āļąāļ¸් ⎄ොāļŗāļ¸ DB query āļ‘āļš āļ­āļ¸āļēි āļ’āļš. āļ’āļ­් cache invalidation (āļ´āļģāļĢ data āļ…āļēිāļą් āļšāļģāļą āļ‘āļš) āļœැāļą āļšāļŊිāļą්āļ¸ āˇ„ිāļ­āļą්āļą.

4. Timeouts āˇƒāˇ„ Retries ⎄āļģිāļēāļ§ āļ¯ාāļą්āļą ⏱️ ⎄ැāļ¸ network call āļ‘āļšāļšāļ§āļ¸ timeout āļ‘āļšāļš් āļ¯ාāļą්āļą. Retry āļšāļģāļąāļšොāļ§ exponential backoff (⎄ැāļ¸ āļ´ාāļģāļ¸ āˇ€ැāļŠි āļšාāļŊāļēāļš් āļ‰āļŗāļŊා āļ‹āļ­්⎃ා⎄ āļšāļģāļą āļ‘āļš) āļ´ා⎀ිāļ ්āļ ි āļšāļģāļą්āļą, āļąැāļ­්āļąāļ¸් āļšැāļŠිāļŊා āļ­ිāļēෙāļą service āļ‘āļšāļš් āļ”āļēාāļ¸ āļ­āˇ€āļ­් āļšāļŠāļąāˇ€ා.

5. Observability: āļļāļŊāļą්āļą āļļැāļģි āļ¯ේ ⎄āļ¯āļą්āļą āļļෑ 🔭 Distributed tracing (OpenTelemetry, Jaeger ⎀āļœේ) āļ´ා⎀ිāļ ්āļ ි āļšāļģāļŊා āļ‘āļš request āļ‘āļšāļš් load balancer → app → DB ⎄āļģ⎄ා āļēāļą āļœāļ¸āļą ms ⎀āļŊිāļą් āļļāļŊāļą්āļą. Logs, metrics, traces āļ­ුāļąāļ¸ āļ•āļąේ.

6. āļ†āļģāļš්⎂ා⎀ ⎄ැāļ¸ layer āļ‘āļšāļšāļ¸ đŸ” DNSSEC, TLS everywhere (internal services āļ…āļ­āļģāļ­් — mTLS), WAF, parameterized queries (SQL injection ⎀āļŊිāļą් āļļේāļģෙāļą්āļą), least-privilege DB users. "āļ‡āļ­ු⎅ේ network āļ‘āļš safe" āļšිāļēāļŊා ⎄ිāļ­āļą්āļą āļ‘āļ´ා.

💡 Pro Tip: Interview āļ‘āļšāļšāļ¯ී "What happens when you type a URL?" āļ‡āˇ„ු⎀ොāļ­්, āļ¸ේ āļ´ිāļē⎀āļģ 6 āļšිāļēāļŊා, āļŠāļ§ āļ´āˇƒ්⎃ේ "Production āļ‘āļšේāļ¯ී āļ¸āļ¸ āļ¸ේ āļ‘āļš āļ‘āļš hop āļ‘āļš monitor āļšāļģāļą්āļąේ āļ¸ෙ⎄ෙāļ¸āļēි" āļšිāļēāļŊා āļšāļ­ා āļšāļģāļą්āļą. Senior candidate āļšෙāļąෙāļš් ⎀ෙāļą් āļšāļģāļŊා āļ´ේāļą්āļąේ āļ‘āļ­āļąිāļą් 😉

⚠️ Common Mistake: "App āļ‘āļš slow" āļšිāļēāļŊා āļšෙ⎅ිāļą්āļ¸ code āļ‘āļš optimize āļšāļģāļą්āļą āļ´āļ§āļą් āļœāļą්āļą āļ‘āļš. āļ¸ුāļŊිāļą්āļ¸ measure āļšāļģāļą්āļą — āļļො⎄ෝ⎀ිāļ§ āļ´්‍āļģ⎁්āļąāļē DNS, network distance, ⎄ෝ index āļąැāļ­ි query āļ‘āļšāļš්.

✅ Key Takeaways

  • 📒 DNS — āļąāļ¸ IP address āļ‘āļšāļšāļ§ āˇ„āļģ⎀āļąāˇ€ා. TTL āˇƒāˇ„ caching āļąි⎃ා āļ¯ෙ⎀ෙāļąි āļ´ාāļģ āļ‰āļš්āļ¸āļą්.
  • 🤝 TCP — 3-way handshake āļ‘āļšෙāļą් ⎀ි⎁්⎀ා⎃āļ¯ාāļēāļš connection āļ‘āļšāļš් ⎄āļ¯āļąāˇ€ා. Port āļ‘āļš = āļšාāļ¸āļģ āļ…ංāļšāļē.
  • 🔐 TLS — Certificate āļ‘āļšෙāļą් server āļ‘āļš āļ”āļ´්āļ´ු āļšāļģāļŊා, data encrypt āļšāļģāļąāˇ€ා. TLS 1.3 = ⎀ේāļœāˇ€āļ­් + āļ†āļģāļš්⎂ිāļ­.
  • ✉️ HTTP — Method, path, headers, body āˇƒāˇ„ status codes. CDN āˇƒāˇ„ load balancer āļ…āļ­āļģāļ¸ැāļ¯ āļ‰āļą්āļąāˇ€ා.
  • ⚙️ App — Routing → auth → validation → business logic → cache → DB → response.
  • 🗄️ DB — Indexes āˇƒāˇ„ connection pooling āļąැāļ­ු⎀ scale āļšāļģāļą්āļą āļļෑ.
  • 🏛️ Architect mindset — ⎄ැāļ¸ hop āļ‘āļšāļš්āļ¸ latency āļ‘āļšāļš් āˇƒāˇ„ failure point āļ‘āļšāļš්. Measure āļšāļģāļą්āļą, cache āļšāļģāļą්āļą, round trips āļ…āļŠු āļšāļģāļą්āļą.

📚 āļŠāˇ…āļŸāļ§ āļ‰āļœෙāļą āļœāļą්āļą āļ•āļąේ āļ¸ොāļąāˇ€āļ¯?

  1. OSI Model āˇƒāˇ„ TCP/IP Model — āļ¸ේ layers āļŊෝāļšāļē āļœැāļą āļœැāļšුāļģිāļą්.
  2. Load Balancing Algorithms — Round robin, least connections, consistent hashing.
  3. Caching Strategies — Cache-aside, write-through, CDN cache headers (Cache-Control, ETag).
  4. Database Scaling — Read replicas, sharding, query optimization.
  5. HTTP/3 āˇƒāˇ„ QUIC — Internet āļ‘āļšේ āļ…āļąාāļœāļ­āļē.
  6. Observability — OpenTelemetry, Prometheus, Grafana āļ‘āļš්āļš distributed tracing.

🛠️ āļ…āļ¯ āļšāļģāļą්āļą āļ´ු⎅ු⎀āļą් practice āļ‘āļšāļš්: Terminal āļ‘āļšේ curl -v https://google.com run āļšāļģāļŊා output āļ‘āļš āļšිāļē⎀āļą්āļą. DNS, TCP connect, TLS handshake, HTTP headers āļ”āļš්āļšොāļ¸ āļ‘āļ­āļą āļ´ේāļąāˇ€ා. āļ¸ේ blog āļ‘āļšේ āļšāļ­ා āļšāļģāļ´ු āļœāļ¸āļą āļ”āļēාāļœේ āļ‡āˇƒ් āļ‰āˇƒ්⎃āļģ⎄āļ¸! đŸŽ¯

āļ´්‍āļģ⎁්āļą āļ­ිāļēෙāļąāˇ€ා āļąāļ¸් comment āļ‘āļšāļš් āļ¯ාāļą්āļą. āļŠāˇ…āļŸ blog āļ‘āļšෙāļą් ⎄āļ¸ු⎀ෙāļ¸ු! ☕🙏

Comments

Popular posts from this blog

Unraveling the Apache Hadoop Ecosystem: The Ultimate Guide to Big Data Processing 🌐💾🚀

In the era of big data, organizations are constantly seeking efficient ways to manage, process, and analyze large volumes of structured and unstructured data. Enter Apache Hadoop , an open-source framework that provides scalable, reliable, and distributed computing solutions. With its rich ecosystem of tools, Hadoop has become a cornerstone for big data projects. Let’s explore the various components and layers of the Hadoop ecosystem and how they work together to deliver insights. Data Processing Layer 🛠️🔍 The heart of Hadoop lies in its data processing capabilities, powered by several essential tools: Apache Pig 🐷 : Allows Hadoop users to write complex MapReduce transformations using a scripting language called Pig Latin , which translates to MapReduce and executes efficiently on large datasets. Apache Hive 🐝 : Provides a SQL-like query language called HiveQL for summarizing, querying, and analyzing data stored in Hadoop’s HDFS or compatible systems like Amazon S3. It makes inter...

Essential Unix Terminal Commands: A Handy Guide for Beginners đŸ–Ĩ️

  If you're working in a Unix-like environment (like Linux or macOS), mastering the command line is key to unlocking the full potential of your system. The terminal allows you to perform powerful operations by executing commands directly. In this guide, we’ll cover some of the most commonly used Unix terminal commands to help you get started! 1. alias – Create Shortcuts for Commands 🔗 The alias command allows you to create shortcuts for longer commands, making them easier to type and remember. alias ll= 'ls -la' Here, ll is now an alias for ls -la . You can create any alias you like to save time. 2. at – Schedule a Command for Later ⏰ The at command lets you schedule a command to run at a specified time. at 5:00 PM Enter the command you want to run at 5:00 PM, press Ctrl+D to schedule it. 3. cal – Display a Calendar 📅 The cal command displays a calendar for the current month. You can specify a year to view its entire calendar. cal 2024 4. cat – Concatena...

Real-Time Monitoring with tail -f: A Guide to Watching Logs Like a Pro 🚀📜

  Whether you’re troubleshooting a server or just monitoring your app’s health, there’s one command that stands out for real-time log monitoring: tail -f . This simple command can be a game-changer for anyone managing logs in a Linux or Unix environment. Let’s explore how you can make the most of tail -f for real-time log watching. What is tail -f ? 🧐 The tail command is designed to display the last few lines of a text file. By adding the -f option, you tell tail to keep the file open and display new lines as they’re added. This is incredibly useful for tracking real-time log files that are actively being written to, such as server or application logs. In essence: tail -f /path/to/log/file.log The -f flag lets you “follow” the log as new entries are added, giving you a live, scrolling view of what’s happening inside that file. Why Use tail -f ? 🌟 Imagine you’ve just deployed a new version of your application, and you want to watch for errors. Rather than constantly opening...