Hutech Developer Club

Hutech Developer Club Hutech Developers Club - Fanpage Câu lạc bộ lập trình viên - Hội những người yêu thích lập trình. Website: http://hutechdev.net

Hi all, lâu nay lại chểnh mảng quá, từ nay, mình sẽ cố gắng siêng chia sẻ về mọi thứ mà mình đã trải qua, cũng như các c...
24/08/2019

Hi all, lâu nay lại chểnh mảng quá, từ nay, mình sẽ cố gắng siêng chia sẻ về mọi thứ mà mình đã trải qua, cũng như các công nghệ mới mình được tiếp cận hoặc tìm hiểu qua.

Microservice architecture là architecture pattern được sử dụng rộng rãi trong rất nhiều những hệ thống lớn ngày nay nhờ vào những ưu điểm của nó so với monolithic architecture.

Mô tả một cách sơ lược thì Microservice là việc chia nhỏ ứng dụng lớn thành nhiều service riêng biệt chạy độc lập với nhau, ko ảnh hưởng đến nhau và có thể giao tiếp với nhau qua nhiều cách trong đó phổ biến nhất vẫn là thông qua API.

Martin Fowler - developer gạo cội với nhiều đầu sách rất nổi tiếng như: Clean Code, Patterns of Enterprise Application, ... đã tóm lược lại những kiến thức cơ bản cần có để chuẩn bị chuyển đổi kiến trúc hệ thống từ monolithic sang kiến trúc microservice.

1. Componentization via Services:
- Ngành công nghiệp phần mềm ngày càng phát triển, đi kèm với đó là những ứng dụng lớn với những business phức tạp được ra đời để giải quyết những bài toán cụ thể.
- Việc các ứng dụng ngày càng lớn và phức tạp dẫn đến việc maintain ngày càng trở nên khó khăn nếu không có 1 kiến trúc tốt. Do đó việc chia nhỏ 1 ứng dụng ra thành nhiều service nhỏ mang lại rất nhiều ưu điểm, ví dụ các service có thể viết bằng bất kì ngôn ngữ hoặc sử dụng bất kì database nào phù hợp, hoặc là nếu trước đó việc thêm 1 tính năng mới sẽ phải deploy lại toàn bộ project thì việc tách ứng dụng ra thành nhiều service nhỏ sẽ rất dễ dàng cho việc thêm tính năng mới mà không cần phải deploy lại toàn bộ project.
- Nhưng nó cũng có 1 vài nhược điểm: 1 tính năng muốn lấy dữ liệu ở service khác đều phải gọi qua API, trước đó thì chỉ cần gọi 1 function là lấy được.

2. Organized around Business Capabilities:
- Thông thường, 1 ứng dụng lớn sẽ bao gồm nhiều team chịu những phần khác nhau như: UI-UX team, server-side logic team, database team ... điều này dẫn đến khi có 1 thay đổi hoặc thêm 1 tính năng mới sẽ mất nhiều thời gian và chi phí hơn. Với cách tiếp cận của microservice, việc chia nhỏ ra thành nhiều các service team phù hợp với yêu cầu về business sẽ giúp cho các team trở lên linh hoạt hơn rất nhiều.

3. Products not Projects:
- 1 Model rất phổ biến trong ngành phát triển phần mềm là cố gắng hoàn thành xong các chức năng trong sản phẩm, sau đó sản phẩm sẽ được bàn giao để maintain, điều này góp phần làm cho các thành viên trong team thiếu sự gắn kết và dần tan rã.
- Cách tiếp cận của microservice sẽ tránh được điều này, mỗi team nên có 1 product riêng có đẩy đủ vòng đời phát triển sản phẩm. 1 khái niệm rất nổi tiếng từ Amazon: "you build, you run it", nghĩa là các team phải chịu trách nhiệm từ lúc phát triển sản phẩm đến lúc sản phẩm chạy trên production, và team đó sẽ phải chịu trách nhiệm giúp cho user hiểu được sản phẩm của mình hơn.
4. Smart endpoints and dumb pipes:
- Ứng dụng đc xây dựng theo microservice architecture mục đích là để tách rời ứng dụng lớn ra thành nhiều phần nhỏ và làm cho chúng gắn kết nhất có thể (decoupled and as cohesive as possible)
- Và cách phổ biến để giao tiếp giữa các service là dùng RESTful API, và cách tiếp cận thứ 2 là dùng 1 số tool như: RabbitMQ hay ZeroMQ để build 1 hệ thống bất đồng bộ
- Trong monolithic architecture, việc gọi qua nhau để lấy dữ liệu đơn giản chỉ là gọi qua các function
5. Decentralized Governance
- 1 nhược điểm của việc quản lý tập trung là chỉ áp dụng được 1 công nghệ duy nhất trên nền tảng đó, và không phải mọi vấn đề đều được giải quyết tốt nhất khi dùng công nghệ đó.
Hãy dùng đúng công cụ để giải quyết đúng vấn đề đang gặp phải,
- Việc chia ra thành các service nhỏ làm việc sử dụng linh động các ngôn ngữ, database khác nhau rất dễ dàng
- Hãy cùng ngồi lại với team, trao đổi những vấn đề đang gặp phải, viết chúng ra giấy và tìm kiếm các công cụ giải quyết vấn đề đang gặp phải
6. Decentralized Data Management:
- Microservice architecture đc chia ra thành nhiều service nhỏ, mỗi service sẽ có 1 database độc lập với các service khác, điều này khác hoàn toàn với monolithic architecture thường chỉ sử dụng duy nhất 1 database.
- Việc chia tách ra thành nhiều service dẫn đến 1 vài vấn đề về việc đảm bảo toàn vẹn dữ liệu, và việc sử dụng transaction là 1 giải pháp hữu hiệu. Nhưng việc này cũng có nhược điểm là phải khi 1 service xảy ra vấn đề sẽ phải gọi lại các service khác để đảm bảo toàn vẹn dữ liệu
7. Infrastructure Automation
- Hiện nay, việc áp dụng CI-CD vào hệ thống của mình cũng không còn quá xa lạ trong những năm gần đây khi cloud phát triển rất nhanh chóng, và việc áp dụng automation cho microservice architecture sẽ giảm thiểu đi sự phức tạp khi build, deploy các service.
8. Design for failure
- Việc chia tách ứng dụng ra thành nhiều service có nhược điểm: khi có quá nhiều service, việc quản lý chất lượng của 1 service hay làm sao để 1 service có khả năng chịu lỗi cao nhất khi có 1 lượng lớn request đến thực sự là 1 thách thức. Và khi 1 service bị down, làm thế nào để detect và restore service đó nhanh nhất có thể để không ảnh hưởng quá nhiều đến trải nghiệm của user.
- Việc Automation Testing, Monitoring, Logging các service trên môi trường production là thứ cần phải có để detect được vấn đề nhanh nhất có thể
9. Evolutionary Design
- Khi quyết định chuyển đổi từ monolithic architecture sang microservice architecture, bạn sẽ phải đối mặt với 1 vài câu hỏi: làm sao để tách ứng dụng thành nhiều các service nhỏ, làm thế nào để khi viết lại 1 service không ảnh hưởng đến các service khác, .. và website Guardian là ví dụ điển hình về việc chuyển từ kiến trúc monolithic sang microservice, phần lõi của họ vẫn là monolithic, nhưng các tính năng mới đều đc chia nhỏ ra các service khác nhau.
- Với microservice architecture, các service được deploy độc lập với nhau nhưng phải lưu ý, khi có 1 service thay đổi, liệu các service khác có bị ảnh hưởng không?. Cách giải quyết phổ biến sử dụng versioning cho service này.

Các bạn có thể tham khảo chi tiết bài viết ở đây: https://martinfowler.com/articles/microservices.html

24/08/2018

Góc tuyển dụng.
[HCM, Quận 11] Tuyển Thực tập sinh QC (Tester) phần mềm có HỖ TRỢ PHÍ THỰC TẬP 😍
👦Số lượng: 10
🏡Địa chỉ làm việc: 319/A8 Lý Thường Kiêt, Phường 15, Quận 11, Tp. Hồ Chí Minh.
💻Mô tả công việc:
•Tham gia các dự án thực tế tại công ty với vai trò Tester thực tập.
•Nghiên cứu yêu cầu của dự án.
•Lập kế hoạch kiểm thử, xây dựng test case/check list và tiến hành kiểm thử phần mềm.
•Phối hợp với các bộ phận khác trong công ty để đảm bảo chất lượng dự án.
•Phân tích, theo dõi kết quả kiểm thử, báo cáo kết quả kiểm thử định kì.
•Tham gia các buổi đào tạo kỹ năng nghề nghiệp nội bộ của công ty.
•Thực hiện các nhiệm vụ khác theo phân công của quản lý.
📧Phương thức nộp hồ sơ:
•Ứng viên gửi bản mềm CV.
•Email nhận hồ sơ: [email protected]
•Tiêu đề Email ghi rõ: [CV][Họ tên]Ứng tuyển thực tập QC
CÁC BẠN CMT BÊN DƯỚI HOẶC INBOX NẾU CẦN HỖ TRỢ THÊM THÔNG TIN NHÉ. Cảm ơn cả nhà ❤️

Chào mọi người, mình lại ngoi lên.Mình tìm được 1 diễn đàn khá hay về các thể loại ebook lập trình, mong nó sẽ giúp được...
03/11/2017

Chào mọi người, mình lại ngoi lên.
Mình tìm được 1 diễn đàn khá hay về các thể loại ebook lập trình, mong nó sẽ giúp được mọi người.
Sau này mình sẽ có 1 số bài viết về data-mining để cùng mọi người thảo luận, cùng chờ nhé.

Dịch vụ chia sẻ kiến thức về lập trình miễn phí. Download free eBook. Top trending GitHub repositories

06/06/2017

Chào các bạn, lâu rồi không có 1 dòng feed nào, hôm nay mình cũng xin giới thiệu 1 chương trình khá thú vị để các bạn thử sức và tìm kiếm 1 công việc cho riêng mình khi bắt đầu khỏi sự vào đời :D

ai còn nhớ hay đã quên :)
27/02/2016

ai còn nhớ hay đã quên :)

1. Trần Công Thọ Yahoo: it_tran90 Phone: 0932474098 Email: [email protected] Homepage: ithutech.wordpress.com or ittran90.tk 2. Nguyễn Minh Giang Yahoo: vo_danh1408 Email: đang cập nhật Homepa…

Nếu bạn là người mới chập chững trong thế giới lập trình rộng lớn, hay bạn đang đánh mất dần đam mê, hay bạn muốn trau d...
23/01/2016

Nếu bạn là người mới chập chững trong thế giới lập trình rộng lớn, hay bạn đang đánh mất dần đam mê, hay bạn muốn trau dồi thêm kỹ năng cũng như kiến thức trong việc học và làm, thì đây là một cuốn sách vô cũng hữu dụng, nó ko chứa một đoạn code cụ thể nào cả, mà nó cho bạn cả một tầm nhìn vào những dự án cũng như cách mà bạn đang thực hiện.

I hope it being helpful.
In the changing world, you do not change, you will be left behind!

Chào bạn tôi là thành viên cũ của Hutech Development Team :D

YOLO!
27/03/2015

YOLO!

Microsoft Excel Workbook

20/03/2015

Xin chào mọi người!
Hiện tại đang có 1 dự án web code bằng java dành cho các bạn biết hoặc không biết gì về java có thể join tham gia dự án để học hỏi thêm kinh nghiệm chuyên môn.
Bạn này có mong muốn có thể gửi thông tin về email: [email protected]
Thân!

06/11/2014

[UPDATE] nếu bạn nào năm 2 có khả năng cũng verry good ^^!
[Dự án ngoài] cần tìm khoảng 1-2 bạn nữa để tham gia dự án(có thể làm PHP or Java or .NET) biết nhiều càng tốt, ưu tiên các bạn năm 3-4, tại vì muốn giúp các bạn kiếm thêm thu nhập trang trải chi phí cũng như học hỏi! các bác lớn đi làm hết rồi ^^!
Dự án dã có khoảng 3-4 người rồi. liên hệ mình để biết thêm nha!
https://www.facebook.com/generalsnguyen

có ai hứng thú với cái này ko?https://angularjs.org/
01/10/2014

có ai hứng thú với cái này ko?
https://angularjs.org/

AngularJS is what HTML would have been, had it been designed for building web-apps. Declarative templates with data-binding, MVW, MVVM, MVC, dependency injection and great testability story all implemented with pure client-side JavaScript!

Address

144/24 Điện Biên Phủ, Quận Bình Thạnh
Ho Chi Minh City
70000

Alerts

Be the first to know and let us send you an email when Hutech Developer Club posts news and promotions. Your email address will not be used for any other purpose, and you can unsubscribe at any time.

Share