Vũ khí thứ tám // 백엔드
Thế giới phía sau màn hình — nơi dữ liệu sống, và nơi "A." đang ẩn.
백엔드와 데이터
Chạm nửa phải màn hình để lật trang ›
Tóm tắt các chương trước
Mới cầm cuốn này lên từ Chương 08? Đây là tất cả những gì bạn cần biết:
● Một hệ thống bị tấn công. Website NOX TECH sập lúc 02:44 sáng. Kẻ ký tên "A." dùng AI đánh nhanh hơn con người.
● ZERO đã thành thạo nền tảng. HTML/CSS/JS (Ch01–03), đội IT & quản lý dự án & khách hàng (Ch04–06), ngôn ngữ hiện trường + AI như đồng đội (Ch07–7.1).
● "A." không phải người lạ. Log để lại chữ ký học trò cũ của tiền bối — người anh tưởng đã biến mất ba năm trước. Một mối hận cũ đang lớn dần.
Chương 08 // tầng hầm bí mật
백엔드와 데이터
"Ơ… không ạ. Em thử rồi — trên máy khác thì trống trơn. Mà hôm qua em lỡ xóa lịch sử trình duyệt, thế là… mất sạch việc luôn." Cô cười gượng.
"Đó. localStorage giống cuốn sổ tay em để trong ngăn kéo bàn này — tiện, nhưng chỉ nằm ở một chỗ. Xóa là mất, người khác không xem được. Vậy nếu app có hàng nghìn người dùng, dữ liệu phải cất ở đâu để ai cũng truy cập được và không bao giờ mất? Câu hỏi đó dẫn em xuống một cánh cửa em chưa từng để ý."
Một thao tác như "lưu việc" đưa ZERO đi qua ba tầng: Frontend (giao diện cô bấm), Backend (bộ não xử lý), rồi Database (kho cất dữ liệu). Ba tầng phối hợp trong tích tắc cho mỗi cú nhấp chuột.
"Em không làm gì sai. Vấn đề là em CHƯA nhìn thấy — phần dưới mặt nước của tảng băng. Đây là backend — tầng hầm nơi mọi bí mật được cất giữ. Nếu frontend là sân khấu, thì đây là hậu trường. Cũng là nơi kẻ tấn công thật sự nhắm tới — hắn không quan tâm màu nút bấm, hắn muốn dữ liệu."
Phần trước — tất cả những gì người dùng nhìn thấy và chạm vào: nút bấm, hình ảnh, bố cục. Chính là HTML/CSS/JS bạn đã học.
Phần sau — phần ẩn người dùng không thấy: xử lý logic, kiểm tra mật khẩu, lưu đơn hàng, tính toán. Chạy trên máy chủ (server), không chạy trên máy người dùng.
Ví dụ nhà hàng: Frontend là phòng ăn & thực đơn khách thấy; Backend là nhà bếp nấu món phía sau.
Kho lưu trữ khổng lồ
Nơi lưu trữ có tổ chức mọi thông tin của ứng dụng: tài khoản, bài đăng, đơn hàng… Hình dung như một tủ hồ sơ khổng lồ với vô số ngăn dán nhãn rõ ràng. Dữ liệu thường sắp thành bảng (table) — như bảng tính Excel có hàng và cột.
| id | tên | |
|---|---|---|
| 1 | ZERO | zero@nox.tech |
| 2 | Seo-yeon | sun@nox.tech |
Ngôn ngữ dùng để "nói chuyện" với database: lấy dữ liệu ra, thêm, sửa, xóa. Đọc gần như tiếng Anh tự nhiên.
App To-do quen thuộc — phiên bản database
| ID | NOI_DUNG | NGUOI_DUNG | DA_XONG |
|---|---|---|---|
| 1 | Học SQL | ZERO | ✓ |
| 2 | Sửa bug đăng nhập | ZERO | ✗ |
| 3 | Gọi điện cho khách | Minh | ✗ |
Cùng một app, cùng những thao tác — nhưng giờ chúng sống trong database thay vì trình duyệt. Nhờ vậy, dù ZERO đăng nhập từ điện thoại, laptop công ty hay máy ở nhà, việc của cô vẫn ở đó. Và cả đội cùng nhìn thấy. Đó chính là thứ biến một bài tập cá nhân thành một sản phẩm thật.
Frontend gửi tên+mật khẩu → qua API → Backend nhận, hỏi Database "có người này không?" bằng SQL → Database trả lời → Backend báo lại Frontend "đúng rồi, mời vào". Tất cả trong chớp mắt.
Bốn "động từ" làm được 90% việc
| Lệnh | Nghĩa | Ví dụ đời thường |
|---|---|---|
| SELECT | Lấy dữ liệu ra | "Cho tôi xem danh sách khách hàng" |
| INSERT | Thêm dữ liệu mới | "Thêm một khách hàng mới" |
| UPDATE | Sửa dữ liệu có sẵn | "Đổi số điện thoại của khách này" |
| DELETE | Xóa dữ liệu | "Xóa đơn hàng đã hủy" |
Câu DELETE FROM NguoiDung mà quên WHERE sẽ xóa toàn bộ người dùng. Đây là một trong những lỗi kinh điển và đáng sợ nhất. Luôn kiểm tra kỹ điều kiện WHERE trước khi chạy lệnh sửa/xóa.
Code frontend chạy trên máy người dùng — ai cũng xem được (bấm F12 là thấy hết). Kiểm tra mật khẩu ở frontend = kẻ xấu đọc code là biết cách qua mặt. Mọi việc nhạy cảm (mật khẩu, thanh toán, phân quyền) đều phải làm ở backend — chạy trên máy chủ của bạn. Quy tắc: không bao giờ tin dữ liệu từ phía người dùng.
1. Lệnh SQL nào để lấy dữ liệu ra xem?SELECT — ví dụ SELECT * FROM NguoiDung;
2. Frontend hay backend nên kiểm tra mật khẩu?
Backend — vì code frontend ai cũng xem được, không an toàn để giữ logic nhạy cảm.
3. API đóng vai trò gì?
Là cửa giao tiếp có quy ước, giúp frontend và backend trao đổi dữ liệu.
☐ Vẽ 4 hộp: Frontend → API → Backend → Database
☐ Vẽ mũi tên một lần "đăng nhập" đi qua từng hộp
☐ Viết một câu SQL lấy email của người tên "Seo-yeon"
☐ Tự giải thích: vì sao mật khẩu kiểm ở backend, không phải frontend?
Chương 8.5 // ngôn ngữ giữa các máy
API의 세계
Tiền bối mở một sơ đồ mới. "Khi em mở app thời tiết, nó lấy dữ liệu mưa nắng từ đâu? Khi em đăng nhập bằng tài khoản Google trên một trang khác, làm sao trang đó biết em là ai?" ZERO lắc đầu. Anh mỉm cười: "Câu trả lời cho cả hai là một thứ: API. Hôm nay anh dạy em thứ kết nối cả thế giới số lại với nhau."
Viết tắt của Application Programming Interface — "giao diện lập trình ứng dụng". Là một bộ quy ước cho phép hai chương trình trao đổi với nhau. Như người phục vụ nhà hàng: bạn (chương trình A) gọi món qua phục vụ (API), bếp (chương trình B) nấu rồi gửi lại — bạn không cần vào bếp.
Một lời gọi API trông thế nào?
Khi app cần dữ liệu từ nơi khác, nó gửi một "yêu cầu" (request) tới địa chỉ API, và nhận lại "phản hồi" (response) — thường ở dạng JSON.
Định dạng dữ liệu mà gần như mọi API dùng để trao đổi. Nó trông giống hệt object trong JavaScript — cặp "tên: giá trị". Dễ đọc cho cả người lẫn máy.
Web hiện đại được ghép từ nhiều mảnh: một app có thể dùng API bản đồ Google, API thanh toán ngân hàng, API gửi tin nhắn… Lập trình viên ngày nay không xây mọi thứ từ đầu — họ kết nối các API. Biết gọi API là kỹ năng cốt lõi.
Các "động từ" của API
| Động từ | Nghĩa | Ví dụ |
|---|---|---|
| GET | Lấy dữ liệu về | Xem danh sách bài viết |
| POST | Gửi dữ liệu mới lên | Đăng một bài viết mới |
| PUT | Cập nhật dữ liệu | Sửa bài viết đã có |
| DELETE | Xóa dữ liệu | Xóa một bài viết |
Bốn động từ này tương ứng với bốn lệnh SQL (SELECT/INSERT/UPDATE/DELETE)! Không phải trùng hợp — cả hai đều phản ánh bốn thao tác cơ bản với dữ liệu: đọc, tạo, sửa, xóa — dân trong nghề gọi tắt là CRUD (Create, Read, Update, Delete).
1. API giống vai trò gì trong nhà hàng?
Người phục vụ — truyền yêu cầu vào bếp và mang kết quả ra, bạn không cần vào bếp.
2. JSON dùng để làm gì?
Định dạng dữ liệu chung các API dùng để trao đổi, gồm cặp "tên: giá trị".
3. CRUD là gì?
Bốn thao tác: Create (tạo), Read (đọc), Update (sửa), Delete (xóa).
⚿ Không có trên Google · ghi chép từ người đi trước
✕ "Gọi API" không phải gọi điện — là chương trình của bạn xin dữ liệu từ chương trình khác qua mạng.
✕ Khi dev nói 운영 서버 (server vận hành) họ nói tới production — server thật khách đang dùng, KHÔNG phải "server để vận hành thử". Dịch sai chỗ này là tai họa.
✕ Lỗi 401 = "chưa đăng nhập/không có quyền", 404 = "không tìm thấy", 500 = "server hỏng". Nhớ ba con số này, bạn theo được 80% cuộc họp.
✕ "API bị rate limit" = gọi quá nhiều lần bị chặn — không phải API hỏng.
API /login đẩy lên staging rồi nhé. Bên frontend test thử đi.
Em gọi thử thì trả về 401 anh ạ. Là do token chưa đúng phải không?
Đúng rồi, em gửi kèm header Authorization vào. Đừng test trên 운영 서버 nhé, dùng staging thôi.
💬 "Giải thích sự khác nhau giữa các mã lỗi HTTP 200, 401, 404, 500 bằng ví dụ đời thường."
💬 "Đoạn gọi API này trả về lỗi 401. Liệt kê các nguyên nhân thường gặp và cách kiểm tra từng cái."
Hiểu API, bạn vào nhóm giá trị cao: kết nối frontend với dữ liệu thật · đọc tài liệu API & tự thử endpoint · họp kỹ thuật không bị lạc · làm cầu nối (Bridge SE) / phiên dịch IT có chiều sâu. Kỹ năng đặc biệt quý cho phiên dịch IT, sales IT, kỹ sư cầu nối.
Chương 8.7 // tầng mây
클라우드와 AWS
"Mà… khoan. Cái database đó nó nằm ở đâu? Nếu nó chạy trên laptop em, thì em tắt máy đi ngủ, bạn em ở nhà có còn mở app được không ạ?"
"Câu hỏi hay nhất em từng hỏi. Đúng vậy — nếu database nằm trên máy em, tắt máy là cả thế giới mất app. Cho nên dữ liệu của app thật không bao giờ nằm trên laptop ai cả. Nó sống ở một nơi luôn bật, luôn online, ai cũng tới được — một nơi tên là tầng mây. Và trùng hợp thay — đó cũng chính là nơi 'A.' đang ẩn náu."
"Đám mây" thực ra là gì?
Nghe "cloud — đám mây" rất bay bổng, nhưng sự thật trần trụi hơn: đám mây chỉ là máy tính của người khác — những trung tâm dữ liệu khổng lồ (hàng nghìn máy chủ trong tòa nhà có điều hòa, bảo vệ nghiêm ngặt), do các công ty lớn vận hành rồi cho thuê qua mạng.
Ngày xưa muốn có điện, bạn phải tự mua máy phát, tự bảo trì. Ngày nay chỉ cắm phích và trả tiền theo lượng dùng. Cloud chính là "nhà máy điện" cho sức mạnh máy tính — công ty không cần tự mua server, chỉ "cắm phích" vào AWS và trả tiền theo mức dùng.
Dịch vụ cho thuê sức mạnh máy tính (máy chủ, lưu trữ, mạng) qua Internet, trả tiền theo mức dùng — thay vì tự mua và bảo trì. Khi bạn xem video, dùng app, mở web — gần như chắc chắn nó đang chạy trên cloud.
Nền tảng cloud lớn nhất thế giới, của Amazon. Cung cấp hàng trăm "dịch vụ" nhỏ — nhưng người mới chỉ cần biết vài cái cốt lõi. Ba tên lớn ở công ty Hàn: AWS, Azure (Microsoft), GCP (Google) — trong đó AWS phổ biến nhất.
Chỉ cần hiểu nôm na — để gật đầu trong họp
| Tên | Nói nôm na là gì |
|---|---|
| EC2 | Một máy chủ ảo bạn thuê để chạy code ("đẩy bản mới lên EC2") |
| S3 | Kho chứa file: ảnh, video, bản sao lưu ("ảnh lưu ở S3") |
| RDS | Database chạy sẵn trên cloud, AWS lo bảo trì |
| Lambda | Chạy một đoạn code nhỏ mà không cần server riêng |
| CloudFront | Mạng giao nội dung nhanh khắp thế giới (tăng tốc tải trang) |
| Phần của app | Đặt lên | Vì sao |
|---|---|---|
| Code xử lý (thêm/xóa việc) | EC2 | Cần máy chủ luôn bật chạy logic |
| Bảng ViecCanLam | RDS | Database được AWS lo bảo trì, sao lưu |
| Ảnh đại diện người dùng | S3 | Kho chứa file, rẻ và bền |
| Giao diện tải nhanh mọi nước | CloudFront | Việt Nam hay Hàn đều mở nhanh như nhau |
Khoảnh khắc ZERO đặt app To-do lên cloud, nó không còn là "bài tập chạy trên laptop" nữa — nó thành một sản phẩm thật, online 24/7, ai ở đâu cũng dùng được. Đó cũng là lý do mọi công ty Hàn bạn ứng tuyển đều hỏi về cloud.
(1) Không phải mua máy đắt — thuê bao nhiêu dùng bấy nhiêu. (2) Co giãn tức thì — ngày sale đông khách tự thuê thêm, hết đông lại giảm. (3) Có sẵn bảo mật, sao lưu, mạng toàn cầu. Với người Việt ở Hàn: gần như mọi công ty đều dùng cloud, biết tên các dịch vụ này là điểm cộng thật sự trong phỏng vấn.
✕ "Phải học hết hàng trăm dịch vụ AWS?" — Không. Kỹ sư thật chỉ dùng vài cái. Biết EC2, S3, RDS là đủ trò chuyện mức người mới.
✕ "Cloud đắt và dễ cháy túi?" — Có thật, nhưng do cấu hình sai (quên tắt máy chủ test). Luôn biết mình đang bật cái gì.
✕ "Cloud = an toàn tuyệt đối?" — Sai lầm chết người. Cloud lo hạ tầng, nhưng code & cấu hình của bạn vẫn có thể hở. Kẻ tấn công như 'A.' tìm đúng những khe hở đó.
1. Nói đơn giản nhất, "đám mây" là gì?
Là máy tính (máy chủ) của người khác, đặt trong trung tâm dữ liệu, cho thuê qua Internet.
2. EC2 và S3 khác nhau thế nào?
EC2 là máy chủ ảo để chạy code; S3 là kho chứa file. Một cái "chạy", một cái "chứa".
3. Cloud có nghĩa là an toàn tuyệt đối không?
Không. Cloud lo hạ tầng, nhưng code và cấu hình của bạn vẫn có thể có lỗ hổng. Trách nhiệm bảo mật chia đôi.
"Giờ em hiểu rồi. Kẻ tấn công không cần phá cửa văn phòng mình. Hắn chỉ cần tìm một máy chủ cấu hình lỏng lẻo trên mây — và đi vào từ đó. Muốn chặn hắn, em phải biết tất cả các cánh cửa của mình nằm ở đâu."
Khúc kết chương — cuộc gọi lúc nửa đêm
Màn hình giám sát bùng đỏ. Ai đó đang cố truy cập thẳng vào database — trái tim chứa toàn bộ dữ liệu người dùng. Nếu lọt vào, hắn có thể xóa sạch, hoặc tệ hơn, đánh cắp tất cả.
Rồi điện thoại tiền bối rung lên. Số lạ. Anh bắt máy, bật loa ngoài. Một giọng nói bình thản, gần như thân thiện, vang lên trong căn phòng im phăng phắc:
Đường dây tắt. Tiền bối đứng lặng, tay siết chặt. ZERO nhìn anh, rồi nhìn màn hình. Cô biết khoảnh khắc quyết định đã đến.
Tiền bối viết lá thư này mỗi năm. Nhưng chưa bao giờ dám gửi — vì anh không biết Minh ở đâu. Cho đến đêm nay.
Người gác cổng
Bạn vừa hiểu nơi dữ liệu được cất. Nhưng đèn đỏ chớp dồn dập — có kẻ đang cố đột nhập vào chính tủ hồ sơ đó. Đến lúc học cách khóa mọi cánh cửa: bảo mật. 아홉 번째 무기 — 보안
Còn 12 giờ. Và cuộc đối đầu cuối cùng đã bắt đầu.
Bạn vừa đọc xong Chương 08. "Người gác cổng" — nơi ZERO học cách khóa mọi cánh cửa trước "A." — đang chờ ở Chương 09.
🤍 Cùng xuất bản ZERO — đặt trước giá sáng lập
Đọc online MIỄN PHÍ tất cả các chương (bản giản lược). Bản online FULL — đủ mọi chương & mọi phần chuyên sâu, không lược — chỉ 89k. Khi đủ 500 đơn, sách được in màu & xuất bản; chưa đủ → hoàn 100%.
89k / 229k · bản online FULL / bản in (giá sáng lập)
Không phải tiền mua sách — đây là khoản donate ủng hộ để team viết tiếp phần mới & xuất bản "MẬT DANH: ZERO". 🎁 Nếu sách được xuất bản, người donate được tặng miễn phí 1 cuốn. Đọc online luôn miễn phí nhé!