Bài viết Câu hỏi About RongvangIT
profile Pic
0
0

Đăng ngày:

  60 Lượt xem

Front-end, Server-side, và Infra là những lĩnh vực cụ thể trong phát triển web

Java

Các loại hình của kỹ sư web có thể được phân loại chung như sau:

  • Kỹ sư Front-end (Frontend Engineer): Người tạo ra phần giao diện của ứng dụng, tương tác trực tiếp với người dùng.
  • Kỹ sư Server-side (Server-side Engineer): Người viết mã xử lý động của ứng dụng, đảm nhận các nhiệm vụ như truy cập cơ sở dữ liệu, quản lý tập tin, và các xử lý động khác.
  • Kỹ sư Infra (Infrastructure Engineer): Người xây dựng và duy trì các môi trường máy chủ khác nhau.

Tuy nhiên, do phạm vi công việc của mỗi người có thể khác nhau tùy thuộc vào người làm, nên không thể đặt ra các ranh giới rõ ràng. (Ví dụ, một kỹ sư server-side cũng có thể đảm nhận công việc về hạ tầng hoặc front-end.)

Nếu liên kết với khái niệm “Client-Server”, có thể nói rằng mối quan hệ sẽ như hình sau, nhưng chúng ta cũng thường xuyên không chú ý đến điều này trong công việc hàng ngày.

qiita5a.jpg

  • Kỹ sư Front-end:
    • Tạo ra phần liên quan trực tiếp đến “View” trong hình.
    • Viết mã cho dữ liệu gửi đến phía client (HTML, CSS, JS, v.v.).
  • Kỹ sư Server-side:
    • Viết mã cho phần “Processing” trong hình.
    • Viết mã xử lý truy cập cơ sở dữ liệu, truy cập các tập tin và xử lý động khác không thể nhìn thấy.
  • Kỹ sư Infra:
    • Xây dựng các môi trường máy chủ như máy chủ web và máy chủ cơ sở dữ liệu.
    • Xây dựng cả khuôn khổ toàn bộ của hình trên.
    • Thực hiện các cơ chế cân bằng tải (load balancing), giám sát, và quản lý tham số cho các máy chủ khác nhau.

1. Công việc của Kỹ sư Front-end

Chủ yếu là tạo ra phần giao diện. Các khái niệm chính là:

  • HTML
  • CSS
  • JavaScript

Các thư viện Front-end bao gồm:

  • Framework:
    • AngularJS: Đối với ứng dụng trang đơn (single page applications).
    • Backbone.js: Đối với ứng dụng nhiều trang.
  • DOM manipulation:
    • Zepto: Cho thiết bị di động, nhẹ hơn so với jQuery.
    • jQuery: Hỗ trợ cả cho máy tính và thiết bị di động, nặng hơn Zepto.
    • jqLite: Cho AngularJS.
  • Utilities:
    • Underscore.js: Được sử dụng trong Backbone.js, mạnh mẽ với mảng.
    • Lo-Dash: Bản cải tiến của Underscore.js.
  • Templates:
    • Handlebars: Cho phép viết mẫu giống như các mẫu server-side.
    • ng-template: Dành cho AngularJS, không trộn với các loại mẫu khác.
    • Underscore.js_template.
  • CSS Pre-processors:
    • Sass: Hoạt động tốt khi kết hợp với Compass.
    • Stylus
    • LESS
  • Compilers:
    • UglifyJS2: Minify JavaScript.
    • CSSO: Minify CSS.
  • Build:
    • Grunt: Tự động hóa các nhiệm vụ.
    • gulp: Mới hơn Grunt.
  • Khác:
    • Animation: Create.js.
    • Visualization: D3.js.
    • Yeoman: Kết hợp yo, bower, grunt trong một dự án.

Công việc chủ yếu của Kỹ sư Front-end là sử dụng các thư viện này để:

  • Tự động hóa và làm cho nó có thể tái sử dụng.
    • Tự động hóa với grunt.
    • Bootstraping.
  • Cải thiện hiệu suất.
    • Giảm số lượng yêu cầu: kết hợp tệp, tạo sprite.
    • Giảm kích thước yêu cầu: minify, gzip.

2. Công việc của Kỹ sư Server-side

Với ngôn ngữ phía server, có hai loại chính:

  • Ngôn ngữ biên dịch:
    • Cần biên dịch trước khi chạy. Tốc độ thực thi nhanh hơn.
    • Java, C, C++, v.v.
  • Ngôn ngữ thông dịch:
    • Có thể chạy trực tiếp mà không cần biên dịch. Tốc độ thực thi chậm hơn.
    • Perl, PHP, Ruby, Python, v.v.

Một số ngôn ngữ có thể tương thích cả hai, nên không có đường ranh giới rõ ràng.

Một số thư viện cho server-side, chủ yếu dựa trên Java:

  • DI Containers:
    • Spring: Framework đầy đủ chức năng.
    • Guice: Sử dụng khi cần thêm từng thành phần.
  • MVC:
    • SpringMVC.
    • Jersey.
  • ORM:
    • MyBatis: Kiểm soát hoàn toàn câu lệnh SQL, chi phí học thấp.
    • Hibernate: Tự động tạo câu lệnh SQL.
  • Log output:
    • commons-logging + log4j hoặc slf4j + logback.
  • Template Engines:
    • JSP, Velocity, FreeMarker, Handlebars.java.
  • Quản lý sự phụ thuộc:
    • Maven: Nhiều plugin.
    • Gradle: Linh hoạt.
  • Khác:
    • Lombok: Tự động tạo boilerplate code.
    • Jackson2: Xử lý JSON (chuyển đổi giữa JSON và POJO).
    • Eclipse: Môi trường phát triển tích hợp cho Java (IDE).

Đối với các ngôn ngữ khác ngoài Java:

  • Node.js: Express framework.
  • Ruby: Ruby on Rails framework.
  • PHP: CakePHP framework.

3. Công việc của Kỹ sư Infra

Kỹ sư Infra thường có kiến thức chuyên sâu về Middleware.

3-1. Middleware là gì?

Middleware là một loại phần mềm nằm giữa hệ điều hành và phần mềm ứng dụng, giữa OS và các ứng dụng.

  • Phần mềm:
    • Ứng dụng không có thể nhìn thấy. Bao gồm 3 loại chính.
      • Phần mềm ứng dụng: Word, Excel, Skype, Chrome, Photoshop, Illustrator, v.v.
      • Middleware: Apache, Tomcat, MySQL, Varnish, v.v.
      • Phần mềm cơ bản (OS): Phần mềm quản lý toàn bộ hệ thống. Mac, Windows, iOS, Linux, v.v.
  • Phần cứng:
    • Có thể nhìn thấy. Đối tượng vật chất.
      • Máy tính Let’s Note, iPhone5s, v.v.

3-2. Các loại Middleware

  • Web Server (HTTP Server): Phản hồi nội dung tĩnh.
    • Apache: Phổ biến.
    • Nginx: Cũng có chức năng reverse proxy.
    • Tomcat (Coyote): Dành cho trang động.
  • Servlet Container: Phản hồi nội dung động.
    • Tomcat (Catalina): Phổ biến.
    • Jetty: Đặc biệt sử dụng cho WebSocket.
  • RDBMS (Relational Database Management System):
    • MySQL: Phổ biến.
  • NoSQL:
    • memcached: Hệ thống lưu trữ key-value. Có thể mất dữ liệu khi tắt nguồn.
    • Redis: Hệ thống lưu trữ key-value. Có thể sử dụng cả làm cache và lưu trữ dữ liệu.
    • DynamoDB: Hệ thống lưu trữ key-value, do Amazon phát triển.
    • BigTable: Hệ thống dựa trên cột, do Google phát triển.
    • Cassandra: Hệ thống dựa trên cột.
    • HBase: Hệ thống dựa trên cột.
    • MongoDB: Hệ thống lưu trữ theo tài liệu.
    • CouchDB: Hệ thống lưu trữ theo tài liệu.
  • Reverse Proxy:
    • Varnish: Cache tài nguyên tĩnh.
    • Nginx: Có thể sử dụng cả như web server.
  • Hàng đợi (Queueing):
    • ActiveMQ: Sử dụng làm nhà cung cấp JMS. Đơn giản, chỉ cho Java. Cũ.
    • RabbitMQ: Sử dụng làm nhà cung cấp AMQP. Linh hoạt, có thể sử dụng không chỉ cho Java. Hiện tại, AMQP được khuyến khích hơn.

3-3. Công việc chính của Kỹ sư Infra

  • Xây dựng máy chủ web.
  • Xây dựng máy chủ cơ sở dữ liệu.
  • Phân phối tải.
    • Phân phối bằng cách sử dụng proxy.
    • Load balancing.
    • Sao lưu máy chủ web.
    • Cấu hình master-slave cho cơ sở dữ liệu (MySQL).
  • Thiết lập các tham số cho các máy chủ khác nhau.
  • Xây dựng hệ thống giám sát.

Những công việc này giúp Kỹ sư Infra hỗ trợ Kỹ sư Server-side và Kỹ sư Front-end theo cách hệ thống.

Tổng kết

Trên đây là các tóm tắt về Front-end, Server-side, và Infra là những lĩnh vực cụ thể trong phát triển web rồi. Hi vọng bài viết hữu ích cho mọi người.

dev_pro_it
Đang làm IT tại Japan

Bình luận

Bài viết chưa có bình luận. Hãy trở thành người bình luận đầu tiên!
Sign up for free and join this conversation.
Sign Up
If you already have a RongvangIT account Login
Danh sách thư mục
Bắt đầu ngay với RồngVàngIT - nền tảng chia sẻ kiến thức lập trình tuyệt vời cho kỹ sư Việt Nam!

Hãy đăng nhập để sử dụng hàng loạt các chức năng tuyệt vời của RồngVàngIT !

  1. 1. Bạn sẽ nhận được các bài viết phù hợp bằng chức năng theo dõi tag và người dùng.
  2. 2. Bạn có thể đọc lại các thông tin hữu ích bằng chức năng lưu trữ nội dung.
  3. 3. Chia sẻ kiến thức, đặt câu hỏi và ghi lại quá trình trưởng thành của mình cùng RồngVàngIT !
Tạo tài khoản Đăng nhập
profile Pic