Cách tốt nhất để học phát triển web backend
24/03/2023 01:29
Trong bài viết blog này, hãy xem cách bạn có thể bắt đầu phát triển back end. Đồng thời, trả lời một số câu hỏi phổ biến nhất mà mọi người thường băn khoăn
Phát triển back-end là gì?
Phát triển giao diện người dùng liên quan đến những gì người dùng nhìn thấy trên màn hình khi họ mở một URL cụ thể do bạn sở hữu. Ngay cả trong một môi trường hoàn toàn tĩnh (chỉ có HTML/CSS), khi ai đó mở một trang web, một số máy chủ trên hành tinh cần phản hồi cho bạn bằng các tệp HTML và CSS đó.
Máy chủ đó chỉ là một máy tính, giống như máy tính bạn sử dụng để duyệt internet. Nhưng nó đã được tinh chỉnh về hiệu suất và không có các thành phần không cần thiết như chuột hoặc bàn phím đi kèm. Và nó nằm cùng với hàng tấn máy tính khác có lẽ trong kho dữ liệu.
Lập trình những máy tính đó theo một số cách đặc biệt được gọi là phát triển back end .
Bạn có thể nghĩ rằng phát triển back-end được gọi là gì bởi vì nó chạy sau lưng người dùng. Khách truy cập vào trang web của bạn không bao giờ thực sự "truy cập" hoàn toàn vào phần cuối. Họ chỉ giao tiếp với máy chủ của bạn, trực tiếp thông qua các cổng để truy cập rất hạn chế (như truyền tệp HTML/CSS) hoặc thậm chí không – được chôn sâu dưới CDN hoặc tường lửa (như Cloudflare).
Bây giờ chúng ta đã hiểu sơ bộ về ý nghĩa của phát triển back-end, hãy đi vào một số câu hỏi thực tế .
Kiến thức lập trình front-end có cần thiết cho back-end không?
TLDR; KHÔNG.
Phát triển phần cuối, như đã đề cập ở trên, liên quan đến việc lập trình một máy tính có thể ở bên kia hành tinh chịu trách nhiệm phản hồi những gì người dùng của bạn nói từ máy tính của chính họ.
Nếu bạn là nhà phát triển back-end toàn thời gian, bạn thực sự không cần quan tâm đến những gì diễn ra bên trong các tệp HTML, CSS và JavaScript mà bạn gửi tới trình duyệt của người dùng. Thay vào đó, bạn phải tập trung nhiều hơn vào hiệu suất của máy chủ, mã máy chủ và thông lượng.
Điều gì đi vào phát triển back end?
Chà, theo sách, bạn có thể nói rằng một người viết mã ứng dụng có thể đáp ứng các yêu cầu HTTP là nhà phát triển back-end.
Nhưng trên thực tế, đôi khi các nhà phát triển back end có thể làm được nhiều việc hơn là chỉ viết các kịch bản máy chủ. Họ có kiến thức để thiết lập máy chủ proxy ngược (NGiNX/HAProxy), cho phép nén và các cách khác để tăng tốc trang web cũng như thiết lập môi trường docker sản xuất.
Để đủ điều kiện trở thành nhà phát triển back-end, tôi muốn nói rằng các kỹ năng tối thiểu mà bạn cần là:
- Kiến thức tốt về ngôn ngữ lập trình mà bạn có thể viết máy chủ HTTP. Ví dụ: C#, Java, Node, PHP, Python, v.v. (có rất nhiều!)
- Quản lý để lưu trữ bằng cPanel (truyền thống) hoặc sử dụng thiết bị đầu cuối bash (lưu trữ đám mây/truyền thống)
- Làm việc với Hệ thống kiểm soát phiên bản (VCS) như git để quản lý và triển khai các bản dựng
Giống như mọi trò chơi đều có các thông số kỹ thuật tối thiểu và được đề xuất, đối với các nhà phát triển back-end, các thông số kỹ thuật đề xuất của tôi sẽ là (bao gồm các kỹ năng tối thiểu):
- NGiNX cho tài sản tệp tĩnh và quản lý máy chủ
- Kỹ năng quản lý cơ sở dữ liệu (SQL/NoSQL)
- Bảo mật của phần back-end (Viết mã an toàn và mạnh mẽ, chạy các ứng dụng trong bộ chứa docker với các đặc quyền hạn chế, bảo vệ chống lại các cuộc tấn công DoS)
- Tự động thay đổi quy mô/Cân bằng tải
Được rồi, nói quá nhiều về những gì diễn ra trong quá trình phát triển back end. Nhưng làm thế nào để bạn trở thành một?
Bắt đầu với yêu cầu tối thiểu
Như tôi đã nói, đối với phần cuối, giống như trò chơi, chúng tôi có một bộ yêu cầu tối thiểu và yêu cầu khuyến nghị. Các yêu cầu tối thiểu bao gồm 3 điều:
Tìm hiểu một ngôn ngữ lập trình back-end
Khi mọi người tự học, họ thường không có nhóm hoặc bất kỳ ai có thể phát triển giao diện người dùng. Tất cả họ đều ở một mình. Vì vậy, bạn sẽ thường phải tự mình tạo tất cả các trang web và máy chủ, ít nhất là trong thời gian đầu.
Mặc dù có rất nhiều sự lựa chọn cho ngôn ngữ lập trình back-end và tôi không thể nghĩ ra bất kỳ ngôn ngữ hệ thống phổ biến nào không hỗ trợ máy chủ HTTP ngay lập tức. Ưu điểm của việc chọn Node là các kỹ năng JavaScript ở mặt trước của bạn có thể chuyển sang mặt sau.
Tuy nhiên, bạn có thể chọn từ nhiều ngôn ngữ khác nhau như Java, C++, C#, Python, PHP, v.v.
Làm thế nào để bạn chọn một, bạn có thể hỏi. Câu trả lời giống như trong bài viết về phát triển giao diện người dùng: ban đầu bạn phải thử mọi thứ và xem cái nào phù hợp nhất với bạn.
Nút rất dễ vì bạn có thể đã lập trình JS cho giao diện người dùng. Nhưng nếu bạn là nhà phát triển Python hoặc Java, bạn có thể thấy những thứ đó rất dễ tiếp thu. Nó hoàn toàn phụ thuộc vào nghề nghiệp và sở thích của bạn.
Tìm hiểu về quản lý lưu trữ
Đã qua rồi cái thời bạn phải mua máy chủ theo cách thủ công và thiết lập chúng tại nhà, kết nối với ISP của bạn, tự mình làm tất cả những việc đó. Đây là thời đại của điện toán đám mây. Bây giờ, khi lưu trữ trang web của bạn, bạn có 2 tùy chọn chủ yếu:
- Sử dụng các máy chủ lưu trữ được quản lý như HostGator hoặc GoDaddy.
- Tìm kiếm các nhà cung cấp dịch vụ lưu trữ đám mây như GCP, AWS hoặc DigitalOcean.
Sự khác biệt giữa hai là gì? Trong cả hai trường hợp, các máy chủ được sở hữu và vận hành bởi các công ty tương ứng. Nhưng điểm khác biệt chính là dịch vụ lưu trữ được quản lý thân thiện với GUI hơn, có bộ công cụ phong phú để xem hệ thống tệp, giám sát việc sử dụng, quản lý email tên miền chính thức của bạn, tải lên/tải xuống tệp từ máy chủ của bạn, v.v. Về cơ bản, đây là một thiết lập dành cho những người có ít kỹ năng kỹ thuật hơn.
Vì lý do đó, tôi không đề xuất các trang web được quản lý như HostGator hoặc GoDaddy cho các nhà phát triển dày dạn kinh nghiệm. Tuy nhiên, nó có thể là một nền tảng tốt để phạm sai lầm và học hỏi, chủ yếu là vì bạn thường có kế hoạch trả trước cho chúng. Bạn cũng sẽ có một giao diện người dùng đẹp mắt để quản lý mọi thứ, điều này không cho phép bạn vô tình bắn hết hóa đơn của mình.
Nhưng khi bạn bắt đầu tăng tốc, tôi khuyên bạn nên chuyển sang nhà cung cấp đám mây. Điều này sẽ lấy đi tất cả các công cụ hay từ cPanel mà bạn đã sử dụng để quản lý tệp và thư mục trên máy chủ. Nhưng đồng thời, nó sẽ thách thức bạn nâng cao kỹ năng của mình rất nhiều.
Ngày nay, rất nhiều nhà cung cấp dịch vụ đám mây cũng cung cấp bản dùng thử miễn phí phù hợp để bạn thực sự có thể dùng thử nền tảng của họ trước khi sử dụng đầy đủ. Tôi lưu trữ trang web của mình dành cho nhà phát triển - codedamn - trên DigitalOcean và nhận thấy nó có sự cân bằng tuyệt vời về độ phức tạp và tính năng của trang web.
Bạn có thể sử dụng liên kết này để đăng ký trên DigitalOcean và nhận tín dụng $100 miễn phí . Các phiên bản DigitalOcean rẻ tới mức 5 đô la một tháng, vì vậy bạn có thời gian sử dụng khoảng 20 tháng cho phiên bản đó, thật tuyệt phải không?
Dù sao, bạn có thể chọn bất kỳ nhà cung cấp đám mây nào. Sau đó, điều quan trọng là học cách quản lý máy chủ chỉ bằng dòng lệnh bằng cách ssh'ing vào nó.
Tìm hiểu về Hệ thống kiểm soát phiên bản
Có các giải pháp khác ngoài Git cho VCS. Nhưng Git được sử dụng nhiều nhất và dễ hiểu nhất.
Là một cá nhân, bạn có thể không đánh giá cao nó ngay lập tức. Nhưng bạn sẽ hiểu tại sao thời điểm bạn bắt đầu làm việc trong một nhóm về nhiều tính năng đồng thời trong dự án của mình lại quan trọng đến vậy.
Git cho phép bạn quản lý quy trình làm việc của mình bằng cách sử dụng các cam kết và nhánh. Các cam kết giống như các điểm kiểm tra trong cơ sở mã của bạn - những điểm mà bạn luôn có thể quay trở lại nếu bạn làm hỏng việc.
Các chi nhánh giống như các thực tế thay thế trong dự án của bạn, nơi có thể xảy ra điều gì đó hoàn toàn khác. Những thực tế thay thế này có thể được tạo ra từ bất kỳ thời điểm nào và có thể được hợp nhất lại bất kỳ lúc nào.
Nếu những thực tế đó có thể được hợp nhất với nhau và tương thích với nhau, thì tốt thôi. Nhưng nếu có xung đột (chẳng hạn như nếu bạn đang sống trong một thực tế và chết ở một thực tế khác), thì bạn phải đưa ra lựa chọn theo cách thủ công. Các thay đổi khác có thể được hợp nhất tự động.
Git cực kỳ thú vị và một khi bạn đã hiểu rõ về nó, bạn sẽ muốn sử dụng nó trong mọi dự án. Bạn có thể lưu giữ lịch sử công việc của mình một cách hiệu quả (nó nén và chỉ lưu trữ sự khác biệt giữa các lần xác nhận).
Nó cũng cho phép bạn tạo các kho lưu trữ git trực tuyến trên các trang web như GitHub, đóng vai trò là nguồn trung tâm của sự thật cho trang web của bạn. Các trang web như GitHub có thể được định cấu hình bằng các webhook đặc biệt có thể thực sự cập nhật trang web của bạn bất cứ khi nào bạn thêm một điểm kiểm tra mới (một cam kết mới) mà bạn không cần phải tự truy cập máy chủ và tự cập nhật nó.
Nguồn: freecodecamp