Home
Shop

Những kiến thức cơ bản ngành IT mà sinh viên công nghệ nào cũng phải biết

Mục lục

kien thuc co ban nganh it ma sinh vien can phai biet

Kiến trúc Web hiện đại

Nội dung chính

Một buổi tối mát mẻ và yên lành, nên mình cũng có hứng viết một bài ngắn liệt kê một số khái niệm, kiến thức cơ bản ngành IT mà bản thân tổng hợp sau một thời gian học tập và làm việc trong ngành nhé.

1. Domain Name System (DNS)

DNS là viết tắt của Domain Name System, được biết đến như hệ thống phân giải tên miền phổ biến nhất thế giới hiện nay. DNS là một công nghệ cốt lõi không thể thiếu trên hệ thống internet ngày nay. Khái niệm cơ bản thì
Mô tả DNS đơn giản
Mô tả DNS đơn giản

DNS dùng để ánh xạ giữa các tên miền và các địa chỉ IP và đưa ra một phương pháp đặc biệt để duy trì và liên kết các ánh xạ này trong một thể thống nhất. Ví dụ từ một tên miền (ví dụ: google.com)  được cấu hình trỏ đến địa chỉ IP 216.58.200.78, khi phía client gõ địa chỉ trang web thì DNS sẽ thực hiện các công việc tra cứu để đưa đến địa chỉ IP phù hợp (server). Việc này tương tự như bạn cần một danh bạ điện thoại để tra cứu số vậy.

Chi tiết về cách DNS hoạt động mình sẽ giải thích ở một bài khác.

2. Load Balancer

Mô tả Load Balancer
Mô tả Load Balancer
Trước khi nói chi tiết về load banlancing, chúng ta cần thảo luận lại về việc horizontal scaling (scale theo chiều ngang) và vertical scaling(scale theo chiều dọc). Sự khác nhau giữa hai kỹ thuật trên là gì? Bạn có thể tham khảo tại post này: Difference between scaling horizontally and vertically for databases
Ngắn gọn thì horizontal scaling là scale bằng cách thêm/giảm các servers ở cụm server. Trong khi đó vertical scaling thì sẽ thêm/giảm các tài nguyên (CPU, RAM,…) cho các máy chủ đang tồn tại. Trong việc phát triển website, chúng ta luôn luôn muốn thực hiện scale horizontally bởi vì nó đơn giản.
  1. Khi chúng ta gọi là “fault tolerant”. Tức là máy chủ crash ngẫu nhiên, network bị downtime, hay data center bị offline. Khi scale ra nhiều máy chủ, đặt ở nhiều zone cho phép bạn lên kế hoạch, để giữ cho ứng dụng tiếp tục chạy (đảm bảo available).
  2. Kỹ thuật horizontal scaling cho phép bạn luôn minimum được chi phí cho các service. Kiểu như không nhất thiết phải chạy 4 servers cả ngày mà nó sẽ scaling về 2 server chẳng hạn.
  3. Cuối cùng, khi bạn scale vertically thì sẽ đến lúc bạn không scale được hệ thống tối ưu nữa. Ví dụ với cloud như aws thì sẽ có những cấu hình bị giới hạn. Hoặc máy vật lý thì cũng sẽ bị giới hạn nếu bạn không thay đổi cấu trúc server vậy lý. Vì thế, ta phải kết hợp nó với scaling horizontally.
Quay trở lại với Load Balancer, đây là kỹ thuật nhận tất cả các requests và định tuyến tới các application servers (các server mà được clone/ hoặc images giống nhau). Và gửi response từ các app server về lại clients. Bất kỳ clients nào cũng nên xử lý request theo cùng một cách, để đảm bảo việc phân phối theo thuật toán để các máy chủ không bị quá tải. Nó có khả năng kết hợp với scaling horizontally để đảm bảo lượng app servers luôn đáp ứng đủ.

3. Mô hình Clients – Servers

Kiến thức cơ bản ngành it - Mô hình Client-Server
Mô hình Client-Server
Mô tả đơn giản thì các Web Application Servers để xử lý business logic từ các request của người dùng và gửi trả response (html, json, …) về lại user browser. Để làm các công việc đó, thì nó cần giao tiếp với các thành phần backend infrastructure như: database, caching layers, job queues, search services, các microservices khác, data/logging queues, và … Như đã đề cập ở trên, chúng ta thường có ít nhất hai lần servers cắm vào load balancers để xử lý các requests của người dùng. Bạn nên biết các thành phần được implement vào app server với từng ngôn ngữ, nền tảng (Nodejs, Ruby, PHP, Scala, Java, C#, .NET, …) và một web MVC framework cho các ngôn ngữ/nền tảng trên (mình sử dụng cả chữ nền tảng vì ngoài các ngôn ngữ thì Nodejs là nền tảng). Tuy nhiên để đi sâu chi tiết vào các ngôn ngữ hay framework thì không nằm trong phạm vi của bài này.

4. Database Server

Mỗi ứng dụng web hiện đại tận dụng một hoặc nhiều database để lưu trữ dữ liệu. Database cung cấp các cách truy vấn, tạo mới, cập nhất hay thực hiện tính toán trên dữ liệu và hơn thế nữa. Trong hầu hết các trường hợp, các app servers giao tiếp trực tiếp với một database (hoặc một cụm database master-replicas, master-slave), các job servers cũng vậy. Ngoài ra, mỗi service có thể có database riêng độc lập với phần còn lại của ứng dụng. 2 loại database chính đề cập ở đây: SQL và NoSQL 
Kiến thức IT - Khác biệt giữa SQL và Non-SQL
Khác biệt giữa SQL và Non-SQL
SQL là viết tắt của Structured Query Language, cung cấp một cách truy vấn tiêu chuẩn cho các bộ dữ liệu quan hệ có thể truy cập được đối tượng rộng. Cơ sở dữ liệu SQL lưu trữ dữ liệu trong các bảng được liên kết với nhau thông qua các khoá, điển hình là số nguyên. Ví dụ đơn giản về lưu trữ thông tin địa chỉ lịch sử cho người dùng. Bạn có thể có hai bảng, user và user_addresses, được liên kết với nhau bởi user_id. Các bảng được liên kết vì cột user_id trong user_addresses là một khóa ngoại tham chiếu cột id trong bảng users.
Có SQL thì tất nhiên sẽ có phủ định của nó, NoSQL :)) . Vậy NoSQL là gì ? Đây là viết tắt của từ Non-SQL, là một bộ công nghệ cơ sở dữ liệu mới hơn, xuất hiện để xử lý lượng dữ liệu khổng lồ (large data) có thể được tạo ra bởi các ứng dụng web quy mô lớn (hầu hết các biến thể của SQL mở rộng theo chiều ngang không tốt và chỉ có thể mở rộng theo chiều dọc đến một điểm nhất định). Nếu bạn không biết gì về NoSQL, mình khuyên bạn nên bắt đầu với một số tài liệu:

5. Caching Service

Một caching service cung cấp đơn giản dạng dữ liệu key/value để lưu và lấy thông tin nhanh chóng trong một expire time nào đó. Các ứng dụng thường tận dụng các dịch vụ lưu trữ để lưu kết quả của các truy vấn hay tính toán phức tạp mất thời gian để có thể lấy lại kết quả từ bộ đệm (cache) thay vì phải truy vấn hay tính toán lại chúng vào lần tiếp theo khi chúng ta cần. Một ứng dụng có thể caching với việc lưu trữ kết quả từ truy vấn cơ sở dữ liệu, gọi đến các dịch vụ bên ngoài, HTML cho một URL nhất định và nhiều hơn nữa. Dưới đây là một số ví dụ từ các ứng dụng thực tế:
Google caching (lưu trữ) kết quả tìm kiếm cho các truy vấn tìm kiếm phổ biến như “dog”, “Taylor Swift” thay vì truy vấn, tính toán lại mỗi lần.
Facebook caching nhiều data mà bạn nhìn thấy sau khi login, như: post data, friends, caching các HTML output từ server-side React rendering, kết quả search,…
Bình chọn
Product has been added to your cart
Liên hệ