Lột tả bản chất của kiến trúc Microservice so với kiến trúc xây dựng

Lột tả bản chất của kiến trúc Microservice so với kiến trúc xây dựng

February 4, 2021 3 By Nam Vu

Microservice, một thuật ngữ mà bạn đi đâu cũng gặp dạo gần đây. Nếu bạn không phải dân IT, thì đây là bài viết dành cho bạn để có thể hiểu được microservice theo cách đời thường nhất.

Đặt vấn đề chút nhé!

Kiến trúc phần mềm từ xưa đến nay chẳng khác gì một kiến trúc sư một công trình nhà cửa xây dựng cả. Sự phát triển của nó qua các loại kiến trúc cho thấy sự phát triển của xã hội con người nói chung và phát triển phần mềm nói riêng. Chúng sinh ra để giải quyết những vấn đề trong cuộc sống, và chúng cũng có một mối liên hệ tương quan vô cùng chặt chẽ.

ntechdevelopers

Hãy cùng mình tìm hiểu bản chất của kiến trúc microservice thông qua quá trình phát triển của kiến trúc phần mềm nhé!

By analogy to building architecture, we propose the following model of software architecture:
Software Architecture = { Elements, Form, Rationale }That is, a software architecture is a set of architectural (or, if you will, design) elements that have a particular form.
— Foundations for the Study of Software Architecture by D. Perry and A. Wolf

Sự tương đồng của các kiến trúc xây dựng và kiến trúc phần mềm là khá giống nhau.

Khi bạn muốn xây một ngôi nhà, bạn quyết định như thế nào, xây phỏng ngủ trước, hay phòng khách trước, hay công trình phụ. Điều này bạn sẽ thường hoạch định sẵn trước khi thi công, đó là những bản thiết kế, rồi xây móng, xây tường, cửa ra vào ra sao, cửa sổ nên đặt hướng nào đó cũng là một phần trong công trình. Một ngôi nhà hoàn chỉnh, các cửa hay cửa sổ thông giữa các phòng với nhau chính là sự giao tiếp giữa các phòng, hay cửa chính bạn xây dựng nên chính là sự giao tiếp với thế giới bên ngoài. Ngôi nhà của bạn cần được bảo vệ dưới các thay đổi của thời tiết, trước sự tấn công của những cơn bão. Dĩ nhiên mỗi ngôi nhà sẽ có cách xây dựng để có thể phòng tránh khác nhau, nhưng đều có chung một mục đích ban đầu.

ntechdevelopers

Khi so sánh với kiến trúc phần mềm, chúng ta bắt đầu xây dựng những ứng dụng phần mềm đơn giản, cơ bản nhất. Mỗi applications đều có những thuật toán đặc thù, sử dụng những ngôn ngữ lập trình khác nhau tuy nhiên mục đích chung vẫn là tạo nên một sản phẩm có thể ứng dụng được vào trong thực tế, hướng tới người dùng cuối (end user). Rồi những application cũng có những cách thức giao tiếp nội bộ với nhau như những cánh cửa giữa các phòng, hay giao tiếp với bên ngoài như những public api. Rồi những con đường nho nhỏ thông từ nhà ra ngoài cổng nhà với những khoảng sân rộng lại giống như những trao đổi request responses giữa client và server. Đi sâu hơn chút nữa thì có những dữ liệu được chuyển từ cơ sở dữ liệu thông qua xử lý nghiệp vụ mà có thể đưa đến người dùng, bạn cần bảo mật chúng, tránh những tấn công và tác động bên ngoài tới và những rò rỉ thông tin bên trong.

Bên cạnh những điểm cơ bản trên thì sự tương đồng giữa kiến trúc xây dựng và kiến trúc phần mềm còn thể hiện thông quá trải nghiệm người dùng User Interface và User Experience. Ngôi nhà có đẹp có tiện dụng đối với chủ nhân tương lai của nó thì đều được thể hiện thông qua UX/UI như này. Đây cũng là một điểm quan trọng mà bạn nên cần chú ý.

Bạn có thể thấy kiến trúc cho bất cứ công trình xây dựng nào đều rất quan trọng, vì nó có thể ảnh hưởng rất hơn đến khi hoàn thiện công trình. Từ những công đoạn nhỏ nhặt nhất đến những chi tiết phức tạp nhất. Tất cả đều phải được chú ý và phác thảo thật cẩn thận. Điều này lại càng đúng khi kiến trúc không chỉ là phần thô, phần hiển thị hữu hình mà bạn có thể nhìn thấy và sờ được vào nó. Mà nó còn thể hiện qua những thứ vô hình như phong thủy, hướng nhà, hay đơn giản là thời gian và hạn sử dụng. Nó lại một lần nữa có sự tương đồng khi Functional requirements và Non-Functional requirements được sinh ra trong phát triển phần mềm.

Vậy làm thế nào bạn có thể kiến trúc được một ngôi nhà hay một sản phẩm phần mềm.

Các ý tưởng luôn nảy sinh từ thực tế, những vấn đề và giải pháp luôn dựa trên những thứ mà các công trình sư đúc rút ra được từ xưa đến nay. Bạn hãy cùng mình đi từng bước phát triển của Kiến trúc phần mềm cũng như Kiến trúc xây dựng ở phần sau nhé!

ntechdevelopers