Monolith là gì

0
42
Bạn đang xem: Monolith là gì Tại monrun.vn

Những nội dung chia sẻ về tech dev có khá là nhiều và đầy đủ rồi. Hôm nay tất cả chúng ta chuyển sang software architecture và cùng tìm hiểu, nhận xét chút về mô hình đang khá nổi thời gian gần đây đó là microservice.Bạn đang xem: Monolithic là gì

Software architecture là tổ chức hệ thống bao gồm rất nhiều các thành phần như Website Server, CSDL, bộ nhớ lưu trữ và các lớp layer thực hiện việc giao tiếp. Chúng link với nhau hoặc với một môi trường nhất định. Mục tiêu cuối cùng của thiết kế hệ thống (system architecture) là khắc phục vấn đề của doanh nghiệp.Bạn đang xem: Monolith là gì

Ở thời điểm hiện tại, có 2 mô hình pattern của software architecture đang được thông dụng là:

Monolith architectureMircoservice architecture

Monolith architecture

Monolith architectureMircoservice architecture

*

Monolith có xu thế thích hợp với những dự án có quy mô nhỏ. Với việc vận dụng mô hình monolith, những lợi nhuận mang lại có thể kể đến là:

Quá trình development đơn giản và trực tiếp, centralized managenment và những bước phát triển cơ bản thì sẽ không được lặp lại.Effort giành cho việc development được giảm thiểu: toàn bộ mọi quá trình development đều nằm trên 1 project. Development flow đơn giản chỉ là submit changes, review, merge code và continue.

Bạn đang xem:

Quá trình development đơn giản và trực tiếp, centralized managenment và những bước phát triển cơ bản thì sẽ không được lặp lại.Effort giành cho việc development được giảm thiểu: toàn bộ mọi quá trình development đều nằm trên 1 project. Development flow đơn giản chỉ là submit changes, review, merge code và continue.Bạn đang xem: Monolith là gì

Tuy nhiên hạn chế mà mô hình này mang lại cũng tương đối lớn :

Khó khăn trong việc bảo trì: vấn đề về coupling code, các khối code dính chặt lại với nhau, vấn đề cho thành viên mới sẽ khó để biết nên bắt nguồn từ đâu trong 1 khối lớnQuá trình development sẽ mất đi tính linh hoạt: thời gian để build feature sẽ bị dài lên, bị block lẫn nhau. Bất kì một sự thay đổi dù nhỏ nào cũng nên build lại toàn thể dự án => tốn khá nhiều thời gianTính ổn định không cao. Bất kì một lỗi nào có thể khiến toàn thể application bị crash.Tính scalibility khó được thỏa mãn trong trường hợp phải thỏa mãn một lượng truy cập lớn từ phía yêu cầu của business

XEM THÊM  Sự thật về Eta là gì? giải thích ý nghĩa từ etb là gì

Microservice architecture

Khó khăn trong việc bảo trì: vấn đề về coupling code, các khối code dính chặt lại với nhau, vấn đề cho thành viên mới sẽ khó để biết nên bắt nguồn từ đâu trong 1 khối lớnQuá trình development sẽ mất đi tính linh hoạt: thời gian để build feature sẽ bị dài lên, bị block lẫn nhau. Bất kì một sự thay đổi dù nhỏ nào cũng nên build lại toàn thể dự án => tốn khá nhiều thời gianTính ổn định không cao. Bất kì một lỗi nào có thể khiến toàn thể application bị crash.Tính scalibility khó được thỏa mãn trong trường hợp phải thỏa mãn một lượng truy cập lớn từ phía yêu cầu của business

Ngoài mô hình monolithic kể trên, hiện tại có 1 architecture khác đang thu được nhiều sự quan tâm, đó là microservice.Microservice đề cập đến quá trình phát triển độc lập, tương đối nhỏ theo hướng chia hệ thống ra thành các services. Mỗi service này đều có một logic riêng, một trách nhiệm riêng và có thể được deploy tách biệt. Khái niệm mircoservice đồng thời đề cập đến xu thế tách biệt architecture ra thành các loose coupling service, tức là các service này sẽ có một mối liên hệ lỏng lẻo với nhau và mối service sẽ được nằm trong 1 context nhất định.

So sánh với microservice và SOA (service-oriented architecture), những điểm nổi bật của mô hình microservice là componentization (thành phần hóa), loose coupling (khớp nối lỏng lẻo), autonomy ( tính tự quản lí) và decentralization (phân cấp), được phản ánh rõ ràng và cụ thể qua những khía cạnh sau:

tập hợp một nhóm nhỏ các service: mức độ cụ thể của một service là nhỏ và mỗi service này sẽ chịu một trách nhiệm rõ ràng và cụ thể (single responsiblity) và chỉ tập trung vào nhiệm vụ đó. Ví dụ: storage service sẽ chịu riêng trách nhiệm về lưu trữViệc phát triển và mở rộng một service là hoàn toàn độc lập. Điều này mang lại tính linh hoạt cho hệ thống . Quá trình deliver feature, release version sẽ đơn giản và nhanh chóng. Hơn nữa sẽ không còn tình trạng bị block như ở mô hình monolithGiảm tải được các mối quan ngại về công nghệ sử dụng. Chọn một công nghệ thích hợp với vấn đề của doanh nghiệp có thể được khắc phục đơn giản. Các service giap tiếp với nhau thông qua API, do vậy mỗi service có thể dùng một từ ngữ tách biệt. Serivce A dùng Java, Service B dùng Javascript, it”s ok !!!!Đối với team, microservice đem lại tính độc lập và tự quản lí cho team. Một team sẽ có trách nhiệm toàn bộ với life-cycle của một hay nhiều service. Họ làm việc trong việc context biệt lâp, có thể tự quản lí các quyết định của mình.

XEM THÊM  Thuế xuất nhập khẩu tiếng Anh là gì? Thuế nhập khẩu ưu đãi tiếng Anh là gì?

tập hợp một nhóm nhỏ các service: mức độ chi tiết của một service là nhỏ và mỗi service này sẽ chịu một trách nhiệm cụ thể (single responsiblity) và chỉ tập trung vào nhiệm vụ đó. Ví dụ: storage service sẽ chịu riêng trách nhiệm về lưu trữViệc phát triển và mở rộng một service là hoàn toàn độc lập. Điều này mang lại tính linh hoạt cho hệ thống . Quá trình deliver feature, release version sẽ dễ dàng và nhanh chóng. Hơn nữa sẽ không còn tình trạng bị block như ở mô hình monolithGiảm tải được các mối quan ngại về công nghệ sử dụng. Chọn một công nghệ phù hợp với vấn đề của doanh nghiệp có thể được giải quyết dễ dàng. Các service giap tiếp với nhau thông qua API, do vậy mỗi service có thể dùng một ngôn ngữ riêng biệt. Serivce A dùng Java, Service B dùng Javascript, it”s ok !!!!So với team, microservice mang lại tính độc lập và tự quản lí cho team. Một team sẽ có trách nhiệm toàn thể với life-cycle của một hay nhiều service. Họ làm việc trong việc context biệt lâp, có thể tự quản lí các quyết định của mình.

Tất cả chúng ta có thể thấy rõ toàn thể ý tưởng của mô hình microservice rất giống cách mà tất cả chúng ta chia nhỏ thông tin và tri thức. Bằng việc tách rời, chia nhỏ và quản lí tất cả chúng ta có thể giảm tải sự phức tạp của hệ thống, làm cho việc quản lí trở nên nhanh chóng và đơn giản, phản ánh sự thay đổi đúng đắn.

Vậy vì sao tất cả chúng ta nên dùng microservice ?

Ở thế kỷ trước, một số lightweight development methods như eXtreme Programming (XP) hay Scrum nổi lên; Đến năm 2001, tuyên ngôn Agile ra đời và một số phương pháp quản lý mới như Lean hay Kanban. Nếu những phương pháp quản lý trên được coi là phương án cho việc quản lý tiến độ phát triển PM và việc thực hiện sớm nhất có thể khi có sự thay đổi thì microservice architecture là hướng tiếp cận được nói đến trong công nghệ PM và ở tầng thiết kế (architecture level). Dưới đây là một biểu đồ so sánh giữa monolith và microservice:

*

Các tính chất của mô hình microservice

Autonomous (tính tự trị)

XEM THÊM  Anticlimax trong hùng biện là gì?

1 service sẽ là 1 nhà cung cấp tính năng, phân phối API để thực hiện việc trao đổi, giao tiếp với các service khác

Isolated (tính riêng biệt)

1 serivce sẽ là 1 nhà cung cấp triển khai. Nó có thể được chỉnh sửa, test và deployed như 1 nhà cung cấp mà không tác động đến những khía cạnh khác.

Elastic

1 service là phi trạng thái (stateless) vì vậy nó có thể scale tùy ý khi thiết yếu.

Resilient

1 microservice sẽ được thiết kế để chấp thuận các lỗi, các rủi ro có thể xảy ra, các lỗi này là các lỗi có thể chấp thuận được

Responsive

respond cho các request trong khoảng thời gian hợp lý.

Intelligent

Tính thông minh ở đây tức là muốn nhắc tới việc hệ thống có thể tìm thấy các endpoint của các microservice đã được đăng kí.

Message Oriented

Mô hình micro-service hoạt động dựa trên giao thức HTTP hoặc message bus để tạo ra sự giao tiếp giữa các service. Điều này đảm bảo tính loose coupling, tính riêng biệt và có thể phân phối lỗi dưới dạng message

Programmable

Phân phối API”s cho phép truy cập bởi developer và administrator.

Xem thêm: Cách Chơi League Of Legends, Hướng Dẫn Nhập Môn League Of Legends (Phần I)

Composable

Automated

Lifecycle của Microservice được quản lý thông qua automation bao gồm development, build, test, staging, production và distribution.)

Microservice advantages

Microservices có thể phát triển độc lập bởi một team nhỏ có thể chỉ từ 2 đến 5 developers.

Microservice đem lại tính loose-coupling và context riêng cho mỗi service, sẽ dễ dàng trong quá trình development cũng như deploy một cách độc lập..

Microservices có thể phát triển với nhiều ngôn ngữ khác nhau.

Quá trình phát triển một service sẽ trở nên dễ dàng và linh động thông qua việc sử dụng CI/CD như Travis, Jenskin, Circle CI ….

1 new member có thể dễ dàng và nhanh chóng đóng góp cho dự án

1 serive trong mô hình micro serivce là tương đối nhỏ, dễ hiểu và được quản lí bởi các thành viên của 1 team nhỏ. Do đó, họ sẽ dễ dàng tập trung vào công việc, nâng cao được hiệu năng.

Microservices cho phép tận dụng việc áp dụng những công nghệ mới vào dự án.

Microservices chỉ gồm business logic code và không bao gồm HTML, CSS.

Việc deploy sẽ mất ít effort cho việc configuraton.

Xem thêm: Chiến Thuật Giả Lập Xếp Hạng 4 1 1 4 1 1 4 Mà Game Thủ Nên Áp Dụng

Disadvantages of microservice architecture

Microservice architecture có thể dẫn tối việc sử dụng quá nhiều operations.

Xem thêm bài viết thuộc chuyên mục: Hỏi Đáp