Facebook Pixel
Searching...
Tiếng Việt
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
Building Microservices

Building Microservices

Designing Fine-Grained Systems
bởi Sam Newman 2015 280 trang
4.21
4k+ đánh giá
Technology
Programming
Computer Science
Nghe

Điểm chính

1. Microservices: Các dịch vụ nhỏ, tự trị hoạt động cùng nhau

Microservices là các dịch vụ nhỏ, tự trị hoạt động cùng nhau.

Nền tảng của microservices. Kiến trúc microservices được xây dựng trên nguyên tắc phát triển phần mềm như một bộ các dịch vụ nhỏ, độc lập. Mỗi dịch vụ tập trung vào việc thực hiện một nhiệm vụ tốt, chạy trong quy trình riêng của nó và giao tiếp qua các cơ chế nhẹ như HTTP/REST APIs. Cách tiếp cận này cho phép linh hoạt hơn, khả năng mở rộng và bảo trì tốt hơn so với các kiến trúc nguyên khối.

Lợi ích và thách thức. Các lợi ích chính của microservices bao gồm:

  • Cải thiện tính mô-đun
  • Dễ dàng mở rộng các thành phần riêng lẻ
  • Đa dạng công nghệ
  • Tăng cường cô lập lỗi
  • Chu kỳ triển khai nhanh hơn

Tuy nhiên, microservices cũng mang lại những thách thức như:

  • Tăng độ phức tạp trong vận hành
  • Các vấn đề hệ thống phân tán (ví dụ: độ trễ mạng, khả năng chịu lỗi)
  • Tính nhất quán dữ liệu giữa các dịch vụ

2. Kiến trúc tiến hóa: Thích ứng với các yêu cầu thay đổi

Vai trò của kiến trúc sư là nhìn vào bức tranh lớn hơn và hiểu được sự cân bằng này.

Chấp nhận thay đổi. Kiến trúc tiến hóa nhấn mạnh sự cần thiết của các hệ thống để thích ứng với các yêu cầu thay đổi theo thời gian. Cách tiếp cận này nhận ra rằng không thể dự đoán tất cả các nhu cầu trong tương lai, vì vậy thay vào đó tập trung vào việc tạo ra một nền tảng linh hoạt có thể tiến hóa.

Nguyên tắc chính:

  • Thay đổi từng bước: Thực hiện các cập nhật nhỏ, thường xuyên thay vì các thay đổi lớn, không thường xuyên
  • Thay đổi có hướng dẫn: Sử dụng các nguyên tắc và thực hành để hướng dẫn các quyết định kiến trúc
  • Nhiều kiến trúc: Nhận ra rằng các phần khác nhau của hệ thống có thể tiến hóa với tốc độ khác nhau

Các kiến trúc sư trong mô hình này hoạt động như những người lập kế hoạch thị trấn, đặt ra các hướng dẫn và ràng buộc, thay vì quyết định mọi chi tiết. Điều này cho phép các nhóm đưa ra các quyết định địa phương trong khi đảm bảo sự gắn kết của toàn bộ hệ thống.

3. Mô hình hóa dịch vụ: Định nghĩa ranh giới và ngữ cảnh

Chúng tôi tập trung ranh giới dịch vụ của mình vào các ranh giới kinh doanh, làm cho nó rõ ràng nơi mã nguồn sống cho một chức năng nhất định.

Thiết kế theo miền. Mô hình hóa dịch vụ hiệu quả đòi hỏi sự hiểu biết sâu sắc về miền kinh doanh. Thiết kế theo miền (DDD) cung cấp các khái niệm có giá trị để định nghĩa ranh giới dịch vụ:

  • Ngữ cảnh giới hạn: Các khu vực của miền có ranh giới rõ ràng
  • Ngôn ngữ phổ biến: Một ngôn ngữ chung được chia sẻ bởi các nhà phát triển và chuyên gia miền
  • Tập hợp: Các cụm đối tượng miền được xử lý như một đơn vị

Xác định ranh giới dịch vụ:

  • Phù hợp với khả năng kinh doanh
  • Bao bọc dữ liệu và hành vi
  • Giảm thiểu sự phụ thuộc giữa các dịch vụ
  • Xem xét cấu trúc nhóm và mô hình giao tiếp

Ranh giới được xác định rõ ràng dẫn đến các dịch vụ gắn kết hơn và giảm sự phụ thuộc giữa chúng, tạo điều kiện cho việc phát triển và triển khai độc lập.

4. Chiến lược tích hợp: Chọn cách tiếp cận phù hợp cho giao tiếp

Hãy bảo thủ trong những gì bạn làm, hãy tự do trong những gì bạn chấp nhận từ người khác.

Tầm quan trọng của tích hợp. Tích hợp hiệu quả là điều cần thiết để microservices hoạt động cùng nhau một cách liền mạch. Lựa chọn công nghệ tích hợp ảnh hưởng đáng kể đến tính linh hoạt, hiệu suất và khả năng bảo trì của hệ thống.

Các mẫu tích hợp chính:

  • Giao tiếp đồng bộ: REST, gRPC
  • Giao tiếp không đồng bộ: Hàng đợi tin nhắn, phát trực tuyến sự kiện
  • Cổng API: Để định tuyến và tổng hợp yêu cầu
  • Mạng dịch vụ: Để xử lý giao tiếp giữa các dịch vụ

Thực hành tốt nhất:

  • Sử dụng các giao thức không phụ thuộc vào công nghệ (ví dụ: HTTP)
  • Thực hiện các trình đọc chịu lỗi để xử lý các thay đổi một cách duyên dáng
  • Thiết kế cho sự cố với các bộ ngắt mạch và vách ngăn
  • Xem xét kiến trúc hướng sự kiện để giảm sự phụ thuộc

Chiến lược tích hợp phù hợp phụ thuộc vào trường hợp sử dụng cụ thể, yêu cầu hiệu suất và chuyên môn của nhóm.

5. Tách nguyên khối: Chuyển đổi sang microservices

Hãy nghĩ về nguyên khối của chúng ta như một khối đá cẩm thạch. Chúng ta có thể thổi bay toàn bộ, nhưng điều đó hiếm khi kết thúc tốt đẹp. Sẽ hợp lý hơn nhiều nếu chỉ tách dần từng phần.

Cách tiếp cận từng bước. Chuyển đổi từ kiến trúc nguyên khối sang microservices tốt nhất nên được thực hiện dần dần. Điều này cho phép các nhóm học hỏi và thích ứng trong khi giảm thiểu rủi ro.

Các bước để tách nguyên khối:

  1. Xác định các đường nối trong mã nguồn hiện có
  2. Trích xuất các ngữ cảnh giới hạn thành các mô-đun riêng biệt
  3. Tái cấu trúc các cấu trúc dữ liệu và cơ sở dữ liệu chia sẻ
  4. Tạo API cho giao tiếp giữa các mô-đun
  5. Trích xuất các mô-đun thành các dịch vụ riêng biệt
  6. Triển khai các tính năng mới dưới dạng microservices

Các thách thức cần xem xét:

  • Sự phụ thuộc dữ liệu giữa các dịch vụ
  • Tính toàn vẹn giao dịch qua các ranh giới dịch vụ
  • Tác động hiệu suất của giao tiếp mạng
  • Độ phức tạp trong vận hành khi quản lý nhiều dịch vụ

Bắt đầu với các phần dễ dàng nhất, ít rủi ro nhất để xây dựng sự tự tin và kinh nghiệm trước khi giải quyết các phần phức tạp hơn của hệ thống.

6. Kỹ thuật triển khai: Đảm bảo độ tin cậy và khả năng mở rộng

Nếu làm điều gì đó đúng nhưng khó khăn, chúng ta nên cố gắng làm cho mọi thứ dễ dàng hơn.

Triển khai tự động. Triển khai đáng tin cậy và có khả năng mở rộng là điều quan trọng đối với sự thành công của microservices. Các thực hành Tích hợp Liên tục và Triển khai Liên tục (CI/CD) là cần thiết để quản lý độ phức tạp triển khai tăng lên.

Các kỹ thuật triển khai chính:

  • Hạ tầng như mã (IaC)
  • Container hóa (ví dụ: Docker)
  • Nền tảng điều phối (ví dụ: Kubernetes)
  • Triển khai xanh-xanh
  • Phát hành canary

Các yếu tố cần xem xét khi triển khai:

  • Khám phá dịch vụ và quản lý cấu hình
  • Giám sát và ghi nhật ký
  • Bảo mật và kiểm soát truy cập
  • Di chuyển cơ sở dữ liệu và tính nhất quán dữ liệu

Đầu tư vào công cụ và tự động hóa để làm cho việc triển khai dễ dàng hơn, nhanh hơn và đáng tin cậy hơn. Điều này cho phép các nhóm triển khai thường xuyên với sự tự tin, nhận ra đầy đủ lợi ích của kiến trúc microservices.

7. Kiểm thử microservices: Duy trì chất lượng trong hệ thống phân tán

Càng nhiều bộ phận chuyển động, các bài kiểm tra của chúng ta càng dễ vỡ, và chúng càng ít xác định hơn.

Chiến lược kiểm thử toàn diện. Kiểm thử microservices đòi hỏi một cách tiếp cận nhiều lớp để đảm bảo cả chất lượng dịch vụ cá nhân và hành vi tổng thể của hệ thống.

Kim tự tháp kiểm thử cho microservices:

  • Kiểm thử đơn vị: Các bài kiểm tra nhanh, tập trung cho các thành phần riêng lẻ
  • Kiểm thử tích hợp: Xác minh các tương tác giữa các dịch vụ
  • Kiểm thử hợp đồng: Đảm bảo các dịch vụ đáp ứng các giao diện đã thỏa thuận
  • Kiểm thử đầu cuối: Xác thực hành vi của toàn bộ hệ thống

Thách thức kiểm thử:

  • Tăng độ phức tạp do tính chất phân tán
  • Quản lý dữ liệu kiểm thử giữa các dịch vụ
  • Mô phỏng môi trường giống như sản xuất
  • Xử lý các tương tác không đồng bộ

Nhấn mạnh các vòng phản hồi nhanh với kiểm thử đơn vị và kiểm thử tích hợp, trong khi sử dụng ít hơn, các bài kiểm tra đầu cuối được chọn lọc cẩn thận để xác thực các đường dẫn quan trọng. Xem xét sử dụng các hợp đồng do người tiêu dùng điều khiển để quản lý sự phụ thuộc dịch vụ một cách hiệu quả.

8. Giám sát và bảo mật: Giữ cho microservices khỏe mạnh và được bảo vệ

Ghi nhật ký tốt, và cụ thể là khả năng tổng hợp nhật ký từ nhiều hệ thống, không phải để ngăn chặn, mà có thể giúp phát hiện và phục hồi từ những điều xấu xảy ra.

Cách tiếp cận toàn diện. Giám sát và bảo mật hiệu quả là điều cần thiết để duy trì một hệ sinh thái microservices khỏe mạnh. Những khía cạnh này trở nên thách thức và quan trọng hơn trong các hệ thống phân tán.

Thực hành giám sát tốt nhất:

  • Ghi nhật ký tập trung và tổng hợp nhật ký
  • Theo dõi phân tán (ví dụ: sử dụng ID tương quan)
  • Cảnh báo và bảng điều khiển theo thời gian thực
  • Giám sát hiệu suất ứng dụng (APM)
  • Giám sát tổng hợp cho các đường dẫn quan trọng

Các yếu tố bảo mật cần xem xét:

  • Xác thực và ủy quyền giữa các dịch vụ
  • Cổng API cho bảo mật biên
  • Quản lý bí mật
  • Phân đoạn mạng
  • Kiểm tra bảo mật và kiểm tra thâm nhập thường xuyên

Thực hiện chiến lược phòng thủ sâu, bảo vệ cả chu vi và các dịch vụ cá nhân. Sử dụng tự động hóa để đảm bảo áp dụng nhất quán các chính sách bảo mật trên tất cả các dịch vụ.

9. Luật Conway: Căn chỉnh tổ chức và thiết kế hệ thống

Luật Conway nêu bật những nguy hiểm của việc cố gắng thực thi một thiết kế hệ thống không phù hợp với tổ chức.

Tác động tổ chức. Luật Conway cho rằng thiết kế hệ thống phản ánh cấu trúc giao tiếp trong một tổ chức. Nguyên tắc này có ý nghĩa quan trọng đối với kiến trúc microservices.

Căn chỉnh các nhóm và dịch vụ:

  • Tổ chức các nhóm xung quanh các khả năng kinh doanh
  • Trao quyền cho các nhóm với quyền sở hữu đầu cuối của các dịch vụ
  • Giảm thiểu sự phụ thuộc giữa các nhóm
  • Thúc đẩy văn hóa hợp tác và trách nhiệm chung

Các yếu tố cần xem xét:

  • Kích thước và thành phần nhóm
  • Mô hình giao tiếp và công cụ
  • Quy trình ra quyết định
  • Phát triển kỹ năng và chia sẻ kiến thức

Nhận ra rằng cấu trúc tổ chức và kiến trúc hệ thống có mối liên hệ chặt chẽ. Phát triển cả hai song song để tạo ra một môi trường thuận lợi cho sự phát triển và vận hành microservices thành công.

10. Mở rộng microservices: Xử lý tăng trưởng và sự cố

Ở quy mô lớn, ngay cả khi bạn mua bộ dụng cụ tốt nhất, phần cứng đắt tiền nhất, bạn không thể tránh khỏi thực tế rằng mọi thứ có thể và sẽ thất bại.

Thiết kế cho quy mô và khả năng chịu lỗi. Kiến trúc microservices phải được thiết kế để xử lý cả sự tăng trưởng về nhu cầu và các sự cố không thể tránh khỏi một cách duyên dáng.

Chiến lược mở rộng:

  • Mở rộng ngang (thêm nhiều phiên bản)
  • Mở rộng dọc (tăng tài nguyên cho mỗi phiên bản)
  • Bộ nhớ đệm (trong bộ nhớ, phân tán)
  • Phân mảnh và sao chép cơ sở dữ liệu
  • Xử lý không đồng bộ và kiến trúc hướng sự kiện

Mẫu chịu lỗi:

  • Bộ ngắt mạch để ngăn chặn sự cố lan truyền
  • Vách ngăn để cô lập lỗi
  • Thời gian chờ và thử lại với backoff lũy tiến
  • Suy giảm chức năng một cách duyên dáng

Cân nhắc định lý CAP:

  • Tính nhất quán
  • Khả dụng
  • Khả năng chịu phân vùng

Hiểu rằng các sự đánh đổi là cần thiết khi mở rộng các hệ thống phân tán. Ưu tiên dựa trên các yêu cầu và ràng buộc cụ thể của bạn. Thực hiện các thực hành quan sát và kỹ thuật hỗn loạn để liên tục cải thiện khả năng chịu lỗi của hệ thống.

Cập nhật lần cuối:

Đánh giá

4.21 trên tổng số 5
Trung bình của 4k+ đánh giá từ GoodreadsAmazon.

Xây dựng Microservices nhận được những đánh giá trái chiều, với nhiều người khen ngợi cái nhìn tổng quan toàn diện về các khái niệm microservices và những lời khuyên thực tiễn. Độc giả đánh giá cao cách tiếp cận thận trọng của tác giả và các ví dụ thực tế. Những người phê bình lưu ý rằng cuốn sách thiếu chiều sâu ở một số chủ đề và có thể thổi phồng quá mức về microservices. Nhiều người thấy nó có giá trị cho người mới bắt đầu nhưng ít hữu ích hơn cho các kiến trúc sư có kinh nghiệm. Cuốn sách bao quát nhiều khía cạnh của microservices, bao gồm thiết kế, triển khai, kiểm thử và mở rộng. Một số độc giả mong muốn có thêm chi tiết cụ thể về triển khai, trong khi những người khác đánh giá cao góc nhìn tổng quan về kiến trúc phần mềm.

Về tác giả

Sam Newman là một kiến trúc sư phần mềm và tư vấn viên nổi tiếng chuyên về microservices, điện toán đám mây và phân phối liên tục. Với kinh nghiệm phong phú trong lĩnh vực này, ông đã làm việc với nhiều tổ chức để triển khai và cải thiện kiến trúc phần mềm của họ. Newman thường xuyên diễn thuyết tại các hội nghị và đã viết nhiều cuốn sách về phát triển phần mềm. Phong cách viết của ông được khen ngợi vì sự rõ ràng, thực tế và lôi cuốn, dựa trên những kinh nghiệm thực tế của mình. Là một nhà tư tưởng hàng đầu trong lĩnh vực microservices, công việc của Newman đã ảnh hưởng đáng kể đến cách tiếp cận của ngành công nghiệp trong việc xây dựng các hệ thống phân tán. Kiến thức chuyên môn của ông không chỉ giới hạn ở các khía cạnh kỹ thuật, mà còn bao gồm cả các yếu tố tổ chức và văn hóa trong phát triển phần mềm.

0:00
-0:00
1x
Dan
Scarlett
Adam
Amy
Liv
Emma
Select Speed
1.0×
+
200 words per minute
Create a free account to unlock:
Bookmarks – save your favorite books
History – revisit books later
Ratings – rate books & see your ratings
Unlock unlimited listening
Your first week's on us!
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Oct 30,
cancel anytime before.
Compare Features Free Pro
Read full text summaries
Summaries are free to read for everyone
Listen to summaries
12,000+ hours of audio
Unlimited Bookmarks
Free users are limited to 10
Unlimited History
Free users are limited to 10
What our users say
30,000+ readers
“...I can 10x the number of books I can read...”
“...exceptionally accurate, engaging, and beautifully presented...”
“...better than any amazon review when I'm making a book-buying decision...”
Save 62%
Yearly
$119.88 $44.99/yr
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.
Settings
Appearance