Những xu hướng kiến trúc phần mềm Hot nhất hiện nay!

2396

Người viết: Y Hoang

Nếu bạn là một technical lead, một architect hay senior thậm chí là developer thì bạn không nên bỏ qua bài viết này.

Để đánh giá đúng được xu hướng của software architectures các kiến trúc sư phần mềm đã có rất nhiều buổi thảo luận và sau cùng họ sử dụng một nghiên cứu của Rogers. Nghiên cứu này sẽ nhóm các software architectures vào 4 nhóm chính, dựa trên 4 nhóm này các tổ chức có thể biết họ đã đầu tư bao nhiêu cho mỗi nhóm, 4 nhóm đó là:

Innovators >> EA (Early Adopters) >> EM (Early Majority) >> LM (Late Majority)

Ở bài này chúng ta sẽ không đi sâu vào bất kỳ một mẫu kiến trúc nào cả mà chỉ xem việc phân loại và xu hướng mà thôi.

Innovators

Innovators là nhóm đang được đầu tư nghiên cứu và phát triển thử nghiệm, nhóm này hiện nay đang có 3 hot trends lớn gồm:

  • HTTP/3 (Mình đã viết về HTTP/3 các bạn có thể tìm hiểu thêm ở đây)
  • Service meshes (Envoy, Linkerd, Istio)
  • Blockchain & distributed ledgers

Hy vọng tất cả những kiến trúc này sẽ sớm hoàn thiện và được chào đón rộng rãi

EA (Early Adopters)

EA là nhóm chớm có một số các tổ chức và hệ thống đưa hệ thống của họ tiếp cận những kiến trúc sau:

  • Reactive, có lẽ là số lượng các developers làm việc với javascript là quá lớn nên Reactive programming dù mới nhưng rất được cộng đồng chào đón, và hiển nhiên Reactive nằm trong nhóm EA.
  • Serverless, khả năng là có thể tập trung vào thiết kế các modular, event-driven system và bớt được mối quan tâm tới hạ tầng trong khi có thể hoàn toàn tin tưởng vào khả năng vận hành tự động của hạ tầng, từ đó khối lượng công việc sẽ giảm đi rất nhiều(less of work). Hiện tại Serverless đang được xếp vào nhóm EA.
  • CQRS thì được kỳ vọng là sẽ mau chóng trở thành xu hướng và được sử dụng phổ biến hơn, hiện CQRS đang được xếp vào nhóm EA
  • GraphQL thì đang được phát triển và hứa hẹn sẽ là một thay thế REST (GraphQL cũng bắt đầu được một số tổ chức đưa vào thử nghiệm)
  • gRPC và HTTP/2 thì cũng chưa được phát triển rộng rãi lắm nó dường như mới chỉ được sử dụng trong các sản phẩm của các tập đoàn công nghệ lớn như Google Chrome, Youtube nên nó được xếp vào nhóm EA
  • Architects as technical leader, quả thật thì đúng là như vậy những người làm architect một mặt phải lo về kỹ thuật như define architecture, mặt khác là phối hợp với các thành viên trong team, đôi khi còn viết code, coaching & mentoring về mặt kỹ thuật cho team, … 80% các tập đoàn lớn nói việc tìm kiếm một good architect khó hơn tìm kiếm một project leader.

EM (Early Majority)

Nhóm này được hiểu là các kiến trúc đã gần như đã chín mùi (matured) và sẽ sớm được phần lớn hệ thống triển khai, nhóm này gồm có:

  • Event-driven architecture (và Event sourcing) được dự đoán là sẽ phù hợp cho sự phát triển của nhiều hệ thống và chính xác đến Q1/2019 qua một số khảo sát nó đã trở thành lựa chọn của phần lớn các hệ thống và hiện đang được xếp vào nhóm EM
  • Event Consistency nó đã được áp dụng nhiều kể từ khi nhiều hệ thống triển khai theo kiến trúc Microservices, đã có nhiều tranh luận xoay quanh việc thay thế kiến trúc này bằng Saga pattern, tuy nhiên có lẽ nó vẫn hướng đến một mục đích chung là làm sao để đảm bảo được data consistency giữa nhiều microservices.

LM (Late Majority):

  • Microservices thì đã được sử dụng nhiều hơn bởi nó mang đến nhiều ưu điểm, nhiều công ty đã thử sức với kiến trúc mới này và cũng nói nó rất tuyệt nhưng cũng không tránh được ác mộng. Ngay cả những doanh nghiệp thận trọng nhất cuối cùng cũng đã triển khai microservices dù biết sẽ có rất nhiều thử thách với họ.
  • Domain Driven Design (DDD) hiện cũng được xếp vào nhóm (LM) và thường xuyên được triển khai kết hợp với microservices giúp giải quyết những bài toán mang tính phức tạp.
  • BDD & TDD trở nên hiệu quả hơn nhiều kể từ khi nó được đưa vào quy trình phát triển phần mềm khép kín kiểu như CI/CD pipeline, tuy nhiên TDD nghe có vẻ như là ít được thảo luận gần đây.

Mình rất hy vọng bài viết này có thể mang đến cho các bạn một cái nhìn tổng thể cả về mặt công nghệ và kiến trúc, những bạn nào đi theo hướng technical architect có một cái nhìn toàn vẹn hơn, những bạn hay anh chị nào đã và đang là architect thì có thể biết được cái trending và có thể đưa ra những lựa chọn phù hợp cho việc nghiên cứu và phát triển của team.

Rất cảm ơn đã dành thời gian đọc bài viết!

Techtalk via Gravity Model

CHIA SẺ