{"id":2109,"date":"2026-05-26T07:53:11","date_gmt":"2026-05-26T07:53:11","guid":{"rendered":"https:\/\/www.vpascode.com\/vn\/docs\/uncategorized\/plantuml-c4-model-syntax-guide\/"},"modified":"2026-05-26T07:53:11","modified_gmt":"2026-05-26T07:53:11","slug":"plantuml-c4-model-syntax-guide","status":"publish","type":"ld_docs","link":"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/plantuml-c4-model-syntax-guide\/","title":{"rendered":"H\u01b0\u1edbng d\u1eabn c\u00fa ph\u00e1p m\u00f4 h\u00ecnh C4 c\u1ee7a PlantUML"},"content":{"rendered":"<h2>M\u00f4 h\u00ecnh s\u01a1 \u0111\u1ed3 C4 l\u00e0 g\u00ec?<\/h2>\n<p>Th\u01b0 vi\u1ec7n <strong>s\u01a1 \u0111\u1ed3 m\u00f4 h\u00ecnh C4<\/strong> l\u00e0 m\u1ed9t khung ki\u1ebfn tr\u00fac ph\u00e2n c\u1ea5p, b\u1ed1n c\u1ea5p \u0111\u1ed9, \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf \u0111\u1ec3 ghi ch\u00e9p ki\u1ebfn tr\u00fac ph\u1ea7n m\u1ec1m v\u1edbi c\u00e1c m\u1ee9c \u0111\u1ed9 chi ti\u1ebft kh\u00e1c nhau. \u0110\u01b0\u1ee3c t\u1ea1o b\u1edfi Simon Brown, C4 tr\u00e1nh nh\u1eefng h\u00ecnh h\u1ed9p v\u00e0 \u0111\u01b0\u1eddng n\u00e9t m\u01a1 h\u1ed3 b\u1eb1ng c\u00e1ch c\u1ea5u tr\u00fac b\u1ea3n \u0111\u1ed3 h\u1ec7 th\u1ed1ng th\u00e0nh b\u1ed1n \u1ed1ng k\u00ednh tr\u1eebu t\u01b0\u1ee3ng r\u00f5 r\u00e0ng: <strong>B\u1ed1i c\u1ea3nh<\/strong> (ph\u1ea1m vi c\u1ea5p h\u1ec7 th\u1ed1ng), <strong>B\u1ed9 ch\u1ee9a<\/strong> (\u1ee9ng d\u1ee5ng v\u00e0 kho l\u01b0u tr\u1eef d\u1eef li\u1ec7u), <strong>Th\u00e0nh ph\u1ea7n<\/strong> (c\u00e1c m\u00f4-\u0111un n\u1ed9i b\u1ed9), v\u00e0 <strong>M\u00e3 ngu\u1ed3n<\/strong> (tri\u1ec3n khai \u1edf c\u1ea5p \u0111\u1ed9 l\u1edbp).<\/p>\n<p>\u0110\u1ec3 tri\u1ec3n khai m\u00f4 h\u00ecnh n\u00e0y hi\u1ec7u qu\u1ea3 trong v\u0103n b\u1ea3n, c\u00e1c k\u1ef9 s\u01b0 s\u1eed d\u1ee5ng th\u01b0 vi\u1ec7n m\u1edf r\u1ed9ng ch\u00ednh th\u1ee9c <code>C4-PlantUML<\/code>m\u1edf r\u1ed9ng th\u01b0 vi\u1ec7n chu\u1ea9n. Th\u01b0 vi\u1ec7n n\u00e0y thay th\u1ebf c\u00e1c h\u00ecnh d\u1ea1ng UML th\u00f4 b\u1eb1ng c\u00e1c macro chuy\u00ean d\u1ee5ng, t\u1ef1 \u0111\u1ed9ng ch\u00e8n m\u00e0u s\u1eafc, h\u00ecnh d\u1ea1ng v\u00e0 c\u00e1c tr\u01b0\u1eddng d\u1eef li\u1ec7u ph\u1ee5 tr\u1ee3 ri\u00eang bi\u1ec7t cho ng\u01b0\u1eddi d\u00f9ng, h\u1ec7 th\u1ed1ng v\u00e0 c\u01a1 s\u1edf d\u1eef li\u1ec7u. V\u1edbi <strong>VPasCode<\/strong>, b\u1ea1n c\u00f3 th\u1ec3 \u0111\u1ecbnh ngh\u0129a c\u00e1c m\u00f4i tr\u01b0\u1eddng l\u1ed3ng gh\u00e9p n\u00e0y m\u1ed9t c\u00e1ch s\u1ea1ch s\u1ebd trong m\u00e3 ngu\u1ed3n. B\u1ed9 \u0111\u1ed9ng l\u1ef1c b\u1ed1 c\u1ee5c t\u1ef1 \u0111\u1ed9ng \u0111\u1ecbnh tuy\u1ebfn c\u00e1c vect\u01a1 k\u1ebft n\u1ed1i v\u00e0 \u0111i\u1ec1u ch\u1ec9nh k\u00edch th\u01b0\u1edbc c\u00e1c tr\u01b0\u1eddng v\u0103n b\u1ea3n m\u00e0 kh\u00f4ng l\u00e0m h\u1ecfng h\u00ecnh d\u1ea1ng b\u1ed1 c\u1ee5c c\u1ee7a b\u1ea1n.<\/p>\n<h2>H\u01b0\u1edbng d\u1eabn c\u00fa ph\u00e1p c\u1ed1t l\u00f5i: C\u00e1c th\u00e0nh ph\u1ea7n v\u00e0 c\u1ea5u tr\u00fac<\/h2>\n<p>X\u00e2y d\u1ef1ng m\u1ed9t m\u00f4 h\u00ecnh C4 h\u1ee3p l\u1ec7 b\u1eb1ng PlantUML ph\u1ee5 thu\u1ed9c v\u00e0o vi\u1ec7c nh\u1eadp \u0111\u00fang c\u00e1c t\u1ec7p th\u01b0 vi\u1ec7n, ch\u1ecdn c\u00e1c macro c\u1ea5u tr\u00fac, thi\u1ebft l\u1eadp ranh gi\u1edbi v\u00e0 s\u1eed d\u1ee5ng c\u00e1c li\u00ean k\u1ebft quan h\u1ec7 chuy\u00ean bi\u1ec7t.<\/p>\n<h3>1. Nh\u1eadp c\u00e1c t\u1ec7p th\u01b0 vi\u1ec7n chu\u1ea9n C4<\/h3>\n<p>Th\u01b0 vi\u1ec7n <code>C4-PlantUML<\/code>m\u1edf r\u1ed9ng \u0111\u01b0\u1ee3c chia th\u00e0nh c\u00e1c t\u1ec7p ri\u00eang bi\u1ec7t, t\u01b0\u01a1ng \u1ee9ng tr\u1ef1c ti\u1ebfp v\u1edbi c\u00e1c c\u1ea5p \u0111\u1ed9 kh\u00e1c nhau trong m\u00f4 h\u00ecnh tr\u1eebu t\u01b0\u1ee3ng. \u0110\u1ec3 tr\u00e1nh hi\u1ec7n t\u01b0\u1ee3ng ch\u1eadm hi\u1ec7u su\u1ea5t ho\u1eb7c l\u1ed7i bi\u00ean d\u1ecbch, b\u1ea1n ch\u1ec9 n\u00ean nh\u1eadp l\u1edbp t\u1ec7p c\u1ee5 th\u1ec3 m\u00e0 s\u01a1 \u0111\u1ed3 c\u1ee7a b\u1ea1n nh\u1eafm \u0111\u1ebfn:<\/p>\n<pre class=\"lang-plantuml\"><code>@startuml\r\n' Nh\u1eadp t\u1ec7p l\u1edbp C4 c\u1ee5 th\u1ec3 c\u1ea7n thi\u1ebft\r\n!include &lt;C4\/C4_Context&gt;\r\n' S\u1eed d\u1ee5ng C4_Container ho\u1eb7c C4_Component \u0111\u1ec3 t\u1ea1o b\u1ea3n \u0111\u1ed3 ki\u1ebfn tr\u00fac s\u00e2u h\u01a1n<\/code><\/pre>\n<h3>2. Khai b\u00e1o c\u00e1c t\u00e1c nh\u00e2n v\u00e0 h\u1ec7 th\u1ed1ng c\u1ed1t l\u00f5i (c\u1ea5p \u0111\u1ed9 B\u1ed1i c\u1ea3nh)<\/h3>\n<p>\u1ede c\u1ea5p \u0111\u1ed9 B\u1ed1i c\u1ea3nh h\u1ec7 th\u1ed1ng c\u1ea5p cao, b\u1ea1n m\u00f4 h\u00ecnh h\u00f3a c\u00e1c th\u00e0nh ph\u1ea7n n\u1ed9i b\u1ed9, c\u00e1c ph\u1ee5 thu\u1ed9c b\u00ean ngo\u00e0i v\u00e0 ng\u01b0\u1eddi d\u00f9ng cu\u1ed1i l\u00e0 con ng\u01b0\u1eddi. Th\u01b0 vi\u1ec7n chu\u1ea9n cung c\u1ea5p c\u00e1c macro c\u1ee5 th\u1ec3 ch\u1ea5p nh\u1eadn m\u1ed9t ID, nh\u00e3n tr\u1ef1c quan v\u00e0 m\u1ed9t th\u1ebb m\u00f4 t\u1ea3 t\u00f9y ch\u1ecdn:<\/p>\n<ul>\n<li><code>Person(id, \"Nh\u00e3n\", \"M\u00f4 t\u1ea3\")<\/code> \u2014 \u0110\u1ea1i di\u1ec7n cho h\u1ed3 s\u01a1 ng\u01b0\u1eddi d\u00f9ng con ng\u01b0\u1eddi ho\u1eb7c t\u00e1c nh\u00e2n h\u1ec7 th\u1ed1ng.<\/li>\n<li><code>System(id, \"Nh\u00e3n\", \"M\u00f4 t\u1ea3\")<\/code> \u2014 \u0110\u1ea1i di\u1ec7n cho m\u1ed9t h\u1ec7 sinh th\u00e1i \u1ee9ng d\u1ee5ng ho\u1eb7c d\u1ecbch v\u1ee5 ph\u1ea7n m\u1ec1m n\u1ed9i b\u1ed9 ch\u00ednh.<\/li>\n<li><code>System_Ext(id, \"Nh\u00e3n\", \"M\u00f4 t\u1ea3\")<\/code> \u2014 \u0110\u1ea1i di\u1ec7n cho m\u1ed9t h\u1ec7 th\u1ed1ng b\u00ean ngo\u00e0i ho\u1eb7c ph\u1ee5 thu\u1ed9c API b\u00ean th\u1ee9 ba (\u0111\u01b0\u1ee3c hi\u1ec3n th\u1ecb b\u1eb1ng b\u1ea3ng m\u00e0u x\u00e1m r\u00f5 r\u00e0ng).<\/li>\n<\/ul>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">Plantuml<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:HS_1IWD130RW-yA-GzpJ5XGlFOgemu8UXC9wNz9fMeCp6PbaRVVjdR4j7fFy-KYUr33R70EuzJG4YYIcRNF3uiEy8tXmw_ioSKcCJlRODXlAcgJtirgAb6-XUq7vOZc0kxIwqdk6Qm2ER9-0yFstXm6s9GxeVPh5kbNRZ8iQnNvxLYPTjEoxb0cky3bHsLUKNI25FGkAvw9PHb7qnadqNvk6a_KHELouuQuMC5B-OKzLUYl_v7hE-Fwn0Kd6U_PO6JYWqH6NRlKB\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Plantuml trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">Plantuml<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:LO_FIiD04CRlXRp3c5CAWfSUHOHO4AHIQ0_UGh9TiakJ2MGdqZw11qyzUF3MA1uBWfvSFAtqFVPDd1ZnpsLsPhzllj_kgQ6qfgOi81ubuqAM4ia4WmEDecWM4exZqH4hSOKaLtGI3AQoDXL6eZ5KbR8-XF12kLOeK6wBELpcxW7xFcHjukqzmVAlGxWN8BVLV5lvjqS4_5rXiGLKF8V3O31R6v9bbAMur9WdPcquyTpR6o3bxUO_3MBbTgWww9MtEoZSUvSc8DTf1GjlR_a5NrpH6ty0oNX5KPdgufjmrdkllNs2kTe_myT6CnI1EBVBZxszOo0fzyf7vjeAPfFv590_go7Z6Wu_0G00\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Plantuml in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml C4_Elements\r\n!include &lt;C4\/C4_Context&gt;\r\nPerson(customer, \"Kh\u00e1ch h\u00e0ng Ng\u00e2n h\u00e0ng\", \"M\u1ed9t kh\u00e1ch h\u00e0ng c\u00f3 t\u00e0i kho\u1ea3n ng\u00e2n h\u00e0ng c\u00e1 nh\u00e2n\")\r\nSystem(banking_sys, \"H\u1ec7 th\u1ed1ng Ng\u00e2n h\u00e0ng Ch\u00ednh\", \"X\u1eed l\u00fd c\u00e1c giao d\u1ecbch t\u00e0i ch\u00ednh\")\r\nSystem_Ext(mail_sys, \"D\u1ecbch v\u1ee5 Th\u01b0 \u0111i\u1ec7n t\u1eed\", \"C\u1ed5ng th\u00f4ng b\u00e1o SMTP n\u1ed9i b\u1ed9\")<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:LO_FIiD04CRlXRp3c5CAWfSUHOHO4AHIQ0_UGh9TiakJ2MGdqZw11qyzUF3MA1uBWfvSFAtqFVPDd1ZnpsLsPhzllj_kgQ6qfgOi81ubuqAM4ia4WmEDecWM4exZqH4hSOKaLtGI3AQoDXL6eZ5KbR8-XF12kLOeK6wBELpcxW7xFcHjukqzmVAlGxWN8BVLV5lvjqS4_5rXiGLKF8V3O31R6v9bbAMur9WdPcquyTpR6o3bxUO_3MBbTgWww9MtEoZSUvSc8DTf1GjlR_a5NrpH6ty0oNX5KPdgufjmrdkllNs2kTe_myT6CnI1EBVBZxszOo0fzyf7vjeAPfFv590_go7Z6Wu_0G00\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Plantuml in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:HS_1IWD130RW-yA-GzpJ5XGlFOgemu8UXC9wNz9fMeCp6PbaRVVjdR4j7fFy-KYUr33R70EuzJG4YYIcRNF3uiEy8tXmw_ioSKcCJlRODXlAcgJtirgAb6-XUq7vOZc0kxIwqdk6Qm2ER9-0yFstXm6s9GxeVPh5kbNRZ8iQnNvxLYPTjEoxb0cky3bHsLUKNI25FGkAvw9PHb7qnadqNvk6a_KHELouuQuMC5B-OKzLUYl_v7hE-Fwn0Kd6U_PO6JYWqH6NRlKB\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Plantuml trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p id=\"USSGhTV\"><img fetchpriority=\"high\" alt=\"\" class=\"alignnone size-full wp-image-608\" decoding=\"async\" fetchpriority=\"high\" height=\"316\" sizes=\"(max-width: 461px) 100vw, 461px\" src=\"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a1901f8a8e4e.png\" srcset=\"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a1901f8a8e4e.png 461w, https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a1901f8a8e4e-300x206.png 300w\" width=\"461\"\/><\/p>\n<h3>3. M\u1edf r\u1ed9ng ranh gi\u1edbi (c\u1ea5p \u0111\u1ed9 Container v\u00e0 Th\u00e0nh ph\u1ea7n)<\/h3>\n<p>Khi \u0111i s\u00e2u h\u01a1n v\u00e0o l\u1edbp Container, b\u1ea1n m\u00f4 h\u00ecnh h\u00f3a c\u00e1c \u1ee9ng d\u1ee5ng web, microservices v\u00e0 c\u01a1 s\u1edf d\u1eef li\u1ec7u. B\u1ea1n c\u00f3 th\u1ec3 t\u00e1ch bi\u1ec7t c\u00e1c th\u00e0nh ph\u1ea7n n\u1ed9i b\u1ed9 n\u00e0y b\u00ean trong m\u1ed9t h\u1ed9p ranh gi\u1edbi logic r\u00f5 r\u00e0ng b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng<code>System_Boundary()<\/code>b\u1ecdc macro:<\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">Plantuml<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:NOrFQyCm3CNlWNm7DOUHmi8Oz3W6MzfR3zsyUr1iDHCujf6TbZ3stUTaVmxJHNfFqkzjs6ax6OA7TdVNxhhMkuJiI1xBeYpK71EDtREVd46PQtr_2zMXQVquacY2xpqSj6_YEbPR-2WBoFK7gg_KTnX2_bJi1alD2GU2fn0iQqpiNPLNhuGwmGsypO6K5WvfSK_YBsmemXH9u4oO9idgmWYPcZjTg-s_l7rV6qpOOwILQzSCjB3_SLUmZsaGKY_7HQdavJSaY3-p9K1dm98PilNECHymnINhymi0\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Plantuml trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">Plantuml<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:NO-_IyD05CVtGF-7PmP9GH2XepWO1uSEQhgNo-L83j9BJ2vA42U73av574Kp55o26RhO6rFoVzn_udiA3htXtVlvVPzt81LFgqZ0gJyvzYTpFrEQIIMAiv4pSeAwr68nFyyg5R6YzlZ94RYNrYoXb2e1dVIDXDzO9zQiL0opPEY61fs5tM9jjv9OLQ2jQTqnF8mSmFU_nBiNuPpbEQfQyubJaJLhKYaOsjqAbLoitGZ6DHp2hCv5m0kPQyhw5VPmkrtdmFk6W-vRP5Ax9qohUEYiUPCGzTyO8kW6lzkAGInP1j4V5Mvtntj85w4NCSr2LWhQCJHGMlDEO5-GqbX5CWhmtYLHN6MbZWiHN4yfcWvT1RgWPcnuWHBdzrZk-Wz8hNdc2IctP5xf04aeZpy0\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Plantuml in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">!include &lt;C4\/C4_Container&gt;\r\n\r\nSystem_Boundary(c1, \"H\u1ec7 sinh th\u00e1i H\u1ec7 th\u1ed1ng Th\u01b0\u01a1ng m\u1ea1i \u0111i\u1ec7n t\u1eed\") {\r\n    Container(web_app, \"\u1ee8ng d\u1ee5ng Trang \u0111\u01a1n\", \"React &amp; TypeScript\", \"Cung c\u1ea5p c\u00e1c t\u00ednh n\u0103ng ng\u01b0\u1eddi d\u00f9ng th\u00f4ng qua giao di\u1ec7n web\")\r\n    ContainerDb(database, \"C\u01a1 s\u1edf d\u1eef li\u1ec7u quan h\u1ec7\", \"PostgreSQL\", \"L\u01b0u tr\u1eef h\u1ed3 s\u01a1 ng\u01b0\u1eddi d\u00f9ng v\u00e0 l\u1ecbch s\u1eed s\u1ed5 c\u00e1i\")\r\n}<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:NO-_IyD05CVtGF-7PmP9GH2XepWO1uSEQhgNo-L83j9BJ2vA42U73av574Kp55o26RhO6rFoVzn_udiA3htXtVlvVPzt81LFgqZ0gJyvzYTpFrEQIIMAiv4pSeAwr68nFyyg5R6YzlZ94RYNrYoXb2e1dVIDXDzO9zQiL0opPEY61fs5tM9jjv9OLQ2jQTqnF8mSmFU_nBiNuPpbEQfQyubJaJLhKYaOsjqAbLoitGZ6DHp2hCv5m0kPQyhw5VPmkrtdmFk6W-vRP5Ax9qohUEYiUPCGzTyO8kW6lzkAGInP1j4V5Mvtntj85w4NCSr2LWhQCJHGMlDEO5-GqbX5CWhmtYLHN6MbZWiHN4yfcWvT1RgWPcnuWHBdzrZk-Wz8hNdc2IctP5xf04aeZpy0\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Plantuml in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:NOrFQyCm3CNlWNm7DOUHmi8Oz3W6MzfR3zsyUr1iDHCujf6TbZ3stUTaVmxJHNfFqkzjs6ax6OA7TdVNxhhMkuJiI1xBeYpK71EDtREVd46PQtr_2zMXQVquacY2xpqSj6_YEbPR-2WBoFK7gg_KTnX2_bJi1alD2GU2fn0iQqpiNPLNhuGwmGsypO6K5WvfSK_YBsmemXH9u4oO9idgmWYPcZjTg-s_l7rV6qpOOwILQzSCjB3_SLUmZsaGKY_7HQdavJSaY3-p9K1dm98PilNECHymnINhymi0\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Plantuml trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p id=\"GZPysCa\"><img alt=\"\" class=\"alignnone size-full wp-image-609\" decoding=\"async\" height=\"223\" sizes=\"(max-width: 473px) 100vw, 473px\" src=\"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a1902094851f.png\" srcset=\"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a1902094851f.png 473w, https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a1902094851f-300x141.png 300w\" width=\"473\"\/><\/p>\n<h3>4. B\u1ea3n \u0111\u1ed3 c\u00e1c m\u1ed1i quan h\u1ec7 k\u1ef9 thu\u1eadt<\/h3>\n<p>Thay v\u00ec d\u1ef1a v\u00e0o c\u00e1c \u0111\u01b0\u1eddng n\u00e9t \u0111\u1ee9t c\u01a1 b\u1ea3n, C4 s\u1eed d\u1ee5ng \u0111\u1ecbnh d\u1ea1ng macro giao ti\u1ebfp r\u00f5 r\u00e0ng nh\u01b0<code>Rel(From_ID, To_ID, \"Nh\u00e3n\", \"C\u00f4ng ngh\u1ec7\")<\/code>. \u0110i\u1ec1u n\u00e0y gi\u00fap b\u1ea3n \u0111\u1ed3 ki\u1ebfn tr\u00fac c\u1ee7a b\u1ea1n d\u1ec5 \u0111\u1ecdc cao b\u1eb1ng c\u00e1ch bu\u1ed9c m\u1ed7i k\u1ebft n\u1ed1i ph\u1ea3i n\u00eau r\u00f5 m\u1ee5c \u0111\u00edch v\u00e0 giao th\u1ee9c truy\u1ec1n t\u1ea3i n\u1ec1n t\u1ea3ng (v\u00ed d\u1ee5: HTTPS, gRPC ho\u1eb7c AMQP):<\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">Plantuml<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:LPB1QkD038Rl1h-3ciFYG4DPwB4KMZVGXLrmr-uvo6FP5PtCc9bnNBFikrVZE6dZoo0XVVf_oLTib1uQWhlyzYQ_tUNM16H3xZvDqgGWvwt9rE23tPExXjKZcdSs7UHBQYMv1pWLmCZX3H3wkGyrr58Eg9GTJ5YjqwISVA1zLXyfEpzvwS-j8pY1ZnKH-uocqUIXPOD6iT22G-DH1RR6Vz5ssu-GxP7rWjjkOW0bkGChYgHV9f2BSie_LG761cvPOSH0Xu56d2Bjp7iKjGswALC_Prnkz-9DqQ8Djifk_57c6lwb2SXttbisKht3lfVEKlnesXJO4JpqlLvcHaL_IMp03wYcdahbk0ynMpXxu4Oi3rvssHA6mKbqO0IXoajZ57enxwdE6WnOewUPg-SPulLfoSvWwqFdg7pv7QCoM7SQqZlRiYQGNOEcffFK6yin7TEyulzf8inlVy2NlLSla5XAhHCr5thd-rLLKKP619pRBiHYu-V9e-CWZT_kAmPYvOaboc-gl5YjFm40\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Plantuml trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">Plantuml<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:PL9FYnCn5ByN-XsUFSWKX4NOetXmLbXmL-hE7BoLJ3fCmaupTP9PBUB9WmSHBB873s97ANXPBEZ51ayf_Hxv9hxNgVsZSyWaUU_z_hoNMrBnl1gaS2yyFWgF-s6X39CgBU-tM-rMBorreG9UQLCCq_8ET1u9LtC1marL1eypzqKr-mx6phtzQE1oFuEx7s3SLE9juHTV5QXT2GPhK0BFdMwx5OsrIOT1mjIbL5bVZpKYddhx1epmTdB81g5mDqeGwLDlRo1tlmcDGoPP0GDltwA2DIzl4hS4_OSlJ31aCjymd3IvLzxE81QhEImd4aaL6CGb_D3RQoGqmlt4N-Bg0gBpk0SApKf8S2NmBVo3eb83Leu3VlUlVYsLeFfQme4VeblLk1dw1SOEYBlmijq2_BRp29wdIP-DHeZgxJUiGfSpGYaPhii98f7SYvHn0xSX7e_IY9ToPDOcAcgtNyn6JPiCDGNKyZLUgsmrz_QJX87xjJFwh6ARPZQga9ry7aWwIO81ConXEYMELGtQsyyax3laL5OH38uCjwIYLsYJbMdqv8nEPwjv1QQaP4pu01hh_z5ovQQGDmFID6PShic092clsgsBDDzxcxi6HPIywSz_VZa6sUOPeJoISXh7lOWm2N0Bi-Tj-TxRTtoj9nFomE7-Yzl0eS6ZEEnrkdy0\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Plantuml in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">!include &lt;C4\/C4_Container&gt;\r\n\r\nPerson(customer, \"Kh\u00e1ch h\u00e0ng Ng\u00e2n h\u00e0ng\", \"M\u1ed9t kh\u00e1ch h\u00e0ng c\u00f3 t\u00e0i kho\u1ea3n ng\u00e2n h\u00e0ng c\u00e1 nh\u00e2n\")\r\nSystem(banking_sys, \"H\u1ec7 th\u1ed1ng Ng\u00e2n h\u00e0ng Ch\u00ednh\", \"X\u1eed l\u00fd c\u00e1c giao d\u1ecbch t\u00e0i ch\u00ednh\")\r\nSystem_Ext(mail_sys, \"D\u1ecbch v\u1ee5 Th\u01b0 \u0111i\u1ec7n t\u1eed\", \"C\u1ed5ng th\u00f4ng b\u00e1o SMTP n\u1ed9i b\u1ed9\")\r\n\r\nSystem_Boundary(c1, \"H\u1ec7 sinh th\u00e1i H\u1ec7 th\u1ed1ng Th\u01b0\u01a1ng m\u1ea1i \u0111i\u1ec7n t\u1eed\") {\r\n    Container(web_app, \"\u1ee8ng d\u1ee5ng Trang \u0111\u01a1n\", \"React &amp; TypeScript\", \"Cung c\u1ea5p c\u00e1c t\u00ednh n\u0103ng ng\u01b0\u1eddi d\u00f9ng th\u00f4ng qua giao di\u1ec7n web\")\r\n    ContainerDb(database, \"C\u01a1 s\u1edf d\u1eef li\u1ec7u quan h\u1ec7\", \"PostgreSQL\", \"L\u01b0u tr\u1eef h\u1ed3 s\u01a1 ng\u01b0\u1eddi d\u00f9ng v\u00e0 l\u1ecbch s\u1eed s\u1ed5 c\u00e1i\")\r\n}\r\nRel(customer, web_app, \"S\u1eed d\u1ee5ng c\u00e1c t\u00ednh n\u0103ng c\u1eeda h\u00e0ng qua\", \"HTTPS\")\r\nRel(web_app, database, \"\u0110\u1ecdc v\u00e0 ghi d\u1eef li\u1ec7u giao d\u1ecbch qua\", \"SQL\/TCP\")<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:PL9FYnCn5ByN-XsUFSWKX4NOetXmLbXmL-hE7BoLJ3fCmaupTP9PBUB9WmSHBB873s97ANXPBEZ51ayf_Hxv9hxNgVsZSyWaUU_z_hoNMrBnl1gaS2yyFWgF-s6X39CgBU-tM-rMBorreG9UQLCCq_8ET1u9LtC1marL1eypzqKr-mx6phtzQE1oFuEx7s3SLE9juHTV5QXT2GPhK0BFdMwx5OsrIOT1mjIbL5bVZpKYddhx1epmTdB81g5mDqeGwLDlRo1tlmcDGoPP0GDltwA2DIzl4hS4_OSlJ31aCjymd3IvLzxE81QhEImd4aaL6CGb_D3RQoGqmlt4N-Bg0gBpk0SApKf8S2NmBVo3eb83Leu3VlUlVYsLeFfQme4VeblLk1dw1SOEYBlmijq2_BRp29wdIP-DHeZgxJUiGfSpGYaPhii98f7SYvHn0xSX7e_IY9ToPDOcAcgtNyn6JPiCDGNKyZLUgsmrz_QJX87xjJFwh6ARPZQga9ry7aWwIO81ConXEYMELGtQsyyax3laL5OH38uCjwIYLsYJbMdqv8nEPwjv1QQaP4pu01hh_z5ovQQGDmFID6PShic092clsgsBDDzxcxi6HPIywSz_VZa6sUOPeJoISXh7lOWm2N0Bi-Tj-TxRTtoj9nFomE7-Yzl0eS6ZEEnrkdy0\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Plantuml in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:LPB1QkD038Rl1h-3ciFYG4DPwB4KMZVGXLrmr-uvo6FP5PtCc9bnNBFikrVZE6dZoo0XVVf_oLTib1uQWhlyzYQ_tUNM16H3xZvDqgGWvwt9rE23tPExXjKZcdSs7UHBQYMv1pWLmCZX3H3wkGyrr58Eg9GTJ5YjqwISVA1zLXyfEpzvwS-j8pY1ZnKH-uocqUIXPOD6iT22G-DH1RR6Vz5ssu-GxP7rWjjkOW0bkGChYgHV9f2BSie_LG761cvPOSH0Xu56d2Bjp7iKjGswALC_Prnkz-9DqQ8Djifk_57c6lwb2SXttbisKht3lfVEKlnesXJO4JpqlLvcHaL_IMp03wYcdahbk0ynMpXxu4Oi3rvssHA6mKbqO0IXoajZ57enxwdE6WnOewUPg-SPulLfoSvWwqFdg7pv7QCoM7SQqZlRiYQGNOEcffFK6yin7TEyulzf8inlVy2NlLSla5XAhHCr5thd-rLLKKP619pRBiHYu-V9e-CWZT_kAmPYvOaboc-gl5YjFm40\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Plantuml trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p id=\"OfOQvLl\"><img alt=\"\" class=\"alignnone size-full wp-image-610\" decoding=\"async\" height=\"692\" sizes=\"(max-width: 744px) 100vw, 744px\" src=\"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a190224848fe.png\" srcset=\"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a190224848fe.png 744w, https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a190224848fe-300x279.png 300w\" width=\"744\"\/><\/p>\n<h2>C\u00e1c th\u1ef1c h\u00e0nh t\u1ed1t nh\u1ea5t cho ki\u1ebfn tr\u00fac C4 d\u1ec5 \u0111\u1ecdc<\/h2>\n<ul>\n<li><strong>Kh\u00f4ng bao gi\u1edd tr\u1ed9n c\u00e1c m\u1ee9c \u0111\u1ed9 tr\u1eebu t\u01b0\u1ee3ng:<\/strong>Gi\u1eef cho s\u01a1 \u0111\u1ed3 c\u1ee7a b\u1ea1n t\u1eadp trung v\u00e0o m\u1ed9t l\u1edbp duy nh\u1ea5t. Kh\u00f4ng tr\u1ed9n c\u00e1c th\u00e0nh ph\u1ea7n ph\u1ea7n m\u1ec1m n\u1ed9i b\u1ed9 chi ti\u1ebft v\u00e0o b\u1ea3n \u0111\u1ed3 ng\u1eef c\u1ea3nh h\u1ec7 th\u1ed1ng c\u1ea5p cao. N\u1ebfu m\u1ed9t h\u1ec7 th\u1ed1ng tr\u1edf n\u00ean qu\u00e1 ph\u1ee9c t\u1ea1p, h\u00e3y t\u00e1ch n\u00f3 ra th\u00e0nh m\u1ed9t s\u01a1 \u0111\u1ed3 c\u1ea5p Container ri\u00eang bi\u1ec7t v\u00e0 chuy\u00ean bi\u1ec7t.<\/li>\n<li><strong>X\u00e1c \u0111\u1ecbnh r\u00f5 r\u00e0ng c\u00e1c c\u00f4ng ngh\u1ec7:<\/strong>Lu\u00f4n t\u1eadn d\u1ee5ng tham s\u1ed1 th\u1ee9 t\u01b0 trong macro c\u1ee7a b\u1ea1n<code>Rel()<\/code>\u0111\u1ec3 n\u00eau r\u00f5 c\u00f4ng ngh\u1ec7 ho\u1eb7c giao th\u1ee9c c\u1ee5 th\u1ec3 \u0111ang \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng (v\u00ed d\u1ee5:<code>\"JSON\/HTTPS\"<\/code> ho\u1eb7c <code>\"JDBC\"<\/code>). \u0110i\u1ec1u n\u00e0y cung c\u1ea5p cho \u0111\u1ed9i c\u1ee7a b\u1ea1n b\u1ed1i c\u1ea3nh tri\u1ec3n khai quan tr\u1ecdng ch\u1ec9 trong m\u1ed9t c\u00e1i nh\u00ecn.<\/li>\n<li><strong>T\u1eadn d\u1ee5ng c\u00e1c ghi \u0111\u00e8 b\u1ed1 c\u1ee5c theo h\u01b0\u1edbng:<\/strong> N\u1ebfu c\u00e1c th\u00e0nh ph\u1ea7n c\u1ee7a b\u1ea1n b\u1eaft \u0111\u1ea7u ch\u1ed3ng ch\u00e9o m\u1ed9t c\u00e1ch kh\u00f3 ch\u1ecbu, h\u00e3y s\u1eed d\u1ee5ng c\u00e1c macro quan h\u1ec7 theo h\u01b0\u1edbng (nh\u01b0 <code>Rel_D()<\/code> \u0111\u1ec3 xu\u1ed1ng, <code>Rel_R()<\/code> \u0111\u1ec3 ph\u1ea3i, ho\u1eb7c <code>Rel_L()<\/code> \u0111\u1ec3 tr\u00e1i) \u0111\u1ec3 t\u1ef1 tay l\u00e0m s\u1ea1ch lu\u1ed3ng ki\u1ebfn tr\u00fac c\u1ee7a b\u1ea1n.<\/li>\n<\/ul>\n<h2>V\u00ed d\u1ee5 th\u1ef1c t\u1ebf v\u1ec1 PlantUML C4<\/h2>\n<h3>V\u00ed d\u1ee5 1: B\u1ed1 c\u1ee5c B\u1ed1i c\u1ea3nh H\u1ec7 th\u1ed1ng c\u1ea5p cao (M\u1ee9c 1)<\/h3>\n<p>B\u1ea3n thi\u1ebft k\u1ebf ch\u1ee9c n\u0103ng n\u00e0y m\u00f4 h\u00ecnh h\u00f3a m\u1ed9t s\u01a1 \u0111\u1ed3 B\u1ed1i c\u1ea3nh H\u1ec7 th\u1ed1ng M\u1ee9c 1 ti\u00eau chu\u1ea9n, chi ti\u1ebft c\u00e1ch kh\u00e1ch h\u00e0ng t\u01b0\u01a1ng t\u00e1c v\u1edbi \u1ee9ng d\u1ee5ng ng\u00e2n h\u00e0ng tr\u1ef1c tuy\u1ebfn v\u00e0 c\u00e1c ph\u1ee5 thu\u1ed9c b\u00ean ngo\u00e0i c\u1ee7a n\u00f3.<\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">Plantuml<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:TL9BJy904ButwNyOEM7YuyBH6BGIuy6409wRQJk52TjTiZC5_FTEoqCCyTRT-Pwp7OjYrBPnQNB3ldHjHV2KZHwpKPu5hxJNvpH94sLr1FDlKMhWE80tncN41keGuSEkeYU5L_HhziiZjkDEAKhmmx8L3Gt5EnWSRj2TmTbnDh3X2voG46hG5K5XADYnhc1p8c9PXjQhF0nkq-HWDImEOhdqHrFw9rDlubpOoTb9G0DicNPGiqTVibcmhmEWhw31DO56z58Ryi8nd-nrs22xNyl9VNU6ULl8sMjX5RYFOghKVMmYYssJVFKUkO8on4s8g0GzMIXkhRozXId4tYzDPkGkDdXLzKj887Z7dg12MHK1OsMDi6CRDvzThUTly2wC03gAAdrhYy0rbwWSl2MiJByLutUDvf-BQISyDfBzEZy0\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Plantuml trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">Plantuml<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:ZP8nIyGm5CVtGh_3ywOJH1T74R782QA8lVtefQ49DgzdcyhTA0xEukHsLKGS14KdCpX4_1xv9hxsFEWfWaj9mill_Tu_tIfqbEjIfRwt996bPSnX8rXV2zO7GOQQZ_Mcx_cUbZhb47vMy77fp1LiEtCfWRctMnImwym5Q457c00JsUB1GM9l48ITqhgVE_FCG9SJz_QEDVYGvqM6NLOMEbCyNu7Edh0L4zyNsfS3Mm4AsdUeQj-PQmt7xLhcp7q4sBh1x0jeEvLKbzMgTF2DMEqi-ruuAJHNtM64nnAJGT5iYVrF_LeZe6b7mZwC5bN6N170lj9IIvmvC64VAQnJEstOn16I6f6K89uvnxbbossmCzPT5Sdq3xc--7oY5vbnj3EFZPCpTmgKhIQ4faoe-aSL8AKdOKXVYBE8h31fP4OGSenxkOmR2TyxucdhRNub5TQmcFgHox1sJsPzpaeQHZP3wONCuAICQZ9n1qU_ab-Sj4TmEOznQAkioKxPMnXJrA0aULFJPqpggSFz_c5Dtg81w7V-0W00\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Plantuml in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\n!include &lt;C4\/C4_Context&gt;\r\n\r\ntitle S\u01a1 \u0111\u1ed3 B\u1ed1i c\u1ea3nh H\u1ec7 th\u1ed1ng cho H\u1ec7 th\u1ed1ng Ng\u00e2n h\u00e0ng Tr\u1ef1c tuy\u1ebfn\r\n\r\nPerson(customer, \"Kh\u00e1ch h\u00e0ng Ng\u00e2n h\u00e0ng C\u00e1 nh\u00e2n\", \"M\u1ed9t kh\u00e1ch h\u00e0ng c\u1ee7a ng\u00e2n h\u00e0ng c\u00f3 t\u00e0i kho\u1ea3n c\u00e1 nh\u00e2n.\")\r\nSystem(banking_system, \"H\u1ec7 th\u1ed1ng Ng\u00e2n h\u00e0ng Tr\u1ef1c tuy\u1ebfn\", \"Cho ph\u00e9p kh\u00e1ch h\u00e0ng xem th\u00f4ng tin t\u00e0i ch\u00ednh v\u00e0 th\u1ef1c hi\u1ec7n chuy\u1ec3n kho\u1ea3n.\")\r\nSystem_Ext(mail_system, \"H\u1ec7 th\u1ed1ng Th\u01b0 \u0111i\u1ec7n t\u1eed\", \"C\u1ee5m m\u00e1y ch\u1ee7 th\u01b0 \u0111i\u1ec7n t\u1eed n\u1ed9i b\u1ed9 doanh nghi\u1ec7p SendGrid.\")\r\n\r\nRel(customer, banking_system, \"S\u1eed d\u1ee5ng b\u1ea3ng \u0111i\u1ec1u khi\u1ec3n tr\u1ef1c tuy\u1ebfn qua\")\r\nRel_R(banking_system, mail_system, \"G\u1eedi th\u00f4ng b\u00e1o v\u00e0 m\u00e3 x\u00e1c minh b\u1eb1ng\", \"SMTP\")\r\n@enduml<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:ZP8nIyGm5CVtGh_3ywOJH1T74R782QA8lVtefQ49DgzdcyhTA0xEukHsLKGS14KdCpX4_1xv9hxsFEWfWaj9mill_Tu_tIfqbEjIfRwt996bPSnX8rXV2zO7GOQQZ_Mcx_cUbZhb47vMy77fp1LiEtCfWRctMnImwym5Q457c00JsUB1GM9l48ITqhgVE_FCG9SJz_QEDVYGvqM6NLOMEbCyNu7Edh0L4zyNsfS3Mm4AsdUeQj-PQmt7xLhcp7q4sBh1x0jeEvLKbzMgTF2DMEqi-ruuAJHNtM64nnAJGT5iYVrF_LeZe6b7mZwC5bN6N170lj9IIvmvC64VAQnJEstOn16I6f6K89uvnxbbossmCzPT5Sdq3xc--7oY5vbnj3EFZPCpTmgKhIQ4faoe-aSL8AKdOKXVYBE8h31fP4OGSenxkOmR2TyxucdhRNub5TQmcFgHox1sJsPzpaeQHZP3wONCuAICQZ9n1qU_ab-Sj4TmEOznQAkioKxPMnXJrA0aULFJPqpggSFz_c5Dtg81w7V-0W00\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Plantuml in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:TL9BJy904ButwNyOEM7YuyBH6BGIuy6409wRQJk52TjTiZC5_FTEoqCCyTRT-Pwp7OjYrBPnQNB3ldHjHV2KZHwpKPu5hxJNvpH94sLr1FDlKMhWE80tncN41keGuSEkeYU5L_HhziiZjkDEAKhmmx8L3Gt5EnWSRj2TmTbnDh3X2voG46hG5K5XADYnhc1p8c9PXjQhF0nkq-HWDImEOhdqHrFw9rDlubpOoTb9G0DicNPGiqTVibcmhmEWhw31DO56z58Ryi8nd-nrs22xNyl9VNU6ULl8sMjX5RYFOghKVMmYYssJVFKUkO8on4s8g0GzMIXkhRozXId4tYzDPkGkDdXLzKj887Z7dg12MHK1OsMDi6CRDvzThUTly2wC03gAAdrhYy0rbwWSl2MiJByLutUDvf-BQISyDfBzEZy0\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Plantuml trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p id=\"NTJPRPC\"><img loading=\"lazy\" alt=\"\" class=\"alignnone size-full wp-image-611\" decoding=\"async\" height=\"439\" loading=\"lazy\" sizes=\"auto, (max-width: 561px) 100vw, 561px\" src=\"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a190234b2052.png\" srcset=\"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a190234b2052.png 561w, https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a190234b2052-300x235.png 300w\" width=\"561\"\/><\/p>\n<p><strong>Ph\u00e2n t\u00edch c\u00fa ph\u00e1p:<\/strong> S\u01a1 \u0111\u1ed3 n\u00e0y ch\u1ec9 t\u1eadp trung v\u00e0o ph\u1ea1m vi c\u1ea5p cao. Macro <code>System_Ext<\/code> t\u1ef1 \u0111\u1ed9ng \u00e1p d\u1ee5ng ki\u1ec3u m\u00e0u x\u00e1m cho d\u1ecbch v\u1ee5 th\u01b0 \u0111i\u1ec7n t\u1eed, t\u00e1ch bi\u1ec7t tr\u1ef1c quan h\u1ec7 th\u1ed1ng ch\u00ednh t\u1eeb c\u00e1c ph\u1ee5 thu\u1ed9c b\u00ean ngo\u00e0i. Macro <code>Rel_R<\/code> bu\u1ed9c \u0111\u1ed9ng c\u01a1 b\u1ed1 c\u1ee5c \u0111\u1eb7t n\u00fat th\u01b0 \u0111i\u1ec7n t\u1eed ngay b\u00ean ph\u1ea3i kh\u1ed1i h\u1ec7 th\u1ed1ng ng\u00e2n h\u00e0ng.<\/p>\n<h3>V\u00ed d\u1ee5 2: Topo container Microservice chi ti\u1ebft s\u00e2u (M\u1ee9c 2)<\/h3>\n<p>B\u1ea3n thi\u1ebft k\u1ebf doanh nghi\u1ec7p n\u00e2ng cao n\u00e0y ph\u00e2n t\u00edch m\u1ed9t h\u1ec7 th\u1ed1ng th\u00e0nh c\u00e1c \u1ee9ng d\u1ee5ng container th\u00e0nh ph\u1ea7n v\u00e0 c\u00e1c kho d\u1eef li\u1ec7u c\u00f4 l\u1eadp, cho th\u1ea5y c\u00e1ch l\u01b0u l\u01b0\u1ee3ng web \u0111\u01b0\u1ee3c \u0111\u1ecbnh tuy\u1ebfn qua c\u1ed5ng API xu\u1ed1ng c\u00e1c microservice ph\u00eda sau.<\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">Plantuml<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:TLHTRzf047n7uZziUMY9b3PIbSUgIW9jIfGF5wFsqLgV5tFA-SwwMqEigF-zUxP38Kfv07bzDpExCyj5OFJSL6OyUgUjCar1y6LsVZOxpsRECcfB_kjuD1wnPaEmhy5SO-cnWhNpa61RaML8d6SqS8rCEspZhOHyS7PQaLSRj7mAaz-KmztmA1Sz2zX4wWlB981C0Mg3BB0Lg0sfHzSma2rgfoq7a2y7l27jOKTvq7B-q-GaKgLjOAgoAzVO0dqxhJinML2k9i5_qJY8Ws_AXUx6v0IUnoEGpxwvATOwA_k3SlKoMS1IP6XRGkBTKnlrtfVQFhq8zuhgJbmUsK6XCU4KfCN2I3-nAp2wqd94If2ZGQlaXNN58FyLVSERB93VQXMbBmeHhhc5Ewsy6-gH-jh1UtYubDEVu-ClDBhe9bZGbepqxI5gP_T8jgVkfl4M9J_P0yQLHnjGiNOMRgaeUujkS8kGrZxEuSevZZMPXtGIeclzW7kU2YsMKZJTPK2bP33y1l4yd_PdiY8Nk9uCviWOsFckovbJZzwXsiolkdbNjQ6UgT21lSuRfW8kPulvH-NafOx9Oimbha4IL65F-oU6v4Dd905xNA-rWhLnkm3A45hJYamPRvSnybQ2hFPfboKfYSDuj2HpaERZdAHDtdayJ2B-6eT5WAt6gFp7QfMaPpVfmttK8qZP_3Xfhtp_vwTifglYs0Sh1y1ocSp-0tNivtVdT-X5oNwZUdE30Bu6MXvduT2TkCqoyhsjqgJNj9UJ_hmzMzsc4UX2DbR-LFu2\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Plantuml trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">Plantuml<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:TLH1QnD15Bu7yX-UEMWAnOBqAD9s8xMrjZ4Rq5kOJ8RiqCrCkZkRDeW7yU1114Fn4BnqBQKW5Dk3brsaXotv7_jFV6-IbasiWS3kpBplVTyttzkrqB30H3s_N7eW5VUZZe2dpkgAizfoj39CAX4yAvVA9IEDBy2Tn70pojDZkDi5xcbmylIRwaBJOye3exDOGLq7XlbKMXT1g5Mr9mAE-sOPAZTVytGamMGnnvh9vIJ6ubwUn1BUY7O5JpIp2-w1bwUdVU1qx6Oay_HZ3tWqBIrqKddwGO79arD46MGd6ap0yF5Gj87dwJaZd2-FAqj4nXs6HlHQ6pfI7HOCgtrBinLotHVOzpdNuJ2yHqzb2TwLIu2_E-LLrfUjBZFYa0snT5P3zdocgcYO9zSArkjR96YtAzKHFJX8vcmcYiICENIHdgJ2v3oo0fRXA4ylmC_-G1TbVvUe88b9OphYjiEOpY783mNjFBd2lXPGPOcnGXU8HiPhXI8OI4uYNqaUwDahlAKwWwIkED7RrF0GzjQnu0czsjsUj2xi2wl6TkuJeHuCvCnXvTd5B3PeFjsKkeU6EL855YxwXVAOXWuwnZrgjyq63Dn-857GXjR6KhYredZdnE4WeYkVRcKd4lOzRHV21U1_cTJQLLzqkY9eTThOuQLdZ_u27vb_Yk0-Pexc-u5ctAjjs7nQmy2Z0ZNrtfzSObpvR3xQqpYQYAw8x3s7TMUhHXxH0cgmjDvJ9Xy13KGnD3u6unZB4JEQ0Ti9ISV6DlCWo7xZ_mHN3o8s9O3RPtYLCliP0RyRJvoEiKGwwRXSQWY_C8RpyTr4c-MS3KM_iGd9Vj5irjsLRNTlbyWZNAisFmKBILkCJo7Zjv3THjtv3zXyNXmFpS5WeKBqg0-OECIrmq165yXIbskr2DwOpryn03jaimb8Uy79GW9koRglTrQQEov1hWdLmU_cNm00\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Plantuml in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\n!include &lt;C4\/C4_Container&gt;\r\n\r\ntitle S\u01a1 \u0111\u1ed3 Container cho C\u1ed5ng Thanh to\u00e1n Portal\r\n\r\nPerson(merchant, \"\u0110\u1ed1i t\u00e1c Th\u01b0\u01a1ng m\u1ea1i Web\", \"T\u00edch h\u1ee3p c\u00e1c \u0111i\u1ec3m cu\u1ed1i thanh to\u00e1n n\u1ec1n t\u1ea3ng v\u00e0o trang web c\u1ee7a h\u1ecd.\")\r\n\r\nSystem_Boundary(portal_scope, \"Ecosys C\u1ed5ng Thanh to\u00e1n\") {\r\n    Container(api_gateway, \"C\u1ed5ng \u0111\u1ecbnh tuy\u1ebfn API\", \"Nginx\", \"Ch\u1ee5p c\u00e1c cu\u1ed9c g\u1ecdi \u0111\u1ea7u v\u00e0o, x\u1eed l\u00fd gi\u1edbi h\u1ea1n t\u1ed1c \u0111\u1ed9 v\u00e0 c\u00e2n b\u1eb1ng c\u00e1c n\u00fat.\")\r\n    Container(auth_service, \"Microservice X\u00e1c th\u1ef1c\", \"Go &amp; OAuth2\", \"X\u00e1c minh token API v\u00e0 ph\u1ea1m vi c\u1ee7a nh\u00e0 ph\u00e1t tri\u1ec3n.\")\r\n    Container(txn_service, \"S\u1ed5 giao d\u1ecbch\", \"Java Spring Boot\", \"X\u1eed l\u00fd thanh to\u00e1n v\u00e0 qu\u1ea3n l\u00fd t\u00e0i kho\u1ea3n s\u1ed5 giao d\u1ecbch.\")\r\n    ContainerDb(ledger_db, \"Kho d\u1eef li\u1ec7u S\u1ed5 giao d\u1ecbch\", \"CockroachDB\", \"Th\u1ef1c hi\u1ec7n c\u00e1c l\u01b0\u1ee3c \u0111\u1ed3 b\u1ea3ng tu\u00e2n th\u1ee7 ACID ph\u00e2n t\u00e1n.\")\r\n}\r\n\r\n' \u0110\u1ecbnh tuy\u1ebfn lu\u1ed3ng l\u01b0u l\u01b0\u1ee3ng m\u1ed9t c\u00e1ch r\u00f5 r\u00e0ng qua c\u00e1c m\u1ee5c ti\u00eau container n\u1ed9i b\u1ed9\r\nRel(merchant, api_gateway, \"G\u1eedi d\u1eef li\u1ec7u thanh to\u00e1n qua\", \"HTTPS\/JSON\")\r\nRel_D(api_gateway, auth_service, \"X\u00e1c minh token \u0111\u1ea7u v\u00e0o qua\", \"gRPC\")\r\nRel_D(api_gateway, txn_service, \"Chuy\u1ec3n ti\u1ebfp h\u00e0nh \u0111\u1ed9ng thanh to\u00e1n \u0111\u1ebfn\", \"gRPC\")\r\nRel_R(txn_service, ledger_db, \"L\u01b0u tr\u1eef c\u00e1c m\u1ee5c giao d\u1ecbch qua\", \"SQL\/TLS\")\r\n@enduml<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:TLH1QnD15Bu7yX-UEMWAnOBqAD9s8xMrjZ4Rq5kOJ8RiqCrCkZkRDeW7yU1114Fn4BnqBQKW5Dk3brsaXotv7_jFV6-IbasiWS3kpBplVTyttzkrqB30H3s_N7eW5VUZZe2dpkgAizfoj39CAX4yAvVA9IEDBy2Tn70pojDZkDi5xcbmylIRwaBJOye3exDOGLq7XlbKMXT1g5Mr9mAE-sOPAZTVytGamMGnnvh9vIJ6ubwUn1BUY7O5JpIp2-w1bwUdVU1qx6Oay_HZ3tWqBIrqKddwGO79arD46MGd6ap0yF5Gj87dwJaZd2-FAqj4nXs6HlHQ6pfI7HOCgtrBinLotHVOzpdNuJ2yHqzb2TwLIu2_E-LLrfUjBZFYa0snT5P3zdocgcYO9zSArkjR96YtAzKHFJX8vcmcYiICENIHdgJ2v3oo0fRXA4ylmC_-G1TbVvUe88b9OphYjiEOpY783mNjFBd2lXPGPOcnGXU8HiPhXI8OI4uYNqaUwDahlAKwWwIkED7RrF0GzjQnu0czsjsUj2xi2wl6TkuJeHuCvCnXvTd5B3PeFjsKkeU6EL855YxwXVAOXWuwnZrgjyq63Dn-857GXjR6KhYredZdnE4WeYkVRcKd4lOzRHV21U1_cTJQLLzqkY9eTThOuQLdZ_u27vb_Yk0-Pexc-u5ctAjjs7nQmy2Z0ZNrtfzSObpvR3xQqpYQYAw8x3s7TMUhHXxH0cgmjDvJ9Xy13KGnD3u6unZB4JEQ0Ti9ISV6DlCWo7xZ_mHN3o8s9O3RPtYLCliP0RyRJvoEiKGwwRXSQWY_C8RpyTr4c-MS3KM_iGd9Vj5irjsLRNTlbyWZNAisFmKBILkCJo7Zjv3THjtv3zXyNXmFpS5WeKBqg0-OECIrmq165yXIbskr2DwOpryn03jaimb8Uy79GW9koRglTrQQEov1hWdLmU_cNm00\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Plantuml in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:TLHTRzf047n7uZziUMY9b3PIbSUgIW9jIfGF5wFsqLgV5tFA-SwwMqEigF-zUxP38Kfv07bzDpExCyj5OFJSL6OyUgUjCar1y6LsVZOxpsRECcfB_kjuD1wnPaEmhy5SO-cnWhNpa61RaML8d6SqS8rCEspZhOHyS7PQaLSRj7mAaz-KmztmA1Sz2zX4wWlB981C0Mg3BB0Lg0sfHzSma2rgfoq7a2y7l27jOKTvq7B-q-GaKgLjOAgoAzVO0dqxhJinML2k9i5_qJY8Ws_AXUx6v0IUnoEGpxwvATOwA_k3SlKoMS1IP6XRGkBTKnlrtfVQFhq8zuhgJbmUsK6XCU4KfCN2I3-nAp2wqd94If2ZGQlaXNN58FyLVSERB93VQXMbBmeHhhc5Ewsy6-gH-jh1UtYubDEVu-ClDBhe9bZGbepqxI5gP_T8jgVkfl4M9J_P0yQLHnjGiNOMRgaeUujkS8kGrZxEuSevZZMPXtGIeclzW7kU2YsMKZJTPK2bP33y1l4yd_PdiY8Nk9uCviWOsFckovbJZzwXsiolkdbNjQ6UgT21lSuRfW8kPulvH-NafOx9Oimbha4IL65F-oU6v4Dd905xNA-rWhLnkm3A45hJYamPRvSnybQ2hFPfboKfYSDuj2HpaERZdAHDtdayJ2B-6eT5WAt6gFp7QfMaPpVfmttK8qZP_3Xfhtp_vwTifglYs0Sh1y1ocSp-0tNivtVdT-X5oNwZUdE30Bu6MXvduT2TkCqoyhsjqgJNj9UJ_hmzMzsc4UX2DbR-LFu2\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Plantuml trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p id=\"ZtGazyC\"><img loading=\"lazy\" alt=\"\" class=\"alignnone size-full wp-image-612\" decoding=\"async\" height=\"728\" loading=\"lazy\" sizes=\"auto, (max-width: 759px) 100vw, 759px\" src=\"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a19024586a43.png\" srcset=\"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a19024586a43.png 759w, https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a19024586a43-300x288.png 300w\" width=\"759\"\/><\/p>\n<p><strong>Ph\u00e2n t\u00edch c\u00fa ph\u00e1p:<\/strong> B\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng <code>H\u1ec7 th\u1ed1ng_Bi\u00ean_gi\u1edbi<\/code> bao b\u1ecdc macro, c\u00e1c th\u00e0nh ph\u1ea7n n\u1ed9i b\u1ed9 \u0111\u01b0\u1ee3c nh\u00f3m g\u1ecdn g\u00e0ng b\u00ean trong m\u1ed9t h\u1ed9p vi\u1ec1n r\u00f5 r\u00e0ng. Macro chuy\u00ean d\u1ee5ng <code>ContainerDb<\/code> macro hi\u1ec3n th\u1ecb kho d\u1eef li\u1ec7u v\u1edbi bi\u1ec3u t\u01b0\u1ee3ng h\u00ecnh tr\u1ee5 c\u01a1 s\u1edf d\u1eef li\u1ec7u r\u00f5 r\u00e0ng, gi\u00fap ph\u00e2n bi\u1ec7t r\u00f5 r\u00e0ng gi\u1eefa c\u00e1c l\u1edbp th\u1eddi gian ch\u1ea1y t\u00ednh to\u00e1n v\u00e0 l\u1edbp l\u01b0u tr\u1eef b\u1ec1n v\u1eefng ch\u1ec9 trong m\u1ed9t c\u00e1i nh\u00ecn.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>M\u00f4 h\u00ecnh s\u01a1 \u0111\u1ed3 C4 l\u00e0 g\u00ec? Th\u01b0 vi\u1ec7n s\u01a1 \u0111\u1ed3 m\u00f4 h\u00ecnh C4 l\u00e0 m\u1ed9t khung ki\u1ebfn tr\u00fac ph\u00e2n c\u1ea5p, b\u1ed1n c\u1ea5p \u0111\u1ed9, \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf \u0111\u1ec3 ghi ch\u00e9p ki\u1ebfn tr\u00fac ph\u1ea7n m\u1ec1m v\u1edbi c\u00e1c m\u1ee9c \u0111\u1ed9 chi ti\u1ebft&#8230;<\/p>\n","protected":false},"author":4,"featured_media":0,"parent":0,"menu_order":12,"template":"","meta":{"inline_featured_image":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}}},"ld_collection":[14],"class_list":["post-2109","ld_docs","type-ld_docs","status-publish","hentry","ld_collection-vpascode-docs"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>PlantUML C4 Model Syntax | VPasCode Text to Diagram Guide<\/title>\n<meta name=\"description\" content=\"Map software architecture hierarchies with PlantUML C4 diagrams in VPasCode, your free diagram-as-code tool.\" \/>\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.vpascode.com\/vn\/docs\/vpascode-docs\/plantuml-c4-model-syntax-guide\/\" \/>\n<meta property=\"og:locale\" content=\"vi_VN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PlantUML C4 Model Syntax | VPasCode Text to Diagram Guide\" \/>\n<meta property=\"og:description\" content=\"Map software architecture hierarchies with PlantUML C4 diagrams in VPasCode, your free diagram-as-code tool.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/plantuml-c4-model-syntax-guide\/\" \/>\n<meta property=\"og:site_name\" content=\"VPasCode\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a1901f8a8e4e.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 ph\u00fat\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/docs\\\/vpascode-docs\\\/plantuml-c4-model-syntax-guide\\\/\",\"url\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/docs\\\/vpascode-docs\\\/plantuml-c4-model-syntax-guide\\\/\",\"name\":\"PlantUML C4 Model Syntax | VPasCode Text to Diagram Guide\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/docs\\\/vpascode-docs\\\/plantuml-c4-model-syntax-guide\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/docs\\\/vpascode-docs\\\/plantuml-c4-model-syntax-guide\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.vpascode.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/img_6a1901f8a8e4e.png\",\"datePublished\":\"2026-05-26T07:53:11+00:00\",\"description\":\"Map software architecture hierarchies with PlantUML C4 diagrams in VPasCode, your free diagram-as-code tool.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/docs\\\/vpascode-docs\\\/plantuml-c4-model-syntax-guide\\\/#breadcrumb\"},\"inLanguage\":\"vi\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/docs\\\/vpascode-docs\\\/plantuml-c4-model-syntax-guide\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"vi\",\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/docs\\\/vpascode-docs\\\/plantuml-c4-model-syntax-guide\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.vpascode.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/img_6a1901f8a8e4e.png\",\"contentUrl\":\"https:\\\/\\\/www.vpascode.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/img_6a1901f8a8e4e.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/docs\\\/vpascode-docs\\\/plantuml-c4-model-syntax-guide\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Lean Docs\",\"item\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/docs\\\/%ld_collection%\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"H\u01b0\u1edbng d\u1eabn c\u00fa ph\u00e1p m\u00f4 h\u00ecnh C4 c\u1ee7a PlantUML\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/#website\",\"url\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/\",\"name\":\"VPasCode\",\"description\":\"by Visual Paradigm\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"vi\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/#organization\",\"name\":\"VPasCode\",\"url\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"vi\",\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/wp-content\\\/uploads\\\/sites\\\/12\\\/2026\\\/06\\\/cropped-vp-online-logo-v1.png\",\"contentUrl\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/wp-content\\\/uploads\\\/sites\\\/12\\\/2026\\\/06\\\/cropped-vp-online-logo-v1.png\",\"width\":128,\"height\":138,\"caption\":\"VPasCode\"},\"image\":{\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"PlantUML C4 Model Syntax | VPasCode Text to Diagram Guide","description":"Map software architecture hierarchies with PlantUML C4 diagrams in VPasCode, your free diagram-as-code tool.","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.vpascode.com\/vn\/docs\/vpascode-docs\/plantuml-c4-model-syntax-guide\/","og_locale":"vi_VN","og_type":"article","og_title":"PlantUML C4 Model Syntax | VPasCode Text to Diagram Guide","og_description":"Map software architecture hierarchies with PlantUML C4 diagrams in VPasCode, your free diagram-as-code tool.","og_url":"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/plantuml-c4-model-syntax-guide\/","og_site_name":"VPasCode","og_image":[{"url":"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a1901f8a8e4e.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc":"4 ph\u00fat"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/plantuml-c4-model-syntax-guide\/","url":"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/plantuml-c4-model-syntax-guide\/","name":"PlantUML C4 Model Syntax | VPasCode Text to Diagram Guide","isPartOf":{"@id":"https:\/\/www.vpascode.com\/vn\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/plantuml-c4-model-syntax-guide\/#primaryimage"},"image":{"@id":"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/plantuml-c4-model-syntax-guide\/#primaryimage"},"thumbnailUrl":"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a1901f8a8e4e.png","datePublished":"2026-05-26T07:53:11+00:00","description":"Map software architecture hierarchies with PlantUML C4 diagrams in VPasCode, your free diagram-as-code tool.","breadcrumb":{"@id":"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/plantuml-c4-model-syntax-guide\/#breadcrumb"},"inLanguage":"vi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/plantuml-c4-model-syntax-guide\/"]}]},{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/plantuml-c4-model-syntax-guide\/#primaryimage","url":"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a1901f8a8e4e.png","contentUrl":"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a1901f8a8e4e.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/plantuml-c4-model-syntax-guide\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.vpascode.com\/vn\/"},{"@type":"ListItem","position":2,"name":"Lean Docs","item":"https:\/\/www.vpascode.com\/vn\/docs\/%ld_collection%\/"},{"@type":"ListItem","position":3,"name":"H\u01b0\u1edbng d\u1eabn c\u00fa ph\u00e1p m\u00f4 h\u00ecnh C4 c\u1ee7a PlantUML"}]},{"@type":"WebSite","@id":"https:\/\/www.vpascode.com\/vn\/#website","url":"https:\/\/www.vpascode.com\/vn\/","name":"VPasCode","description":"by Visual Paradigm","publisher":{"@id":"https:\/\/www.vpascode.com\/vn\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.vpascode.com\/vn\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"vi"},{"@type":"Organization","@id":"https:\/\/www.vpascode.com\/vn\/#organization","name":"VPasCode","url":"https:\/\/www.vpascode.com\/vn\/","logo":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/www.vpascode.com\/vn\/#\/schema\/logo\/image\/","url":"https:\/\/www.vpascode.com\/vn\/wp-content\/uploads\/sites\/12\/2026\/06\/cropped-vp-online-logo-v1.png","contentUrl":"https:\/\/www.vpascode.com\/vn\/wp-content\/uploads\/sites\/12\/2026\/06\/cropped-vp-online-logo-v1.png","width":128,"height":138,"caption":"VPasCode"},"image":{"@id":"https:\/\/www.vpascode.com\/vn\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.vpascode.com\/vn\/wp-json\/wp\/v2\/ld_docs\/2109","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vpascode.com\/vn\/wp-json\/wp\/v2\/ld_docs"}],"about":[{"href":"https:\/\/www.vpascode.com\/vn\/wp-json\/wp\/v2\/types\/ld_docs"}],"author":[{"embeddable":true,"href":"https:\/\/www.vpascode.com\/vn\/wp-json\/wp\/v2\/users\/4"}],"wp:attachment":[{"href":"https:\/\/www.vpascode.com\/vn\/wp-json\/wp\/v2\/media?parent=2109"}],"wp:term":[{"taxonomy":"ld_collection","embeddable":true,"href":"https:\/\/www.vpascode.com\/vn\/wp-json\/wp\/v2\/ld_collection?post=2109"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}