Giaosucan's blog - Chia sẻ kiến thức theo cách bá đạo

Ticker

20/recent/ticker-posts

Website Liên Xô chống Mỹ được xây dựng như thế nào

Tình tiết câu chuyện là hư cấu, nhưng được lấy cảm hứng từ một dự án có thật mà tác giả đã tham gia

Sau chiến tranh thế giới thứ 2, thế giới bước vào thời kì chiến tranh lạnh với cuộc đối đầu chạy đua vũ trang giữa phe xã hội chủ nghĩa đứng đầu là Liên Xô và phe tư bản do Mỹ đứng đầu. Đỉnh điểm của cuộc chiến tranh lạnh này là cuộc khủng hoảng tên lửa Cuba, khi Liên Xô triển khai tên lửa đạn đạo hạt nhân ở Cuba để trả đũa hành động Hoa Kỳ triển khai tên lửa Jupiter mang đầu đạt hạt nhân trên đất Thổ Nhĩ Kỳ, đe dọa Mosscow.

Rất may nguy cơ của chiến tranh thế giới thứ 3 đã không xảy ra do hai bên đã kịp dừng lại đàm phán. Tuy nhiên, sau đó, phong trào chống Mỹ của phe xã hội chủ nghĩa ngày càng phát triển mạnh mẽ. Nột bật là phong trào Liên Xô chống Mỹ của Thiên Địa Hội, một bang hội hình thành ở Việt Nam, một nước thuộc phe cộng sản. Tổng đà chủ của Thiên Địa Hội là lão đương gia Tokuda, có biệt danh là Bố Già, vốn là dòng dõi của Trần Gia Lạc, tổng đà chủ của Hồng Hoa Hội bên Trung Hoa thời vua Càn Long, một bang hội nổi tiếng về tôn chỉ Phản Thanh Phục Minh.

Để tiện cho việc giao lưu họp bàn kế hoạch cũng như tuyên truyền đường lối chủ trương của hội, đội ngũ kĩ sư của Thiên Địa Hội đã xây dựng nên trang web Liên Xô chống Mỹ. Website được deploy trên on-premise server đặt tại Việt Nam. Ngoài ra, còn có thêm một phiên bản Mobile và Desktop app 

Hệ thống Liên Xô chống Mỹ bao gồm nhiều chức năng như Chat, Posting content, tìm kiếm… Tất cả chức năng này được thực hiện ở tầng Backend với các service riêng biệt như trên. Do số lượng content, message rất lớn (lên tới hàng tỉ) nên dữ liệu NoSQL MongoDB và cơ sở dữ liệu phân tán HBase 

Dưới sự lãnh đạo sáng suốt của tổng đà chủ Tokuda cũng như nhận được nguồn tài trợ dồi dào của đảng cộng sản Liên Xô, Thiên Địa Hội ngày càng mở rộng và phát triển lên tới hàng chục phân đà, số bang chúng đã lên tới hàng trăm triệu, trải rộng khắp từ Liên Xô cho đến Canada, áp sát vào biên giới US. Phân đà thienvadia.net, thienvadia.info, lauxanh.us …. Server, data-center đặt ở khắp nơi.

Hiện tại, mỗi khi một phân đà được thành lập, các kĩ sư của Thiên Địa Hội là build lên 1 server on-premise tại location tương ứng, rồi deploy. Sau đó, với sự ra đời của cloud AWS, hệ thống đã được migrate theo cách lift&shift lên AWS.

Để tăng productivity cho việc provision infra, kĩ sư Thiên Địa Hội đã viết một bộ source infra-as-code ThienDia-Boto bằng python dùng CloudFormation API để provision infra tự động lên AWS bao gồm Route53, EC2, VPC, S3, ELB… 

Hình ảnh dưới mang tính chất minh họa infra, infra thật có một số thay đổi và không tiện show do vấn đề bảo mật.

Kết quả hình ảnh cho aws backend VPC infrastructure

Sau khi provision infra thành công, một bộ source code được viết bằng SaltStack sẽ tự động cài đặt các service như Hbase, mongo, client app lên server.

SaltStack một phần mềm mã nguồn mở, một hệ thống thuộc nhóm Configuration management, viết bằng Python, sử dụng YAML làm ngôn ngữ giao tiếp với người dùng. Chi tiết xin đọc series bài viết 

Stack bình dân học vụ cùng tác giả

Mỗi khi một phân đà được thành lập, kĩ sư ThienDia lại chạy bộ infra-as-code này bằng Jenkins pipeline để tự động provison và deploy application liên xô chống mỹ, toàn bộ được thực hiện chỉ trong vòng 2 tiếng.

Năm 1989, sau sự kiện bức tường Berlin, Liên Xô sụp đổ, mọi nguồn tài trợ cho Thiên Địa Hội bị cắt, Liên Xô chống Mỹ gặp khủng hoảng về tài chính. Các kĩ sư đã nhận ra nhược điểm của mô hình deploy trên. 

Mỗi một phân đà được thành lập, không kể lớn hay nhỏ, bang chúng dùng nhiều hay ít, đều phải deploy một infra như trên lên cloud, dẫn tới chi phí vô cùng lớn và gây lãng phí. Sau khi phân tích trên AWS Cost Explore, một một năm chi phí cho AWS không dưới 3 triệu $

Sau nhiều đêm OT, ON nghiên cứu, kĩ sư Thiên Địa Hội đã phát triển một kiến trúc mới gọi là Multi-Tenancy. 

Multi-Tenant – Multi-tenancy có nghĩa là một phiên bản duy nhất của phần mềm và cơ sở hạ tầng hỗ trợ của nó phục vụ nhiều phân đà. Mỗi phân đà chia sẻ ứng dụng phần mềm Liên Xô chống Mỹ và cũng chia sẻ một cơ sở dữ liệu. Dữ liệu của mỗi phân đà bị cô lập và vẫn vô hình đối với những phân đã khác.

Kiến trúc thực tế rất phức tạp, nhưng giaosucan’s blog sẽ trình bày ý tưởng của kiến trúc này theo cách đơn giản

Thay vì mỗi phân đà có service infra riêng (hbase, elasticsearch..) thì sẽ được sử dụng chung để giảm cost. Các feature của app như forum, chatting sẽ được đóng gói thành Docker container và deploy lên EKS, các bang chúng của phân đà có sẽ truy cập vào theo các domain khác nhau như ở dưới

Ngnix hoạt động như một reverse proxy được sử dụng với mục đích sau

Load balancing: giúp điều phối requests tới các servers backend để cân bằng tải, ngoài ra nó còn giúp hệ thống đạt tính sẵn sàng cao khi lỡ không may có server bị ngỏm thì nó sẽ chuyển request tới một server còn sống để thực thi.

Increased Security: Reverse Proxy còn đóng vai trò là một lớp bảo vệ cho các servers backend. Nó giúp cho chúng ta có thể ẩn đi địa chỉ và cấu trúc thực của server backend.

Logging: Tất cả các requests tới các servers backend đều phải đi qua reverse proxy nên việc quản lý log của access tới từng server và endpoint sẽ dễ dàng hơn rất nhiều so với việc kiểm tra trên từng server một.

Encrypted Connection: Bằng việc mã hóa kết nối giữa client và reverse proxy với TLS, users sẽ được hưởng lợi từ việc mã hóa dữ liệu và bảo mật với HTTPS.

Sau khi kiến trúc Multi tenancy được áp dụng, thiên địa hội đã giảm được cost lên tới 30 – 40 % năm, tiếp tục sự nghiệp Liên Xô Chống Mỹ vĩ đại.

Được biết sau hơn 2 năm sử dụng, kiến trúc Mult tenancy cũng bộc lộ một số nhược điểm, để biết các kĩ sư Thiên Địa đã khắc phục thế nào, đón đọc phần tiếp theo.

Đăng nhận xét

2 Nhận xét