{"id":11069,"date":"2026-06-02T17:17:32","date_gmt":"2026-06-02T09:17:32","guid":{"rendered":"https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/"},"modified":"2026-06-02T17:17:32","modified_gmt":"2026-06-02T09:17:32","slug":"vpascode-plantuml-playbook-reference-guide","status":"publish","type":"post","link":"https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/","title":{"rendered":"H\u01b0\u1edbng d\u1eabn tham kh\u1ea3o S\u1ed5 tay PlantUML VPASCode"},"content":{"rendered":"<p data-nodeid=\"13783\"><em data-nodeid=\"13833\">Danh s\u00e1ch b\u00e0i vi\u1ebft \u0111\u01b0\u1ee3c tuy\u1ec3n ch\u1ecdn t\u1eeb S\u1ed5 tay PlantUML VPASCode, bao g\u1ed3m c\u00e1c h\u01b0\u1edbng d\u1eabn c\u00fa ph\u00e1p cho c\u00e1c quy tr\u00ecnh bi\u1ec3u \u0111\u1ed3 m\u00e3 h\u00f3a b\u1eb1ng UML v\u00e0 kh\u00f4ng ph\u1ea3i UML.<\/em><\/p>\n<hr data-nodeid=\"13784\"\/>\n<h2 data-nodeid=\"13785\">C\u1ed1t l\u00f5i v\u00e0 C\u01a1 b\u1ea3n c\u00fa ph\u00e1p PlantUML<\/h2>\n<ol data-nodeid=\"13786\">\n<li data-nodeid=\"13787\">\n<p data-nodeid=\"13788\"><a data-nodeid=\"13841\" href=\"https:\/\/www.vpascode.com\/docs\/vpascode-docs\/plantuml-playbook\/plantuml-syntax-basics\/\"><strong data-nodeid=\"13842\">C\u01a1 b\u1ea3n c\u00fa ph\u00e1p PlantUML<\/strong><\/a>: N\u1eafm v\u1eefng c\u00fa ph\u00e1p n\u1ec1n t\u1ea3ng c\u1ee7a PlantUML bao g\u1ed3m khai b\u00e1o bi\u1ec3u \u0111\u1ed3 v\u1edbi\u00a0<code data-backticks=\"1\" data-nodeid=\"13844\">@startuml<\/code>\/<code data-backticks=\"1\" data-nodeid=\"13846\">@enduml<\/code>, \u0111\u1ecbnh ngh\u0129a th\u1ef1c th\u1ec3, to\u00e1n t\u1eed quan h\u1ec7, ch\u1ec9 th\u1ecb \u0111\u1ecbnh d\u1ea1ng, v\u00e0 c\u00e1c t\u1eeb kh\u00f3a ph\u1ed5 bi\u1ebfn. H\u1ecdc c\u00e1ch c\u1ea5u tr\u00fac c\u00e1c \u0111o\u1ea1n m\u00e3 PlantUML s\u1ea1ch s\u1ebd, d\u1ec5 \u0111\u1ecdc \u0111\u1ec3 t\u1ef1 \u0111\u1ed9ng t\u1ea1o ra c\u00e1c bi\u1ec3u \u0111\u1ed3 chuy\u00ean nghi\u1ec7p. [[34]]<\/p>\n<\/li>\n<li data-nodeid=\"13789\">\n<p data-nodeid=\"13790\"><a data-nodeid=\"13857\" href=\"https:\/\/www.vpascode.com\/docs\/vpascode-docs\/plantuml-playbook\/plantuml-use-case-diagram-syntax-guide\/\"><strong data-nodeid=\"13858\">H\u01b0\u1edbng d\u1eabn c\u00fa ph\u00e1p bi\u1ec3u \u0111\u1ed3 tr\u01b0\u1eddng h\u1ee3p s\u1eed d\u1ee5ng PlantUML<\/strong><\/a>: H\u1ecdc c\u00e1ch m\u00f4 h\u00ecnh h\u00f3a c\u00e1c y\u00eau c\u1ea7u ch\u1ee9c n\u0103ng v\u00e0 t\u01b0\u01a1ng t\u00e1c gi\u1eefa c\u00e1c t\u00e1c nh\u00e2n b\u1eb1ng bi\u1ec3u \u0111\u1ed3 tr\u01b0\u1eddng h\u1ee3p s\u1eed d\u1ee5ng PlantUML. Bao g\u1ed3m c\u00e1c t\u00e1c nh\u00e2n, tr\u01b0\u1eddng h\u1ee3p s\u1eed d\u1ee5ng, bi\u00ean gi\u1edbi h\u1ec7 th\u1ed1ng, m\u1ed1i quan h\u1ec7 include\/extend, v\u00e0 c\u00e1c m\u1eabu kh\u00e1i qu\u00e1t h\u00f3a cho t\u00e0i li\u1ec7u y\u00eau c\u1ea7u v\u00e0 b\u1ea3n \u0111\u1ed3 c\u00e2u chuy\u1ec7n ng\u01b0\u1eddi d\u00f9ng.<\/p>\n<\/li>\n<li data-nodeid=\"13791\">\n<p data-nodeid=\"13792\"><a data-nodeid=\"13864\" href=\"https:\/\/www.vpascode.com\/docs\/vpascode-docs\/plantuml-playbook\/plantuml-class-diagram-syntax-guide\/\"><strong data-nodeid=\"13865\">H\u01b0\u1edbng d\u1eabn c\u00fa ph\u00e1p bi\u1ec3u \u0111\u1ed3 l\u1edbp PlantUML<\/strong><\/a>: Thi\u1ebft k\u1ebf c\u00e1c c\u1ea5u tr\u00fac h\u1ec7 th\u1ed1ng t\u0129nh b\u1eb1ng bi\u1ec3u \u0111\u1ed3 l\u1edbp PlantUML. N\u1eafm v\u1eefng khai b\u00e1o l\u1edbp\/\u0111\u1eb7c t\u00ednh\/ph\u01b0\u01a1ng th\u1ee9c, c\u00e1c b\u1ed9 s\u1eeda \u0111\u1ed9 hi\u1ec3n th\u1ecb, k\u1ebf th\u1eeba (<code data-backticks=\"1\" data-nodeid=\"13867\">&lt;|--<\/code>), k\u1ebft h\u1ee3p (<code data-backticks=\"1\" data-nodeid=\"13869\">*--<\/code>), t\u1ed5ng h\u1ee3p (<code data-backticks=\"1\" data-nodeid=\"13871\">o--<\/code>), v\u00e0 c\u00e1c m\u1ed1i quan h\u1ec7 li\u00ean k\u1ebft cho t\u00e0i li\u1ec7u ki\u1ebfn tr\u00fac h\u01b0\u1edbng \u0111\u1ed1i t\u01b0\u1ee3ng. [[49]]<\/p>\n<\/li>\n<li data-nodeid=\"13793\">\n<p data-nodeid=\"13794\"><a data-nodeid=\"13882\" href=\"https:\/\/www.vpascode.com\/docs\/vpascode-docs\/plantuml-playbook\/plantuml-sequence-diagram-syntax-guide\/\"><strong data-nodeid=\"13883\">H\u01b0\u1edbng d\u1eabn c\u00fa ph\u00e1p bi\u1ec3u \u0111\u1ed3 tu\u1ea7n t\u1ef1 PlantUML<\/strong><\/a>: M\u00f4 h\u00ecnh lu\u1ed3ng tin nh\u1eafn v\u00e0 t\u01b0\u01a1ng t\u00e1c theo th\u1eddi gian gi\u1eefa c\u00e1c th\u00e0nh ph\u1ea7n h\u1ec7 th\u1ed1ng. H\u1ecdc c\u00e1ch khai b\u00e1o ng\u01b0\u1eddi tham gia, tin nh\u1eafn \u0111\u1ed3ng b\u1ed9\/b\u1ea5t \u0111\u1ed3ng b\u1ed9 (<code data-backticks=\"1\" data-nodeid=\"13885\">-&gt;<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"13887\">--&gt;<\/code>), thanh k\u00edch ho\u1ea1t, v\u00f2ng l\u1eb7p, kh\u1ed1i alt\/else, v\u00e0 c\u00fa ph\u00e1p t\u1ea1o\/kh\u1edfi \u0111\u1ed9ng l\u1ea1i cho thi\u1ebft k\u1ebf API v\u00e0 bi\u1ec3u \u0111\u1ed3 giao ti\u1ebfp microservice. [[51]]<\/p>\n<\/li>\n<li data-nodeid=\"13795\">\n<p data-nodeid=\"13796\"><a data-nodeid=\"13898\" href=\"https:\/\/www.vpascode.com\/docs\/vpascode-docs\/plantuml-playbook\/plantuml-activity-diagram-syntax-guide\/\"><strong data-nodeid=\"13899\">H\u01b0\u1edbng d\u1eabn c\u00fa ph\u00e1p bi\u1ec3u \u0111\u1ed3 ho\u1ea1t \u0111\u1ed9ng PlantUML<\/strong><\/a>: Tr\u1ef1c quan h\u00f3a c\u00e1c quy tr\u00ecnh kinh doanh v\u00e0 lu\u1ed3ng c\u00f4ng vi\u1ec7c thu\u1eadt to\u00e1n b\u1eb1ng c\u00fa ph\u00e1p bi\u1ec3u \u0111\u1ed3 ho\u1ea1t \u0111\u1ed9ng c\u1ee7a PlantUML. Bao g\u1ed3m c\u00e1c n\u00fat b\u1eaft \u0111\u1ea7u\/k\u1ebft th\u00fac, h\u00e0nh \u0111\u1ed9ng, nh\u00e1nh \u0111i\u1ec1u ki\u1ec7n (<code data-backticks=\"1\" data-nodeid=\"13903\">if\/then\/else<\/code>), v\u00f2ng l\u1eb7p (<code data-backticks=\"1\" data-nodeid=\"13905\">repeat\/while<\/code>), c\u00e1c nh\u00e1nh song song, v\u00e0 c\u00e1c lu\u1ed3ng ph\u00e2n v\u00f9ng \u0111\u1ec3 t\u00e0i li\u1ec7u h\u00f3a logic quy tr\u00ecnh. [[46]]<\/p>\n<\/li>\n<li data-nodeid=\"13797\">\n<p data-nodeid=\"13798\"><a data-nodeid=\"13916\" href=\"https:\/\/www.vpascode.com\/docs\/vpascode-docs\/plantuml-playbook\/plantuml-state-diagram-syntax-guide\/\"><strong data-nodeid=\"13917\">H\u01b0\u1edbng d\u1eabn c\u00fa ph\u00e1p s\u01a1 \u0111\u1ed3 tr\u1ea1ng th\u00e1i PlantUML<\/strong><\/a>: M\u00f4 h\u00ecnh h\u00f3a m\u00e1y tr\u1ea1ng th\u00e1i h\u1eefu h\u1ea1n v\u00e0 c\u00e1c chuy\u1ec3n ti\u1ebfp v\u00f2ng \u0111\u1eddi \u0111\u1ed1i t\u01b0\u1ee3ng. H\u1ecdc c\u00e1ch khai b\u00e1o tr\u1ea1ng th\u00e1i, c\u00e1c m\u0169i t\u00ean chuy\u1ec3n ti\u1ebfp (<code data-backticks=\"1\" data-nodeid=\"13919\">--&gt;<\/code>), c\u00e1c h\u00e0nh \u0111\u1ed9ng v\u00e0o\/ra, tr\u1ea1ng th\u00e1i h\u1ee3p th\u00e0nh, v\u00e0 c\u00e1c v\u00f9ng \u0111\u1ed3ng th\u1eddi \u0111\u1ec3 thi\u1ebft k\u1ebf h\u1ec7 th\u1ed1ng d\u1ef1a tr\u00ean s\u1ef1 ki\u1ec7n v\u00e0 m\u00f4 t\u1ea3 h\u00e0nh vi. [[36]]<\/p>\n<\/li>\n<li data-nodeid=\"13799\">\n<p data-nodeid=\"13800\"><a data-nodeid=\"13930\" href=\"https:\/\/www.vpascode.com\/docs\/vpascode-docs\/plantuml-playbook\/plantuml-object-diagram-syntax-guide\/\"><strong data-nodeid=\"13931\">H\u01b0\u1edbng d\u1eabn c\u00fa ph\u00e1p s\u01a1 \u0111\u1ed3 \u0111\u1ed1i t\u01b0\u1ee3ng PlantUML<\/strong><\/a>: Minh h\u1ecda c\u00e1c th\u1ec3 hi\u1ec7n \u0111\u1ed1i t\u01b0\u1ee3ng c\u1ee5 th\u1ec3 v\u00e0 c\u00e1c m\u1ed1i quan h\u1ec7 th\u1eddi gian ch\u1ea1y c\u1ee7a ch\u00fang t\u1ea1i m\u1ed9t th\u1eddi \u0111i\u1ec3m c\u1ee5 th\u1ec3. N\u1eafm v\u1eefng c\u00e1ch \u0111\u1eb7t t\u00ean \u0111\u1ed1i t\u01b0\u1ee3ng, g\u00e1n gi\u00e1 tr\u1ecb thu\u1ed9c t\u00ednh, c\u00fa ph\u00e1p li\u00ean k\u1ebft v\u00e0 c\u00e1c m\u1ed1i quan h\u1ec7 \u1edf c\u1ea5p \u0111\u1ed9 th\u1ec3 hi\u1ec7n \u0111\u1ec3 g\u1ee1 l\u1ed7i v\u00e0 tr\u1ef1c quan h\u00f3a c\u00e1c t\u00ecnh hu\u1ed1ng ki\u1ec3m th\u1eed. [[15]]<\/p>\n<\/li>\n<li data-nodeid=\"13801\">\n<p data-nodeid=\"13802\"><a data-nodeid=\"13942\" href=\"https:\/\/www.vpascode.com\/docs\/vpascode-docs\/plantuml-playbook\/plantuml-component-diagram-syntax-guide\/\"><strong data-nodeid=\"13943\">H\u01b0\u1edbng d\u1eabn c\u00fa ph\u00e1p s\u01a1 \u0111\u1ed3 th\u00e0nh ph\u1ea7n PlantUML<\/strong><\/a>: B\u1ea3n \u0111\u1ed3 ki\u1ebfn tr\u00fac ph\u1ea7n m\u1ec1m theo m\u00f4-\u0111un v\u1edbi c\u00e1c th\u00e0nh ph\u1ea7n, giao di\u1ec7n v\u00e0 ph\u1ee5 thu\u1ed9c. H\u1ecdc c\u00e1ch khai b\u00e1o th\u00e0nh ph\u1ea7n, c\u00e1c giao di\u1ec7n cung c\u1ea5p\/y\u00eau c\u1ea7u (<code data-backticks=\"1\" data-nodeid=\"13945\">&lt;&gt;<\/code>), c\u00e1c m\u0169i t\u00ean ph\u1ee5 thu\u1ed9c v\u00e0 nh\u00f3m g\u00f3i \u0111\u1ec3 t\u00e0i li\u1ec7u h\u00f3a h\u1ec7 th\u1ed1ng microservices v\u00e0 h\u1ec7 th\u1ed1ng d\u1ef1a tr\u00ean plugin. [[35]]<\/p>\n<\/li>\n<\/ol>\n<hr data-nodeid=\"13803\"\/>\n<h2 data-nodeid=\"13804\">C\u00e1c lo\u1ea1i s\u01a1 \u0111\u1ed3 PlantUML n\u00e2ng cao<\/h2>\n<ol data-nodeid=\"13805\" start=\"9\">\n<li data-nodeid=\"13806\">\n<p data-nodeid=\"13807\"><a data-nodeid=\"13957\" href=\"https:\/\/www.vpascode.com\/docs\/vpascode-docs\/plantuml-playbook\/plantuml-deployment-diagram-syntax-guide\/\"><strong data-nodeid=\"13958\">H\u01b0\u1edbng d\u1eabn c\u00fa ph\u00e1p s\u01a1 \u0111\u1ed3 tri\u1ec3n khai PlantUML<\/strong><\/a>: M\u00f4 h\u00ecnh h\u00f3a c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng v\u1eadt l\u00fd v\u00e0 c\u1ea5u tr\u00fac tri\u1ec3n khai th\u1eddi gian ch\u1ea1y. N\u1eafm v\u1eefng\u00a0<code data-backticks=\"1\" data-nodeid=\"13960\">n\u00fat<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"13962\">m\u00e2y<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"13964\">khung<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"13966\">c\u01a1 s\u1edf d\u1eef li\u1ec7u<\/code>, v\u00e0\u00a0<code data-backticks=\"1\" data-nodeid=\"13968\">t\u00e1c ph\u1ea9m<\/code>\u00a0c\u00e1c th\u00e0nh ph\u1ea7n, c\u00fa ph\u00e1p ch\u1ee9a l\u1ed3ng nhau v\u00e0 g\u00e1n nh\u00e3n giao th\u1ee9c m\u1ea1ng cho s\u1ed5 tay th\u1ef1c thi DevOps v\u00e0 s\u01a1 \u0111\u1ed3 ki\u1ebfn tr\u00fac \u0111\u00e1m m\u00e2y. [[31]]<\/p>\n<\/li>\n<\/ol>\n<pre>@startuml\r\nskinparam shadowing false\r\nskinparam defaultFontName \"Arial\"\r\n\r\n' \u0110\u1ecbnh ngh\u0129a phong c\u00e1ch\r\nskinparam node {\r\nBackgroundColor #F1F8FF\r\nBorderColor #005CC5\r\nFontColor #032F62\r\n}\r\n\r\nskinparam database {\r\nBackgroundColor #FFF5E6\r\nBorderColor #D96F00\r\nFontColor #5C3000\r\n}\r\n\r\nskinparam artifact {\r\nBackgroundColor #E6FFF1\r\nBorderColor #008670\r\nFontColor #004D40\r\n}\r\n\r\ntr\u00e1i sang ph\u1ea3i direction\r\n\r\n' V\u00f9ng m\u1ea1ng \/ N\u00fat\r\nnode \"M\u1ea1ng ph\u00e2n ph\u1ed1i n\u1ed9i dung\" as cdn &lt;&lt;CDN&gt;&gt; {\r\nartifact \"T\u00e0i nguy\u00ean t\u0129nh \u0111\u00e3 \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef\" as static\r\n}\r\n\r\nnode \"C\u00e2n b\u1eb1ng t\u1ea3i\" as lb &lt;&lt;F5 \/ HAProxy&gt;&gt;\r\n\r\nnode \"M\u00e1y ch\u1ee7 \u1ee9ng d\u1ee5ng\" as appServer &lt;&lt;Ubuntu Linux&gt;&gt; {\r\nnode \"Container Docker\" as docker {\r\nartifact \"app.war\" as artifactApp\r\n}\r\n}\r\n\r\nnode \"M\u00e1y ch\u1ee7 c\u01a1 s\u1edf d\u1eef li\u1ec7u\" as dbServer &lt;&lt;Cluster&gt;&gt; {\r\ndatabase \"C\u01a1 s\u1edf d\u1eef li\u1ec7u s\u1ea3n xu\u1ea5t\" as db &lt;&lt;PostgreSQL&gt;&gt;\r\n}\r\n\r\n' K\u1ebft n\u1ed1i v\u1edbi nh\u00e3n giao th\u1ee9c\r\ncdn --&gt; lb : HTTP\/HTTPS (C\u1ed5ng 443)\r\nlb --&gt; artifactApp : HTTP (C\u1ed5ng 8080)\r\nartifactApp --&gt; db : JDBC \/ SQL (C\u1ed5ng 5432)\r\n\r\n@enduml<\/pre>\n<p id=\"QmRulBT\"><img alt=\"\" class=\"alignnone size-full wp-image-12605\" decoding=\"async\" height=\"222\" loading=\"lazy\" sizes=\"auto, (max-width: 1474px) 100vw, 1474px\" src=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1e9f7530829.png\" srcset=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1e9f7530829.png 1474w, https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1e9f7530829-300x45.png 300w, https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1e9f7530829-1024x154.png 1024w, https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1e9f7530829-768x116.png 768w\" width=\"1474\"\/><\/p>\n<p data-nodeid=\"13808\"><em data-nodeid=\"13989\">V\u00ed d\u1ee5: Ki\u1ebfn tr\u00fac ba t\u1ea7ng c\u1ed5 \u0111i\u1ec3n hi\u1ec3n th\u1ecb CDN, c\u00e2n b\u1eb1ng t\u1ea3i, m\u00e1y ch\u1ee7 \u1ee9ng d\u1ee5ng v\u1edbi t\u00e1c ph\u1ea9m l\u1ed3ng gh\u00e9p, v\u00e0 t\u1ea7ng c\u01a1 s\u1edf d\u1eef li\u1ec7u v\u1edbi c\u00e1c k\u1ebft n\u1ed1i \u0111\u01b0\u1ee3c g\u00e1n nh\u00e3n giao th\u1ee9c.<\/em>\u00a0[[1]]<\/p>\n<p id=\"HxBKlqF\"><img alt=\"\" class=\"alignnone size-full wp-image-12621\" decoding=\"async\" height=\"874\" loading=\"lazy\" sizes=\"auto, (max-width: 819px) 100vw, 819px\" src=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1ea3eb9a9ab.png\" srcset=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1ea3eb9a9ab.png 819w, https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1ea3eb9a9ab-281x300.png 281w, https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1ea3eb9a9ab-768x820.png 768w\" width=\"819\"\/><\/p>\n<div>\n<pre>@startuml\r\n\r\nskinparam shadowing false\r\n\r\nskinparam defaultFontName \"Arial\"\r\n\r\nskinparam linetype ortho\r\n\r\n' \u0110\u1ecbnh ngh\u0129a phong c\u00e1ch\r\n\r\nskinparam rectangle {\r\n\r\n\u00a0 \u00a0 BackgroundColor #F4F6F9\r\n\r\n\u00a0 \u00a0 BorderColor #A0AAB2\r\n\r\n\u00a0 \u00a0 FontColor #232F3E\r\n\r\n}\r\n\r\nskinparam node {\r\n\r\n\u00a0 \u00a0 BackgroundColor #E2F3FC\r\n\r\n\u00a0 \u00a0 BorderColor #4A90E2\r\n\r\n\u00a0 \u00a0 FontColor #111111\r\n\r\n}\r\n\r\nskinparam database {\r\n\r\n\u00a0 \u00a0 BackgroundColor #FFF2E6\r\n\r\n\u00a0 \u00a0 BorderColor #FF9900\r\n\r\n\u00a0 \u00a0 FontColor #232F3E\r\n\r\n}\r\n\r\n' \u0110i\u1ec3m v\u00e0o c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng\r\n\r\nnode \"AWS Route 53\" as dns\r\n\r\nnode \"C\u00e2n b\u1eb1ng t\u1ea3i \u1ee9ng d\u1ee5ng AWS\" as alb\r\n\r\ndns --&gt; alb : \u0110\u1ecbnh tuy\u1ebfn l\u01b0u l\u01b0\u1ee3ng\r\n\r\n' V\u00f9ng bi\u00ean gi\u1edbi \u0111\u00e1m m\u00e2y to\u00e0n c\u1ea7u\r\n\r\nrectangle \"V\u00f9ng \u0111\u00e1m m\u00e2y AWS\" {\r\n\r\n\u00a0 \u00a0\r\n\r\n\u00a0 \u00a0 ' Bi\u00ean gi\u1edbi c\u1ee5m Kubernetes xuy\u00ean v\u00f9ng s\u1eb5n s\u00e0ng\r\n\r\n\u00a0 \u00a0 rectangle \"C\u1ee5m Amazon EKS\" as eks {\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0 ' V\u00f9ng s\u1eb5n s\u00e0ng 1\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0 rectangle \"V\u00f9ng s\u1eb5n s\u00e0ng us-east-1a\" as az1 #line.dashed {\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 node \"N\u00fat c\u00f4ng vi\u1ec7c EC2 (AZ1)\" as node1 {\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 rectangle \"Pod Frontend\" as podWeb1 &lt;&lt;Pod K8s&gt;&gt; {\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 artifact \"Container Nginx\" as containerWeb1\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 rectangle \"Pod API Backend\" as podApi1 &lt;&lt;Pod K8s&gt;&gt; {\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 artifact \"Container \u1ee9ng d\u1ee5ng Go\" as containerApi1\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0 }\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0 ' V\u00f9ng s\u1eb5n s\u00e0ng 2\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0 rectangle \"V\u00f9ng s\u1eb5n s\u00e0ng us-east-1b\" as az2 #line.dashed {\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 node \"N\u00fat c\u00f4ng vi\u1ec7c EC2 (AZ2)\" as node2 {\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 rectangle \"Pod Frontend\" as podWeb2 &lt;&lt;Pod K8s&gt;&gt; {\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 artifact \"Container Nginx\" as containerWeb2\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 rectangle \"Pod API Backend\" as podApi2 &lt;&lt;Pod K8s&gt;&gt; {\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 artifact \"Container \u1ee9ng d\u1ee5ng Go\" as containerApi2\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0 }\r\n\r\n\u00a0 \u00a0 }\r\n\r\n\u00a0 \u00a0 ' T\u1ea7ng c\u01a1 s\u1edf d\u1eef li\u1ec7u chung\r\n\r\n\u00a0 \u00a0 rectangle \"\u0110\u1ed9ng c\u01a1 l\u01b0u tr\u1eef Amazon Aurora\" as storage {\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0 database \"Ch\u1ee7 Aurora (Ng\u01b0\u1eddi vi\u1ebft)\" as dbMaster\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0 database \"Sao ch\u00e9p Aurora (Ng\u01b0\u1eddi \u0111\u1ecdc)\" as dbReplica\r\n\r\n\u00a0 \u00a0 }\r\n\r\n}\r\n\r\n' Ma tr\u1eadn \u0111\u1ecbnh tuy\u1ebfn &amp; l\u01b0u l\u01b0\u1ee3ng\r\n\r\nalb --&gt; podWeb1 : HTTP\/S (C\u1ed5ng 80\/443)\r\n\r\nalb --&gt; podWeb2 : HTTP\/S (C\u1ed5ng 80\/443)\r\n\r\npodWeb1 --&gt; podApi1 : gRPC (C\u1ed5ng 50051)\r\n\r\npodWeb2 --&gt; podApi2 : gRPC (C\u1ed5ng 50051)\r\n\r\npodApi1 --&gt; dbMaster : TCP (C\u1ed5ng 5432)\r\n\r\npodApi2 --&gt; dbMaster : TCP (C\u1ed5ng 5432)\r\n\r\ndbMaster .right.&gt; dbReplica : T\u1ef1 \u0111\u1ed9ng sao ch\u00e9p l\u01b0u tr\u1eef\r\n\r\n@enduml<\/pre>\n<\/div>\n<p data-nodeid=\"13809\"><em data-nodeid=\"14004\">V\u00ed d\u1ee5: Tri\u1ec3n khai Kubernetes b\u1ea3n \u0111\u1ecba \u0111\u00e1m m\u00e2y tr\u00ean c\u00e1c v\u00f9ng s\u1eb5n s\u00e0ng AWS v\u1edbi \u0111\u1ecbnh tuy\u1ebfn c\u00e2n b\u1eb1ng t\u1ea3i, nh\u00fang pod v\u00e0 c\u1ee5m c\u01a1 s\u1edf d\u1eef li\u1ec7u chung.<\/em>\u00a0[[1]]<\/p>\n<ol data-nodeid=\"13810\" start=\"10\">\n<li data-nodeid=\"13811\">\n<p data-nodeid=\"13812\"><a data-nodeid=\"14009\" href=\"https:\/\/www.vpascode.com\/docs\/vpascode-docs\/plantuml-playbook\/plantuml-timing-diagram-syntax-guide\/\"><strong data-nodeid=\"14010\">H\u01b0\u1edbng d\u1eabn c\u00fa ph\u00e1p s\u01a1 \u0111\u1ed3 th\u1eddi gian PlantUML<\/strong><\/a>: Tr\u1ef1c quan h\u00f3a th\u1eddi l\u01b0\u1ee3ng tr\u1ea1ng th\u00e1i ch\u00ednh x\u00e1c v\u00e0 c\u00e1c r\u00e0ng bu\u1ed9c th\u1eddi gian d\u1ecdc theo c\u00e1c d\u00f2ng th\u1eddi gian tuy\u1ebfn t\u00ednh. H\u1ecdc c\u00e1ch\u00a0<code data-backticks=\"1\" data-nodeid=\"14012\">b\u1ec1n v\u1eefng<\/code>\/<code data-backticks=\"1\" data-nodeid=\"14014\">ng\u1eafn g\u1ecdn<\/code>\u00a0ki\u1ec3u ng\u01b0\u1eddi tham gia,\u00a0<code data-backticks=\"1\" data-nodeid=\"14016\">@th\u1eddi \u0111i\u1ec3m<\/code>\u00a0g\u00e1n tr\u1ea1ng th\u00e1i,\u00a0<code data-backticks=\"1\" data-nodeid=\"14018\">\u0111\u1ed3ng h\u1ed3<\/code>\u00a0sinh s\u00f3ng, v\u00e0\u00a0<code data-backticks=\"1\" data-nodeid=\"14020\">&lt;-&gt;<\/code>\u00a0ghi ch\u00fa r\u00e0ng bu\u1ed9c cho h\u1ec7 th\u1ed1ng nh\u00fang v\u00e0 t\u00e0i li\u1ec7u m\u00f4 t\u1ea3 giao th\u1ee9c. [[30]]<\/p>\n<\/li>\n<\/ol>\n<p><img alt=\"\" class=\"alignnone size-full wp-image-12622\" decoding=\"async\" height=\"275\" loading=\"lazy\" sizes=\"auto, (max-width: 2146px) 100vw, 2146px\" src=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1ea4f6d128b.png\" srcset=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1ea4f6d128b.png 2146w, https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1ea4f6d128b-300x38.png 300w, https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1ea4f6d128b-1024x131.png 1024w, https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1ea4f6d128b-768x98.png 768w, https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1ea4f6d128b-1536x197.png 1536w, https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1ea4f6d128b-2048x262.png 2048w\" width=\"2146\"\/><\/p>\n<pre>@startuml\r\nskinparam handwritten false\r\nskinparam shadowing false\r\nskinparam defaultFontName \"Arial\"\r\n\r\n' Ti\u00eau \u0111\u1ec1 s\u01a1 \u0111\u1ed3 th\u1eddi gian\r\ntitle D\u00f2ng th\u1eddi gian \u0111\u1ed3ng b\u1ed9 h\u00f3a thanh ghi Bus d\u1eef li\u1ec7u\r\n\r\n' \u0110\u1ecbnh ngh\u0129a s\u00f3ng \u0111\u1ed3ng h\u1ed3 chu k\u1ef3 (chu k\u1ef3 10 \u0111\u01a1n v\u1ecb, cao 5 \u0111\u01a1n v\u1ecb)\r\nclock \"\u0110\u1ed3ng h\u1ed3 h\u1ec7 th\u1ed1ng\" as CLK v\u1edbi chu k\u1ef3 10 xung 5\r\n\r\n' \u0110\u1ecbnh ngh\u0129a ng\u01b0\u1eddi tham gia b\u1ec1n v\u1eefng Bus d\u1eef li\u1ec7u\r\nb\u1ec1n v\u1eefng \"Thanh ghi Bus d\u1eef li\u1ec7u\" as BUS\r\n\r\n' Th\u1eddi \u0111i\u1ec3m 0: Tr\u1ea1ng th\u00e1i ban \u0111\u1ea7u c\u1ee7a thanh ghi\r\n@0\r\nBUS l\u00e0 R\u1ed7ng\r\n\r\n' Th\u1eddi \u0111i\u1ec3m 10: Bus d\u1eef li\u1ec7u chuy\u1ec3n sang \u0110\u1ecdc\r\n@10\r\nBUS l\u00e0 \u0110\u1ecdc\r\n\r\n' Th\u1eddi \u0111i\u1ec3m 20: Bus d\u1eef li\u1ec7u chuy\u1ec3n sang Ghi\r\n@20\r\nBUS l\u00e0 Ghi\r\n\r\n' Th\u1eddi \u0111i\u1ec3m 22: Hi\u1ec3n th\u1ecb nh\u00e3n v\u0103n b\u1ea3n t\u00f9y ch\u1ec9nh tr\u00ean d\u00f2ng th\u1eddi gian\r\n@22\r\nnote top of BUS : T_GHI\r\n\r\n' Th\u1eddi \u0111i\u1ec3m 30: Bus d\u1eef li\u1ec7u tr\u1edf th\u00e0nh Kh\u00f3a\r\n@30\r\nBUS l\u00e0 Kh\u00f3a\r\n\r\n' Th\u1eddi \u0111i\u1ec3m 35: Hi\u1ec3n th\u1ecb nh\u00e3n v\u0103n b\u1ea3n t\u00f9y ch\u1ec9nh tr\u00ean d\u00f2ng th\u1eddi gian\r\n@35\r\nnote top of BUS : T_KH\u00d3A\r\n\r\n' Th\u1eddi \u0111i\u1ec3m 40: Bus d\u1eef li\u1ec7u quay v\u1ec1 tr\u1ea1ng th\u00e1i R\u1ed7ng\r\n@40\r\nBUS l\u00e0 R\u1ed7ng\r\n\r\n' Th\u00eam ghi ch\u00fa r\u00e0ng bu\u1ed9c th\u1eddi gian s\u1eed d\u1ee5ng c\u00e1c \u0111i\u1ec3m s\u1ed1 c\u1ee5 th\u1ec3\r\n@22 &lt;-&gt; @35 : {13 TU Th\u1eddi l\u01b0\u1ee3ng}\r\n\r\n@enduml<\/pre>\n<p><em data-nodeid=\"14041\">V\u00ed d\u1ee5: D\u00f2ng th\u1eddi gian ng\u1eafn g\u1ecdn hi\u1ec3n th\u1ecb c\u00e1c tr\u1ea1ng th\u00e1i thanh ghi Bus d\u1eef li\u1ec7u (R\u1ed7ng \u2192 \u0110\u1ecdc \u2192 Ghi \u2192 Kh\u00f3a) \u0111\u01b0\u1ee3c \u0111\u1ed3ng b\u1ed9 v\u1edbi s\u00f3ng \u0111\u1ed3ng h\u1ed3 h\u1ec7 th\u1ed1ng chu k\u1ef3.<\/em> [[12]]<\/p>\n<p id=\"dWNkEyD\"><img alt=\"\" class=\"alignnone size-full wp-image-12625\" decoding=\"async\" height=\"256\" loading=\"lazy\" sizes=\"auto, (max-width: 766px) 100vw, 766px\" src=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1ea59fbec1b.png\" srcset=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1ea59fbec1b.png 766w, https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1ea59fbec1b-300x100.png 300w\" width=\"766\"\/><\/p>\n<div>\n<pre>@startuml\r\n\r\nskinparam shadowing false\r\n\r\nskinparam defaultFontName \"Arial\"\r\n\r\n' Ti\u00eau \u0111\u1ec1 s\u01a1 \u0111\u1ed3 th\u1eddi gian \u0111a lu\u1ed3ng\r\n\r\ntitle \u0110\u1ed3ng b\u1ed9 h\u00f3a lu\u1ed3ng Web Client v\u00e0 lu\u1ed3ng Worker x\u00e1c th\u1ef1c\r\n\r\n' Khai b\u00e1o c\u00e1c d\u00f2ng th\u1eddi gian b\u1eb1ng ki\u1ec3u ng\u01b0\u1eddi tham gia b\u1ec1n v\u1eefng\r\n\r\nb\u1ec1n v\u1eefng \"Lu\u1ed3ng Web Client\" as CLIENT\r\n\r\nb\u1ec1n v\u1eefng \"Lu\u1ed3ng Worker x\u00e1c th\u1ef1c\" as AUTH\r\n\r\n' Th\u1eddi \u0111i\u1ec3m 0ms: Tr\u1ea1ng th\u00e1i ch\u1edd ban \u0111\u1ea7u\r\n\r\n@0\r\n\r\nCLIENT l\u00e0 \u0110ang ch\u1edd\r\n\r\nAUTH l\u00e0 \u0110ang x\u00e1c minh th\u00f4ng tin \u0111\u0103ng nh\u1eadp\r\n\r\n' Th\u1eddi \u0111i\u1ec3m 10ms: Client k\u00edch ho\u1ea1t y\u00eau c\u1ea7u x\u00e1c th\u1ef1c\r\n\r\n@10\r\n\r\nCLIENT l\u00e0 \"\u0110ang ch\u1edd x\u00e1c th\u1ef1c\"\r\n\r\nAUTH l\u00e0 \"\u0110ang x\u00e1c minh th\u00f4ng tin \u0111\u0103ng nh\u1eadp\"\r\n\r\n' Th\u1eddi \u0111i\u1ec3m 25ms: Client g\u1eedi th\u00eam d\u1eef li\u1ec7u \/ X\u00e1c th\u1ef1c b\u1eaft \u0111\u1ea7u sinh token\r\n\r\n@25\r\n\r\nAUTH l\u00e0 \"\u0110ang sinh token JWT\"\r\n\r\n' Th\u1eddi \u0111i\u1ec3m 40ms: X\u00e1c th\u1ef1c ho\u00e0n th\u00e0nh sinh token v\u00e0 ph\u1ea3n h\u1ed3i l\u1ea1i client\r\n\r\n@40\r\n\r\nAUTH l\u00e0 \u0110ang ch\u1edd\r\n\r\nCLIENT l\u00e0 \"\u0110\u00e3 x\u00e1c th\u1ef1c\"\r\n\r\n' Th\u1eddi \u0111i\u1ec3m 55ms: Client quay v\u1ec1 tr\u1ea1ng th\u00e1i m\u1eb7c \u0111\u1ecbnh\r\n\r\n@55\r\n\r\nCLIENT l\u00e0 \u0110ang ch\u1edd\r\n\r\n' Ghi ch\u00fa c\u1eeda s\u1ed5 r\u00e0ng bu\u1ed9c th\u1eddi gian 30ms (T\u1eeb @10 \u0111\u1ebfn @40)\r\n\r\n@10 &lt;-&gt; @40 : {30ms C\u1eeda s\u1ed5 sinh token}\r\n\r\n@enduml<\/pre>\n<\/div>\n<p data-nodeid=\"13814\"><em data-nodeid=\"14056\">V\u00ed d\u1ee5: D\u00f2ng th\u1eddi gian \u0111a lu\u1ed3ng b\u1ec1n v\u1eefng m\u00f4 t\u1ea3 tr\u1ea1ng th\u00e1i client web v\u00e0 worker x\u00e1c th\u1ef1c v\u1edbi ghi ch\u00fa r\u00e0ng bu\u1ed9c c\u1eeda s\u1ed5 sinh token 30ms.<\/em>\u00a0[[12]]<\/p>\n<ol data-nodeid=\"13815\" start=\"11\">\n<li data-nodeid=\"13816\">\n<p data-nodeid=\"13817\"><a data-nodeid=\"14061\" href=\"https:\/\/www.vpascode.com\/docs\/vpascode-docs\/plantuml-playbook\/plantuml-erd-syntax-guide\/\"><strong data-nodeid=\"14062\">H\u01b0\u1edbng d\u1eabn c\u00fa ph\u00e1p s\u01a1 \u0111\u1ed3 ERD PlantUML<\/strong><\/a>: Thi\u1ebft k\u1ebf s\u01a1 \u0111\u1ed3 quan h\u1ec7 th\u1ef1c th\u1ec3 cho t\u00e0i li\u1ec7u m\u00f4 t\u1ea3 l\u01b0\u1ee3c \u0111\u1ed3 c\u01a1 s\u1edf d\u1eef li\u1ec7u. Th\u00e0nh th\u1ea1o khai b\u00e1o th\u1ef1c th\u1ec3, g\u00e1n ki\u1ec3u thu\u1ed9c t\u00ednh, k\u00fd hi\u1ec7u kh\u00f3a ch\u00ednh\/kh\u00f3a ngo\u1ea1i v\u00e0 m\u1ed1i quan h\u1ec7 c\u1ea5p \u0111\u1ed9 (<code data-backticks=\"1\" data-nodeid=\"14064\">1|o--o{<\/code>) \u0111\u1ec3 m\u00f4 h\u00ecnh h\u00f3a d\u1eef li\u1ec7u v\u00e0 l\u1eadp k\u1ebf ho\u1ea1ch di chuy\u1ec3n SQL.<\/p>\n<\/li>\n<li data-nodeid=\"13818\">\n<p data-nodeid=\"13819\"><a data-nodeid=\"14070\" href=\"https:\/\/www.vpascode.com\/docs\/vpascode-docs\/plantuml-playbook\/plantuml-archimate-diagram-syntax-guide\/\"><strong data-nodeid=\"14071\">H\u01b0\u1edbng d\u1eabn c\u00fa ph\u00e1p s\u01a1 \u0111\u1ed3 ArchiMate PlantUML<\/strong><\/a>: M\u00f4 h\u00ecnh h\u00f3a c\u00e1c l\u1edbp ki\u1ebfn tr\u00fac doanh nghi\u1ec7p b\u1eb1ng ti\u00eau chu\u1ea9n ArchiMate. H\u1ecdc c\u00e1c th\u00e0nh ph\u1ea7n l\u1edbp kinh doanh\/\u1ee9ng d\u1ee5ng\/c\u00f4ng ngh\u1ec7, c\u00e1c kh\u00e1i ni\u1ec7m \u0111\u1ed9ng l\u1ef1c v\u00e0 c\u00e1c lo\u1ea1i m\u1ed1i quan h\u1ec7 \u0111\u1ec3 l\u1eadp k\u1ebf ho\u1ea1ch chi\u1ebfn l\u01b0\u1ee3c CNTT v\u00e0 t\u00e0i li\u1ec7u qu\u1ea3n tr\u1ecb.<\/p>\n<\/li>\n<li data-nodeid=\"13820\">\n<p data-nodeid=\"13821\"><a data-nodeid=\"14077\" href=\"https:\/\/www.vpascode.com\/docs\/vpascode-docs\/plantuml-playbook\/plantuml-c4-model-syntax-guide\/\"><strong data-nodeid=\"14078\">H\u01b0\u1edbng d\u1eabn c\u00fa ph\u00e1p m\u00f4 h\u00ecnh C4 PlantUML<\/strong><\/a>: Tri\u1ec3n khai m\u00f4 h\u00ecnh C4 \u0111\u1ec3 tr\u1ef1c quan h\u00f3a ki\u1ebfn tr\u00fac ph\u1ea7n m\u1ec1m \u1edf b\u1ed1n m\u1ee9c \u0111\u1ed9 tr\u1eebu t\u01b0\u1ee3ng: B\u1ed1i c\u1ea3nh, B\u1ed9 ch\u1ee9a, Th\u00e0nh ph\u1ea7n v\u00e0 M\u00e3 ngu\u1ed3n. Th\u00e0nh th\u1ea1o\u00a0<code data-backticks=\"1\" data-nodeid=\"14080\">Ng\u01b0\u1eddi<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"14082\">H\u1ec7 th\u1ed1ng<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"14084\">Container<\/code>, v\u00e0\u00a0<code data-backticks=\"1\" data-nodeid=\"14086\">Component<\/code>\u00a0c\u00e1c ki\u1ec3u d\u00e1ng v\u1edbi c\u00e1c container bi\u00ean gi\u1edbi v\u00e0 \u0111\u1ecbnh d\u1ea1ng m\u1ed1i quan h\u1ec7 nh\u1eb1m giao ti\u1ebfp ki\u1ebfn tr\u00fac ph\u00f9 h\u1ee3p v\u1edbi c\u00e1c b\u00ean li\u00ean quan.<\/p>\n<\/li>\n<\/ol>\n<hr data-nodeid=\"13822\"\/>\n<blockquote data-nodeid=\"13823\">\n<p data-nodeid=\"13824\"><strong data-nodeid=\"14101\">Ghi ch\u00fa v\u1ec1 c\u00e1c s\u01a1 \u0111\u1ed3 nh\u00fang<\/strong>: T\u1ea5t c\u1ea3 c\u00e1c v\u00ed d\u1ee5 m\u00e3 PlantUML trong t\u00e0i li\u1ec7u VPASCode \u0111\u01b0\u1ee3c hi\u1ec3n th\u1ecb d\u01b0\u1edbi d\u1ea1ng s\u01a1 \u0111\u1ed3 t\u01b0\u01a1ng t\u00e1c, c\u00f3 th\u1ec3 ch\u1ec9nh s\u1eeda tr\u1ef1c ti\u1ebfp trong tr\u00ecnh duy\u1ec7t. C\u00e1c li\u00ean k\u1ebft h\u00ecnh \u1ea3nh PNG \u1edf tr\u00ean hi\u1ec3n th\u1ecb c\u00e1c b\u1ea3n xem tr\u01b0\u1edbc t\u0129nh c\u1ee7a c\u00e1c s\u01a1 \u0111\u1ed3 v\u00ed d\u1ee5; \u0111\u1ec3 truy c\u1eadp \u0111\u1ea7y \u0111\u1ee7 t\u00ednh n\u0103ng t\u01b0\u01a1ng t\u00e1c bao g\u1ed3m ch\u1ec9nh s\u1eeda tr\u1ef1c ti\u1ebfp, ki\u1ec3m tra c\u00fa ph\u00e1p v\u00e0 xu\u1ea5t ra PNG\/SVG, vui l\u00f2ng truy c\u1eadp tr\u1ef1c ti\u1ebfp v\u00e0o URL t\u1eebng b\u00e0i vi\u1ebft t\u1ea1i\u00a0<a data-nodeid=\"14094\" href=\"https:\/\/www.vpascode.com\/docs\/vpascode-docs\/\">vpascode.com\/docs<\/a>. [[54]]<\/p>\n<\/blockquote>\n<blockquote data-nodeid=\"13825\">\n<p data-nodeid=\"13826\"><strong data-nodeid=\"14117\">T\u00ednh n\u0103ng c\u1ee7a Tr\u00ecnh so\u1ea1n th\u1ea3o VPasCode<\/strong>: M\u1ed7i b\u00e0i vi\u1ebft \u0111\u1ec1u bao g\u1ed3m c\u00e1c n\u00fat \u201cCh\u1ec9nh s\u1eeda PlantUML trong VPasCode\u201d gi\u00fap kh\u1edfi ch\u1ea1y v\u00ed d\u1ee5 m\u00e3 trong tr\u00ecnh so\u1ea1n th\u1ea3o mi\u1ec5n ph\u00ed, d\u1ef1a tr\u00ean tr\u00ecnh duy\u1ec7t c\u1ee7a VPasCode\u2014kh\u00f4ng c\u1ea7n \u0111\u0103ng nh\u1eadp hay c\u00e0i \u0111\u1eb7t. C\u00e1c thay \u0111\u1ed5i \u0111\u01b0\u1ee3c xem tr\u01b0\u1edbc ngay l\u1eadp t\u1ee9c v\u1edbi kh\u1ea3 n\u0103ng hi\u1ec3n th\u1ecb th\u1eddi gian th\u1ef1c. [[54]]<\/p>\n<\/blockquote>\n<hr data-nodeid=\"13827\"\/>\n<p class=\"\" data-nodeid=\"13828\"><em data-nodeid=\"14127\">Tham kh\u1ea3o \u0111\u01b0\u1ee3c t\u1ed5ng h\u1ee3p t\u1eeb t\u00e0i li\u1ec7u VPASCode. VPasCode l\u00e0 tr\u00ecnh so\u1ea1n th\u1ea3o mi\u1ec5n ph\u00ed, tr\u1ef1c tuy\u1ebfn, d\u1ef1a tr\u00ean tr\u00ecnh duy\u1ec7t cho s\u01a1 \u0111\u1ed3 PlantUML, Mermaid v\u00e0 Graphviz, kh\u00f4ng y\u00eau c\u1ea7u \u0111\u0103ng nh\u1eadp hay c\u00e0i \u0111\u1eb7t.<\/em>\u00a0[[54]]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Danh s\u00e1ch b\u00e0i vi\u1ebft \u0111\u01b0\u1ee3c tuy\u1ec3n ch\u1ecdn t\u1eeb S\u1ed5 tay PlantUML VPASCode, bao g\u1ed3m c\u00e1c h\u01b0\u1edbng d\u1eabn c\u00fa ph\u00e1p cho<\/p>\n","protected":false},"author":3482,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_yoast_wpseo_title":"","_yoast_wpseo_metadesc":"","fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[1,160],"tags":[],"class_list":["post-11069","post","type-post","status-publish","format-standard","hentry","category-uncategorized","category-vpascode"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>H\u01b0\u1edbng d\u1eabn tham kh\u1ea3o S\u1ed5 tay PlantUML VPASCode - ArchiMetric Vietnamese<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/\" \/>\n<meta property=\"og:locale\" content=\"vi_VN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"H\u01b0\u1edbng d\u1eabn tham kh\u1ea3o S\u1ed5 tay PlantUML VPASCode - ArchiMetric Vietnamese\" \/>\n<meta property=\"og:description\" content=\"Danh s\u00e1ch b\u00e0i vi\u1ebft \u0111\u01b0\u1ee3c tuy\u1ec3n ch\u1ecdn t\u1eeb S\u1ed5 tay PlantUML VPASCode, bao g\u1ed3m c\u00e1c h\u01b0\u1edbng d\u1eabn c\u00fa ph\u00e1p cho\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/\" \/>\n<meta property=\"og:site_name\" content=\"ArchiMetric Vietnamese\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-02T09:17:32+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1e9f7530829.png\" \/>\n<meta name=\"author\" content=\"curtis\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi\" \/>\n\t<meta name=\"twitter:data1\" content=\"curtis\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 ph\u00fat\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/\"},\"author\":{\"name\":\"curtis\",\"@id\":\"https:\/\/www.archimetric.com\/vn\/#\/schema\/person\/71e6318556cda44457a5b68e284bedba\"},\"headline\":\"H\u01b0\u1edbng d\u1eabn tham kh\u1ea3o S\u1ed5 tay PlantUML VPASCode\",\"datePublished\":\"2026-06-02T09:17:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/\"},\"wordCount\":1842,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1e9f7530829.png\",\"articleSection\":[\"Uncategorized\",\"VPasCode\"],\"inLanguage\":\"vi\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/\",\"url\":\"https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/\",\"name\":\"H\u01b0\u1edbng d\u1eabn tham kh\u1ea3o S\u1ed5 tay PlantUML VPASCode - ArchiMetric Vietnamese\",\"isPartOf\":{\"@id\":\"https:\/\/www.archimetric.com\/vn\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1e9f7530829.png\",\"datePublished\":\"2026-06-02T09:17:32+00:00\",\"author\":{\"@id\":\"https:\/\/www.archimetric.com\/vn\/#\/schema\/person\/71e6318556cda44457a5b68e284bedba\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/#breadcrumb\"},\"inLanguage\":\"vi\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"vi\",\"@id\":\"https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/#primaryimage\",\"url\":\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1e9f7530829.png\",\"contentUrl\":\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1e9f7530829.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.archimetric.com\/vn\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"H\u01b0\u1edbng d\u1eabn tham kh\u1ea3o S\u1ed5 tay PlantUML VPASCode\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.archimetric.com\/vn\/#website\",\"url\":\"https:\/\/www.archimetric.com\/vn\/\",\"name\":\"ArchiMetric Vietnamese\",\"description\":\"EA, Dev Ops, Scrum, Agile and More\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.archimetric.com\/vn\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"vi\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.archimetric.com\/vn\/#\/schema\/person\/71e6318556cda44457a5b68e284bedba\",\"name\":\"curtis\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"vi\",\"@id\":\"https:\/\/www.archimetric.com\/vn\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6910084565fcc601ec03c6693bb8ea480c1e52ccaa0efb299eb038bb6a1edc87?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6910084565fcc601ec03c6693bb8ea480c1e52ccaa0efb299eb038bb6a1edc87?s=96&d=mm&r=g\",\"caption\":\"curtis\"},\"url\":\"https:\/\/www.archimetric.com\/vn\/author\/curtis\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"H\u01b0\u1edbng d\u1eabn tham kh\u1ea3o S\u1ed5 tay PlantUML VPASCode - ArchiMetric Vietnamese","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/","og_locale":"vi_VN","og_type":"article","og_title":"H\u01b0\u1edbng d\u1eabn tham kh\u1ea3o S\u1ed5 tay PlantUML VPASCode - ArchiMetric Vietnamese","og_description":"Danh s\u00e1ch b\u00e0i vi\u1ebft \u0111\u01b0\u1ee3c tuy\u1ec3n ch\u1ecdn t\u1eeb S\u1ed5 tay PlantUML VPASCode, bao g\u1ed3m c\u00e1c h\u01b0\u1edbng d\u1eabn c\u00fa ph\u00e1p cho","og_url":"https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/","og_site_name":"ArchiMetric Vietnamese","article_published_time":"2026-06-02T09:17:32+00:00","og_image":[{"url":"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1e9f7530829.png","type":"","width":"","height":""}],"author":"curtis","twitter_card":"summary_large_image","twitter_misc":{"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi":"curtis","\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc":"4 ph\u00fat"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/#article","isPartOf":{"@id":"https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/"},"author":{"name":"curtis","@id":"https:\/\/www.archimetric.com\/vn\/#\/schema\/person\/71e6318556cda44457a5b68e284bedba"},"headline":"H\u01b0\u1edbng d\u1eabn tham kh\u1ea3o S\u1ed5 tay PlantUML VPASCode","datePublished":"2026-06-02T09:17:32+00:00","mainEntityOfPage":{"@id":"https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/"},"wordCount":1842,"commentCount":0,"image":{"@id":"https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/#primaryimage"},"thumbnailUrl":"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1e9f7530829.png","articleSection":["Uncategorized","VPasCode"],"inLanguage":"vi","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/","url":"https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/","name":"H\u01b0\u1edbng d\u1eabn tham kh\u1ea3o S\u1ed5 tay PlantUML VPASCode - ArchiMetric Vietnamese","isPartOf":{"@id":"https:\/\/www.archimetric.com\/vn\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/#primaryimage"},"image":{"@id":"https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/#primaryimage"},"thumbnailUrl":"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1e9f7530829.png","datePublished":"2026-06-02T09:17:32+00:00","author":{"@id":"https:\/\/www.archimetric.com\/vn\/#\/schema\/person\/71e6318556cda44457a5b68e284bedba"},"breadcrumb":{"@id":"https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/#breadcrumb"},"inLanguage":"vi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/"]}]},{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/#primaryimage","url":"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1e9f7530829.png","contentUrl":"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1e9f7530829.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.archimetric.com\/vn\/vpascode-plantuml-playbook-reference-guide\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.archimetric.com\/vn\/"},{"@type":"ListItem","position":2,"name":"H\u01b0\u1edbng d\u1eabn tham kh\u1ea3o S\u1ed5 tay PlantUML VPASCode"}]},{"@type":"WebSite","@id":"https:\/\/www.archimetric.com\/vn\/#website","url":"https:\/\/www.archimetric.com\/vn\/","name":"ArchiMetric Vietnamese","description":"EA, Dev Ops, Scrum, Agile and More","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.archimetric.com\/vn\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"vi"},{"@type":"Person","@id":"https:\/\/www.archimetric.com\/vn\/#\/schema\/person\/71e6318556cda44457a5b68e284bedba","name":"curtis","image":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/www.archimetric.com\/vn\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6910084565fcc601ec03c6693bb8ea480c1e52ccaa0efb299eb038bb6a1edc87?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6910084565fcc601ec03c6693bb8ea480c1e52ccaa0efb299eb038bb6a1edc87?s=96&d=mm&r=g","caption":"curtis"},"url":"https:\/\/www.archimetric.com\/vn\/author\/curtis\/"}]}},"_links":{"self":[{"href":"https:\/\/www.archimetric.com\/vn\/wp-json\/wp\/v2\/posts\/11069","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.archimetric.com\/vn\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.archimetric.com\/vn\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.archimetric.com\/vn\/wp-json\/wp\/v2\/users\/3482"}],"replies":[{"embeddable":true,"href":"https:\/\/www.archimetric.com\/vn\/wp-json\/wp\/v2\/comments?post=11069"}],"version-history":[{"count":0,"href":"https:\/\/www.archimetric.com\/vn\/wp-json\/wp\/v2\/posts\/11069\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.archimetric.com\/vn\/wp-json\/wp\/v2\/media?parent=11069"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.archimetric.com\/vn\/wp-json\/wp\/v2\/categories?post=11069"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.archimetric.com\/vn\/wp-json\/wp\/v2\/tags?post=11069"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}