Đối với những người không kỹ thuật, tôi sẽ sử dụng khái niệm sau. Toàn bộ thế giới chuyên nghiệp là dịch vụ theo định hướng.
- Thay vì nướng một cookie bằng chính bạn, bạn vào tiệm bánh.
- Thay vì cố tự chữa trị cho mình, bạn đến gặp bác sĩ.
- Thay vì viết chương trình, bạn yêu cầu một lập trình viên thực hiện việc này cho bạn.
Điều này ngụ ý hai lợi thế lớn:
- Mỗi người làm công việc của mình tốt hơn nếu tất cả chúng ta đã cố gắng để giải quyết tất cả nhiệm vụ của chúng tôi riêng biệt.
- Có một cách, cho phép phi các chuyên gia để trao đổi với đó, ai sẽ giải quyết nhiệm vụ của chúng tôi (trong thế giới thực theo cách như vậy là tiền bạc và hợp đồng kinh doanh)
Trong thế giới của phần mềm như vậy kiến trúc được thực hiện bằng cách xác định các dịch vụ chuyên dụng (ứng dụng) được dành riêng để thực hiện các nhiệm vụ cụ thể và bằng cách xác định các giao thức, đó là giải quyết vấn đề liên lạc giữa các ứng dụng đó. Khi kiến trúc như vậy được triển khai, bạn sẽ có được một số lợi ích, mà cũng có thể được ánh xạ tới thế giới thực:
Nếu bác sĩ không có sẵn, bạn có thể không được chữa khỏi nhưng ít nhất bạn có thể nhận được một cookie từ cửa hàng bánh mì! Trong phần mềm này có nghĩa là một dịch vụ không thành công không phá vỡ toàn bộ hệ thống.
Thông thường các bác sĩ và thợ làm bánh không dùng chung phòng và điều này cho phép họ hoạt động tốt hơn. Cũng giống như trong phần mềm, bạn có thể đặt từng dịch vụ trên phần cứng của chính nó.
Đối với thế giới phần mềm, điều này có nghĩa, khả năng bảo trì, sử dụng lại và giảm chi phí tốt hơn. Chúc may mắn!
Tôi đang dự đoán "làm cho nó trở thành một cộng đồng wiki" bình luận ... Tôi cho rằng câu trả lời tốt nhất (nghĩa là, hoàn thiện nhất/được nghĩ ra) sẽ nhận được nhiều phiếu bầu nhất và được chấp nhận như một câu trả lời –