Architecture

Book review: Clean Architecture by Robert C. Martin (2017)

Là 1 fan của ông, tác giả của SOLID, Clean Code, Agile Software Development, Principles, Patterns, and Practices và gần đây nhất là cuốn Clean Architecture: A Craftsman’s Guide to Software Structure and Design.

Nghe tựa rất kêu vì cuốn Clean Code ảnh hưởng rất lớn đến mình và bản thân đã không cưỡng lại được ham muốn sở hữu em nó 😀

Clean-architecture-book

Đọc mất 1 tháng (vì lười, với lại cũng khó nuốt). Và phải mất khá lâu mới thẩm thấu được. Thẩm thấu không có nghĩa là đọc xong rồi, vứt đó, bữa sau nhận ra ah.. mình đã ngộ ra được chân lý, mà là trong đầu luôn phải suy nghĩ về các vấn đề viết trong đó, lục tìm một số tài liệu để đọc, củng cố lại.

Đầu tiên phải nói là nó không hay như cuốn Clean Code với khá nhiều practice làm nền tảng cho các bạn developer trẻ. Cuốn này ổng viết dông viết dài mà sau khi đọc xong đúc kết lại chỉ thấy được 2 3 chapter là đáng đồng tiền bát gạo, những cái khác chỉ dùng để in ra giấy cân tính tiền. Tuy vậy, cũ người, mới ta, trong hoàn cảnh của mình thấy là như vậy.

Chương đầu tiên đề cập đến các khái niệm về design, pattern, architecture… Cái này chỉ là cách định nghĩa của tác giả, trên mạng còn nhiều nguồn với cách định nghĩa khác nữa.

Chương sau nói về SOLID trong Architecture. Thật ra thì SOLID áp dụng cho tất cả các thể loại design từ thấp tới cao, từ chi tiết tới tổng thể.

Các chương sau nữa, tác giả có đề cập đến vấn đề đo lường kết cấu của kiến trúc. Liệu kiến trúc có đáp ứng đủ độ trừu tượng hóa để dễ dàng mở rộng và thay đổi hay không, độ phức tạp về dependency giữa các module như thế nào. Đề cập đến tính low coupling và high cohension trong thiết kế. Chương này đáng giá.

Chương quan trọng nhất với cái tên trùng với tiêu đề của cuốn sách. Clean Architecture. Tác giả mô tả, vẽ ra 1 mô hình kiến trúc mới và lý giải vì sao gọi nó là Clean Architecture. Thật ra nói mới cũng không phải là hoàn toàn mới, mà lại base trên Hexagonal Architecture để tạo ra Onion Architecture (kiến trúc củ hành – vãi cả tên), tất cả đều base trên Domain Driven Design concept lấy Domain làm trung tâm để dựng nên. Sau đó vẽ thêm chiều dependency giữa các layer đi từ ngoài vào trong, từ layer bậc thấp đến cao (Source code dependencies must point only inward, toward higher-level polices).

CleanArchitecture

Ông cũng giải thích thêm là kiến trúc của hệ thống phải có thể tự mô tả về hệ thống đó khi nhìn vào (Screaming architecture), không phải theo chức năng kỹ thuật như: đây là hệ thống MVC, SOA, … Mà phải theo nghiệp vụ của nó như: đây là một hệ thống HealthCare, Accounting, …

Điều đặc biệt là ông nhắc lại về sự độc lập về cơ chế đầu vào/ra (delivery mechanism) đối với hệ thống. Hệ thống không cần biết input nhận vào là từ đâu, một WebPage, CLI hay REST API, mà cũng không cần care đến đầu ra, lưu trữ dữ liệu xuống CDSL nào, File system hay DB,… Tất cả cái này đều đã được nói đến trong Hexagonal Architecture hay còn gọi là Kiến trúc lục giác. Cho những ai chưa biết thì cũng đáng để biết.

cleanarchitecturedesign

Kết luận

Trong khi công nghệ ngày càng phát triển, SOA, Micro-service đang thịnh hành, thì tất cả cũng đang base trên những nguyên lý và định luật về thiết kế. Bên cạnh việc chạy đua với các mẫu thiết kế ngày càng nhiều và đa dạng, thì việc nắm bắt các kiến thức nền tảng sẽ giúp ích cho chúng ta rất nhiều trong việc lý luận và hiểu biết khi nào nên áp dụng cái nào trong ngữ cảnh nào.

Đọc thêm về Tổng quan về sự phát triển của kiến trúc phần mềm

By edwardthienhoang

1 thought on “Book review: Clean Architecture by Robert C. Martin (2017)”

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.