{"id":5962,"date":"2026-09-11T19:54:18","date_gmt":"2026-09-11T10:54:18","guid":{"rendered":"https:\/\/smilesoftware.org\/?p=5962"},"modified":"2026-09-14T12:55:51","modified_gmt":"2026-09-14T03:55:51","slug":"net%e7%a7%bb%e8%a1%8c%e3%81%a7%e9%81%93%e8%b7%af%e7%ae%a1%e7%90%86%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e3%81%ae%e4%bf%9d%e5%ae%88%e6%80%a7%e3%82%92%e9%ab%98%e3%82%81%e3%81%9f%e3%83%90%e3%83%83","status":"publish","type":"post","link":"https:\/\/smilesoftware.org\/vn\/road-management-dotnet-migration\/","title":{"rendered":"Case Study: Hi\u1ec7n \u0111\u1ea1i h\u00f3a Backend gi\u00fap n\u00e2ng cao t\u00ednh b\u1ea3o tr\u00ec cho H\u1ec7 th\u1ed1ng Qu\u1ea3n l\u00fd \u0110\u01b0\u1eddng b\u1ed9 v\u1edbi .NET"},"content":{"rendered":"<div class=\"wp-block-group smile-post-content\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\"><header class=\"smile-article-header\"><div><span class=\"smile-category-pill\">Project<\/span><span class=\"smile-date\">2026.09.09<\/span><\/div><h1 class=\"smile-article-title\">Case Study: Hi\u1ec7n \u0111\u1ea1i h\u00f3a Backend gi\u00fap n\u00e2ng cao t\u00ednh b\u1ea3o tr\u00ec cho H\u1ec7 th\u1ed1ng Qu\u1ea3n l\u00fd \u0110\u01b0\u1eddng b\u1ed9 v\u1edbi .NET<\/h1><p class=\"smile-excerpt\">\u0110\u1ed1i v\u1edbi h\u1ec7 th\u1ed1ng qu\u1ea3n l\u00fd \u0111\u01b0\u1eddng b\u1ed9 \u0111\u00e3 v\u1eadn h\u00e0nh trong nhi\u1ec1u n\u0103m, c\u00e1c v\u1ea5n \u0111\u1ec1 ch\u00ednh bao g\u1ed3m kh\u1ea3 n\u0103ng b\u1ea3o tr\u00ec suy gi\u1ea3m do ph\u1ee5 thu\u1ed9c v\u00e0o n\u1ec1n t\u1ea3ng h\u1ec7 th\u1ed1ng c\u0169, gi\u1edbi h\u1ea1n v\u1ec1 hi\u1ec7u n\u0103ng x\u1eed l\u00fd v\u00e0 h\u1ea1n ch\u1ebf trong kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng v\u1ec1 sau. Trong d\u1ef1 \u00e1n n\u00e0y, ch\u00fang t\u00f4i \u0111\u00e3 chuy\u1ec3n \u0111\u1ed5i backend\/API c\u1ed1t l\u00f5i c\u00f9ng logic nghi\u1ec7p v\u1ee5 sang ASP.NET Core (.NET 8), \u0111\u1ed3ng th\u1eddi v\u1eabn duy tr\u00ec \u0111\u1ea7y \u0111\u1ee7 t\u00ednh li\u00ean t\u1ee5c c\u1ee7a nghi\u1ec7p v\u1ee5 hi\u1ec7n h\u1eefu. Nh\u1edd \u0111\u00f3, h\u1ec7 th\u1ed1ng \u0111\u01b0\u1ee3c hi\u1ec7n \u0111\u1ea1i h\u00f3a th\u00e0nh m\u1ed9t n\u1ec1n t\u1ea3ng v\u1eefng ch\u1eafc, cho ph\u00e9p b\u1ea3o tr\u00ec v\u00e0 c\u1ea3i ti\u1ebfn nhanh ch\u00f3ng h\u01a1n.<\/p><\/header>\n\n\n<ul style=\"color:#475569;padding-top:var(--wp--preset--spacing--40);padding-bottom:0;font-size:17px\" class=\"wp-block-list smile-bullet-list has-text-color has-link-color wp-elements-dcc54571aa80ff3ecf4b0f6b0a754a4a\">\n<li class=\"ticss-df2dd703 has-text-color has-link-color wp-elements-23f583cc656a3cb513d70a2c65cb3e1b\" style=\"color:#475569;padding-top:0;padding-bottom:var(--wp--preset--spacing--20);font-size:17px\"><strong>L\u0129nh v\u1ef1c \u00e1p d\u1ee5ng:<\/strong> Back-end\/API c\u1ee7a h\u1ec7 th\u1ed1ng qu\u1ea3n l\u00fd \u0111\u01b0\u1eddng b\u1ed9, t\u1ea7ng li\u00ean k\u1ebft c\u01a1 s\u1edf d\u1eef li\u1ec7u v\u00e0 master d\u00f9ng chung<\/li>\n\n\n\n<li class=\"ticss-ba8f3a6f has-text-color has-link-color wp-elements-7ddda3a503e4e1d789344b467132f0c1\" style=\"color:#475569;padding-top:0;padding-bottom:var(--wp--preset--spacing--20);font-size:17px\"><strong>Ph\u1ea1m vi h\u1ed7 tr\u1ee3 c\u1ee7a SMILE:<\/strong> Ph\u00e2n t\u00edch c\u1ea5u tr\u00fac h\u1ec7 th\u1ed1ng hi\u1ec7n t\u1ea1i, chuy\u1ec3n \u0111\u1ed5i API v\u00e0 logic nghi\u1ec7p v\u1ee5, \u0111i\u1ec1u ch\u1ec9nh truy c\u1eadp c\u01a1 s\u1edf d\u1eef li\u1ec7u, di chuy\u1ec3n v\u00e0 ki\u1ec3m tra t\u00ednh nh\u1ea5t qu\u00e1n cho 54 master d\u00f9ng chung, c\u1ea3i thi\u1ec7n hi\u1ec7u n\u0103ng, h\u1ed7 tr\u1ee3 ph\u00e1t h\u00e0nh v\u00e0 chuy\u1ec3n \u0111\u1ed5i h\u1ec7 th\u1ed1ng<\/li>\n\n\n\n<li class=\"has-text-color has-link-color wp-elements-a9e07ef7b90473f3cd4ad68121171dd4\" style=\"color:#475569;padding-bottom:var(--wp--preset--spacing--20);font-size:17px\"><strong>Th\u1eddi gian th\u1ef1c hi\u1ec7n:<\/strong> 4 th\u00e1ng<\/li>\n\n\n\n<li class=\"has-text-color has-link-color wp-elements-db2e0042fab3a5989381204957398e54\" style=\"color:#475569;padding-bottom:var(--wp--preset--spacing--20);font-size:17px\"><strong>Quy m\u00f4 \u0111\u1ed9i ng\u0169:<\/strong> 6 th\u00e0nh vi\u00ean \/ 24 man-month<\/li>\n\n\n\n<li class=\"ticss-01214a90 has-text-color has-link-color wp-elements-dbdba52a7fa6a2494210b305bb918178\" style=\"color:#475569;padding-bottom:var(--wp--preset--spacing--20);font-size:17px\"><strong>Quy m\u00f4 tri\u1ec3n khai:<\/strong> 1 m\u1ea3ng backend\/API, li\u00ean k\u1ebft c\u01a1 s\u1edf d\u1eef li\u1ec7u v\u00e0 54 master d\u00f9ng chung<\/li>\n\n\n\n<li class=\"ticss-fd8363af has-text-color has-link-color wp-elements-0d31aaa2d08bbaa91ba20bdc2565a004\" style=\"color:#475569;padding-bottom:var(--wp--preset--spacing--20);font-size:17px\"><strong>K\u1ebft qu\u1ea3:<\/strong> Ho\u00e0n t\u1ea5t to\u00e0n b\u1ed9 qu\u00e1 tr\u00ecnh chuy\u1ec3n \u0111\u1ed5i c\u00e1c ch\u1ee9c n\u0103ng backend tr\u1ecdng y\u1ebfu v\u00e0 ki\u1ec3m th\u1eed h\u1ed3i quy tr\u01b0\u1edbc khi ph\u00e1t h\u00e0nh. H\u1ed7 tr\u1ee3 tri\u1ec3n khai ch\u00ednh th\u1ee9c m\u00e0 kh\u00f4ng l\u00e0m gi\u00e1n \u0111o\u1ea1n nghi\u1ec7p v\u1ee5, \u0111\u1ed3ng th\u1eddi b\u1ea3o \u0111\u1ea3m v\u1eadn h\u00e0nh \u1ed5n \u0111\u1ecbnh.<\/li>\n<\/ul>\n\n\n<nav class=\"smile-toc\" aria-label=\"M\u1ee5c l\u1ee5c\"><h2 class=\"smile-toc__title\">M\u1ee5c l\u1ee5c<\/h2><div class=\"smile-toc__grid\"><a class=\"smile-toc__item\" href=\"#section-01\"><b class=\"smile-toc__number\">01<\/b><span class=\"smile-toc__label\">Th\u00e1ch th\u1ee9c c\u1ee7a kh\u00e1ch h\u00e0ng<\/span><\/a><a class=\"smile-toc__item\" href=\"#section-02\"><b class=\"smile-toc__number\">02<\/b><span class=\"smile-toc__label\">M\u1ee5c ti\u00eau c\u1ee7a d\u1ef1 \u00e1n<\/span><\/a><a class=\"smile-toc__item\" href=\"#section-03\"><b class=\"smile-toc__number\">03<\/b><span class=\"smile-toc__label\">Ph\u1ea1m vi h\u1ed7 tr\u1ee3 c\u1ee7a SMILE<\/span><\/a><a class=\"smile-toc__item\" href=\"#section-04\"><b class=\"smile-toc__number\">04<\/b><span class=\"smile-toc__label\">C\u00e1c \u0111i\u1ec3m tr\u1ecdng t\u00e2m trong ph\u00e1t tri\u1ec3n v\u00e0 c\u1ea3i ti\u1ebfn<\/span><\/a><a class=\"smile-toc__item\" href=\"#section-05\"><b class=\"smile-toc__number\">05<\/b><span class=\"smile-toc__label\">C\u00f4ng ngh\u1ec7 s\u1eed d\u1ee5ng<\/span><\/a><a class=\"smile-toc__item\" href=\"#section-06\"><b class=\"smile-toc__number\">06<\/b><span class=\"smile-toc__label\">Nh\u1eefng th\u00e1ch th\u1ee9c k\u1ef9 thu\u1eadt v\u00e0 c\u00e1ch x\u1eed l\u00fd<\/span><\/a><a class=\"smile-toc__item\" href=\"#section-07\"><b class=\"smile-toc__number\">07<\/b><span class=\"smile-toc__label\">Hi\u1ec7u qu\u1ea3 tri\u1ec3n khai<\/span><\/a><a class=\"smile-toc__item\" href=\"#section-08\"><b class=\"smile-toc__number\">08<\/b><span class=\"smile-toc__label\">Nh\u1eefng \u0111i\u1ec3m ch\u00ednh trong m\u00f4 h\u00ecnh ph\u00e1t tri\u1ec3n offshore<\/span><\/a><a class=\"smile-toc__item\" href=\"#section-09\"><b class=\"smile-toc__number\">09<\/b><span class=\"smile-toc__label\">K\u1ebft lu\u1eadn<\/span><\/a><\/div><\/nav>\n\n\n<div id=\"section-01\" class=\"wp-block-group smile-section\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\"><div class=\"smile-section__head\"><div class=\"smile-section__number\">01<\/div><h2 class=\"smile-section__title\">Th\u00e1ch th\u1ee9c c\u1ee7a kh\u00e1ch h\u00e0ng<\/h2><\/div>\n\n\n<p class=\"ticss-a71bc1b2 wp-block-paragraph\">H\u1ec7 th\u1ed1ng qu\u1ea3n l\u00fd \u0111\u01b0\u1eddng b\u1ed9 hi\u1ec7n h\u1eefu \u0111\u00e3 v\u1eadn h\u00e0nh \u1ed5n \u0111\u1ecbnh trong th\u1eddi gian d\u00e0i, nh\u01b0ng \u0111\u01b0\u1ee3c x\u00e2y d\u1ef1ng theo ki\u1ebfn tr\u00fac monolithic d\u1ef1a tr\u00ean ASP.NET Web Forms c\u0169, trong \u0111\u00f3 logic nghi\u1ec7p v\u1ee5 v\u00e0 giao di\u1ec7n hi\u1ec3n th\u1ecb b\u1ecb li\u00ean k\u1ebft ch\u1eb7t ch\u1ebd. V\u00ec v\u1eady, vi\u1ec7c x\u00e1c \u0111\u1ecbnh ph\u1ea1m vi \u1ea3nh h\u01b0\u1edfng khi c\u1ea3i ti\u1ebfn ch\u1ee9c n\u0103ng ho\u1eb7c \u0111i\u1ec1u tra l\u1ed7i tr\u1edf n\u00ean kh\u00f3 kh\u0103n, g\u00e2y c\u1ea3n tr\u1edf l\u1edbn cho vi\u1ec7c b\u1ed5 sung t\u00ednh n\u0103ng nhanh ch\u00f3ng v\u00e0 c\u1ea3i thi\u1ec7n hi\u1ec7u n\u0103ng khi c\u00f3 thay \u0111\u1ed5i v\u1ec1 ph\u00e1p lu\u1eadt ho\u1eb7c quy tr\u00ecnh v\u1eadn h\u00e0nh.<\/p>\n\n\n\n<p class=\"ticss-3ebcbfd1 wp-block-paragraph\">B\u00ean c\u1ea1nh \u0111\u00f3, 54 master d\u00f9ng chung v\u00e0 API \u0111\u01b0\u1ee3c nhi\u1ec1u ph\u00e2n h\u1ec7 c\u00f9ng tham chi\u1ebfu, khi\u1ebfn b\u1ea5t k\u1ef3 thay \u0111\u1ed5i c\u1ee5c b\u1ed9 n\u00e0o c\u0169ng ti\u1ec1m \u1ea9n nguy c\u01a1 lan sang c\u00e1c ch\u1ee9c n\u0103ng ngo\u00e0i d\u1ef1 ki\u1ebfn. \u0110\u1ec3 b\u1ea3o \u0111\u1ea3m v\u1eadn h\u00e0nh \u1ed5n \u0111\u1ecbnh trong t\u01b0\u01a1ng lai v\u00e0 th\u00fac \u0111\u1ea9y DX, y\u00eau c\u1ea7u c\u1ea5p thi\u1ebft \u0111\u1eb7t ra l\u00e0 ph\u1ea3i t\u1eebng b\u01b0\u1edbc chuy\u1ec3n \u0111\u1ed5i sang m\u1ed9t n\u1ec1n t\u1ea3ng backend hi\u1ec7n \u0111\u1ea1i, d\u1ec5 b\u1ea3o tr\u00ec, m\u00e0 kh\u00f4ng l\u00e0m gi\u00e1n \u0111o\u1ea1n b\u1ea5t k\u1ef3 ho\u1ea1t \u0111\u1ed9ng qu\u1ea3n l\u00fd \u0111\u01b0\u1eddng b\u1ed9 hi\u1ec7n h\u1eefu n\u00e0o.<\/p>\n<\/div><\/div>\n\n\n\n<div id=\"section-02\" class=\"wp-block-group smile-section\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\"><div class=\"smile-section__head\"><div class=\"smile-section__number\">02<\/div><h2 class=\"smile-section__title\">M\u1ee5c ti\u00eau c\u1ee7a d\u1ef1 \u00e1n<\/h2><\/div>\n\n\n<p class=\"ticss-50aadf66 wp-block-paragraph\">M\u1ee5c ti\u00eau ch\u00ednh c\u1ee7a d\u1ef1 \u00e1n l\u00e0 duy tr\u00ec li\u00ean t\u1ee5c c\u00e1c nghi\u1ec7p v\u1ee5 qu\u1ea3n l\u00fd \u0111\u01b0\u1eddng b\u1ed9 h\u1eb1ng ng\u00e0y, \u0111\u1ed3ng th\u1eddi chuy\u1ec3n \u0111\u1ed5i backend\/API c\u1ed1t l\u00f5i sang n\u1ec1n t\u1ea3ng .NET 8 m\u1edbi nh\u1ea5t thu\u1ed9c di\u1ec7n h\u1ed7 tr\u1ee3 d\u00e0i h\u1ea1n (LTS), qua \u0111\u00f3 b\u1ea3o \u0111\u1ea3m kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng v\u00e0 b\u1ea3o tr\u00ec l\u00e2u d\u00e0i trong t\u01b0\u01a1ng lai.<\/p>\n\n\n\n<p class=\"ticss-38f0fd69 wp-block-paragraph\">M\u1ee5c ti\u00eau kh\u00f4ng ch\u1ec9 d\u1eebng l\u1ea1i \u1edf vi\u1ec7c thay th\u1ebf ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh hay framework, m\u00e0 l\u00e0 hi\u1ec7n th\u1ef1c h\u00f3a m\u1ed9t qu\u00e1 tr\u00ecnh hi\u1ec7n \u0111\u1ea1i h\u00f3a an to\u00e0n v\u00e0 ch\u1eafc ch\u1eafn, trong \u0111\u00f3 v\u1eabn b\u1ea3o \u0111\u1ea3m \u0111\u1ea7y \u0111\u1ee7 c\u00e1c logic nghi\u1ec7p v\u1ee5 ph\u1ee9c t\u1ea1p \u0111\u00e3 \u0111\u01b0\u1ee3c t\u00edch l\u0169y qua nhi\u1ec1u n\u0103m, t\u00ednh nh\u1ea5t qu\u00e1n c\u1ee7a d\u1eef li\u1ec7u master v\u00e0 c\u00e1c \u0111\u1eb7c t\u1ea3 li\u00ean k\u1ebft v\u1edbi front-end.<\/p>\n<\/div><\/div>\n\n\n\n<div id=\"section-03\" class=\"wp-block-group smile-section\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\"><div class=\"smile-section__head\"><div class=\"smile-section__number\">03<\/div><h2 class=\"smile-section__title\">Ph\u1ea1m vi h\u1ed7 tr\u1ee3 c\u1ee7a SMILE<\/h2><\/div>\n\n\n<p class=\"ticss-0e9d2f9f wp-block-paragraph\">SMILE \u0111\u1ea3m nh\u1eadn to\u00e0n b\u1ed9 quy tr\u00ecnh, t\u1eeb ph\u00e2n t\u00edch m\u00e3 ngu\u1ed3n c\u1ee7a h\u1ec7 th\u1ed1ng hi\u1ec7n h\u1eefu, tri\u1ec3n khai chuy\u1ec3n \u0111\u1ed5i sang ki\u1ebfn tr\u00fac m\u1edbi, ki\u1ec3m \u0111\u1ecbnh ch\u1ea5t l\u01b0\u1ee3ng cho \u0111\u1ebfn h\u1ed7 tr\u1ee3 ph\u00e1t h\u00e0nh ch\u00ednh th\u1ee9c. Ph\u1ea1m vi c\u00f4ng vi\u1ec7c ch\u00ednh bao g\u1ed3m:<\/p>\n\n\n\n<ul style=\"font-size:16px\" class=\"wp-block-list smile-bullet-list\">\n<li class=\"ticss-8f427d43\" style=\"padding-bottom:var(--wp--preset--spacing--20);font-size:16px\">Ph\u00e2n t\u00edch c\u1ea5u tr\u00fac v\u00e0 reverse engineering h\u1ec7 th\u1ed1ng ASP.NET Web Forms hi\u1ec7n h\u1eefu<\/li>\n\n\n\n<li style=\"padding-bottom:var(--wp--preset--spacing--20);font-size:16px\">Di chuy\u1ec3n v\u00e0 t\u00e1i thi\u1ebft k\u1ebf API backend c\u00f9ng logic nghi\u1ec7p v\u1ee5 c\u1ed1t l\u00f5i sang ASP.NET Core (.NET 8)<\/li>\n\n\n\n<li style=\"padding-bottom:var(--wp--preset--spacing--20);font-size:16px\">T\u1ed1i \u01b0u h\u00f3a t\u1ea7ng truy c\u1eadp d\u1eef li\u1ec7u v\u00e0 logic x\u1eed l\u00fd ph\u00f9 h\u1ee3p v\u1edbi c\u1ea5u tr\u00fac c\u01a1 s\u1edf d\u1eef li\u1ec7u hi\u1ec7n h\u1eefu<\/li>\n\n\n\n<li style=\"padding-bottom:var(--wp--preset--spacing--20);font-size:16px\">Di chuy\u1ec3n d\u1eef li\u1ec7u, x\u1eed l\u00fd CRUD v\u00e0 ki\u1ec3m tra t\u00ednh nh\u1ea5t qu\u00e1n cho 54 master d\u00f9ng chung<\/li>\n\n\n\n<li style=\"padding-bottom:var(--wp--preset--spacing--20);font-size:16px\">Ki\u1ec3m tra t\u00ednh nh\u1ea5t qu\u00e1n c\u1ee7a giao di\u1ec7n API v\u1edbi frontend web d\u1ef1a tr\u00ean React 18<\/li>\n\n\n\n<li style=\"padding-bottom:var(--wp--preset--spacing--20);font-size:16px\">T\u00e1i c\u1ea5u tr\u00fac ki\u1ebfn tr\u00fac c\u00f3 t\u00ednh \u0111\u1ebfn vi\u1ec7c ph\u00e2n t\u00e1ch tr\u00e1ch nhi\u1ec7m v\u1edbi m\u00f4-\u0111un t\u00edch h\u1ee3p ArcGIS (h\u1ec7 th\u1ed1ng th\u00f4ng tin \u0111\u1ecba l\u00fd)<\/li>\n\n\n\n<li style=\"padding-bottom:var(--wp--preset--spacing--20);font-size:16px\">Th\u1ef1c hi\u1ec7n to\u00e0n di\u1ec7n ki\u1ec3m th\u1eed h\u1ed3i quy, tinh ch\u1ec9nh hi\u1ec7u n\u0103ng v\u00e0 h\u1ed7 tr\u1ee3 ph\u00e1t h\u00e0nh l\u00ean m\u00f4i tr\u01b0\u1eddng production<\/li>\n<\/ul>\n<\/div><\/div>\n\n\n\n<div id=\"section-04\" class=\"wp-block-group smile-section\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\"><div class=\"smile-section__head\"><div class=\"smile-section__number\">04<\/div><h2 class=\"smile-section__title\">C\u00e1c \u0111i\u1ec3m tr\u1ecdng t\u00e2m trong ph\u00e1t tri\u1ec3n v\u00e0 c\u1ea3i ti\u1ebfn<\/h2><\/div>\n\n\n<p class=\"ticss-d2e7ee40 wp-block-paragraph\">Do \u0111\u00e2y l\u00e0 m\u1ed9t h\u1ec7 th\u1ed1ng nghi\u1ec7p v\u1ee5 quy m\u00f4 l\u1edbn, ch\u00fang t\u00f4i tr\u00e1nh r\u1ee7i ro t\u1eeb vi\u1ec7c thay m\u1edbi to\u00e0n di\u1ec7n c\u00f9ng l\u00fac theo m\u00f4 h\u00ecnh Big Bang, thay v\u00e0o \u0111\u00f3 th\u00fac \u0111\u1ea9y chuy\u1ec3n \u0111\u1ed5i theo t\u1eebng giai \u0111o\u1ea1n b\u1eb1ng c\u00e1ch tr\u1ef1c quan h\u00f3a ph\u1ea1m vi \u1ea3nh h\u01b0\u1edfng theo t\u1eebng ch\u1ee9c n\u0103ng v\u00e0 t\u1eebng API. T\u1eeb m\u00e3 ngu\u1ed3n legacy, \u0111\u1ed9i ng\u0169 \u0111\u00e3 c\u1ea9n tr\u1ecdng ph\u00e2n t\u00edch c\u00e1c \u0111\u1eb7c t\u1ea3 ng\u1ea7m ch\u01b0a \u0111\u01b0\u1ee3c t\u00e0i li\u1ec7u h\u00f3a v\u00e0 chuy\u1ec3n \u0111\u1ed5i ch\u00ednh x\u00e1c sang n\u1ec1n t\u1ea3ng m\u1edbi.<\/p>\n\n\n\n<p class=\"ticss-e604f709 wp-block-paragraph\">\u0110\u1eb7c bi\u1ec7t, \u0111\u1ed1i v\u1edbi 54 master d\u1eef li\u1ec7u d\u00f9ng chung \u0111\u00f3ng vai tr\u00f2 n\u1ec1n t\u1ea3ng cho to\u00e0n b\u1ed9 h\u1ec7 th\u1ed1ng, ch\u00fang t\u00f4i \u0111\u00e3 r\u00e0 so\u00e1t chi ti\u1ebft m\u1ed1i quan h\u1ec7 tham chi\u1ebfu t\u1eeb t\u1eebng m\u00e0n h\u00ecnh v\u00e0 c\u00e1c x\u1eed l\u00fd b\u00ean ngo\u00e0i. Kh\u00f4ng ch\u1ec9 d\u1eebng l\u1ea1i \u1edf vi\u1ec7c truy\u1ec1n nh\u1eadn d\u1eef li\u1ec7u, ch\u00fang t\u00f4i c\u00f2n chu\u1ea9n h\u00f3a c\u01a1 ch\u1ebf ki\u1ec3m tra d\u1eef li\u1ec7u \u0111\u1ea7u v\u00e0o v\u00e0 x\u1eed l\u00fd l\u1ed7i, qua \u0111\u00f3 duy tr\u00ec kh\u1ea3 n\u0103ng t\u01b0\u01a1ng th\u00edch v\u1edbi h\u1ec7 th\u1ed1ng hi\u1ec7n h\u1eefu \u0111\u1ed3ng th\u1eddi n\u00e2ng c\u1ea5p ki\u1ebfn tr\u00fac \u0111\u1ec3 c\u1ea3i thi\u1ec7n \u0111\u00e1ng k\u1ec3 hi\u1ec7u su\u1ea5t ph\u00e1t tri\u1ec3n trong t\u01b0\u01a1ng lai.<\/p>\n\n\n\n<p class=\"ticss-a3f7d551 wp-block-paragraph\">\u0110\u1ed1i v\u1edbi vi\u1ec7c t\u00edch h\u1ee3p v\u1edbi frontend web responsive \u0111\u01b0\u1ee3c x\u00e2y d\u1ef1ng b\u1eb1ng React 18, SMILE c\u0169ng ki\u1ec3m tra k\u1ef9 l\u01b0\u1ee1ng t\u00ednh nh\u1ea5t qu\u00e1n c\u1ee7a \u0111\u1ecbnh d\u1ea1ng ph\u1ea3n h\u1ed3i API v\u00e0 giao th\u1ee9c truy\u1ec1n th\u00f4ng. Th\u00f4ng qua vi\u1ec7c l\u1eb7p l\u1ea1i ki\u1ec3m th\u1eed h\u1ed3i quy, SMILE \u0111\u00e3 ho\u00e0n t\u1ea5t qu\u00e1 tr\u00ecnh hi\u1ec7n \u0111\u1ea1i h\u00f3a backend m\u00e0 kh\u00f4ng l\u00e0m suy gi\u1ea3m tr\u1ea3i nghi\u1ec7m thao t\u00e1c tr\u00ean UI.<\/p>\n<\/div><\/div>\n\n\n\n<div id=\"section-05\" class=\"wp-block-group smile-section\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\"><div class=\"smile-section__head\"><div class=\"smile-section__number\">05<\/div><h2 class=\"smile-section__title\">C\u00f4ng ngh\u1ec7 s\u1eed d\u1ee5ng<\/h2><\/div>\n\n<div class=\"smile-evidence-panels\"><article class=\"smile-evidence-panel\"><div class=\"smile-evidence-panel__mark\"><span class=\"smile-evidence-panel__icon\" aria-hidden=\"true\"><svg class=\"smile-ui-icon smile-ui-icon--benefit\" viewbox=\"0 0 64 64\" aria-hidden=\"true\" focusable=\"false\" stroke=\"currentColor\"><path d=\"M12 50h40\"\/><path d=\"M18 42V30\"\/><path d=\"M30 42V22\"\/><path d=\"M42 42V14\"\/><path d=\"m38 18 4-4 4 4\"\/><\/svg><\/span><\/div><div class=\"smile-evidence-panel__body\"><h3 class=\"smile-evidence-panel__title\">T\u00edch h\u1ee3p frontend<\/h3><p>React 18 (web responsive). B\u1ea3o \u0111\u1ea3m kh\u1ea3 n\u0103ng t\u01b0\u01a1ng th\u00edch trong x\u1eed l\u00fd y\u00eau c\u1ea7u API t\u1eeb giao di\u1ec7n, x\u00e1c th\u1ef1c d\u1eef li\u1ec7u \u0111\u1ea7u v\u00e0o v\u00e0 trao \u0111\u1ed5i d\u1eef li\u1ec7u.<\/p><\/div><\/article><article class=\"smile-evidence-panel\"><div class=\"smile-evidence-panel__mark\"><span class=\"smile-evidence-panel__icon\" aria-hidden=\"true\"><svg class=\"smile-ui-icon smile-ui-icon--operations\" viewbox=\"0 0 64 64\" aria-hidden=\"true\" focusable=\"false\" stroke=\"currentColor\"><circle cx=\"32\" cy=\"32\" r=\"9\"\/><path d=\"M32 8v8\"\/><path d=\"M32 48v8\"\/><path d=\"m15 15 6 6\"\/><path d=\"m43 43 6 6\"\/><path d=\"M8 32h8\"\/><path d=\"M48 32h8\"\/><path d=\"m15 49 6-6\"\/><path d=\"m43 21 6-6\"\/><\/svg><\/span><\/div><div class=\"smile-evidence-panel__body\"><h3 class=\"smile-evidence-panel__title\">Backend<\/h3><p>C# \/ ASP.NET Core (.NET 8). Di chuy\u1ec3n logic nghi\u1ec7p v\u1ee5 c\u1ed1t l\u00f5i v\u00e0 Web API, \u0111\u1ed3ng th\u1eddi \u00e1p d\u1ee5ng t\u01b0 duy Clean Architecture \u0111\u1ec3 n\u00e2ng cao kh\u1ea3 n\u0103ng b\u1ea3o tr\u00ec v\u00e0 d\u1ec5 d\u00e0ng ki\u1ec3m th\u1eed.<\/p><\/div><\/article><article class=\"smile-evidence-panel\"><div class=\"smile-evidence-panel__mark\"><span class=\"smile-evidence-panel__icon\" aria-hidden=\"true\"><svg class=\"smile-ui-icon smile-ui-icon--data\" viewbox=\"0 0 64 64\" aria-hidden=\"true\" focusable=\"false\" stroke=\"currentColor\"><path d=\"M12 18c0-5 9-9 20-9s20 4 20 9-9 9-20 9-20-4-20-9z\"\/><path d=\"M12 18v14c0 5 9 9 20 9s20-4 20-9V18\"\/><path d=\"M12 32v14c0 5 9 9 20 9s20-4 20-9V32\"\/><\/svg><\/span><\/div><div class=\"smile-evidence-panel__body\"><h3 class=\"smile-evidence-panel__title\">C\u01a1 s\u1edf d\u1eef li\u1ec7u<\/h3><p>Ti\u1ebfp t\u1ee5c s\u1eed d\u1ee5ng c\u01a1 s\u1edf d\u1eef li\u1ec7u hi\u1ec7n c\u00f3 (RDBMS). T\u1ed1i \u01b0u h\u00f3a quy tr\u00ecnh k\u1ebft n\u1ed1i v\u00e0 th\u1ef1c thi truy v\u1ea5n, \u0111\u1ed3ng th\u1eddi b\u1ea3o \u0111\u1ea3m t\u00ednh nh\u1ea5t qu\u00e1n v\u1edbi c\u00e1c t\u00e0i s\u1ea3n d\u1eef li\u1ec7u hi\u1ec7n c\u00f3.<\/p><\/div><\/article><article class=\"smile-evidence-panel\"><div class=\"smile-evidence-panel__mark\"><span class=\"smile-evidence-panel__icon\" aria-hidden=\"true\"><svg class=\"smile-ui-icon smile-ui-icon--climate\" viewbox=\"0 0 64 64\" aria-hidden=\"true\" focusable=\"false\" stroke=\"currentColor\"><path d=\"M18 42c-7 0-12-5-12-11s5-11 12-11c3-8 14-11 22-5 4 3 6 7 6 12 6 1 10 5 10 10 0 6-5 10-11 10H18z\"\/><path d=\"M22 50c4 4 10 4 14 0\"\/><path d=\"M40 50c3 3 8 3 11 0\"\/><\/svg><\/span><\/div><div class=\"smile-evidence-panel__body\"><h3 class=\"smile-evidence-panel__title\">H\u1ea1 t\u1ea7ng v\u00e0 m\u00f4i tr\u01b0\u1eddng v\u1eadn h\u00e0nh<\/h3><p>On-premises \/ m\u00f4i tr\u01b0\u1eddng m\u00e1y ch\u1ee7 hi\u1ec7n h\u1eefu c\u1ee7a kh\u00e1ch h\u00e0ng. C\u1ea5u h\u00ecnh \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf \u0111\u1ec3 \u0111\u00e1p \u1ee9ng c\u00e1c y\u00eau c\u1ea7u b\u1ea3o m\u1eadt v\u00e0 \u0111i\u1ec1u ki\u1ec7n k\u1ebft n\u1ed1i m\u1ea1ng hi\u1ec7n c\u00f3.<\/p><\/div><\/article><article class=\"smile-evidence-panel\"><div class=\"smile-evidence-panel__mark\"><span class=\"smile-evidence-panel__icon\" aria-hidden=\"true\"><svg class=\"smile-ui-icon smile-ui-icon--methods\" viewbox=\"0 0 64 64\" aria-hidden=\"true\" focusable=\"false\" stroke=\"currentColor\"><circle cx=\"16\" cy=\"32\" r=\"5\"\/><circle cx=\"48\" cy=\"18\" r=\"5\"\/><circle cx=\"48\" cy=\"46\" r=\"5\"\/><path d=\"M21 32h10\"\/><path d=\"M31 32 43 20\"\/><path d=\"M31 32 43 44\"\/><\/svg><\/span><\/div><div class=\"smile-evidence-panel__body\"><h3 class=\"smile-evidence-panel__title\">C\u00f4ng ngh\u1ec7 v\u00e0 ph\u01b0\u01a1ng ph\u00e1p ch\u00ednh<\/h3><p>Chuy\u1ec3n \u0111\u1ed5i h\u1ec7 th\u1ed1ng legacy (hi\u1ec7n \u0111\u1ea1i h\u00f3a ASP.NET Web Forms) \/ Hi\u1ec7n \u0111\u1ea1i h\u00f3a API \/ Ki\u1ec3m th\u1eed h\u1ed3i quy \/ T\u1ed1i \u01b0u hi\u1ec7u n\u0103ng \/ T\u00e1ch bi\u1ec7t ki\u1ebfn tr\u00fac (gi\u1ea3m ph\u1ee5 thu\u1ed9c ch\u1eb7t trong t\u00edch h\u1ee3p ArcGIS)<\/p><\/div><\/article><\/div><\/div><\/div>\n\n\n\n<div id=\"section-06\" class=\"wp-block-group smile-section\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\"><div class=\"smile-section__head\"><div class=\"smile-section__number\">06<\/div><h2 class=\"smile-section__title\">Nh\u1eefng th\u00e1ch th\u1ee9c k\u1ef9 thu\u1eadt v\u00e0 c\u00e1ch x\u1eed l\u00fd<\/h2><\/div>\n\n\n<p class=\"ticss-6b38ee4f wp-block-paragraph\">Tr\u1ecdng t\u00e2m l\u00e0 b\u00f3c t\u00e1ch c\u00e1c th\u00f4ng s\u1ed1 k\u1ef9 thu\u1eadt v\u00e0 t\u00e1i c\u1ea5u tr\u00fac th\u00e0nh m\u1ed9t ki\u1ebfn tr\u00fac hi\u1ec7n \u0111\u1ea1i, c\u00f3 m\u1ee9c \u0111\u1ed9 li\u00ean k\u1ebft th\u1ea5p. \u0110\u1eb7c bi\u1ec7t, 54 master d\u00f9ng chung v\u00e0 quy tr\u00ecnh x\u1eed l\u00fd d\u1eef li\u1ec7u kh\u00f4ng gian \u0111\u1ecba l\u00fd li\u00ean quan \u0111\u1ebfn ArcGIS c\u00f3 s\u1ef1 ph\u1ee5 thu\u1ed9c ph\u1ee9c t\u1ea1p, n\u00ean ngay c\u1ea3 nh\u1eefng ch\u1ec9nh s\u1eeda nh\u1ecf c\u0169ng ti\u1ec1m \u1ea9n nguy c\u01a1 g\u00e2y suy gi\u1ea3m ch\u1ea5t l\u01b0\u1ee3ng tr\u00ean ph\u1ea1m vi r\u1ed9ng.<\/p>\n\n\n\n<p class=\"ticss-63935d2c wp-block-paragraph\">Tr\u01b0\u1edbc th\u00e1ch th\u1ee9c \u0111\u00f3, ngay t\u1eeb giai \u0111o\u1ea1n \u0111\u1ea7u c\u1ee7a qu\u00e1 tr\u00ecnh chuy\u1ec3n \u0111\u1ed5i, SMILE \u0111\u00e3 x\u00e2y d\u1ef1ng \u201cma tr\u1eadn ph\u1ee5 thu\u1ed9c ch\u1ee9c n\u0103ng\u201d \u0111\u1ec3 l\u01b0\u1ee3ng h\u00f3a v\u00e0 tr\u1ef1c quan h\u00f3a m\u1ee9c \u0111\u1ed9 li\u00ean k\u1ebft gi\u1eefa API v\u00e0 c\u00e1c master d\u00f9ng chung. Tr\u00ean c\u01a1 s\u1edf \u0111\u00f3, SMILE t\u00e1ch b\u1ea1ch r\u00f5 r\u00e0ng tr\u00e1ch nhi\u1ec7m gi\u1eefa ph\u1ea7n x\u1eed l\u00fd b\u1ea3n \u0111\u1ed3 ph\u1ee5 thu\u1ed9c v\u00e0o ArcGIS v\u00e0 logic qu\u1ea3n l\u00fd nghi\u1ec7p v\u1ee5, s\u1ed5 b\u1ed9 \u0111\u01b0\u1eddng b\u1ed9 th\u00f4ng th\u01b0\u1eddng, qua \u0111\u00f3 gi\u1ea3m m\u1ee9c \u0111\u1ed9 ph\u1ee5 thu\u1ed9c gi\u1eefa c\u00e1c th\u00e0nh ph\u1ea7n. \u0110\u1ed3ng th\u1eddi, v\u1edbi t\u1eebng h\u1ea1ng m\u1ee5c chuy\u1ec3n \u0111\u1ed5i, SMILE \u00e1p d\u1ee5ng nghi\u00eam ng\u1eb7t chu tr\u00ecnh ki\u1ec3m \u0111\u1ecbnh \u201cki\u1ec3m th\u1eed \u0111\u01a1n v\u1ecb \u2192 ki\u1ec3m th\u1eed t\u00edch h\u1ee3p API \u2192 ki\u1ec3m th\u1eed h\u1ed3i quy\u201d, gi\u00fap lo\u1ea1i b\u1ecf s\u1edbm c\u00e1c l\u1ed7i ti\u1ec1m \u1ea9n m\u00e0 kh\u00f4ng \u1ea3nh h\u01b0\u1edfng \u0111\u1ebfn ho\u1ea1t \u0111\u1ed9ng nghi\u1ec7p v\u1ee5 hi\u1ec7n h\u1eefu.<\/p>\n\n\n\n<p class=\"ticss-7a004884 wp-block-paragraph\">Ngo\u00e0i ra, b\u1eb1ng c\u00e1ch r\u00e0 so\u00e1t l\u1ea1i quy tr\u00ecnh truy c\u1eadp d\u1eef li\u1ec7u v\u00e0 t\u1ed1i \u01b0u h\u00f3a x\u1eed l\u00fd b\u1ea5t \u0111\u1ed3ng b\u1ed9 (async\/await), SMILE \u0111\u00e3 lo\u1ea1i b\u1ecf c\u00e1c nguy\u00ean nh\u00e2n g\u00e2y ch\u1eadm ph\u1ea3n h\u1ed3i API, \u0111\u1ed3ng th\u1eddi c\u1ea3i thi\u1ec7n hi\u1ec7u n\u0103ng x\u1eed l\u00fd c\u1ee7a to\u00e0n h\u1ec7 th\u1ed1ng.<\/p>\n<\/div><\/div>\n\n\n\n<div id=\"section-07\" class=\"wp-block-group smile-section\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\"><div class=\"smile-section__head\"><div class=\"smile-section__number\">07<\/div><h2 class=\"smile-section__title\">Hi\u1ec7u qu\u1ea3 tri\u1ec3n khai<\/h2><\/div>\n\n\n<p class=\"ticss-7f54c8de wp-block-paragraph\">Vi\u1ec7c chuy\u1ec3n \u0111\u1ed5i sang n\u1ec1n t\u1ea3ng ASP.NET Core (.NET 8) m\u1edbi nh\u1ea5t \u0111\u00e3 lo\u1ea1i b\u1ecf t\u00ecnh tr\u1ea1ng \u201ch\u1ed9p \u0111en\u201d c\u1ee7a n\u1ec1n t\u1ea3ng c\u0169 (Web Forms), \u0111\u1ed3ng th\u1eddi n\u00e2ng cao \u0111\u00e1ng k\u1ec3 kh\u1ea3 n\u0103ng b\u1ea3o tr\u00ec v\u00e0 m\u1edf r\u1ed9ng c\u1ee7a h\u1ec7 th\u1ed1ng qu\u1ea3n l\u00fd \u0111\u01b0\u1eddng b\u1ed9.<\/p>\n\n\n\n<p class=\"ticss-2116347a wp-block-paragraph\">Nh\u1edd th\u1ef1c hi\u1ec7n ki\u1ec3m th\u1eed h\u1ed3i quy k\u1ef9 l\u01b0\u1ee1ng v\u00e0 chuy\u1ec3n \u0111\u1ed5i theo t\u1eebng giai \u0111o\u1ea1n, d\u1ef1 \u00e1n \u0111\u00e3 ho\u00e0n t\u1ea5t qu\u00e1 tr\u00ecnh migration m\u00e0 kh\u00f4ng g\u00e2y \u1ea3nh h\u01b0\u1edfng \u0111\u1ebfn nghi\u1ec7p v\u1ee5 hi\u1ec7n h\u1eefu, kh\u00f4ng ph\u00e1t sinh degrade. \u0110i\u1ec1u n\u00e0y gi\u00fap lo\u1ea1i b\u1ecf c\u00e1c v\u1ea5n \u0111\u1ec1 k\u00e9o d\u00e0i nhi\u1ec1u n\u0103m nh\u01b0 h\u1ec7 th\u1ed1ng l\u1ed7i th\u1eddi v\u00e0 r\u1ee7i ro h\u1ebft h\u1ed7 tr\u1ee3, \u0111\u1ed3ng th\u1eddi x\u00e2y d\u1ef1ng \u0111\u01b0\u1ee3c m\u1ed9t n\u1ec1n t\u1ea3ng ph\u00e1t tri\u1ec3n b\u1ec1n v\u1eefng, cho ph\u00e9p b\u1ed5 sung ch\u1ee9c n\u0103ng m\u1edbi ho\u1eb7c \u0111\u00e1p \u1ee9ng thay \u0111\u1ed5i ph\u00e1p lu\u1eadt nhanh ch\u00f3ng v\u1edbi chi ph\u00ed th\u1ea5p.<\/p>\n<\/div><\/div>\n\n\n\n<div id=\"section-08\" class=\"wp-block-group smile-section\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\"><div class=\"smile-section__head\"><div class=\"smile-section__number\">08<\/div><h2 class=\"smile-section__title\">Nh\u1eefng \u0111i\u1ec3m ch\u00ednh trong m\u00f4 h\u00ecnh ph\u00e1t tri\u1ec3n offshore<\/h2><\/div>\n\n\n<p class=\"ticss-af8b336e wp-block-paragraph\">\u0110\u1ea7u m\u1ed1i y\u00eau c\u1ea7u v\u00e0 \u0111\u1eb7c t\u1ea3 ph\u00eda Nh\u1eadt B\u1ea3n ph\u1ed1i h\u1ee3p ch\u1eb7t ch\u1ebd v\u1edbi \u0111\u1ed9i ng\u0169 ph\u00e1t tri\u1ec3n t\u1ea1i Vi\u1ec7t Nam \u0111\u1ec3 tri\u1ec3n khai d\u1ef1 \u00e1n tr\u00ean n\u1ec1n t\u1ea3ng thi\u1ebft k\u1ebf giao ti\u1ebfp chi ti\u1ebft. Tr\u01b0\u1edbc nh\u1eefng kh\u00f3 kh\u0103n \u0111\u1eb7c th\u00f9 c\u1ee7a vi\u1ec7c chuy\u1ec3n \u0111\u1ed5i h\u1ec7 th\u1ed1ng legacy khi thi\u1ebfu t\u00e0i li\u1ec7u thi\u1ebft k\u1ebf tr\u01b0\u1edbc \u0111\u00e2y, Bridge SE (BrSE) \u0111\u1ea3m nhi\u1ec7m vai tr\u00f2 k\u1ebft n\u1ed1i gi\u1eefa y\u00eau c\u1ea7u nghi\u1ec7p v\u1ee5 v\u00e0 k\u1ebft qu\u1ea3 ph\u00e2n t\u00edch m\u00e3 ngu\u1ed3n. C\u00e1c n\u1ed9i dung c\u1ea7n x\u00e1c nh\u1eadn v\u00e0 y\u1ebfu t\u1ed1 r\u1ee7i ro \u0111\u01b0\u1ee3c nhanh ch\u00f3ng tr\u1ef1c quan h\u00f3a d\u01b0\u1edbi d\u1ea1ng \u201cQ&amp;A sheet\u201d v\u00e0 \u201cdanh s\u00e1ch ph\u1ea1m vi \u1ea3nh h\u01b0\u1edfng\u201d.<\/p>\n\n\n\n<p class=\"ticss-d02fdb69 wp-block-paragraph\">\u0110\u1ec3 tr\u00e1nh kh\u00e1c bi\u1ec7t trong c\u00e1ch hi\u1ec3u y\u00eau c\u1ea7u k\u1ef9 thu\u1eadt, ch\u00fang t\u00f4i chu\u1ea9n h\u00f3a \u0111\u1ea7y \u0111\u1ee7 t\u00e0i li\u1ec7u k\u1ef9 thu\u1eadt song ng\u1eef Nh\u1eadt - Vi\u1ec7t, \u0111\u1ed3ng th\u1eddi chia s\u1ebb s\u1edbm c\u00e1c test case \u0111\u1ec3 th\u1ed1ng nh\u1ea5t nh\u1eadn th\u1ee9c gi\u1eefa c\u00e1c b\u00ean. D\u00f9 tri\u1ec3n khai theo m\u00f4 h\u00ecnh ph\u00e1t tri\u1ec3n offshore, d\u1ef1 \u00e1n v\u1eabn duy tr\u00ec \u0111\u01b0\u1ee3c s\u1ef1 c\u00e2n b\u1eb1ng t\u1ed1i \u01b0u gi\u1eefa ch\u1ea5t l\u01b0\u1ee3ng, t\u1ed1c \u0111\u1ed9 v\u00e0 chi ph\u00ed, qua \u0111\u00f3 ho\u00e0n th\u00e0nh b\u00e0n giao ch\u1ea5t l\u01b0\u1ee3ng cao \u0111\u00fang ti\u1ebfn \u0111\u1ed9 k\u1ebf ho\u1ea1ch.<\/p>\n<\/div><\/div>\n\n\n\n<div id=\"section-09\" class=\"wp-block-group smile-section\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\"><div class=\"smile-section__head\"><div class=\"smile-section__number\">09<\/div><h2 class=\"smile-section__title\">K\u1ebft lu\u1eadn<\/h2><\/div>\n\n\n<p class=\"ticss-d7a9bfa5 wp-block-paragraph\">\u0110\u1ed1i v\u1edbi c\u00e1c h\u1ec7 th\u1ed1ng nghi\u1ec7p v\u1ee5 c\u1ed1t l\u00f5i \u0111\u00e3 v\u1eadn h\u00e0nh trong th\u1eddi gian d\u00e0i, vi\u1ec7c chuy\u1ec3n \u0111\u1ed5i t\u1eeb n\u1ec1n t\u1ea3ng legacy sang framework hi\u1ec7n \u0111\u1ea1i m\u00e0 kh\u00f4ng l\u00e0m gi\u00e1n \u0111o\u1ea1n ho\u1ea1t \u0111\u1ed9ng l\u00e0 \u0111i\u1ec1u ki\u1ec7n thi\u1ebft y\u1ebfu \u0111\u1ec3 doanh nghi\u1ec7p tri\u1ec3n khai DX (chuy\u1ec3n \u0111\u1ed5i s\u1ed1) th\u00e0nh c\u00f4ng. Trong d\u1ef1 \u00e1n n\u00e0y, SMILE \u0111\u00e3 h\u1ed7 tr\u1ee3 xuy\u00ean su\u1ed1t t\u1eeb ph\u00e2n t\u00edch h\u1ec7 th\u1ed1ng hi\u1ec7n h\u1eefu, chuy\u1ec3n \u0111\u1ed5i API v\u00e0 logic nghi\u1ec7p v\u1ee5, \u0111i\u1ec1u ch\u1ec9nh truy c\u1eadp DB, ki\u1ec3m ch\u1ee9ng t\u00edch h\u1ee3p 54 master d\u1eef li\u1ec7u d\u00f9ng chung \u0111\u1ebfn ki\u1ec3m th\u1eed h\u1ed3i quy, qua \u0111\u00f3 v\u1eeba b\u1ea3o \u0111\u1ea3m v\u1eadn h\u00e0nh \u1ed5n \u0111\u1ecbnh v\u1eeba n\u00e2ng cao kh\u1ea3 n\u0103ng b\u1ea3o tr\u00ec.<\/p>\n\n\n\n<p class=\"ticss-5f88e6e6 wp-block-paragraph\">SMILE h\u1ed7 tr\u1ee3 m\u1ea1nh m\u1ebd qu\u00e1 tr\u00ecnh hi\u1ec7n \u0111\u1ea1i h\u00f3a t\u1ed1i \u01b0u cho c\u00e1c doanh nghi\u1ec7p \u0111ang g\u1eb7p kh\u00f3 kh\u0103n v\u1edbi h\u1ec7 th\u1ed1ng legacy b\u1ecb \u201ch\u1ed9p \u0111en h\u00f3a\u201d ho\u1eb7c g\u00e1nh n\u1eb7ng n\u1ee3 k\u1ef9 thu\u1eadt, b\u1eb1ng n\u0103ng l\u1ef1c k\u1ef9 thu\u1eadt v\u1eefng ch\u1eafc v\u00e0 quy tr\u00ecnh reverse engineering t\u1ec9 m\u1ec9.<\/p>\n<\/div><\/div>\n\n\n<section class=\"smile-article-cta\"><div class=\"smile-article-cta__label\">H\u1ed7 tr\u1ee3 c\u1ee7a SMILE<\/div><h2>B\u1eaft \u0111\u1ea7u t\u01b0 v\u1ea5n v\u1ec1 th\u00fac \u0111\u1ea9y GX v\u00e0 DX<\/h2><p>T\u1eeb ph\u00e2n t\u00edch hi\u1ec7n tr\u1ea1ng, tri\u1ec3n khai h\u1ec7 th\u1ed1ng \u0111\u1ebfn c\u1ea3i ti\u1ebfn v\u1eadn h\u00e0nh, ch\u00fang t\u00f4i s\u1ebd c\u00f9ng doanh nghi\u1ec7p thi\u1ebft k\u1ebf l\u1ed9 tr\u00ecnh ph\u00f9 h\u1ee3p v\u1edbi t\u00ecnh h\u00ecnh th\u1ef1c t\u1ebf.<\/p><ul class=\"smile-list\"><li>Ch\u00fang t\u00f4i c\u00f3 th\u1ec3 gi\u00fap ph\u00e2n t\u00edch v\u00e0 h\u1ec7 th\u1ed1ng h\u00f3a c\u00e1c v\u1ea5n \u0111\u1ec1 hi\u1ec7n t\u1ea1i trong nghi\u1ec7p v\u1ee5 v\u00e0 d\u1eef li\u1ec7u c\u1ee7a doanh nghi\u1ec7p.<\/li><li>C\u00f3 th\u1ec3 thi\u1ebft k\u1ebf c\u00e1c b\u01b0\u1edbc tri\u1ec3n khai ph\u00f9 h\u1ee3p v\u1edbi c\u01a1 c\u1ea5u v\u1eadn h\u00e0nh c\u1ee7a doanh nghi\u1ec7p<\/li><li>C\u00f3 th\u1ec3 ti\u1ebfp t\u1ee5c x\u00e2y d\u1ef1ng m\u1ed9t c\u01a1 ch\u1ebf d\u1ec5 v\u1eadn h\u00e0nh ngay c\u1ea3 sau khi tri\u1ec3n khai.<\/li><li>C\u00f3 th\u1ec3 t\u1eadn d\u1ee5ng d\u1eef li\u1ec7u \u0111\u1ec3 ki\u1ec3m ch\u1ee9ng hi\u1ec7u qu\u1ea3 v\u00e0 c\u1ea3i ti\u1ebfn li\u00ean t\u1ee5c<\/li><li>C\u00f3 th\u1ec3 b\u1eaft \u0111\u1ea7u xem x\u00e9t \u1ee9ng d\u1ee5ng AI\u30fbIoT t\u1eeb nh\u1eefng l\u0129nh v\u1ef1c c\u1ea7n thi\u1ebft<\/li><\/ul><a class=\"smile-article-cta__button\" href=\"\/vn\/contact\/\">Li\u00ean h\u1ec7 v\u1edbi ch\u00fang t\u00f4i<\/a><\/section><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>\u65e2\u5b58\u306e\u9053\u8def\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0\u306f\u9577\u671f\u306b\u308f\u305f\u308a\u5b89\u5b9a\u7a3c\u50cd\u3092\u7d9a\u3051\u3066\u3044\u305f\u3082\u306e&hellip;&nbsp;<a href=\"https:\/\/smilesoftware.org\/vn\/road-management-dotnet-migration\/\" class=\"\" rel=\"bookmark\">\u0110\u1ecdc ti\u1ebfp &raquo;<span class=\"screen-reader-text\">Case Study: Hi\u1ec7n \u0111\u1ea1i h\u00f3a Backend gi\u00fap n\u00e2ng cao t\u00ednh b\u1ea3o tr\u00ec cho H\u1ec7 th\u1ed1ng Qu\u1ea3n l\u00fd \u0110\u01b0\u1eddng b\u1ed9 v\u1edbi .NET<\/span><\/a><\/p>","protected":false},"author":2,"featured_media":5963,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","_price":"","_stock":"","_tribe_ticket_header":"","_tribe_default_ticket_provider":"","_ticket_start_date":"","_ticket_end_date":"","_tribe_ticket_show_description":"","_tribe_ticket_show_not_going":false,"_tribe_ticket_use_global_stock":"","_tribe_ticket_global_stock_level":"","_global_stock_mode":"","_global_stock_cap":"","_tribe_rsvp_for_event":"","_tribe_ticket_going_count":"","_tribe_ticket_not_going_count":"","_tribe_tickets_list":"[]","_tribe_ticket_has_attendee_info_fields":false,"_themeisle_gutenberg_block_has_review":false,"_ti_tpc_template_sync":false,"_ti_tpc_template_id":"","footnotes":""},"categories":[17],"tags":[33,37,35],"class_list":["post-5962","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-project","tag-dx","tag-infrastructure","tag-web-system"],"acf":[],"rttpg_featured_image_url":{"full":["https:\/\/smilesoftware.org\/wp-content\/uploads\/2026\/09\/redmine-1811-featured-5962.png",1672,941,false],"landscape":["https:\/\/smilesoftware.org\/wp-content\/uploads\/2026\/09\/redmine-1811-featured-5962.png",1672,941,false],"portraits":["https:\/\/smilesoftware.org\/wp-content\/uploads\/2026\/09\/redmine-1811-featured-5962.png",1672,941,false],"thumbnail":["https:\/\/smilesoftware.org\/wp-content\/uploads\/2026\/09\/redmine-1811-featured-5962-150x150.png",150,150,true],"medium":["https:\/\/smilesoftware.org\/wp-content\/uploads\/2026\/09\/redmine-1811-featured-5962-300x169.png",300,169,true],"large":["https:\/\/smilesoftware.org\/wp-content\/uploads\/2026\/09\/redmine-1811-featured-5962-1024x576.png",1024,576,true],"1536x1536":["https:\/\/smilesoftware.org\/wp-content\/uploads\/2026\/09\/redmine-1811-featured-5962-1536x864.png",1536,864,true],"2048x2048":["https:\/\/smilesoftware.org\/wp-content\/uploads\/2026\/09\/redmine-1811-featured-5962.png",1672,941,false],"trp-custom-language-flag":["https:\/\/smilesoftware.org\/wp-content\/uploads\/2026\/09\/redmine-1811-featured-5962-18x10.png",18,10,true],"neve-blog":["https:\/\/smilesoftware.org\/wp-content\/uploads\/2026\/09\/redmine-1811-featured-5962-930x620.png",930,620,true]},"rttpg_author":{"display_name":"\u7b20\u539f \u840c","author_link":"https:\/\/smilesoftware.org\/vn\/author\/chinh-man\/"},"rttpg_comment":0,"rttpg_category":"<a href=\"https:\/\/smilesoftware.org\/vn\/category\/project\/\" rel=\"category tag\">Project<\/a>","rttpg_excerpt":"\u65e2\u5b58\u306e\u9053\u8def\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0\u306f\u9577\u671f\u306b\u308f\u305f\u308a\u5b89\u5b9a\u7a3c\u50cd\u3092\u7d9a\u3051\u3066\u3044\u305f\u3082\u306e&hellip;&nbsp;\u0110\u1ecdc ti\u1ebfp &r&hellip;","_links":{"self":[{"href":"https:\/\/smilesoftware.org\/vn\/wp-json\/wp\/v2\/posts\/5962","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/smilesoftware.org\/vn\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/smilesoftware.org\/vn\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/smilesoftware.org\/vn\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/smilesoftware.org\/vn\/wp-json\/wp\/v2\/comments?post=5962"}],"version-history":[{"count":14,"href":"https:\/\/smilesoftware.org\/vn\/wp-json\/wp\/v2\/posts\/5962\/revisions"}],"predecessor-version":[{"id":6064,"href":"https:\/\/smilesoftware.org\/vn\/wp-json\/wp\/v2\/posts\/5962\/revisions\/6064"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/smilesoftware.org\/vn\/wp-json\/wp\/v2\/media\/5963"}],"wp:attachment":[{"href":"https:\/\/smilesoftware.org\/vn\/wp-json\/wp\/v2\/media?parent=5962"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/smilesoftware.org\/vn\/wp-json\/wp\/v2\/categories?post=5962"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/smilesoftware.org\/vn\/wp-json\/wp\/v2\/tags?post=5962"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}