System Design

Everything’s a Trade-Off.

SERIES VỀ SYSTEM DESIGN CĂN BẢN:

Đôi lời tản mạn.
Cuộc đời 1 lập trình viên từ khi bắt đầu với các dòng code, tập tành viết unit test rồi cơ duyên đưa đẩy mình tìm hiểu về clean code, code smell, refactor để có thể viết được những đoạn code sạch hơn. Lên xíu nữa lại bén duyên với design pattern giúp mình viết code dễ maintain hơn, và trông pro hơn. Sau đó, ta tự tin có thể đảm nhận các nhiệm vụ về review code, được tham gia vào quá trình detail design một module hoặc feature nào đó. Giai đoạn này kéo dài khá lâu, khoảng 3,4 năm đầu đời.

Sau giai đoạn đó, sẽ đến giai đoạn mình được assign để design kiến trúc cho cả một hệ thống. Như thường lệ, như một sự may mắn khi tìm hiểu trên Google, ta sẽ tiếp cận được với rất nhiều tài liệu nói về Software Architecture như Clean Architecture hoặc như series bài viết của mình về Architecture ngay từ những ngày đầu tìm hiểu. Chung quy, software architecture cũng giống như những high level pattern để giải quyết những bài toán ở cấp độ cao hơn so với design pattern, vốn ta sẽ liên tưởng ngay đến coding. Những khái niệm như MicroservicesDomain Driven DesignCloud Computing cũng dần dần xuất hiện. Các khái niệm về High Availability, scalability, Reliability, Security ngày càng trở nên quan trọng trong việc thiết kế bất cứ sản phẩm nào.

Những lần được phân công làm pre-sales cùng các “chuyên gia”, có cả dân sale lẫn dẫn senior technical architect lẫn solution architect đã giúp mình ngày càng mở mang tầm mắt.

Tuy nhiên, mình cảm thấy như vậy chưa đủ, các “high level” digram được vẽ ra vẫn chưa thể lột tả được hết ý nghĩa của một system, vẫn còn một khoảng “gap” rất lớn từ các bản thiết kế để đi đến thực tế lúc triển khai, vẫn tồn tại nhiều vấn đề mà khi đi sâu vào chi tiết mới thấy được. Luôn tồn tại một câu hỏi trong đầu mình, đó là làm thế nào để có thể thiết kế được nguyên cả một hệ thống, không chỉ là những bản vẽ mà còn phải giải quyết được các vấn đề mà bản thiết kế vẫn chưa mô tả được. Và liệu mình có bỏ qua những yếu tố nào khi thiết kế không? Đâu là “bài” để mình theo để có thể lý luận được cả một hệ thống, từ tổng thể đến chi tiết, chọn công nghệ, kỹ thuật nào và tại sao

(Hết phần tản mạn)

VẬY SYSTEM DESIGN (KHI ĐI LÀM) NÓI VỀ CÁI GÌ?

“System design is the phase that bridges the gap between problem domain and the existing system in a manageable way. This phase focuses on the solution domain, i.e. “how to implement?”

System design is the process of designing the elements of a system such as the architecture, modules and components, the different interfaces of those components and the data that goes through that system.

The purpose of the System Design process is to provide sufficient detailed data and information about the system and its system elements to enable the implementation consistent with architectural..”

Types of System Design:

  • Logical Design
  • Physical Design
  • Architectural Design
  • Detailed Design
  • Conceptual Data Modeling
  • Entity Relationship Model

Elements of a System

  • Architecture – This is the conceptual model that defines the structure, behavior and more views of a system. We can use flowcharts to represent and illustrate the architecture.
  • Modules – This are components that handle one specific tasks in a system. A combination of the modules make up the system.
  • Components – This provides a particular function or group of related functions. They are made up of modules.
  • Interfaces – This is the shared boundary across which the components of a the system exchange information and relate.
  • Data – This the management of the information and data flow.

vân vân, mây mây..

Reference:

Đọc các định nghĩa trên thì cũng chưa thấy gì lợi hại lắm. Nhưng để ý 1 xíu bạn sẽ thấy System Design bao hàm tất cả những bản thiết kế cần thiết để tạo nên một system hoàn chỉnh, từ architecture, module, interface, data flow…

MỘT SỐ GỢI Ý THAM KHẢO:

Các tài liệu đó sẽ đưa chúng ta go through các thiết kế của các hệ thống kinh điển như Facebook, Dropbox, Twitter, Instagram,…

Đọc đến đây thì nếu đó là thứ bạn cần thì sẽ không ngần ngại mà rời trang này và tiến vào quá trình trải nghiệm của bản thân ngay lập tức.

Enjoy : )

%d bloggers like this: