Bởi: Stefan Pieterse, Rocket (John), Jonathan K. Brown và Justin Downing
Ngày: 10 tháng 4, 2025
Chủ đề: Advanced (300), Amazon Aurora, Customer Solutions, Migration, PostgreSQL compatible
Trong bài viết này, chúng tôi sẽ thảo luận cách Heroku đã di chuyển multi-tenant PostgreSQL database từ môi trường tự quản lý PostgreSQL trên Amazon Elastic Compute Cloud(Amazon EC2) sang Amazon Aurora PostgreSQL-Compatible Edition. Heroku đã hoàn tất quá trình này mà không gây ảnh hưởng đến khách hàng, đồng thời tăng độ tin cậy nền tảng và giảm gánh nặng vận hành. Chúng tôi sẽ phân tích kiến trúc tự quản lý trước đây, kiến trúc mới, cách hàng trăm nghìn cơ sở dữ liệu được di chuyển, và những cải thiện trong trải nghiệm khách hàng sau khi hoàn tất.
Tổng quan về Heroku
Heroku là một nền tảng PaaS (platform as a service) được quản lý hoàn thiện, xây dựng trên Amazon Web Services (AWS), giúp triển khai, vận hành và mở rộng ứng dụng dễ dàng. Heroku được thành lập năm 2007 và được Salesforce mua lại năm 2010. Ngày nay, Heroku là nền tảng được lựa chọn cho hơn 13 triệu ứng dụng, từ các startup nhỏ đến doanh nghiệp có triển khai quy mô lớn.
Heroku không chỉ đơn giản hóa việc triển khai và mở rộng ứng dụng bằng Dynos(container do Heroku quản lý) mà còn cung cấp các data solution add-ons như Heroku Postgres, Apache Kafka on Heroku, và Heroku Key-Value Store. Các dịch vụ này xử lý bảo mật, vá lỗi server, failovers, backups và các cấu hình phức tạp khác, giúp khách hàng tập trung phát triển ứng dụng thay vì quản lý hạ tầng dữ liệu. Tất cả các add-on của Heroku Data Services có thể được provision chỉ bằng một lệnh CLI hoặc click, tăng tính tích hợp, độ tin cậy, và khả năng mở rộng.
Một trong những add-on là Heroku Postgres — cung cấp cơ sở dữ liệu PostgreSQL có khả năng mở rộng, chi phí hợp lý, backup tự động, quản lý, tối ưu hiệu suất và tất cả những gì cần để vận hành database. Ví dụ Heroku Connect cho phép đồng bộ hóa dữ liệu Salesforce với Heroku Postgres một cách liền mạch.
Để giữ ứng dụng của khách hàng vận hành ổn định, Heroku phải đầu tư lớn. Đầu năm 2025, đội ngũ Heroku Data Services đã di chuyển dịch vụ Heroku Postgres Essential từ môi trường self-managed trên Amazon EC2 sang Amazon Aurora, loại bỏ gánh nặng vận hành và cho phép kỹ sư tập trung vào đổi mới.
Kiến trúc PostgreSQL tự quản lý trước đây và những thách thức
Sơ đồ dưới đây minh họa kiến trúc cũ của Heroku:

Nhóm Heroku Data điều hành nhiều control plane để quản lý tài nguyên khách hàng. Khi một khách hàng tạo add-on Heroku Postgres, control plane gửi các API request tới AWS để tạo VPC, EC2 instances, Amazon Elastic Block Store (Amazon EBS) volumes, và Amazon Simple Storage Service (S3) paths theo yêu cầu gói add-on.
Khi hạ tầng sẵn sàng, control plane thiết lập dịch vụ PostgreSQL và quản lý timeline, credentials, và continuous protection. Heroku có tự động hóa để kết nối vào các instance, đặt file cấu hình và thực thi lệnh để hoàn thành setup database. Khi database hoạt động, họ đẩy thông tin connection string vào cấu hình ứng dụng. Sau đó, control plane giám sát liên tục trạng thái instance, dịch vụ, usage và telemetry khác để giữ độ khả dụng và hiệu suất.
Kiến trúc này phục vụ Heroku hơn 10 năm. Nhưng khi quản lý một fleet các database instances quy mô lớn, độ phức tạp và gánh nặng vận hành tăng lên. Heroku phải viết nhiều mã để giám sát, phát hiện và khắc phục các lỗi hệ điều hành, cập nhật PostgreSQL, hỏng phần cứng.
Dù đã tự động hóa nhiều phần, kỹ sư Heroku vẫn ngày càng dành thời gian nhiều hơn cho bảo trì hạ tầng thay vì phát triển tính năng mới. Khi tìm giải pháp thay thế, Aurora trở thành lựa chọn rõ rệt.
Kiến trúc PostgreSQL mới với Aurora
Minh họa kiến trúc mới:

Một lợi thế nền tảng là control plane của Heroku được thiết kế để tương tác hiệu quả với các dịch vụ AWS Cloud. Hệ thống lấy cảm hứng từ mô hình finite-state machine — mỗi tài nguyên tồn tại ở một trạng thái và có thể chuyển sang trạng thái khác khi có hành động. Ví dụ: khi provision EC2 instance với tham số nhất định, nó vào trạng thái pending cho đến khi AWS hoàn tất yêu cầu, rồi vào trạng thái running.
Khi chọn Aurora làm backend cho Heroku Postgres, Heroku Data không còn phải dựng và duy trì server infrastructure, custom AMIs, cài đặt và vá lỗi hệ điều hành hoặc di chuyển sang type mới. Khi khách hàng gửi yêu cầu provision, Heroku chỉ cần tạo và thiết lập một Aurora cluster; các phần bên dưới như instance, disk, replication, snapshot được AWS xử lý.
Điều này phù hợp với triết lý ephemeralization của Heroku: dùng ít tài nguyên nhưng làm được nhiều hơn. Bằng việc giảm độ phức tạp quản lý hạ tầng database tùy chỉnh, họ có thể ưu tiên giá trị gia tăng như enhanced observability, hỗ trợ database thông minh và tăng interoperability dữ liệu.
Cách Heroku di chuyển hơn 200.000 cơ sở dữ liệu

Nhóm Heroku Data phải di chuyển hơn 200.000 cơ sở dữ liệu PostgreSQL tự quản lý sang Aurora. Đây là thách thức lớn, nhưng họ đã hoàn thành chỉ trong 4 tháng với tác động tối thiểu đến khách hàng.
Mặc dù thành thạo PostgreSQL, họ mới với Aurora. Vì vậy, AWS hợp tác đào tạo hơn 40 kỹ sư Heroku.
Nhóm sử dụng hai control plane song song:
- Legacy control plane cho hệ thống cũ
- Modern control plane cho hệ thống Aurora
Heroku xây dựng hệ thống transfer chuyên biệt trong modern control plane, dùng công cụ pgcopydb để sao chép dữ liệu từ PostgreSQL cũ sang Aurora. So với pg_dump/pg_restore, cách này vượt trội nhờ parallel operations. Thời gian trung bình cho khóa, copy, cập nhật pointer và mở khóa < 2.2 phút (p50).
Để đảm bảo migration trơn tru, nhóm phát triển khả năng kiểm thử toàn diện: mô phỏng end-to-end migration, kiểm tra dữ liệu, xử lý sự cố trước khi ảnh hưởng khách hàng. Migration diễn ra liên tục, trung bình 2.000 database mỗi ngày. Nhờ kiểm tra kỹ, họ phát hiện và xử lý vấn đề trước khi ảnh hưởng người dùng.
Khi hệ thống transfer sẵn sàng production, khách có hai lựa chọn:
- Self-serve migration – khách yêu cầu di chuyển qua việc thay đổi gói dịch vụ
- Automated migration – hệ thống tự động di chuyển dần từng phần để tránh gián đoạn
Heroku đã di chuyển thành công hàng trăm nghìn database từ PostgreSQL self-managed sang Aurora PostgreSQL với ảnh hưởng tối thiểu. Họ còn dùng AWS Countdown, chương trình hỗ trợ Enterprise của AWS để chuẩn bị và thực hiện các sự kiện như migration và launch, hỗ trợ quản lý quotas, capacity planning và hỗ trợ vận hành.
Lợi ích và ưu điểm của kiến trúc mới
Chuyển sang kiến trúc database mới là đầu tư lâu dài của Heroku nhằm mang đến trải nghiệm đẳng cấp cho khách hàng.
Heroku khi vận hành fleet PostgreSQL trên EC2 dành nhiều nỗ lực để cạnh tranh với việc phát triển tính năng mới. Kiến trúc mới trên Aurora giảm gánh nặng vận hành: không còn phải quản lý cập nhật phần mềm, vá lỗi hệ điều hành, PostgreSQL service hay các thư viện hỗ trợ.
Tổ chức giờ đây biết AWS giữ database khách hàng an toàn, ổn định và luôn sẵn sàng. Heroku có thêm thời gian phát triển tính năng mới, lắng nghe khách hàng và củng cố hợp tác với AWS.
Kiến trúc mới cho phép Heroku Data cung cấp tính năng tương lai như AI-enabled database administrator, auto scaling, sleep mode, near-zero downtime, tăng số lượng connection, mở rộng storage lên 128 TB, và hơn thế nữa. Với sự đơn giản của Heroku, việc gắn một database mạnh mẽ như vậy vào ứng dụng thực hiện chỉ bằng một dòng code.
Migration sang Amazon Aurora cũng nâng cao bảo mật: mã hóa at rest dùng AWS KMS, in transit dùng SSL/TLS, vá lỗi tự động không cần maintenance window, kiểm soát quyền qua IAM authentication, cách ly mạng và ghi nhận hoạt động qua AWS CloudTrail. Các tính năng bảo mật doanh nghiệp này được tích hợp tự động trong Aurora mà không cần cấu hình thêm.
Kết luận
Quá trình di chuyển từ PostgreSQL tự quản lý trên EC2 sang Aurora thể hiện sự chuẩn bị kỹ lưỡng và hợp tác giữa Heroku và AWS. Sau khi triển khai thành công cho hàng trăm nghìn database multi-tenant, bước tiếp theo của Heroku là di chuyển cơ sở dữ liệu single-tenant trong Heroku Private Spaces sang Aurora vào cuối năm 2025.
Về các tác giả

Stefan Pieterse là Principal Customer Solutions Manager tại AWS, người đã hỗ trợ nhiều khách hàng chiến lược trong quá trình di chuyển và hiện đại hóa khối lượng công việc lên đám mây. Trong vai trò hiện tại, ông giúp Heroku đạt được thành công bằng cách thực hiện các mục tiêu chiến lược, tăng cường quan hệ đối tác thông qua chương trình hỗ trợ, đại diện khách hàng và xây dựng niềm tin. Khi không làm việc để cải thiện hoạt động kinh doanh của khách hàng, ông thường chạy bộ hoặc chơi cùng con trai ba tuổi để thư giãn đầu óc.

John Nichols, còn được biết đến với biệt danh “Rocket”, là Solutions Architect tại AWS, nơi anh giúp các khách hàng lớn nhất thế giới xây dựng hệ thống có khả năng phục hồi cao, hiệu suất tối ưu và tiết kiệm chi phí. Trước đây từng là Kiến trúc sư trưởng và Giám đốc phụ trách Điện toán Đám mây, Rocket sở hữu kinh nghiệm sâu sắc trong thiết kế hệ thống và lãnh đạo các nhóm hiệu suất cao. Khi không làm việc với máy tính, anh thường tổ chức các sự kiện livestream hoặc làm rượu tại xưởng rượu của riêng mình.

Jonathan K. Brown là Senior Product Manager tại Heroku, một công ty thuộc Salesforce, phụ trách toàn bộ mảng data services. Anh là một nhà lãnh đạo công nghệ với kinh nghiệm trong thiết kế lấy con người làm trung tâm, kiến trúc đám mây, ứng dụng AI và kỹ thuật trong nhiều lĩnh vực, từ hàng không vũ trụ đến các công ty khởi nghiệp công nghệ cao. Jonathan luôn đặt thành công của khách hàng lên hàng đầu. Anh có bằng Cử nhân và Thạc sĩ Kỹ thuật, cùng MBA tại Đại học UC Berkeley, và thường đi dù lượn mỗi khi có cơ hội.

Justin Downing là Software Engineer Architect tại Salesforce, nơi anh tập trung vào các khía cạnh phức tạp của Heroku và data services. Với nền tảng vững chắc trong việc xây dựng kiến trúc đám mây có khả năng mở rộng và đáng tin cậy, Justin luôn đam mê chia sẻ kiến thức và hợp tác để tạo ra các giải pháp bền vững. Khi rời bàn phím, anh thường khám phá núi rừng, đi bộ đường dài hoặc trượt tuyết.