nếu bạn dùng docker thì ko có gì lưu ý lắm ngoài các nội dung mình đã nói đâu, viết Dockerfile hoàn chỉnh là xong đến 90% rồi.
còn nếu bạn build thường (native), thì cần đảm bảo bạn setup được môi trường CICD sao cho giống với môi trường mà bạn sẽ deploy app Laravel của bạn, vì theo những gì mình trải nghiệm thì app PHP nói chung cần khá nhiều thứ dây dưa (php rồi các thư viện liên quan php-fpm, php-mbstring,....) rồi phiên bản của PHP nữa. Bạn để ý làm sao setup cho các môi trường giống nhau xuyên suốt là được
command curl -fksv -X POST $SERVER_HOST/$API_DEPLOYMENT_ID kia khả năng là gọi 1 API vào server, trong đó có chạy 1 con backend nào đó để thực hiện re-deploy e ạ.
Nhưng a thấy cách này nom có vẻ...ko hay , kiểu dùng 1 app để redeploy app khác , trong khi từ CICD nó cũng làm đc tương tự, chắc công ty e có nhiều thứ logics thêm nên cần phải làm vậy. Với dữ kiện hiện tại thì a thấy nó hơi thừa
Okey bạn. Cảm ơn bạn đã nhận xét và góp ý. Khi mình dày dặn kinh nghiệm, đúc kết được nhiều kiến thức nâng cao hơn thì mình sẽ chia sẻ những kiến thức nâng cao hơn
Chào b. Mình thấy b có khá nhiều bài đc editor choice. Các bài viết của bạn thường sơ sài vs ít cô đọng.
Hi vọng các bài viết sắp tới sẽ chỉn chu hơn nhé.
Còn câu hỏi cuối cùng của bác là redis chết thì mình trả lời như sau:
Redis chết thì cái gi là quan trọng nhất, nó là data vậy mình sẽ backup nó như sau:
Redis default rdb để backup và nó backup theo checkpoint thì có thể bị loss data ( chỗ này mình trade off để đạt được tốc độ)
Ngoài ra bạn dựng HA cho cụm redis. Mà mình cũng ns luôn để b biết là nó khó chết lắm kakakaka
@mitapari tôi đồng ý là ngôn ngữ và trình dịch tách biệt nhưng không phải là không liên quan, bản thân khi phát triển một ngôn ngữ thì nhà phát triển đã tạo ra trình dịch phù hợp cho nó, giống như hệ điều hành và máy tính, bạn không thể đem win x86 chạy trên cpu Snapdragon và bảo Snapdragon là cpu x86 được. Bản thân python hay java đều được tối ưu cho từng kiểu biên dịch hoặc thông dịch, kể cả bạn có dùng trình thông dịch cho java thì bản chất nó vẫn biên dịch từng dòng code ra hoặc dùng biên dịch cho python thì nó vẫn là thông dịch từng dòng code. Tóm lại là khi nói tới 1 ngôn ngữ ta sẽ gộp chung cả trình dịch của nó mặc dù chúng là 2 phần riêng biệt nhưng nó là 2 phần thiết kế ra để cho nhau, không ai nói java là ngôn ngữ thông dịch và ngược lại python là biên dịch. Ok man
Add kiểm tra lại list trên ạ, có vài link em thấy ko truy cập được.
còn đây là trang em seo, add cho em để link này ở đây nha. Em cảm ơn
https://ofnews.vn/xe-moi
TPS của hệ thống = 3, là con số nhỏ, hầu hết các RDBMS truyền thống đều đáp ứng được nên mình không cho phần này vô. Ngoài ra, bác có thể giải thích tại sao load test là phần quan trọng đối với một bài viết system design không? 🤔
Bài viết này mình có tham khảo sách System Design Interview Volume 2 của Alex Xu & Sahn Lam và đã ghi trong phần tham khảo rồi nha bác. 😁
@nam90nh nên thành ra add event với remove event mình thấy chưa giải quyết vấn đề của mình được ý hoặc mình chưa biết làm.
Vì add event hay remove event đều cần 1 action đi kèm khi sự kiện chuột hoặc bàn phím xảy ra. Mình đâu có biết viết function gì đâu. cái mình cần là làm cái function có sẵn nó chạy, chứ k phải add mới hay bỏ cũ đi
@hungtreo nói thế này chắc dễ hiểu hơn, 1 trang web nó có sẵn event rồi , k phải mình tạo rồi addevent nha, mình là đang tương tác với 1 trang web sẵn có trên mạng ấy, và hoàn toàn mình cũng k biết người ta xây cái web đó như thế nào, gán event gì, function gì đi kèm.
Cái mình cần đơn giản : automation cái web đó, và mình đang dùng lệnh DOM-Javascript để làm gì, để điền, để click ( chỉ vậy thôi )
Nhưng vấn đề là gì, nhiều khi bạn gán value cho 1 element textbox bằng DOM JS, nó chỉ hiển thị cái value bạn đang gán, mà cóc chạy như khi bạn tự gõ tay vào ô đó.
Ví dụ gõ tay nó filter theo từng lần bấm phím của mình, thì dùng lệnh DOM JS gán value, nó hiển thị vậy thôi, chả filter gì cả.
THẢO LUẬN
nếu bạn dùng docker thì ko có gì lưu ý lắm ngoài các nội dung mình đã nói đâu, viết Dockerfile hoàn chỉnh là xong đến 90% rồi.
còn nếu bạn build thường (native), thì cần đảm bảo bạn setup được môi trường CICD sao cho giống với môi trường mà bạn sẽ deploy app Laravel của bạn, vì theo những gì mình trải nghiệm thì app PHP nói chung cần khá nhiều thứ dây dưa (php rồi các thư viện liên quan
php-fpm,php-mbstring,....) rồi phiên bản của PHP nữa. Bạn để ý làm sao setup cho các môi trường giống nhau xuyên suốt là đượccommand
curl -fksv -X POST $SERVER_HOST/$API_DEPLOYMENT_IDkia khả năng là gọi 1 API vào server, trong đó có chạy 1 con backend nào đó để thực hiện re-deploy e ạ.Nhưng a thấy cách này nom có vẻ...ko hay
, kiểu dùng 1 app để redeploy app khác
, trong khi từ CICD nó cũng làm đc tương tự, chắc công ty e có nhiều thứ logics thêm nên cần phải làm vậy. Với dữ kiện hiện tại thì a thấy nó hơi thừa 
Okey bạn. Cảm ơn bạn đã nhận xét và góp ý. Khi mình dày dặn kinh nghiệm, đúc kết được nhiều kiến thức nâng cao hơn thì mình sẽ chia sẻ những kiến thức nâng cao hơn
Chào b. Mình thấy b có khá nhiều bài đc editor choice. Các bài viết của bạn thường sơ sài vs ít cô đọng. Hi vọng các bài viết sắp tới sẽ chỉn chu hơn nhé.
Cảm ơn b đã chia sẻ kiến thức đến cho cộng đồng
Cám ơn anh về bài viết hữu ích!
@systemdesign.vn
Thế cho mình hỏi là khi bạn thiết kế hệ thống bạn căn cứ vào đâu để biết hệ thống đấy của bạn là hiệu quả?
Kk màu mè là mình thích lắm 😎
Có vẻ bác chưa đọc kĩ bài mình viết.
Ngoài ra bạn dựng HA cho cụm redis. Mà mình cũng ns luôn để b biết là nó khó chết lắm kakakaka
Hi ạ, có bác nào tìm được chỗ truyền vnp_IpnURL qua cho VnPay chưa ạ, em đang gặp vấn đề tương tự
Hãy mô tả vấn đề bạn gặp phải và cộng đồng mạng có thể sẽ hỗ trợ bạn.
@mitapari tôi đồng ý là ngôn ngữ và trình dịch tách biệt nhưng không phải là không liên quan, bản thân khi phát triển một ngôn ngữ thì nhà phát triển đã tạo ra trình dịch phù hợp cho nó, giống như hệ điều hành và máy tính, bạn không thể đem win x86 chạy trên cpu Snapdragon và bảo Snapdragon là cpu x86 được. Bản thân python hay java đều được tối ưu cho từng kiểu biên dịch hoặc thông dịch, kể cả bạn có dùng trình thông dịch cho java thì bản chất nó vẫn biên dịch từng dòng code ra hoặc dùng biên dịch cho python thì nó vẫn là thông dịch từng dòng code. Tóm lại là khi nói tới 1 ngôn ngữ ta sẽ gộp chung cả trình dịch của nó mặc dù chúng là 2 phần riêng biệt nhưng nó là 2 phần thiết kế ra để cho nhau, không ai nói java là ngôn ngữ thông dịch và ngược lại python là biên dịch. Ok man
VẪN KO SỬA ĐC Ạ, CẦN HỖ TRỢ
Add kiểm tra lại list trên ạ, có vài link em thấy ko truy cập được. còn đây là trang em seo, add cho em để link này ở đây nha. Em cảm ơn https://ofnews.vn/xe-moi
Bác cho em hỏi:
Thank you bác.
Cám ơn góp ý của bác ♥️
TPS của hệ thống = 3, là con số nhỏ, hầu hết các RDBMS truyền thống đều đáp ứng được nên mình không cho phần này vô. Ngoài ra, bác có thể giải thích tại sao load test là phần quan trọng đối với một bài viết system design không? 🤔
Bài viết này mình có tham khảo sách System Design Interview Volume 2 của Alex Xu & Sahn Lam và đã ghi trong phần tham khảo rồi nha bác. 😁
@devil_boom_129 Phần create trong controller em k có sử dụng phương thức map .
bạn có dùng method
mapở đâu không?@nam90nh nên thành ra add event với remove event mình thấy chưa giải quyết vấn đề của mình được ý
hoặc mình chưa biết làm.
Vì add event hay remove event đều cần 1 action đi kèm khi sự kiện chuột hoặc bàn phím xảy ra. Mình đâu có biết viết function gì đâu. cái mình cần là làm cái function có sẵn nó chạy, chứ k phải add mới hay bỏ cũ đi
@hungtreo nói thế này chắc dễ hiểu hơn, 1 trang web nó có sẵn event rồi , k phải mình tạo rồi addevent nha, mình là đang tương tác với 1 trang web sẵn có trên mạng ấy, và hoàn toàn mình cũng k biết người ta xây cái web đó như thế nào, gán event gì, function gì đi kèm.
Cái mình cần đơn giản : automation cái web đó, và mình đang dùng lệnh DOM-Javascript để làm gì, để điền, để click ( chỉ vậy thôi )
Nhưng vấn đề là gì, nhiều khi bạn gán value cho 1 element textbox bằng DOM JS, nó chỉ hiển thị cái value bạn đang gán, mà cóc chạy như khi bạn tự gõ tay vào ô đó.
Ví dụ gõ tay nó filter theo từng lần bấm phím của mình, thì dùng lệnh DOM JS gán value, nó hiển thị vậy thôi, chả filter gì cả.
Mình đã gửi qua email!