Chương 2. Xây dựng ứng dụng SOML trên microservices
2.1. Giới thiệu về SOML
Mạng xã hội (các website, ứng dụng có thể kết nối các thành viên có cùng sở thích, cùng nơi sinh sống, học tập, làm việc… lại với nhau thông qua mạng Internet) đang dần trở thành xu thế của hiện nay, hàng ngày có hàng trăm triệu người dùng trên thế giới truy cập vào các mạng xã hội. Hiện nay có rất nhiều các loại mạng xã hội khác nhau như Facebook, Twitter, Google plus, My space, SnapChat, ... Theo thống kê mới nhất tính đến tháng 8 năm 2015 thì Facebook là mạng xã hội lớn nhất thế giới với trên một tỉ tài khoản của người dùng được sử dụng hàng tháng, tiếp theo là Twitter có trên 360 triệu người dùng3.
Bên cạnh các mạng xã hội đa chức năng thì các mạng xã hội chuyên biệt cũng rất phát triển như Instagram – một mạng xã hội chuyên biệt dành cho người dùng đăng ảnh và cung cấp các hiệu ứng để người dùng chỉnh sửa ảnh của họ. SOML cũng là một mạng xã hội với ý tưởng như vậy, SOML cho phép người dùng chia sẻ các câu chuyện trong cuộc sống thông qua các bức ảnh và kết nối những câu chuyện của người dùng lại với nhau. SOML là một mạng xã hội nên nó phải đáp ứng được lượng truy cập lớn từ nhiều người dùng cùng một lúc trên mọi thiết bị như máy tính, điện thoại, ... và nó cũng phải có khả năng thích nghi với mọi sự thay đổi của công nghệ. Đặc biệt việc xây dựng một mạng xã hội sẽ cần sự tham gia của nhiều người vì thế hệ thống phải có kiến trúc dễ hiểu, đáp ứng khả năng có thể chia nhỏ dành cho nhiều người cùng phát triển và không ảnh hưởng đến nhau và nó phải dễ bảo trì trong quá trình hoạt động. Việc bảo trì bất cứ chức năng nào trong hệ thống phải độc lập và không ảnh hưởng đến hoạt động của cả hệ thống. Chính vì những yêu cầu này tôi quyết định chọn microservices làm kiến trúc để xây dựng ứng dụng SOML.
2.1.2. Các chức năng của SOML
Ý tưởng hoạt động của SOML rất đơn giản, mỗi người dùng khi có tài khoản trên SOML sẽ có quyền tạo nhiều story cho riêng họ và mỗi story sẽ có rất nhiều
3http://www.statista.com/statistics/272014/global-social-networks-ranked-by-number-of-users/
(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices
photo.
Hình 2.1.Mô hình hoạt động của SOML
Hình 2.1 mô tả mô hình hoạt động của SOML, người dùng sau khi đăng nhập có thể tạo một hoặc nhiều Story và mỗi Story này có thể có một hoặc nhiều Photo. Khi người dùng tạo Story xong, Story của họ sẽ có trạng thái là private, người dùng có thể đăng Photo cho Story đó và chuyển trạng thái của nó sang public để người dúng khác có thể nhìn thấy và bình luận về Story đó.
Ứng dụng SOML có bốn chức năng chính: quản lý người dùng, quản lý Photo, quản lý Story và quản lý Comment được thể hiện như trong Hình 2.2.
Hình 2.2.Sơ đồ ca sử dụng tổng thể củaSOML
Quản lý người dùng: cho phép người dùng tạo, sửa, xoá thông tin của họ để đăng nhập vào SOML (Hình 2.3).
o Đăng ký: người dùng điền thông tin gồm tên, email và mật khẩu để đăng ký vào hệ thống. Người dùng cũng có thể đăng ký vào SOML thông qua tài khoản trên mạng xã hội Facebook và Twitter. Mọi thông tin sau khi người dùng đăng ký sẽ được lưu vào cơ sở dữ liệu. Để tránh việc người dùng sử dụng địa chỉ email của người khác để đăng ký vào SOML thì tất cả các tài khoản sau khi đăng ký đều phải xác nhận lại bằng email mà người dùng đã dùng để đăng ký. Việc đăng ký chỉ thành công sau khi người dùng xác nhận việc đăng ký của họ qua email.
o Đăng nhập: người dùng có tài khoản trong SOML sẽ đăng nhập vào SOML bằng cách điền thông tin email và mật khẩu đã đăng ký hoặc tài khoản Facebook, Twitter.
o Xoá tài khoản: người dùng có thể ngừng hoạt động tài khoản của mình trên SOML.
(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices
Hình 2.3.Sơ đồ ca sử dụng của quản lý người dùng
Quản lý Story cho phép người dùng tạo, sửa, xóa các Story trong SOML (Hình 2.4)
Hình 2.4.Sơ đồ ca sử dụng của quản lý Story
o Tạo Story: người dùng sau khi đăng nhập vào SOML có thể tạo một hoặc nhiều Story cho mình. Mỗi Story được tạo sẽ được lưu trữ vào cơ sở dữ liệu Stories với các thông tin: tên Story, mô tả Story, người dùng tạo Story, mảng lưu trữ các id của các bức ảnh trong Story, ảnh đại diện cho Story và trạng thái của Story (publish / private).
o Sửa Story: người dùng phải đăng nhập để sửa Story của mình.
Sau khi người dùng xác nhận sửa xong thì mọi thông tin mới của Story đó sẽ được lưu vào cơ sở dữ liệu.
o Xoá Story: để xoá Story người dùng sẽ đăng nhập vào hệ thống
và xoá Story. Khi Story bị xoá thì nó cũng bị loại khỏi cơ sở dữ liệu Stories.
Quản lý Photo cho phép người dùng quản lý các thông tin các photo trong mỗi Story của họ (Hình 2.5).
Hình 2.5.Sơ đồ ca sử dụng của quản lý Photo
o Đăng Photo: người dùng sau khi tạo thành công Story thì sẽ tiến hành đăng một hoặc nhiều Photo cho Story đó. Khi việc đăng Photo thành công thì các Photo này sẽ được lưu vào trong cơ sở dữ liệu với các thông tin: story_id - Story mà Photo thuộc vào, file – đường dẫn ảnh sau khi được đăng lên máy chủ và caption – mô tả về Photo.
o Sửa/xoá Photo: để tiện cho người dùng hai thao tác này có thể thực hiện trong trang sửa Story, người dùng có thể chọn sửa hoặc xoá bất cứ Photo nào trong Story của họ.
Quản lý Comment cho phép người sau khi đăng nhập vào hệ thống có thể bình luận về các Story trong SOML và trả lời các bình luận đó (Hình 2.6).
(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices