Cùng học Cờ Lao – Azure Phần 5.1: Sự bá đạo của Azure SQL Database?

Ở kì trước, mình đã chỉ các bạn cách deploy một ứng dụng đơn giản trong 5 phút lên Azure rồi.

Tuy nhiên, ứng dụng nào thì cũng cần Database. Không có Database thì lấy đâu ra chỗ lưu trữ dữ liệu, truy cập và tính toán dữ liệu!

Dĩ nhiên, Azure cũng cung cấp dịch vụ Database “trên mây” luôn. Bài viết này cũng sẽ gồm 2 phần:

  • Phần 1: Tìm hiểu về Azure DatabaseElastic Pool
  • Phần 2: Tạo database mới và kết nối tới Database trong 5 phút

Công việc của mấy anh DBA khi chưa có Azure

Đầu tiên, các bạn phải biết rằng quản lý database của một hệ thống chưa bao giờ là chuyện đơn giản. Nhiều công ty họ có nguyên một người hoặc một team DBA – Database Administrator chỉ để quản lý database của hệ thống.

Công việc của mấy anh này cũng khá gian nan vất vả:

  • Cài đặt: DBA sẽ làm việc trực tiếp với mấy anh IT để cài đặt databse (MySQL, MS SQL, Postgress) lên mấy con server của công ty. Sau đó phải mở port, thiết lập username, password, connection để ứng dụng truy cập vào được.
  • Update phần cứng/phần mềm: Đôi khi, họ cũng phải cài bản mới hơn của database để cập nhật tính năng, vá lỗi bản mật v…v. Khi lượng khách hàng nhiều, DB không đáp ứng nổi, họ phải nâng cấp phần cứng phần mềm lên luôn.
  • Monitor/Sửa chữa: Sau khi hệ thống chạy, họ sẽ quan sát xem database hoạt động nhanh hay chậm, có bị crash hay tắc nghẽn gì không. Khi database tèo (cúp điện, dĩa lỗi, server hư), các anh phải xắn tay áo lên sửa chữa.
Đây là team DBA đang bảo trì server, mong cho nó đừng sập
  • Backup/Rollback dữ liệu: Để đề phòng trường hợp máy hỏng, mất dữ liệu, developer xóa nhầm, DB phải cài đặt backup dữ liệu thường xuyên để có thể rollback lại được.
  • Optimize: Khi query chạy chậm, hoặc cho kết quả sai, DBA phải ngồi với developer để tối ưu lại câu query, đánh index, config lại server. Nhiều khi DBA họ viết query và procedure cho dev dùng luôn.

Khi không có DBA, nhiều khi dev tụi mình sẽ phải tự gánh các phần này luôn. Nếu không có kiến thức về DB, ta dễ mắc phải nhiều sai lầm như:

  • Không backup dữ liệu, vái trời cho DB chạy tốt
  • Không có monitor nên database chậm rì cũng không biết
  • Không update và setup bảo mật nên dùng DB cũ, lỗi bảo mật tùm lum
Một sai lầm khác là mời mấy ông thầy về phù phép cho server

Với Azure Database, mọi thứ trở nên đơn giản hơn nhiều cho anh em developer tụi mình. Vậy nó có gì hot?

Azure Database có gì hot?

Azure Database hỗ trợ rất nhiều thứ đến tận răng, chúng ta chỉ cần dùng mà không quan tâm gì cả:

  • Không cần lo chuyện cài đặt/update: Chỉ cần vào Azure Portal tạo DB mới là được. Azure sẽ tự lo việc config, cài đặt, update lên bản mới.
  • Monitor và Analytic: Azure có sẵn dashboard để monitor trạng thái của DB, thời gian query, lượng đọc ghi, các query chậm, đủ cả.

  • Tự động backup/restore: Azure Db có sẵn chức năng back-up theo ngày hoặc theo giờ. Ta có thể back-up và restore trong vòng 1 nốt nhạc, không cần quan tâm tới việc lưu trữ ở đâu. Tất nhiên Azure sẽ charge thêm phí lưu trữ.
  • Đảm bảo uptime: Azure sẽ đảm bảo server của bạn luôn hoạt động (Uptime tới 99.99% lận), không còn lo server chết hay đĩa hỏng gì cả. Nếu server sập có thể liên hệ Azure đòi tiền lại.
  • Gợi ý optimize query: Nhờ có bộ analytic và monitor cực mạnh, Azure DB có thể show cho chúng ta những query nào chậm, query nào tốn tài nguyên, đồng thời … gợi ý luôn cách tạo index nào để optimize, tăng tốc độ xử lý
  • (Thời làm ở Algomerchant, có nhiều lần mình phải dùng Azure để xem câu query nào chậm, làm DTU của DB lên 80% đấy)

Nói chung, những chức năng này không thay thế được hoàn toàn mấy anh DBA, nhưng chúng giúp cuộc sống của anh em dev dễ thở rất nhiều

Các bạn có thể tìm hiểu thêm tại đây: https://azure.microsoft.com/en-us/services/sql-database/

Tiết kiệm chi phí với ElasticPool

Azure tính phí Database theo DTU, là tổng hợp của CPU/RAM/Storage.

DTU ít thì sẽ chạy chậm hơn, ít RAM hơn, giá cũng… rẻ hơn. Khi người dùng nhiều, ta có thể tăng DTU để hệ thống chạy nhanh hơn, chịu tải được nhiều hơn, phục vụ nhiều người hơn.

Bảng giá Azure Database cho 1 server

Ngoài ra, có nhiều hệ thống mà ta cần một DB riêng cho mỗi khách hàng, hoặc cần nhiều DB riêng cho mỗi microservice. Một DB này có nhu cầu sử dụng khác nhau, nếu trả phí theo từng DB sẽ khá là … chát.

Do vậy, bên Azure có một model khác là ElasticPool. Có thể hiểu Pool này là một bể chứa xài chung cho các database. Toàn bộ các database nằm chung này có thể xài chung resource với nhau để tiếp kiệm chi phí.

20 database dùng chung 1 ElasticPool

Tạm kết

Trong bài này, chúng ta đã tìm hiểu về Azure Database rồi. Trong phần xong chúng ta sẽ xắn tay lên tạo Database và kết nối tới luôn cho nóng nha.

Thay vì phải ngồi cài đủ thứ từ Visual Studio tới MS SQL, chỉ cần làm theo hướng dẫn là sau 5p các bạn đã có cái Database để code rồi, nhớ đón xem nhen!

5 thoughts on “Cùng học Cờ Lao – Azure Phần 5.1: Sự bá đạo của Azure SQL Database?”

  1. Chưa biết db Azure thế nào chứ máy chủ của Azure lởm nhất trên đời :v ổ cứng siêu siêu chậm, ko hiểu sao Microsoft để vậy được. Tốc độ đọc ghi của SSD là 23/23 MB

    Like

      1. thế cũng gọi là SSD =)) tăng cấu hình Azure cũng k ăn thua cái khoản tốc độ ổ cứng, tạo server windows vào mới cài app thôi cũng lag lòi ra. Ở VN có VCCloud giá rẻ hơn nhiều mà đọc ghi 230/100, thế mới là SSD chứ

        Like

Leave a comment