Tag Archives: software architecture

Review sách: Site Reliability Engineering – How Google Run Production System

Bạn có biết rằng, design và code ra một hệ thống là chuyện khó, nhưng giữ cho hệ thống đó hoạt động, phát triển thêm chức năng mới là một chuyện còn … khó khăn hơn nữa!

Bạn có biết điều gì giúp cho những hệ thống lớn như Google, Gmail, Youtube hoạt động ổn định, ít gặp sự cố dù có đến hàng triệu hàng tỷ người dùng không?

Một trong những yếu tố quan trọng đó là Google có một đội ngũ SRE – Site Reliability Enginner, những người đứng phía sau theo dõi, bảo trì hệ thống, xử lý sự cố khi có vấn đề xảy ra.

Không chỉ Google, những công ty lớn như Facebook, Amazon, Netflix cũng đều có vị trí SRE, phụ trách những công việc tương tự, giúp hệ thống hoạt động ổn định.

Vì vậy, hôm nay mình sẽ giới thiệu cuốn Site Reliability Engineering – How Google Run Production System, một cuốn sách do các kĩ sư trong team SRE của Google viết ra nhé!

(Cảnh báo nhẹ, sách hơi khó đọc, chỉ nên đọc nếu bạn đã có ít nhất 1-2 năm kinh nghiệm nhé)

Continue reading Review sách: Site Reliability Engineering – How Google Run Production System

Advertisements

Học hỏi thông qua Best Practice – Đứng trên vai những người khổng lồ

Trong ngành phần mềm, có rất nhiều kiến thức cần học. Để trở thành một developer giỏi, chúng ta phải thường xuyên học hỏi, cập nhật những kiến thức này.

Tuy nhiên, sẽ có lúc bạn thắc mắc, những kiến thức dạng gì quan trọng nhất, mà chúng ta nên bỏ thời gian để học?

Theo mình, có 3 dạng kiến thức quan trọng:

  • Kiến thức nền tảng về khoa học máy tính, về kiến trúc phần mềm (software architecture), kiến thức hệ thống (system architecture)
  • Kiến thức về ngôn ngữ lập trình/công nghệ được dùng. Đây là những kiến thức thực tế, được áp dụng trong công việc hằng ngày.
  • Best practices, đây là những kiến thức rút được dựa theo kinh nghiệm của những người đi trước trong ngành, mà chúng ta nên biết và làm theo. Đây là những thứ trường học không hề dạy!

Trong bài này, mình sẽ chia sẻ về best pratices, cách học hỏi và những lợi ích của chúng nhé.

Continue reading Học hỏi thông qua Best Practice – Đứng trên vai những người khổng lồ

Review sách – Release It! – Xây dựng và thiết kế hệ thống trâu bò cho hàng triệu người dùng

Hôm nay chúng ta tiếp tục series sách thuần technical nhé. Kì trước, mình vừa review cuốn sách Ship It! – Làm phần mềm theo phong cách chất chơi người dơi. Kì này, mình sẽ giới thiệu cuốn sách cũng hay không kém mang tên Release It! – Xây dựng và thiết kế hệ thống trâu bò cho hàng triệu người dùng.

Giới thiệu

Đây là một cuốn sách trong bộ sách Pragmatic Programmer. Bộ sách này có nhiều cuốn sách rất hay, chuyên sâu về kĩ thuật mà lại dễ đọc, rất phù hợp với lập trình viên, điển hình là 3 cuốn sách SQL Anti-PatternThe Healthy Programmer, Ship It  mà mình từng review trước đây.

Cuốn sách này có thể coi là “đàn em” của cuốn sách Ship It mình đã giới thiệu kì trước. Continue reading Review sách – Release It! – Xây dựng và thiết kế hệ thống trâu bò cho hàng triệu người dùng

Review sách – Ship It! – Làm phần mềm theo phong cách chất chơi người dơi

Lâu rồi mình chưa viết bài review sách. Nhiều bạn kêu gọi mang mục này quay lại nên hôm này mình tiếp tục review và giới thiệu sách cho bà con đọc nhé.

Kì này mình sẽ giới thiệu một cuốn sách khá hữu ích mang tên Ship It! – Làm phần mềm theo phong cách chất chơi người dơi.

Continue reading Review sách – Ship It! – Làm phần mềm theo phong cách chất chơi người dơi

Series Nhận diện Idol: Phần cuối – Từ Demo tới Deploy – Hoàn chỉnh ứng dụng

Toàn bộ series Nhận diện Idol:

Kết thúc phần trước, chúng ta đã Oauth WebTask để viết xong RestAPI của ứng dụng theo kiến trúc Serverless. Ở phần cuối này, chúng ta sẽ sử dụng AngularJS để tạo một ứng dụng Web đơn giản.

Nếu chưa sử dụng AngularJS bao giờ, hãy đọc bài viết này để có đủ kiến thức cơ bản AngularJS để làm theo hướng dẫn nhé: http://sangplus.com/angular-js-101-gioi-thieu-ve-angularjs.html

Viết code HTML

Mở IDE ưa thích của bạn lên để bắt đầu code nào. Ta tạo 3 file index.html, script.jsstyle.css cùng thư mục nhé.

screen-shot-2017-01-17-at-2-25-34-pm

Continue reading Series Nhận diện Idol: Phần cuối – Từ Demo tới Deploy – Hoàn chỉnh ứng dụng

Series Nhận diện Idol: Phần 6.2 – Từ Demo tới Deploy, viết RestAPI cho ứng dụng với WebTask

Toàn bộ series Nhận diện Idol:

Sau khi đọc phần trước, bạn đã hiểu được khái niệm serverless. Ở phần này, chúng ta sẽ biến hàm recognize đã viết ở phần 5 thành một RestAPI. Với cách thông thường, ta sẽ dùng NodeJS để viết một ứng dụng rồi deploy nó lên 1 server nào đó (Xem ví dụ phần 3 bài deploy chatbot).

Tuy nhiên, lần này chúng ta sẽ dùng kiến trúc Serverless, chỉ viết code và để bên thứ 3 lo các phần server và deploy. Sau khi đã có RestAPI này, ta viết 1 ứng dụng web nho nhỏ, dùng API này để nhận diện VAV idol. Sản phẩm cuối cùng: http://jav-idol.toidicodedao.com/vav/

Continue reading Series Nhận diện Idol: Phần 6.2 – Từ Demo tới Deploy, viết RestAPI cho ứng dụng với WebTask

Series Nhận diện Idol: Phần 6.1 – Luận về Serverless – Vô Thai Kiếm

Toàn bộ series Nhận diện Idol:

Như đã nói trong bài đầu của series, mình áp dụng kiến trúc serverless trong thiết kế hệ thống. Kiến trúc này giúp ứng dụng có thể đáp ứng hàng triệu người truy cập với giá thành vô cùng rẻ. Trước khi bắt tay vào code, ta hãy cùng tìm hiểu khái niệm và kiến trúc Serverless nhé.

Serverless là cái chi chi?

Serverless được dùng để chỉ 2 khái niệm khác nhau (nhưng lại khá liên quan với nhau):

  1. Một số ứng dụng chuyển phần lớn logic về front-end, không có server để làm back-end (serverless)  mà chỉ sử dụng các API của bên thứ 3 để thay thế. Ví dụ trong Nhận diện Idol, mình không viết code trên server mà dùng API của Cloudinary upload ảnh và Firebase để hiển thị realtime. Nhiều ứng dụng di động cũng dùng kiến trúc này (Backend as a Service – BaaS).
  2. Một số trường hợp khác, lập trình viên phải tự viết code để làm back-end. Với mô hình client-server thông thường, ta phải thuê server rồi deploy ứng dụng lên server. Với mô hình serverless, thay vì deploy code này lên server, ta deploy nó đưới dạng một Function (Function as a Service – FaaS). Funtion này có thể được gọi dưới dạng RestAPI hoặc chạy theo lịch đã sắp sẵn.

Continue reading Series Nhận diện Idol: Phần 6.1 – Luận về Serverless – Vô Thai Kiếm