Từ coder đến developer – Tôi đi code dạo

Lang thang trên mạng, ta thường nghe nhắc đến những một số thuật ngữ như LAMP Stack, MEAN Stack. Trong quá trình xây dựng sản phẩm start-up, ta cũng hay nghe nhắc tới tầm quan trọng của việc chọn technical stack cho phù hợp.

Đã có bao giờ bạn thắc mắc về ý nghĩa của những thuật ngữ này chưa? Hãy cùng tìm hiểu qua nội dung bài viết này nhé!

Stack là gì, vì sao nó ra đời?

Để làm ra một ứng dụng hoàn chỉnh, chỉ viết code không thôi là không đủ. Khi cần lưu trữ thông tin, ta phải đưa chúng vào cơ sở tài liệu. Sau thời điểm đã hoàn thành phần code, ta phải tìm cách deploy nó, tức là đưa code lên một nơi nào đó để chạy code.

Một Khóa học hoàn thiện không chỉ có code, mà còn phải có nền tảng hệ điều hành và những phần mềm đi kèm (web server, cơ sở tài liệu). Người ta gom những thứ này lại với nhau (giống như ráp Lego ấy), tạo thành technical stack.

Technical Stack, còn gọi là solution stack, là một tập hợp những phần mềm/công nghệ phối hợp chung với nhau, tạo thành một nền tảng để ứng dụng có thể hoạt động được.

Các phòng ban cấu thành một stack

Kết cấu của Stack ra sao?

Một stack thường được cấu trúc bởi các thành phần:

  • Hệ điều hành
  • Web Server
  • Database Server
  • Back-end Programming Language

Giả sử với LAMP Stack, các thành phần này sẽ tuần tự là:

  • Linux
  • Apache
  • MySQL hoặc MariaDB
  • PHP hoặc Python

Mỗi thành phần trong stack đảm nhận một nhiệm vụ riêng biệt.

Vai trò của rất nhiều thành phần trong một stack

Hình trên là tóm tắt cách một ứng dụng web hoạt động. Giả sử với LAMP stack, sever sẽ chạy hệ điều hành Linux, cài server Apache Tomcat. Khi có request từ người dùng, server sẽ gọi code PHP, code này đọc tài liệu từ cơ sở tài liệu MySQL, render ra HTML về phía người dùng.

Thông thường, với những host trên mạng (somee, hawkhost, digital ocean) họ cung cấp sẵn toàn bộ stack (os, web server và database), các bạn chỉ việc up code lên và chạy thôi.

Nếu muốn tìm hiểu cách stack hoạt động, các bạn hãy thử kiếm một con VPS chạy Linux, sau đó tự tùy chỉnh thiết lập các phần mềm cấp thiết. Thú vị lắm đấy ;).

Lựa chọn software stack theo tiêu chí nào?

Thông thường, người ta lựa chọn stack dựa vào khả năng, trình độ của viên chức. Ví dụ cácnhân viên đã quen code PHP thì cứ LAMP Stack mà táng, viên chức khoái hàng Microsoft thì dùng Stack của Microsoft thôi.

Slack, ứng dụng chat cho team khá nổi tiếng cũng được xây dựng trên LAMP stack.

Ngoài ra, người ta còn lựa chọn Stack dựa theo tốc độ phát triển ứng dụng hay tốc độ xử lý. Thuở mới start-up, Twitter chọn stack dựa trên Ruby on Rails để phát triểu ứng dụng nhanh chóng. Sau đó, họ chuyển qua Stack dùng Java/Scala để tăng khả năng chịu tải của khối hệ thống (Nguồn).

Lựa chọn technical stack là một điều quan trọng hàng đầu khi khai mạc xây dựng sản phẩm. Nó xác thành kiến trúc khối hệ thống, ngân sách vận hành cũng như tốc độ và khả năng mở rộng của ứng dụng.

Do vậy, tất cả chúng ta sẽ cùng tìm hiểu về một số stack thông dụng, cùng với những ưu nhược điểm của chúng ở phần dưới nhé!

Một số stack thông dụng

LAMP Stack

Đây là stack thông dụng nhất, được hồ hết các website sử dụng. Stack này gồm có: Linux, Apache, MySQL và PHP/Python/Perl. Những CMS phổ quát như Joomla, WordPress đều dựa trên nền stack này cả.

Các thành phần của LAMP Stack

Điểm “hay ho” của Stack này là những thành phần của nó đều Open Source, không nhất thiết phải bỏ đồng nào ra mua, ngân sách bản quyền bằng 0. Cộng đồng người sử dụng rất nhiều nên bạn rất dễ dàng tìm hướng dẫn khi gặp vấn đề.

Các sever tùy chỉnh thiết lập Linux giá cả cũng rất hạt dẻ. Do đó, nếu code trên LAMP Stack, các bạn cũng có thể dễ dàng tìm host không lấy phí cho ứng dụng của mình.

Stack này còn tồn tại một số dị bản như: MAMP (Trên MAC), WAMP( Trên Win), XAMPP (Trên mọi hệ điều hành).

WISA Stack

Stack này gồm có: Window, IIS, SQL Server, ASP.NET. Có thể thấy, toàn bộ stack sử dụng hàng của Microsoft.

Các thành phần của WISA Stack

Stack này được nhiều doanh nghiệp, tổ chức sử dụng. Thông thường những ứng dụng được code trên nền tảng ASP.NET sẽ lựa chọn stack này.

Ưu điểm của stack này là tốc độ phát triển ứng dụng và khả năng bảo trì: C# là một tiếng nói khá mạnh mẽ, ASP.NET thao tác rất tốt với SQL Server, có nhiều tool tương trợ tận răng cho những người dùng.

Tuy vậy, sử dụng hàng của Microsoft thì ngân sách bản quyền (mua Visual Studio để code, bản quyền Window, SQL Server) không thấp chút nào, do đó các doanh nghiệp nhỏ thường không sử dụng.

Gần đầy, C# đã trở thành tiếng nói Open Source. Vừa rồi .NET Core ra đời, SQL Server đã và đang có mặt trên Linux. Biết đâu không lâu sau tất cả chúng ta sẽ sở hữu một stack miễn phí chạy trên Linux với công nghệ của Microsoft thì sao ;).

MEAN Stack

Một stack cũng tương đối nổi trong vài năm trở lại đây là MEAN stack. Nó gồm có: MongoDB, Express, AngularJS, NodeJS. (Một dị bản khác là MERN, thay Angular và React).

Các thành phần của MEAN Stack

Thật ra stack này sẽ không hoàn toàn đúng chuẩn stack vì nó không gồm có hệ điều hành. NodeJS dùng để làm viết code server-side, có thể hoạt động như web server luôn (Trong thực tế người ta thường dùng thêm nginx làm proxy server).

Cũng như LAMP Stack, toàn bộ các thành phần của MEAN Stack đều là hàng Open Source. Điểm “hay ho” của stack này là toàn bộ các thành phần của nó đều sử dụng tiếng nói JavaScript.

Điều này đồng nghĩa với việc bạn cũng có thể xây dựng toàn bộ một khối hệ thống chỉ bằng một tiếng nói duy nhất, chạy ở cả front-end và back-end, tiết kiệm ngân sách và chi phí thời kì và ngân sách.

Mỗi developer sẽ sở hữu một technical stack ưa thích. Các bạn cùng san sẻ về technical stack mà mình hay dùng trong phần comment nha. Nếu có thắc mắc gì, đừng ngại ngùng đặt thắc mắc nhé!

Tài liệu để các bạn tham khảo thêm:

  • https://en.wikipedia.org/wiki/Solution_stack
  • https://www.upwork.com/hiring/development/choosing-the-right-software-stack-for-your-website/
  • https://en.wikipedia.org/wiki/LAMP_(software_bundle)
  • https://en.wikipedia.org/wiki/MEAN_(software_bundle)

You May Also Like

About the Author: v1000