Software stack là gì?

Noun Software
stack
Stack phần mềm

Stack phần mềm (software stack) là một tập hợp các thành phần (component) độc lập hoạt động cùng nhau để hỗ trợ việc thực thi một ứng dụng. Các thành phần có thể bao gồm hệ điều hành, giao thức (protocol), runtime environment, cơ sở dữ liệu (database) và lời gọi hàm (function call) được xếp chồng lên nhau trong một hệ thống phân cấp (hierarchy). Thông thường, các thành phần cấp thấp hơn trong hệ thống phân cấp tương tác với phần cứng, trong khi các thành phần cấp cao hơn trong hệ thống phân cấp thực hiện các tác vụ và dịch vụ (service) cụ thể cho người dùng cuối (end user). Các thành phần giao tiếp trực tiếp với ứng dụng thông qua một loạt các lệnh (instruction) phức tạp đi qua stack.

Các thành phần của stack phần mềm ( software stack)

Stack phần mềm (ngăn xếp phần mềm) có thể đơn giản hoặc phức tạp, tùy thuộc vào chức năng ứng dụng mong muốn và có thể kết hợp các thành phần và dịch vụ từ tài nguyên on-premises của tổ chức, nhà cung cấp bên thứ ba (third-party provider) chẳng hạn như nhà cung cấp SaaS hoặc được cung cấp bởi nhà cung cấp đám mây (cloud provider). Không có tiêu chuẩn cơ sở nào cho các thành phần và dịch vụ phải có trong một phần mềm, ngoại trừ việc các tính năng và chức năng của chúng hỗ trợ sự phát triển, phân phối và vận hành của một ứng dụng.

Tùy thuộc vào ứng dụng mong muốn, nó bao gồm tối thiểu là: hệ điều hành, cơ sở dữ liệu, công cụ (tool) hỗ trợ ngôn ngữ lập trình (programming language) và ứng dụng. Các thành phần khác có thể là một phần của một stack phần mềm (software stack) phức tạp hơn bao gồm cơ sở dữ liệu (database), mạng (network), bảo mật, giao diện người dùng (user interface) và hơn thế nữa.

Ví dụ về stack phần mềm (software stack)

LAMP (Linux, Apache, MySQL, PHP): Đây là một stack phần mềm (software stack) nổi tiếng để phát triển web (web development). Lớp thấp nhất trong hệ thống phân cấp của stack là hệ điều hành Linux, giao tiếp với máy chủ web (web server) Apache. Lớp cao nhất của hệ thống phân cấp là ngôn ngữ kịch bản trong trường hợp này là PHP. (Chữ "P" cũng có thể là viết tắt của ngôn ngữ lập trình Python hoặc Perl.) Stack LAMP phổ biến vì các thành phần đều là mã nguồn mở (open source) và ngăn xếp có thể chạy trên phần cứng thông thường (commodity hardware). Ngày nay, các thành phần của LAMP hiện đã được bao gồm trong hầu hết các bản phân phối Linux (Linux distribution). Các nhà phát triển có thể hoán đổi MySQL cho PostgreSQL để tạo một stack LAPP.

MEAN (MongoDB, Express, Angular, Node.js): Nền tảng của stack MEAN là cơ sở dữ liệu MongoDB, máy chủ HTTP là Express và Angular là framework cho JavaScript front-end. Lớp cao nhất của stack là Node.js, một nền tảng (platform) dành cho kịch bản phía máy chủ (server-side). Lưu ý rằng MEAN không dựa trên một hệ điều hành cụ thể, điều này mang lại cho các nhà phát triển sự linh hoạt hơn, nó cũng sử dụng JavaScript, một ngôn ngữ lập trình phổ biến. Các nhà phát triển (developer) có thể sử dụng Ember thay vì Angular, tạo ra một stack MEEN, hoặc sử dụng Vue.js làm framework phát triển front-end trong stack MEVN.

Learning English Everyday