Khi bắt đầu tìm hiểu về lập trình web có vô vàn câu hỏi được đặt ra trong đầu bạn mà chưa có lời giải đáp. Các ứng dụng công nghệ bây giờ được ví như tảng băng trôi. Tức là có một phần của ứng dụng mà người dùng có thể nhìn thấy, nhưng phần lớn lại không thấy được gì. Đó chính là Backend.
1. Backend nghĩa là gì?
Trong thế giới máy tính, "backend" đề cập đến bất kỳ phần nào của trang web hoặc chương trình phần mềm mà người dùng không nhìn thấy. Nó tương phản với Frontend , dùng để chỉ Frontend của chương trình hoặc trang web . Trong thuật ngữ lập trình, backend là "lớp truy cập dữ liệu", trong khi frontend là "lớp trình bày".
Hầu hết các trang web hiện đại là động, có nghĩa là nội dung trang web được tạo nhanh chóng. Một trang động chứa một hoặc nhiều tập lệnh chạy trên máy chủ web mỗi khi trang được truy cập. Các tập lệnh này tạo ra nội dung của trang, được gửi đến trình duyệt web của người dùng . Mọi thứ xảy ra trước khi trang được hiển thị trong trình duyệt web là một phần của chương trình Backend.
Ví dụ về các quy trình Backend bao gồm:
Xử lý một yêu cầu trang web đến
Chạy một tập lệnh (PHP, ASP , JSP , v.v.) để tạo HTML
Truy cập dữ liệu, chẳng hạn như một bài báo, từ cơ sở dữ liệu bằng cách sử dụng truy vấn SQL
Lưu trữ hoặc cập nhật hồ sơ trong cơ sở dữ liệu
Mã hóa và giải mã dữ liệu
Xử lý tải lên và tải xuống tệp
Xử lý đầu vào của người dùng qua JavaScript
Backend là những phần người dùng không bao giờ nhìn thấy.
2. Các kỹ năng và công cụ khi làm Backend
Để máy chủ, cơ sở dữ liệu và các ứng dụng có thể giao tiếp được với nhau, những người lập trình viên backend sẽ sử dụng những công cụ ngôn ngữ của server – side như là ruby, PHP, Java, Python,.. để có thể tạo dựng một ứng dụng, bên cạnh đó cùng với công cụ như là SQL Server, Oracle và MySQL để thay đổi dữ liệu, lưu trữ hoặc tìm kiếm để phục vụ người dùng trong frontend.
Công việc của người lập trình backend cũng đòi hỏi người đó có những yêu cầu kinh nghiệm về các công cụ như CakePHP, Symfony, Zend,.. ngoài ra thì bạn cũng cần trang bị cho mình kinh nghiệm về quản lý phiên bản như của Git, CVS, SVN và kinh nghiệm trong Linux để triển khai và phát triển hệ thống.
Những người làm công việc lập trình backend này để tạo ra hoặc đóng góp phát triển các ứng dụng web thì cần sử dụng công cụ trên cùng với code sạch, portable được lên tài liệu cẩn thận trước đó. Nhưng khi làm việc với code đòi hỏi họ kết hợp những yếu tố kỹ thuật và đưa ra được những giải pháp hiệu quả nhất cho công nghệ kiến trúc.
3. Sự khác nhau giữa Backend với frontend
Frontend và backend là hai thuật ngữ được sử dụng nhiều nhất trong ngành công nghiệp máy tính; theo một cách nào đó, chúng đã trở thành từ thông dụng. Chúng quy định loại công việc bạn làm với tư cách là nhà phát triển phần mềm, công nghệ bạn sử dụng và số tiền bạn được trả.
Vì vậy, hãy nói về sự khác biệt giữa hai thuật ngữ này, tại sao chúng tồn tại ngay từ đầu và những con đường khác nhau mà bạn có thể đi trong sự nghiệp phát triển phần mềm của mình.
3.1. Kết xuất trang web
Để bắt đầu hành trình này, chúng ta cần hiểu khái niệm về kết xuất trang web. Theo thuật ngữ của giáo dân, kết xuất trang web có nghĩa là tạo hoặc kết xuất đầu ra HTML. HTML là một ngôn ngữ đánh dấu mà các nhà phát triển web sử dụng để tạo các trang web. Người ta nói rằng kết xuất trang web có thể xảy ra ở cả cấp độ phía máy chủ hoặc phía máy khách, vậy điều này có nghĩa là gì? Cần lưu ý rằng frontend và client-side là những từ đồng nghĩa. Điều này cũng đúng với Backend và phía máy chủ.
Kết xuất phía máy chủ (Backend)
Cách đây không lâu, kết xuất phía máy chủ, hoặc phát triển web back-end, là cách thực tế để tạo trang web và ứng dụng web. Bạn truy cập một trang, gửi yêu cầu về nội dung, máy chủ xử lý yêu cầu này và tạo phản hồi được gửi trở lại trình duyệt của bạn.
Khi một trang web hiển thị phía máy chủ, tất cả các quy trình liên quan đến việc tạo trang HTML mà trình duyệt web của bạn có thể hiểu được đều được xử lý trên một máy chủ từ xa lưu trữ trang web hoặc ứng dụng web. Điều này bao gồm việc truy vấn cơ sở dữ liệu để tìm thông tin và xử lý bất kì logic nào mà ứng dụng web của bạn yêu cầu.
Trong khi máy chủ từ xa đang bận làm việc, trình duyệt web của bạn không hoạt động, chờ máy chủ xử lý xong yêu cầu và gửi phản hồi. Khi nhận được phản hồi, các trình duyệt web sẽ giải thích nó và hiển thị nội dung trên màn hình.
Kết xuất phía máy khách (Frontend)
Trong những ngày hiện đại hơn, một hình thức kết xuất trang web mới xuất hiện được gọi là kết xuất phía máy khách hoặc phát triển Frontend.
Với kết xuất phía máy khách, việc hiển thị nội dung sẽ diễn ra trong máy tính của bạn thay vì máy chủ web từ xa sử dụng ngôn ngữ thực tế của web, JavaScript. Về mặt thực tế, điều đó có nghĩa là chỉ cần một máy chủ để phục vụ ứng dụng web thô và trình duyệt sẽ chịu trách nhiệm hiển thị ứng dụng này ở dạng cuối cùng, HTML. Điều đó cũng có nghĩa là một số logic liên quan đến việc tạo trang web, đặc biệt là logic phụ trách xử lý cách mọi thứ được trình bày cho người dùng trên màn hình (được gọi là logic trình bày) được xử lý ở phía máy khách.
Kết xuất phía máy khách trở nên phổ biến với sự ra đời của các thư viện JavaScript như Angular, React và Vue.
3.2. Kết xuất đẳng hình
Còn được gọi là kết xuất phổ quát, kết xuất đẳng hình là một kỹ thuật mới được sử dụng trong phát triển web hiện đại. Ý tưởng đằng sau kết xuất isomorphic là hiển thị một ứng dụng web được phát triển bằng khung JavaScript như Angular, React hoặc View, ở phía máy chủ lần đầu tiên một trang được tải và ở phía máy khách sau đó.
Để làm mọi thứ phức tạp hơn nữa, có một hình thức kết xuất khác được gọi là kết xuất trước, kết xuất nội dung tại thời điểm biên dịch.
Vị trí hiển thị trang web là một quyết định thường dựa trên loại ứng dụng và nhân khẩu học ứng dụng và sẽ khác nhau giữa các nhóm và doanh nghiệp này sang doanh nghiệp khác.
3.2.1. Phát triển front-end và back-end khác nhau như thế nào/
Bây giờ chúng ta đã hiểu các loại phương pháp kết xuất trang web khác nhau, dễ hiểu hơn rằng phát triển Frontend là nghệ thuật tạo các trang web và ứng dụng web hiển thị ở phía máy khách.
Các công nghệ được sử dụng để phát triển front-end
Mặc dù có nhiều loại công nghệ và ngăn xếp khác nhau, hầu hết các nhà phát triển web front-end đều sử dụng HTML, CSS và JavaScript, các khối xây dựng trên thực tế của web và các khuôn khổ phía máy khách như Angular, React, Stencil và Vue.
Trong khi phát triển front-end là làm cho các trang web và ứng dụng web hiển thị ở phía máy khách, phát triển back-end là tất cả về việc làm cho các ứng dụng này hiển thị phía máy chủ. Nhưng nó liên quan nhiều hơn thế. Mặc dù tuyên bố trước đó đúng, các nhà phát triển back-end cũng tạo ra các dịch vụ xử lý logic nghiệp vụ và truy cập các tài nguyên khác như cơ sở dữ liệu, máy chủ tệp, dịch vụ đám mây và hơn thế nữa. Các dịch vụ này là xương sống của bất kỳ ứng dụng nào và có thể được truy cập và sử dụng không chỉ bởi các ứng dụng kết xuất phía máy chủ mà còn từ các ứng dụng kết xuất phía máy khách.
3.2.2. Các công nghệ được sử dụng để phát triển back-end
Khi các nhà phát triển backend tạo ứng dụng hiển thị ở phía máy chủ, họ sử dụng các khối xây dựng giống như các nhà phát triển front-end: HTML, CSS và JavaScript.
Các nhà phát triển back-end cũng làm việc với các ngăn xếp phần mềm bao gồm hệ điều hành, máy chủ web, khuôn khổ, ngôn ngữ, API lập trình và hơn thế nữa. Các khuôn khổ, ngôn ngữ và API lập trình trong các ngăn xếp này được sử dụng để hiển thị các trang web và ứng dụng web phía máy chủ và để tạo các dịch vụ mà các ứng dụng khác có thể sử dụng.
Các ngăn xếp khét tiếng bao gồm .NET, MEAN và LAMP, nhưng còn nhiều hơn nữa và mỗi ngăn bao gồm một ngôn ngữ lập trình được lựa chọn, chẳng hạn như C #, JavaScript, Java, Go, Python hoặc PHP.
Bây giờ, sự khác biệt giữa Frontend và Backend sẽ rõ ràng hơn, cũng như các hoạt động khác nhau được thực hiện bởi các nhà phát triển hoạt động trên cả hai đầu của dây. Theo thuật ngữ thực tế, Frontend có nghĩa là trình duyệt và chương trình Backend, máy chủ hoặc gần đây là đám mây.
Nếu bạn thích Frontend, quan tâm đến thiết kế âm thanh và thích các khía cạnh trực quan của việc tạo ứng dụng, thì có lẽ Frontend là nơi bạn muốn dành thời gian của mình như một nhà phát triển phần mềm. Frontend thú vị không chỉ trực quan mà còn từ quan điểm lập trình; bạn sẽ dành hàng giờ vô tận để viết logic giúp trang web của bạn có giao diện và hoạt động theo cách mà các nhà thiết kế dự định.
Nếu bạn muốn dành thời gian giải quyết các vấn đề kinh doanh, viết thuật toán, làm việc trên đám mây và tạo các dịch vụ và API, thì phần Backend là dành cho bạn.
Nếu bạn thích cả hai và cảm thấy thích thú và thoải mái như nhau với tất cả các khía cạnh của việc tạo ứng dụng web, thì sự nghiệp như một nhà phát triển toàn diện là điều bạn muốn.
Dù bạn chọn con đường nào, chưa bao giờ tốt hơn để trở thành một nhà phát triển phần mềm.
St