DEV Community

Bach Huynh V. VN.Danang
Bach Huynh V. VN.Danang

Posted on

Tôi đã gặp khó khăn gì khi Migration từ Azure sang AWS?

Bài viết này, tôi không đi sâu vào kiến trúc hệ thống, cách thức hoạt động của ứng dụng, tôi chỉ muốn nếu bật những thành phần/dịch vụ mà tôi đã cố gắng chuyển từ AZURE sang AWS.

Nói Azure cho cao sang chứ thật ra ở Azure chỉ sử dụng VM (Virtual Machine). Các thành phần là:

  • Web/App instance: chạy IIS, .NET Framework.
  • MariaDB instance: có MariaDB và RabbitMQ.
  • MSSQL instance: Microsoft SQL.

Vậy khi thấy những thành phần trên có thể các bạn sẽ nghĩ ngay là:

  • Web/App instance: dùng AWS MGN (Application Migration Service)
  • MariaDB instance: dùng DMS với RDS MariaDB, dùng Amazon MQ cho RabbitMQ.
  • MSSQL instance: Babelfish for Aurora PostgreSQL, mục đích tiết kiệm chi phí licence, No/Little Code Change.

Easy game nhỉ, bắt tay vào làm thôi...
...
...

Vào làm thì mới lòi ra những cái này:

1. Web/App instance

Với AWS MGN, dường như toàn bộ sẽ được chuyển qua instance mới, vâng, mình nhắc lại là TOÀN BỘ sẽ được chuyển quan EC2 instance...Kể cả OS...Và bạn biết không, OS đó là phiên bản chỉ dành cho Azure Datacenter

Image description

Mình đã làm mọi cách để active được...nhưng đều thất bại. Có một cách khả thi nhưng chỉ dùng được cho Dedicated instance...nghe đến đây thì thôi...bỏ đi...
Các cách đã tham khảo:

Vậy là đành chào tạm biệt AWS MGN, đành phải sử dụng chiêu cơ bản: Tạo EC2 instance from scratch thôi...cài tay hết lại từ đầu v.v....

P/S: Windows này cũng trớ trêu mấy vụ user-data nó ko chạy lắm à nha. Rảnh thì tui viết bài khác về user-data trên Windows...

2. MariaDB instance:

OK, Dùng DMS migrate từ Mariadb's VM sang RDS MariaDB, ko có gì đặc biệt. Chỉ nhắc nhẹ user-definer, RDS nó là AWS managed service, nó ko thoải mái khi tự cài...nên nhiều cái RDS ko hỗ trợ thì tự mình bỏ ra rồi chuyến qua nhé.

Còn cái vụ Amazon MQ, thống nhất các kiểu rồi, Amazon MQ có hỗ trợ RabbitMQ đàng hoàng...Nhưng ngặt nỗi, Code hiện tại không sử dụng TLS cho connection mà Amazon MQ bắt buộc phải có TLS ấy thế là 1. là change code, 2 là ko dùng Amazon MQ nữa, tự setup EC2 instance cài RabbitMQ... Chọn cách 2, chọn cách 2 vì không có thời gian để làm cách 1...Thấy chán tập 2 ghê chưa

3. MS SQL instance:

Có ai mới nghe lần đầu Babelfish không, nếu chưa thì tìm hiểu nhé. Đại loại là Aurora Postgres có tính năng bật Babelfish lên để DB instance này có thể vừa hiểu port 1433 (SQL server) và 5432 (Postgres server). Babelfish như là một proxy, tiếp nhận các câu query và transform in flight để lưu trữ lên Postgres server.

Nghe hay chưa, hay chưa...Cơ mà đời không như là mơ...hiện tại Babelfish đang là version 4.0 rồi nhưng rất rất nhiều limit, đặt biệt là các lệnh, hàm Unsupported...

Ui cha, Có nhiều document hướng dẫn migration lắm...nhưng chắc có lẽ là để phục vụ cho những dự án nào mà Babelfish 4.0 được support hết thì ...may ra. Còn hiện tại nó thiếu nhiều cái lắm... Và cái đặt biệt thiếu là quyền user...cái mà dự án hiện tại đang dùng nó như cơm bữa, gán quyền cụ thể lắm, đến khi không thể db-migration được, các stored-procedures cũng không migrate qua được thì thôi mình lại xin bó tay..

Các document đã tham khảo:

Lần này, thì đành xin tiếp tục sử dụng Microsoft SQL trên RDS thôi, khi nào migration xong chạy ổn, muốn dùng Babelfish hay muốn dùng thuần Postgres thì cho đội dev bắt tay vào sửa code...chứ cứ đòi NO CODE CHANGE thì đành bó tay.

Bài viết mình sơ sơ vậy thôi, mấy bạn thích cụ thể chủ đề nào thì comment để mình biết ra bài tiếp theo nhé...

Ngoài ra, nếu bạn bè, anh chị em nào đã gặp những tình huống tương tự thì có thể comment trao đổi để mình tham khảo nhé!

Xin cảm ơn mọi người!

Top comments (0)