<div dir="ltr"><div><div><div>Hi anh Tuấn Anh và các anh BKT,<br><br></div>Nếu muốn đưa ra được tiêu chí kỹ thuật cho OpenCPS v2.0 mình cần phụ thuộc vào khả năng đáp ứng hiện tại của OpenCPS v1.0, khả năng của kiến trúc sắp tới để có thể ước lượng ra con số hợp lý.<br><br></div>Việc này nếu em ngồi qua máy tính và đưa ra một con số thì không khả thi và là chém gió, vậy nên em đề xuất anh em mình ngồi họp và dựa vào các con số hiện tại của OpenCPS 1.0 cùng các định hướng cụ thể tương lai về mặt kỹ thuật cho OpenCPS 2.0 để cùng tính toán ra chỉ tiêu hợp lý.<br><br></div>Em Hiếu.<br></div><div class="gmail_extra"><br><div class="gmail_quote">2017-03-27 14:53 GMT+07:00 Ta Tuan Anh <span dir="ltr"><<a href="mailto:anhtt@fds.vn" target="_blank">anhtt@fds.vn</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<p>Hi Hiếu và các bạn,</p>
<p>Vì hiện nay OpenCPS đang đề xuất nội dung để làm trong 18 tháng
nên về mặt nguyên tắc mọi chi tiết quyết định làm theo hướng nào
sẽ phải đưa ra trong qúa trình thực hiện. Tại thời điểm này chúng
ta chỉ phải vạch ra những phương án kĩ thuật có thể quan tâm để
thực hiện. Do vậy các đề xuất phương án khác nhau của Hiếu cứ viết
đầy đủ vào mà chưa cần quyết định vội. </p>
<p>Quan trọng vẫn là đưa ra được các tiêu chí kĩ thuật cần đạt được
khi kết thúc nhiệm vụ. Tuy nhiên các tiêu chí chỉ nên đặt ở mức
trung bình, vì nếu cao qúa thì có thể gặp khó khăn mà ta không thể
thực hiện. Kể cả các tiêu chí về SLA cũng là do chúng ta tự đặt
ra, ví dụ như về thời gian downtime, số CCU,... <br>
</p>
<p>Hiện nay các hệ thống DVC trên thị trường chưa có tiêu chuẩn cụ
thể nào, nên việc chỉ cần đưa ra được một tiêu chí định lượng cụ
thể SLA cho hệ thống đã là thành công của dự án rồi. Qua đây nếu
có thể anh em share một cái mẫu về tiêu chí kĩ thuật cần đáp ứng
đối với một hệ thống đã chạy trên thực tế thì qúa tốt. Chỉ cần cho
một hệ thống nhỏ vài trăm người dùng thôi cũng được. <br>
</p>
<p> Ngoài ra OpenCPS v2 cũng sẽ được nâng cấp hoàn toàn lên Liferay
7 với kiến trúc OSGi. Do vậy sẽ phù hợp hơn với khả năng mô đun
hóa, kiểm tra tự động các thành phần. <br>
</p>
<p> Tuấn Anh<br>
</p><div><div class="h5">
<div class="m_4679515418382370773moz-cite-prefix">On 03/27/2017 02:18 PM, Hieu LE wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div>
<div>
<div>Hi anh Tuấn Anh và các anh trong BKT OpenCPS,<br>
</div>
(em không chắc mail em có gửi tới BKT được không vì em nhớ
là em không nằm trong ML của BKT)<br>
<br>
</div>
Được anh Tuấn Anh chỉ đích danh nên trước khi thảo được 1 file
tài liệu (A4) về phương pháp tiếp cận và kỹ thuật, em xin nêu
ý kiến draft và một số câu hỏi của em ở đây trước, mong các
anh giải đáp giúp để có thể clear hơn về định hướng.<br>
<br>
</div>
Các phần em để trong ngoặc đơn là nói về kỹ thuật, có thể bỏ qua
để nắm về hướng tổng quan tốt hơn ạ.<br>
<div>
<div class="gmail_extra"><br>
<div class="gmail_quote">2017-03-27 10:27 GMT+07:00 Ta Tuan
Anh <span dir="ltr"><<a href="mailto:anhtt@fds.vn" target="_blank">anhtt@fds.vn</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><snipped><br>
<div>
<br>
a) Kiểm thử tự động, tích hợp đóng gói phần mềm CI/CD<br>
</div>
</blockquote>
<div><br>
</div>
<div>Có 2 cách tiếp cận đối với mục CI/CD, một là sử dụng
các dịch vụ online (như TravisCI hoặc CircleCI, trả thêm
tiền để có hiệu năng chạy CI ổn định và tốt hơn); cách
thứ 2 là tự xây dựng một cụm CI của riêng OpenCPS (dùng
Jenkin hoặc Zuul).<br>
<br>
</div>
<div>Ưu điểm của cách 1 là tiết kiệm về chi phí và đã có
PoC rồi (em, anh Khoa và Tú đã thử nghiệm với OpenCPS
1.8 chạy trên Travis), nhược điểm là sẽ khó customize và
làm chủ hơn đối với các cách thức CI/CD phức tạp hơn về
sau này.<br>
<br>
</div>
<div>Ưu điểm của cách 2 là mình hoàn toàn làm chủ về hạ
tầng, kỹ thuật, nhược điểm là chi phí về mặt con người
và vận hành sẽ tốn kém hơn.<br>
<br>
</div>
<div>Về kỹ thuật sâu hơn bên dưới, hiện tại mình đã ứng
dụng Docker - đây là ở mức unit với service là OpenCPS,
đối với OpenCPS v2.0 nên nâng lên một cấp về
orchestration - có thể dùng kubernetes hoặc swarm để
phục vụ cho các nhu cầu ở mục 2, 3, 4 bên dưới
(update/upgrade, SLA...). Điều này cần OpenCPS v2.0 cần
có một thiết kế về mặt kiến trúc hệ thống và mặt dịch vụ
chi tiết và hợp lý hơn. Em recommend là chuyển dịch
thiết kế hiện tại (SOA) về thiết kế micro-service.<br>
</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>
<br>
b) Đảm bảo an toàn an ninh thông tin hệ thống<br>
</div>
</blockquote>
<div><br>
</div>
<div>Phần này em không chuyên sâu, xin nhường cho các
chuyên gia từ NetNam cũng như các thành viên khác.<br>
</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>
<br>
c) Đảm bảo hiệu năng, mức độ sẵn sàng cao hệ thống<br>
</div>
</blockquote>
<div><br>
</div>
<div>Để đảm bảo hiệu năng thì phụ thuộc vào mặt ... con
người là chính. Cần Open thiết kế kiến trúc và từng
thành phần để có thể chứng minh rằng thiết kế của
OpenCPS là tối ưu, đảm bảo hiệu năng. Cần có thêm cơ chế
review code để giảm thiểu rủi ro về ảnh hướng tới hiệu
năng.<br>
<br>
</div>
<div>Để đảm bảo mức độ sẵn sàng cao, về mặt kiến trúc,
OpenCPS v2.0 phải đảm bảo có thể kiểm soát được các
race-condition; có nghĩa là nếu đồng thời có 2 request
từ 2 user khác nhau cùng tương tác với 1 tài nguyên của
hệ thống sẽ không gây ra tình trạng conflict. Đảm bảo
được yêu cầu này thì OpenCPS v2.0 có thể triển khai
thành phần HA/LB ở mode Active-Active.<br>
</div>
<div><br>
</div>
<div>Câu hỏi: chỉ tiêu đánh giá hiệu năng, mức độ sẵn sàng
cao của hệ thống là bao nhiêu và như thế nào? Ví dụ về
chỉ tiêu: hệ thống OpenCPS v2.0 triển khai trên hạ tầng
cấu hình X (hardware, network..) bảo đảm chịu được tải
tối thiểu Y CCU, để nâng lên mức Y^Y CCU cần theo công
thức như sau. Ví dụ về mức độ sẵn sàng cao: nếu hệ thống
gặp sự cố downtime do các service của OpenCPS gây nên
thì số lượng connection/request/packet lost là X%.<br>
</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>
<br>
d) Giám sát đảm bảo vận hành chất lượng dịch vụ theo
SLA<br>
</div>
</blockquote>
<div><br>
</div>
<div>OpenCPS v2.0 cần phải có thiết kế và tài liệu về mặt
giám sát (monitoring/logging) và cảnh báo. Ngoài ra, ý d
này hoàn toàn phụ thuộc vào ý c ở mặt SLA.<br>
<br>
</div>
<div>Về mặt kỹ thuật, thông thường monitoring các bên có
thể sử dụng các giải pháp như Nagios, Cacti, Icinga,
Zabbix.. nhưng phụ thuộc vào quyết định của mình ở ý a
có thể sẽ là các giải pháp monitoring và cảnh báo khác
như Prometheus (chuyên phục vụ cho container). Cảnh báo
nên tối thiểu là có cảnh báo qua SMS, email và trung tâm
điều hành chung của OpenCPS.<br>
</div>
<div><br>
</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>
<br>
Vì thời gian để chuẩn bị viết thuyết minh không nhiều,
nên rất mong các chuyên gia trợ giúp gửi các thông tin
cần thiết trong tuần này.<br>
<br>
Cám ơn mọi người,<br>
<br>
Tuấn Anh<br>
<br>
</div>
</blockquote>
</div>
<br>
</div>
<div class="gmail_extra">Em xin hết.<br clear="all">
</div>
<div class="gmail_extra"><br>
-- <br>
<div class="m_4679515418382370773gmail_signature" data-smartmail="gmail_signature">
<div dir="ltr"><span style="color:rgb(0,0,0);font-family:monospace;font-size:medium">-----BEGIN
GEEK CODE BLOCK-----</span><br style="color:rgb(0,0,0);font-family:monospace;font-size:medium">
<span style="color:rgb(0,0,0);font-family:monospace;font-size:medium">Version:
3.1</span><br style="color:rgb(0,0,0);font-family:monospace;font-size:medium">
<span style="color:rgb(0,0,0);font-family:monospace;font-size:medium">GCS/CM/IT/M/MU
d-@? s+(++):+(++) !a C++++(++++)$ ULC++++(++)$ P
L++(+++)$ E !W N* o+ K w O- M V- PS+ PE++ Y+ PGP+ t 5
X R tv+ b+(++)>+++ DI- D+ G e++(+++) h--
r(++)>+++ y- </span><br style="color:rgb(0,0,0);font-family:monospace;font-size:medium">
<span style="color:rgb(0,0,0);font-family:monospace;font-size:medium">------END
GEEK CODE BLOCK------</span><br>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<br>
</div></div></div>
</blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><span style="color:rgb(0,0,0);font-family:monospace;font-size:medium">-----BEGIN GEEK CODE BLOCK-----</span><br style="color:rgb(0,0,0);font-family:monospace;font-size:medium"><span style="color:rgb(0,0,0);font-family:monospace;font-size:medium">Version: 3.1</span><br style="color:rgb(0,0,0);font-family:monospace;font-size:medium"><span style="color:rgb(0,0,0);font-family:monospace;font-size:medium">GCS/CM/IT/M/MU d-@? s+(++):+(++) !a C++++(++++)$ ULC++++(++)$ P L++(+++)$ E !W N* o+ K w O- M V- PS+ PE++ Y+ PGP+ t 5 X R tv+ b+(++)>+++ DI- D+ G e++(+++) h-- r(++)>+++ y- </span><br style="color:rgb(0,0,0);font-family:monospace;font-size:medium"><span style="color:rgb(0,0,0);font-family:monospace;font-size:medium">------END GEEK CODE BLOCK------</span><br></div></div>
</div>