Mô hình tổng quan củaSOML

Một phần của tài liệu Phát triển phần mềm dựa trên microservices (Trang 31 - 34)

Hình 2.8. Mô hình tổng quan của SOML

Hình 2.8 mô tả mô hình tổng quan của SOML, trong đó SOML được xây dựng trên nền tảng Ruby on Rails của ngôn ngữ lập trình Ruby, Docker để đóng gói các dịch vụ với cơ sở dữ liệu PostgreSQL và hoạt động trên máy chủ nginx và Amazon web services.

Ruby on Rails (RoR)

Ruby là ngôn ngữ lập trình được tạo ra bởi Yukihiro Matsumoto vào năm 1993 và có bản chính thức đầu tiên vào năm 1995. Ruby có rất nhiều tính năng nổi bật như linh hoạt, đơn giản và đặc biệt nó có cú pháp rất dễ hiểu, dễ dùng. RoR là một framework mã nguồn mở để xây dựng các ứng dụng web và được viết bằng ngôn ngữ lập trình Ruby. RoR được David Heinemeier Hansson tạo ra lần đầu tiên vào năm 2004 dưới dạng một công cụ quản lý dự án Basecamp của công ty phát triển Web 37signals – nơi David Heinemeier Hansson làm việc. Sau đó RoR được ông phát triển thành một framework (11).

RoR bao gồm 2 phần: phần ngôn ngữ Ruby và phần framework Rails (bao gồm các thư viện và chúng được liên kết với nhau).

RoR sử dụng mô hình MVC – (Model – View – Controller) để xây dựng kiến trúc, bao gồm ba thành phần chính: Model, View, Controller.

 Model: chứa tất cả các class trong RoR, nó thể hiện mối quan hệ, sự ràng buộc giữa các đối tượng và cơ sở dữ liệu của hệ thống. Thông qua model có thể tạo ra các thuộc tính cho các bảng dữ liệu và mỗi một bảng trong cơ sở dữ liệu sẽ có một model tương ứng. RoR có sẵn thư viện Active Record cho phép ứng dụng tự động map các bảng tới các class trong controller và các hàng trong bảng đến các đối tượng.

 View: cho phép hiển thị thông tin tương tác với người dùng thông qua các file template có nhúng Ruby (.erb) như html.erb, js.erb. Ngoài ra RoR cũng có thể tạo ra các file XML, JSON, PDF tùy theo yêu cầu của người dùng.

 Controller: các lớp controllers trong RoR chịu trách nhiệm xử lý các yêu cầu HTTP bằng cách truy vấn vào các model dữ liệu và truyền các dữ liệu này lên view để thể hiện kết quả yêu cầu HTTP. Trong RoR, các lớp controller và view được giao tiếp với nhau thông qua mô đun Action pack.

Ngoài ra, RoR cũng sử dụng kiến trúc RESTful (Representational State Transfer) thay thế cho web services dựa trên SOAP và WSDL, nó hoạt động dựa trên các phương thức của HTTP: post, get, put, delete. RESTful trong RoR là các web service có tính chất phi trạng thái, băng thông bị giới hạn nên nó phù hợp cho các thiết bị mobile vì nó không sử dụng nhiều tài nguyên như là các giao thức khác như SOAP.

Việc RoR tuân thủ nghiêm ngặt mô hình MVC làm cho hệ thống đơn giản, dễ hiểu, dễ nâng cấp bảo trì. Kiến trúc RoR đã chấp nhận hy sinh sự mềm dẻo trong khai báo các file cấu hình bằng việc tuân theo những quy ước nhằm tận dụng khả năng hỗ trợ từ framework đảm bảo thuộc tính chất lượng cho hệ thống. Do vậy RoR phù hợp cho việc phát triển từ đầu các ứng dụng vừa và nhỏ, yêu cầu thời gian phát triển ngắn dễ bảo trì, dễ đọc hiểu. Đây chính là lý do vì sao tôi lựa chọn RoR để xây dựng các microservice trong SOML.

Docker

Docker là một công nghệ mã nguồn mở cung cấp các công cụ, dịch vụ để đóng gói một ứng dụng với tất cả các thành phần của nó vào một đơn vị tiêu chuẩn được gọi Container và cho phép chạy Container đó trên các môi trường

khác nhau4. Docker đã đưa ra một giải pháp mới cho việc ảo hóa đó là thay vì phải tạo ra các máy ảo (Virtual Machine) có sẵn tài nguyên (phần cứng ảo, hệ điều hành riêng) của nó bên trong để chạy các máy ảo này độc lập (kiểu hypervisors) thì các Container trong Docker sẽ được đóng gói riêng lẻ và cùng chia sẻ tài nguyên của máy chủ giúp các ứng dụng được đóng gói bằng Docker sẽ hoạt động nhẹ và nhanh hơn các máy ảo dạng hypervisors khác đang làm.

Docker bao gồm hai thành phần chính là Docker Engine và Docker Hub (Hình 2.9)

Hình 2.9. Các thành phần của Docker

 Docker Engine là thành phần chính của Docker, nó chứa các công cụ, các cơ chế để thực hiện việc đóng gói các ứng dụng thành các Container.

 Docker Hub là nơi quản lý và lưu trữ các Container đã được đóng gói (docker image) và cập nhật các docker image này sẽ được cập nhật và lưu trữ qua các thao tác pull/push các image.

Việc sử dụng Docker để đóng gói và ảo hoá các ứng dụng giúp ta tạo ra một môi trường linh động, nhất quán cho việc phát triển, vận hành một ứng dụng bất kỳ. Các ứng dụng sau khi đóng gói có thể chạy độc lập ở bất kỳ môi trường nào. Điều này rất phù hợp với các yêu cầu của một microservice trong kiến trúc microservices.

PostgreSQL

PostgreSQL là một hệ quản trị cơ sở dữ liệu quan hệ đối tượng được phát triển tại trường Đại học Califonia bởi phòng nghiên cứu máy tính Berkeley. PostgreSQL có thể thực hiện được rất nhiều tính năng lại dễ dàng quản lý vì

PostgreSQL có khung nhìn (12). Đặc biệt khi kết hợp PostgreSQL cho RoR có thể khiến cơ sở dữ liệu của hệ thống trở thành NoSQL, giúp tăng độ linh hoạt và hiệu suất của hệ thống. Điều này rất phù hợp để xây dựng các trang mạng xã hội có khả năng đáp ứng nhiều người dùng như SOML.

Nginx

Nginx là một máy chủ ủy nhiệm mã nguồn mở rất phổ biến hiện nay, nginx sử dụng các giao thức HTTP, HTTPS, SMTP, POP3 và IMAP. Nginx tập trung vào việc phục vụ số lượng kết nối đồng thời lớn với hiệu suất cao và sử dụng bộ nhớ thấp. Nginx được biết đến bởi sự ổn định cao, nhiều tính năng, cấu hình đơn giản và tiết kiệm tài nguyên (13).

Amazon web services (AWS)

AWS là các dịch vụ được cung cấp bởi Amazon cho phép cung cấp tài nguyên (resource) và các tính toán (computing) để xây dựng, vận hành các ứng dụng một cách nhanh chóng với chi phí dùng bao nhiêu trả bấy nhiêu (pay-as- you-go)5.

Một phần của tài liệu Phát triển phần mềm dựa trên microservices (Trang 31 - 34)