Chia sẻ
//5 cách cài đặt application server phổ biến

5 cách cài đặt application server phổ biến

Lời giới thiệu

Có nhiều vấn đề cần phải cân nhắc khi quyết định dùng mô hình server nào cho application của bạn, chẳng hạn như hiệu suất, khả năng mở rộng, tính sẵn có, độ tin cậy, chi phí và dễ quản lý.

Dưới đây là phần trình bày về danh sách các thiết lập server phổ biến thường dùng, mỗi phần sẽ có một đoạn giải thích ngắn gọn bao gồm cả ưu điểm và nhược điểm giúp mọi người có cái nhìn tổng quát hơn về web server. Chú ý rằng các cách dưới đây có thể sử dụng kết hợp lẫn nhau, ngoài ra thì mỗi môi trường cũng có yêu cầu khác nhau, nên có thể phần trình bày sẽ không chính xác hoàn toàn.

1. Tất cả trong một server

Tất cả phần mềm đều được đặt trên một máy chủ duy nhất. Với một application điển hình thì chúng sẽ bao gồm web server, application server và database server. Một biến thể phổ biến của cách cài đặt này là gói LAMP, viết tắt của Linux, Apache, MySQL và PHP, tất cả trên một server.

Trường hợp sử dụng: Khi cần để cài đặt application một cách nhanh chóng, đây là phần cài đặt cơ bản nhất có thể, nhưng rất khó mở rộng cũng như tách biệt các thành phần trong application với nhau.

Everything On a Single Server

Ưu điểm:

  • Đơn giản.

Nhược điểm:

  • Application và database sử dụng chung phần resources của server (CPU, bộ nhớ, I/O…) cho nên ngoài việc hiệu suất kém ra thì còn có thể làm cho việc xác định vấn đề trở nên khó khăn hơn.

  • Khó mở rộng.

2. Tách biệt với server database

Các hệ thống quản lý cơ sở dữ liệu (DBMS) được tách ra khỏi phần còn lại của môi trường để loại bỏ các tranh chấp tài nguyên giữa các ứng dụng và cơ sở dữ liệu, và có thể tăng cường bảo mật bằng cách đặt cơ sở dữ liệu trong một private network.

Trường hợp sử dụng: Dùng để cài đặt application một cách nhanh chóng, nhưng vẫn có thể tránh việc application và database cùng sử dụng chung resource của hệ thống.

Separate Database Server

Ưu điểm:

  • Tầng application và database không tranh chấp cùng một tài nguyên của server (CPU, bộ nhớ, I/O,…).

  • Có thể thêm tài nguyên cho server nếu cần mở rộng.

  • Có thể tăng cường bảo mật bằng cách đặt database trong private network.

Nhược điểm:

  • Cài đặt phức tạp hơn so với dùng một server.

  • Vấn đề hiệu suất có thể phát sinh nếu giữa hai server có độ trễ lớn (như hai server có khoảng cách địa lý cách xa nhau), hoặc là băng thông quá thấp so với lượng dữ liệu truyền tải.

3. Load Balancer (Reverse Proxy)

Load balancer có thể được thêm vào một môi trường máy chủ để cải thiện hiệu suất và độ tin cậy bằng cách phân phối việc xử lý request trên nhiều máy chủ. Nếu một trong các máy chủ load balancer bị lỗi, các máy chủ khác sẽ xử lý lưu lượng gửi đến cho đến khi máy chủ lỗi bình thường trở lại. Nó cũng có thể được sử dụng để phục vụ cho nhiều ứng dụng thông qua cùng một tên miền và cổng, bằng cách sử dụng một layer 7 (layer application) reverse proxy.

Ví dụ về các phần mềm có khả năng cân bằng tải reverse proxy: HAProxy, Nginx, và Varnish.

Trường hợp sử dụng: hữu ích trong một môi trường đòi hỏi phải mở rộng quy mô bằng cách thêm nhiều máy chủ.

Load Balancer

Ưu điểm:

  • Có thể mở rộng bằng cách thêm nhiều máy chủ.

  • Có thể chống lại các cuộc tấn công DDOS bằng cách hạn chế các kết nối của user đến một số lượng và tần số hợp lý.

Nhược điểm:

  • Load balancer có thể trở thành một nút cổ chai hiệu suất nếu nó không có đủ nguồn lực, hoặc nếu nó được cấu hình kém.

  • Có thể có những vấn đề cần phải xem xét như nơi thực hiện chấm dứt SSL và làm thế nào để xử lý đòi hỏi session.

  • The load balancer có một điểm thất bại duy nhất là khi máy chủ load balancer lỗi thì cả hệ thống sẽ dừng hoạt động.

4. HTTP Accelerator (Caching Reverse Proxy)

Có thể giảm thời gian tải content từ server đến user thông qua một loạt các kỹ thuật như dùng HTTP accelerator hoặc caching HTTP reverse proxy. HTTP accelerator sẽ lưu trữ phần content trả về từ application vào trong bộ nhớ, sau này nếu có yêu cầu đến nội dung tương tự như vậy thì HTTP Accelerator chỉ việc lấy trong bộ nhớ và trả về cho người dùng mà không cần phải có những tương tác không cần thiết với web server.

Ví dụ về các phần mềm có khả năng tăng tốc HTTP: Varnish, Squid, Nginx.

Trường hợp sử dụng: hữu ích trong một môi trường với các ứng dụng web động có nội dung nặng, hoặc với nhiều resource được truy cập thường xuyên.

HTTP Accelerator

Ưu điểm:

  • Tăng hiệu suất trang web bằng cách giảm tải CPU trên máy chủ web, thông qua bộ nhớ đệm và nén, do đó làm tăng khả năng sử dụng

  • Có thể được sử dụng như là hệ thống load balancer.

  • Một số phần mềm caching có thể bảo vệ chống lại các cuộc tấn công DDOS.

Nhược điểm:

  • Yêu cầu phải điều chỉnh để có được hiệu suất tốt nhất.

  • Nếu tỷ lệ tái sử dụng bộ nhớ cache thấp thì có thể làm giảm hiệu suất.

5. Master-Slave Database Replication

Một cách để cải thiện hiệu suất của một hệ thống cơ sở dữ liệu mà số lần đọc được thực hiện nhiều hơn so với viết, chẳng hạn như là một CMS, là sử dụng master-slave database replicate. Master-slave replicate đòi hỏi một master và một hoặc nhiều hơn các nút slave. Trong thiết lập này, việc cập nhật dữ liệu sẽ được gửi cho nút master và việc đọc dữ liệu sẽ được phân phối trên tất cả các nút.

Trường hợp sử dụng: Tốt trong việc tăng cường hiệu suất đọc dữ liệu từ database của application.

Dưới đây là ví dụ về cài đặt master-slave replication với một nút slave:

Master-Slave Database Replication

Ưu điểm:

  • Cải thiện hiệu suất đọc dữ liệu bằng cách phân tán việc đọc đến các nút slave.

  • Có thể cải thiện hiệu suất thông qua việc chỉ dùng nút master cho việc ghi dữ liệu (gần như không dùng nút master cho việc đọc dữ liệu).

Nhược điểm:

  • Application cần phải có một cơ chế để xác định các nút database nào dùng để ghi và cái nào dùng để đọc.

  • Việc cập nhật data cho các nút slave là không đồng bộ, do đó, nên có khả năng dữ liệu application đọc được không phải là mới nhất.

  • Nếu nút master bị lỗi, thì việc cập nhật dữ liệu có thể bị gián đoạn cho đến khi vấn đề được giải quyết.

  • Không có trường hợp dự phòng cho việc nút master bị lỗi.

Ví dụ: Kết hợp tất cả

Có thể dùng load balancer trên caching server ngoài application server và dùng database replication trên cùng một môi trường. Mục đích của việc kết hợp này là để đạt được những kết quả tối ưu nhất mà không gặp nhiều khó khăn. Dưới đây là một mô hình ví dụ về môi trường của server:

Load Balancer, HTTP Accelerator, and Database Replication Combined

Hãy giả định rằng việc load balancer được cấu hình để nhận dạng những yêu cầu đến những tài nguyên tĩnh (như hình ảnh, css, javascript…), gửi những request trực tiếp đến caching server và gửi những request còn lại đến application server.

Dưới đây là một mô tả về những gì sẽ xảy ra khi người dùng gửi một request đến các nội dung động:

  1. Người dùng gửi request đến các tài nguyên động đến https://example.com/ (load balancer).

  2. Load balancer gửi request to app-backend.

  3. App-backend đọc dữ liệu từ database và trả nội dung về cho load balancer.

  4. Load balancer trả dữ liệu lấy được về cho người dùng.

Nếu người dùng request các nội dung tĩnh:

  1. Load balancer kiểm tra cache-backend xem nội dung được yêu cầu đã có (cache-hit) hay chưa (cache-miss).

  2. Nếu cache-hit: trả về nội dung được yêu cầu cho load balancer và chuyển đến  bước 7. Nếu cache-miss: cache server sẽ chuyển request đến app-backend, thông qua load balancer.

  3. Load balancer chuyển request cho app-backend.

  4. App-backend đọc dữ liệu từ database sau đó trả nội dung được yêu cầu về cho load balancer.

  5. Load balancer chuyển nội dung đó cho cache-backend.

  6. Cache-backend caches nội dung và trả nó về cho load balancer.

  7. Load balancer trả nội dung được yêu cầu về cho user.

Môi trường này vẫn có hai điểm thất bại (load balancer và master database), nhưng nó cung cấp tất cả các lợi ích đáng tin cậy và hiệu suất đã được mô tả trong mỗi phần ở trên.

Kết luận

Bây giờ bạn đã quen thuộc với một số cách cài đặt server cơ bản, bạn cần phải có một ý tưởng tốt về những cách bạn sẽ sử dụng cho application của bạn. Nếu bạn đang tìm cách cải thiện hiệu suất server của bạn, hãy nên thử từ những cách đơn giản trước sau đó mới chuyển dần lên những cách phức tạp hơn.

Theo Mitchell Anicas – Digital Ocean


ỨNG TUYỂN







    Chế độ phúc lợi

    CHÍNH SÁCH LƯƠNG & THƯỞNG

    Thấu hiểu tâm tư nguyện vọng của nhân viên, công ty Rivercrane Việt Nam đặc biệt thiết lập chế độ xét tăng lương định kỳ 2lần/năm. Xét đánh giá vào tháng 06 và tháng 12 hàng năm và thay đổi lương vào tháng 01 và tháng 07 hàng năm. Ngoài ra, nhân viên còn được thưởng thành tích định kỳ cho các cá nhân xuất sắc trong tháng, năm.

    CHẾ ĐỘ ĐÀO TẠO TẠI NHẬT

    Luôn luôn mong muốn các kỹ sư và nhân viên trong công ty có cái nhìn toàn diện về lập trình những mảng kỹ thuật trên thế giới, công ty Rivercrane Việt Nam quyết định chế độ 3 tháng 1 lần đưa nhân viên đi học tập tại Nhật. Các bạn kỹ sư hoàn toàn đều có thể quyết định khả năng phát triển bản thân theo hướng kỹ thuật hoặc theo hướng quản lý.

    CHẾ ĐỘ ĐI DU LỊCH HÀNG NĂM

    Không chỉ đưa đến cho nhân viên những công việc thử thách thể hiện bản thân, công ty Rivercrane Việt Nam muốn nhân viên luôn thích thú khi đến với những chuyến hành trình thú vị hàng năm. Những buổi tiệc Gala Dinner sôi động cùng với những trò chơi Team Building vui nhộn sẽ giúp cho đại gia đình Rivercrane thân thiết hơn.

    CHẾ ĐỘ EVENT CÔNG TY

    Những hoạt động Team building, Company Building, Family Building, Summer Holiday, Mid-Autumn Festival… sẽ là những khoảnh khắc gắn kết đáng nhớ của mỗi một nhân viên trong từng dự án, hoặc sẽ là những điều tự hào khi giới thiệu công ty mình với với gia đình thân thương, cùng nhau chia sẻ yêu thương với thông điệp “We are One”

    BẢO HIỂM

    Công ty Rivercrane Việt Nam đảm bảo tham gia đầy đủ chế độ Bảo hiểm xã hội, bảo hiểm y tế và bảo hiểm thất nghiệp. Cam kết chặt chẽ về mọi thủ tục phát sinh công ty đều hỗ trợ và tiến hành cho nhân viên từ đầu đến cuối. Những chế độ bảo hiểm khác công ty cũng đặc biệt quan tâm và từng bước tiến hành.

    CHẾ ĐỘ PHÚC LỢI KHÁC

    Hỗ trợ kinh phí cho các hoạt động văn hóa, văn nghệ, thể thao; Hỗ trợ kinh phí cho việc mua sách nghiên cứu kỹ thuật; Hỗ trợ kinh phí thi cử bằng cấp kỹ sư, bằng cấp dành cho ngôn ngữ. Hỗ trợ kinh phí tham gia các lớp học về quản lý kỹ thuật bên ngoài; Các hỗ trợ phúc lợi khác theo quy định công ty…

    © 2012 RiverCrane Vietnam. All rights reserved.

    Close