text:
Hãy tưởng tượng bạn có một ứng dụng web mà bạn đang bán trên thị trường. Bạn thấy rõ những dấu hiệu báo trước sự thua lỗ của ứng dụng đó và nhận ra rằng mẫu hình Phần mềm là dịch vụ (SaaS) trên một cơ sở hạ tầng đám mây là cách mà ngành này phải hướng tới. Bạn biết bạn cần nó và các khách hàng của riêng bạn có thể cũng gây áp lực, muốn bạn cung cấp một phiên bản SaaS của sản phẩm.
Thách thức là thực hiện chuyển đổi sang SaaS một cách nhanh chóng, hiệu quả, và theo cách sao cho sẽ duy trì hoặc nâng cao lợi nhuận của bạn.
Có nhiều sự khác biệt phải được tính đến cho một ứng dụng SaaS so với một ứng dụng web thông thường. Một số trong đó là kỹ thuật và một số khác có liên quan đến sự thay đổi trong mô hình kinh doanh mà một công ty phải thích ứng khi phân phối SaaS.
Ứng dụng web điển hình so với SaaS
Đặc trưng trọng tâm xác định một SaaS là khả năng cho phép khách hàng sử dụng một ứng dụng phần mềm trên cơ sở thuê bao dùng đến đâu trả đến đó. Họ không phải mua giấy phép dùng phần mềm và thu xếp để cài đặt, lưu trữ trên máy chủ và quản lý nó. Những khía cạnh vận hành ấy là trách nhiệm của tổ chức cung cấp ứng dụng SaaS.
Nhiều bên thuê là chìa khóa để SaaS thành công
Mặc dù khả năng cho đăng ký thuê bao một ứng dụng là điều kiện tối thiểu để đáp ứng tiêu chuẩn cơ bản của SaaS, nhưng trong thực tế điều này là chưa đủ. Trong thực tế, một ứng dụng SaaS cũng phải là một ứng dụng nhiều bên thuê.
Điều này là do các nhân tố suy cho cùng, đơn giản chỉ là kinh tế. Các CEO của các công ty SaaS hàng đầu đồng ý, không thể phát triển một doanh nghiệp SaaS mà không có nhiều bên thuê. (Xem phần bên cạnh).
Nhiều bên thuê là mức hiệu quả đối với SaaS
Tác động chính mang lại hiệu quả xuất phát từ nhiều bên thuê, khả năng giành chỗ cho nhiều người dùng ứng dụng khác nhau, đồng thời làm cho từng người dùng cảm thấy toàn bộ ứng dụng đó là dành tất cả cho họ. Chúng ta quen với khái niệm này khi áp dụng nó cho những người dùng cá nhân trên một hệ thống, nhưng nó hơi khác trong môi trường SaaS. Trong một ứng dụng SaaS doanh nghiệp điển hình, những người dùng là các nhóm nhân viên của một tổ chức cụ thể và tổ chức đó được gọi là bên thuê. Điều này là tương tự như những gì bạn sẽ thấy trong một ứng dụng web đơn giản, nếu tổ chức đó mua ứng dụng; họ sẽ có một nhóm các nhân viên là những người dùng ứng dụng và tổ chức này sẽ là chủ sở hữu. Trong một mô hình SaaS, tổ chức là một bên thuê, không phải là một chủ sở hữu, nhưng các nhóm nhân viên vẫn là những người dùng. Mỗi người dùng có một sự liên kết với một bên thuê (tổ chức) cụ thể và SaaS mang lại cho mỗi bên thuê những trải nghiệm như đang sở hữu bản sao ứng dụng riêng của mình, để người dùng của họ có thể sử dụng.
Ảo hóa trong các đám mây thúc đẩy SaaS
Sự khác biệt giữa một ứng dụng web đơn giản và một ứng dụng SaaS chạy được với đám mây bao gồm hai trong số các tính năng về tận dụng khả năng lớn nhất trong lĩnh vực công nghệ thông tin hiện nay:
- Nhiều bên thuê (đã được giới thiệu trước).
- Sự ảo hóa phần cứng.
Trong khi nguồn gốc chính mang lại hiệu quả của ứng dụng là do khả năng nhiều bên thuê trong kiến trúc ứng dụng, thì tác động thứ hai mang lại hiệu quả lại đến từ sự ảo hóa phần cứng. Đám mây thực hiện tốt việc tận dụng giá trị nhờ làm tăng tỷ lệ phần trăm sử dụng một số lượng phần cứng đã cho bằng cách dùng công nghệ ảo hóa để làm giảm khả năng không sử dụng, mà điều đó chỉ có được khi sử dụng cách tiếp cận máy tính vật lý của trung tâm dữ liệu thông thường.
Ngoài ra, đám mây còn mang lại khả năng phân phối lại phần cứng một cách động cho ứng dụng tùy theo nhu cầu về tài nguyên. Tính co giãn này, có thể trong ngắn hạn (phút) hoặc dài hạn (tháng), giúp tách các quyết định về phần cứng ra khỏi từng ứng dụng đơn lẻ, mở rộng phạm vi quyết định đối với một lượng lớn các ứng dụng, làm cho sự biến thiên từ tốn hơn và làm cho việc đầu tư về phần cứng trở nên có thể dự báo được và dễ quản lý hơn.
Bây giờ chúng ta hãy xem xét toàn bộ các bước chung mà bạn cần thực hiện để chuyển đổi một ứng dụng web truyền thống thành một ứng dụng chạy được trên SaaS.
Chuyển đổi các ứng dụng web thành SaaS
Để chuyển đổi ứng dụng web của bạn thành ứng dụng SaaS bạn phải làm bảy việc sau:
- Ứng dụng phải hỗ trợ nhiều bên thuê.
- Ứng dụng phải có một số mức tự đăng ký dịch vụ.
- Phải có cơ chế thuê bao/tính cước hiện hành.
- Ứng dụng phải có khả năng mở rộng một cách hiệu quả.
- Phải có các chức năng hiện hành để theo dõi, cấu hình và quản lý ứng dụng và những bên thuê.
- Phải có một cơ chế hiện hành để hỗ trợ nhận dạng và xác thực người dùng duy nhất.
- Phải có một cơ chế hiện hành để hỗ trợ một số mức tuỳ chỉnh cho từng bên thuê.
Hãy xem xét từng việc chi tiết hơn một chút.
Hỗ trợ nhiều bên thuê
Nhiều bên thuê là nhân tố then chốt quyết định hiệu quả SaaS. Thông thường một ứng dụng hỗ trợ nhiều người dùng, nhưng với giả định rằng tất cả người dùng ấy trong cùng một tổ chức. Mô hình này là ổn cho thế giới trước SaaS, ở đó một tổ chức sẽ mua một ứng dụng phần mềm để cho các thành viên của nó sử dụng. Nhưng trong thế giới của SaaS và đám mây, nhiều tổ chức sẽ cùng sử dụng ứng dụng đó; tất cả họ phải có khả năng cho phép tất cả những người dùng của mình cùng truy cập nó, nhưng ứng dụng phải cho phép chỉ từng thành viên của riêng tổ chức đó truy cập dữ liệu dành cho tổ chức của họ.
Chính khả năng có nhiều tổ chức (gọi là những bên thuê theo thuật ngữ của SaaS) này, cùng tồn tại trên cùng một ứng dụng mà không làm ảnh hưởng đến sự an toàn dữ liệu của các tổ chức đó, xác định ứng dụng đó là một ứng dụng nhiều bên thuê.
Có vài mức nhiều bên thuê (như đã thấy trong hình vẽ sau danh sách này):
- Ẩo hóa đơn giản trong đám mây, ở đó chỉ chia sẻ phần cứng..
- Một ứng dụng với các cơ sở dữ liệu riêng biệt cho từng bên thuê.
- Một ứng dụng và cơ sở dữ liệu được chia sẻ (hiệu quả cao nhất, nhiều bên thuê thực sự).
Các mô hình nhiều bên thuê
Người ta có thể biện luận rằng mô hình đầu tiên là không thực sự nhiều bên thuê chút nào, nhưng nó thường được sử dụng trong một đám mây có các máy chủ ảo hóa và được quảng cáo như là một dạng nhiều bên thuê. Trong thực tế, điều này chưa đủ, và chỉ có lợi thế rất nhỏ so với mô hình ASP cũ có phần cứng dành riêng.
Mức hiệu quả nhất là trong đó ứng dụng hoàn toàn chia sẻ một cơ sở dữ liệu và logic nghiệp vụ ứng dụng. Đạt được điều này có thể là một quá trình khó khăn đòi hỏi nhiều thay đổi trong lược đồ cơ sở dữ liệu để thêm một mã định danh bên thuê vào mỗi bảng và khung nhìn, cũng như viết lại mọi truy cập SQL để thêm tiêu chí bên thuê cho các bộ lọc. Việc thiếu một đoạn trong mã nguồn ở nơi cần phải có, có thể ảnh hưởng đến sự an toàn dữ liệu của ứng dụng.
Ngoài các trường hợp truy cập dữ liệu xảy ra trong ứng dụng, có thể có các ứng dụng khác như là các trình viết báo cáo hoặc các ứng dụng tiện ích cũng phải được sửa đổi để bao gồm việc lọc bên thuê cần thiết để giữ cho dữ liệu của những bên thuê riêng biệt chỉ có thể truy cập được bởi những bên thuê cụ thể đó. Loại truy cập không trực tiếp từ bản thân ứng dụng sẽ nảy sinh ra các vấn đề cần phải được kiểm soát. Nếu bất kỳ người dùng có thẩm quyền nào đó có thể viết một báo cáo, thì cần phải ngăn chặn họ không truy cập vào dữ liệu không thuộc về bên thuê mà họ là thành viên của nó.
Tự đăng ký dịch vụ
Ứng dụng của bạn phải có sẵn một số mức tự đăng ký dịch vụ, thậm chí nếu nó chỉ đơn giản là một cơ chế yêu cầu dẫn đến một quy trình nghiệp vụ để thêm một bên thuê vào ứng dụng.
Thuê bao và tính cước
Bạn phải đưa ra một cơ chế thuê bao và tính cước. Do các ứng dụng SaaS theo thiết kế liên quan đến một loạt các khoản thanh toán dựa trên các yếu tố như số lượng người dùng cho mỗi bên thuê, các tùy chọn ứng dụng, và có lẽ cả khoảng thời gian sử dụng, nên phải có một cách để theo dõi và quản lý việc sử dụng ứng dụng và tạo ra các thông tin tính cước để cho các nhà quản trị của bên thuê có thể truy cập.
Mở rộng và quản lý ứng dụng
Bạn phải có khả năng mở rộng khi các thuê bao phát triển. Cơ sở hạ tầng đám mây là một cách hợp lý để làm điều này vì nó thể hiện nhiều khả năng mà bạn sẽ cần để mở rộng năng suất và hiệu quả.
Ngoài ra, bạn phải cung cấp chức năng quản trị và quản lý ứng dụng để theo dõi, cấu hình và quản lý ứng dụng và tất cả những bên thuê.
Mã định danh (ID) người dùng và xác thực
Bạn cần phải cung cấp một cơ chế để hỗ trợ định danh người dùng và xác thực cho phép nhận dạng duy nhất những người dùng. Vì khả năng nhiều bên thuê đòi hỏi tất cả những người dùng đăng nhập vào hệ thống được nhận dạng để xác định xem họ thuộc về bên thuê nào, phải có một mối quan hệ đáng tin cậy để cho phép những người dùng được nhận dạng thuộc về một bên thuê cụ thể. Mối quan hệ người dùng-của-bên thuê là thông tin then chốt được sử dụng để hạn chế dữ liệu mà người dùng có thể truy cập.
Các địa chỉ email là một cách điển hình để làm điều này sao cho tính duy nhất được bảo đảm và có thể công nhận và xác định các cá nhân là thuộc về một bên thuê cụ thể.
Có nhiều cơ chế xác thực và các phương thức tích hợp với chúng, vì vậy một cơ chế linh hoạt để cho phép một người dùng được nhận dạng là điều căn bản nhất. Thông thường là một bên thuê cụ thể cần có khả năng sử dụng dịch vụ LDAP hiện có của họ hoặc dịch vụ danh mục hoặc một cơ chế xác thực khác để hỗ trợ đăng nhập một lần vào ứng dụng SaaS. Mặc dù loại hình xác thực người dùng từ bên ngoài này là quan trọng, nhưng việc xác minh người dùng đã định danh là một thành viên của bên thuê mà họ tuyên bố, vẫn là trách nhiệm của ứng dụng SaaS.
Tùy chỉnh cho mỗi bên thuê
Bạn phải đưa ra một cơ chế để hỗ trợ một mức tuỳ chỉnh cơ bản cho mỗi bên thuê để họ có thể có một URL duy nhất, trang đích đến, các biểu trưng, lược đồ màu sắc, phông chữ, và có lẽ cả ngôn ngữ nữa.
Người ta hy vọng nhận được mức cơ bản này của cấu hình cho mỗi bên thuê, nhưng để thực sự đáp ứng các nhu cầu của nhiều bên thuê, thì đó chắc chắn sẽ là một nhu cầu tùy chỉnh cho mỗi bên thuê muốn đi sâu hơn các mức cơ bản.
Các tùy chỉnh tiêu biểu cần thiết cũng tương tự như loại các tùy chỉnh mà bên thuê thực hiện với một phiên bản nội bộ của ứng dụng. Chúng có thể bao gồm việc thêm các trường bổ sung hoặc thậm chí là các bảng, thiết lập logic nghiệp vụ đặc biệt, hoặc tích hợp với ứng dụng khác. Việc có khả năng thực hiện các loại tùy chỉnh này trên cơ sở cho mỗi bên thuê mà không phải thiết lập một trường hợp riêng biệt có ảnh hưởng đến hiệu quả của thiết kế nhiều bên thuê là dấu hiệu chất lượng của kiến trúc SaaS có khả năng cao.
Các vấn đề hiệu năng cần xem xét
Các vấn đề hiệu năng đối với các ứng dụng SaaS nhiều bên thuê thường cũng giống như đã thấy với ứng dụng web bất kỳ đang cung cấp cùng số lượng người dùng với cùng một mức độ hoạt động. Có nhiều cách làm thực tế tốt nhất để đối phó với nhu cầu về khả năng ngày càng tăng trong các ứng dụng web, nói chung tất cả những cách này đều có khả năng áp dụng cho các ứng dụng SaaS nhiều bên thuê. Những kỹ thuật này thường bao gồm việc mở rộng theo chiều ngang và theo chiều dọc và cân bằng tải trên một tập hợp các máy chủ.
Mở rộng theo chiều ngang/dọc
Các khả năng của cơ sở hạ tầng đám mây đưa ra nhiều cơ hội để làm cho kiểu khả năng mở rộng này xảy ra động và theo một cách tự động, để cung cấp tài nguyên khi cần thiết và thu gọn bớt tài nguyên khi có thể đáp ứng các thỏa thuận mức dịch vụ hiệu năng (SLAs) với ít tài nguyên hơn. Khả năng co giãn là một cái gì đó có thể được điều chỉnh để đáp ứng theo cách chính xác cần thiết để cung cấp các dịch vụ mà không cần cung cấp thêm tài nguyên vẫn chưa khai thác hết:
- Việc mở rộng theo chiều ngang thường được áp dụng cho tầng máy chủ ứng dụng.
- Việc mở rộng theo chiều dọc thường được áp dụng cho tầng cơ sở dữ liệu.
Phân cụm cơ sở dữ liệu
Với các ứng dụng SaaS, tổng số người dùng có thể rất cao đối với một sản phẩm thành công; có lúc việc mở rộng cơ sở dữ liệu theo chiều dọc có thể không phải là giải pháp tối ưu. Nhiều công nghệ cơ sở dữ liệu có khả năng cung cấp một mô hình cơ sở dữ liệu có phân cụm cho phép tạo ra nhiều khả năng hơn với cùng một cơ sở dữ liệu. DB2® có một số tùy chọn hoạt động tốt với mô hình này và có thể sử dụng chúng để tạo ra một cụm cơ sở dữ liệu.
Vị trí địa lý, phân vùng, và đồng bộ hóa
Tuy nhiên có các kỹ thuật khác có thể thích hợp hơn tùy thuộc vào ứng dụng SaaS và quần thể người sử dụng nó. Do SaaS vốn có khả năng truy cập từ bất cứ đâu trên thế giới, nên quần thể người sử dụng có thể ở rất xa; khoảng cách này có thể gây ra những suy giảm hiệu năng do cấu trúc mạng quá dài.
Trong những trường hợp này sẽ có thể có lợi thế hơn nếu sử dụng các đám mây ở các vùng khác nhau và phân vùng dữ liệu hoặc đồng bộ hóa sử dụng để duy trì tính nhất quán. Tùy chọn nào trong các tùy chọn này là thích hợp sẽ phụ thuộc vào bản chất của ứng dụng cụ thể. Một số ứng dụng sẽ không tuân theo những sự đồng bộ hóa đường dài.
Cơ sở dữ liệu riêng biệt
Tất nhiên, phương thức triệt để nhất (ít nhất cho một ứng dụng SaaS) để áp dụng khi khả năng của cơ sở dữ liệu không thể đáp ứng các yêu cầu là thiết lập một cơ sở dữ liệu riêng biệt. Bất cứ ai cần một ứng dụng SaaS nhiều bên thuê đều phải xem xét xem tùy chọn này có thể dẫn đến tình trạng không duy trì được sự hỗ trợ một cơ sở dữ liệu cho mỗi bên thuê hay không, điều trực tiếp dẫn đến kiểu thiếu khả năng mà nhiều bên thuê cần phải tránh.
Và nếu các máy chủ ứng dụng phải được phân chia để phục vụ chỉ một cơ sở dữ liệu, thì những hiệu quả do nhiều bên thuê tiếp tục bị suy giảm dần. Trong một thị trường cạnh tranh, các hiệu quả nhiều bên thuê là những yếu tố thành công trọng yếu đối với các công ty SaaS.
Thiết kế cứu giúp năng lực cân bằng tải
Một cách để duy trì hiệu quả cao nhất có thể, ngay cả khi cần phải sử dụng các cơ sở dữ liệu riêng biệt vì bất cứ lý do gì, là phải có một thiết kế nhiều bên thuê có thể cho phép bất kỳ máy chủ ứng dụng nào trong cụm cân bằng tải truy cập vào một cơ sở dữ liệu thích hợp khi có nhiều cơ sở dữ liệu. Bằng cách này có thể duy trì hiệu quả của cụm cân bằng tải với tất cả các máy chủ ứng dụng có khả năng kết nối tới bất kỳ cơ sở dữ liệu nào để phục vụ các phiên làm việc của người dùng mà chúng đang hỗ trợ. Điều này duy trì mức hiệu quả cao nhất với ràng buộc nhiều cơ sở dữ liệu.
Khả năng không phải là yêu cầu duy nhất
Có thể có các lý do chính đáng để có nhiều cơ sở dữ liệu, bên cạnh lý do về khả năng, chẳng hạn như yêu cầu về một phiên bản cơ sở dữ liệu có mã hóa cho những bên thuê cần mức an toàn cao. Có thể khả năng không phải là vấn đề, vì vậy điều quan trọng là có một thiết kế nhằm tối đa hóa hiệu quả ở nơi có thể, ngay cả khi phải dùng một mô hình vốn đã kém hiệu quả.
Các vấn đề an toàn cần xem xét
Trong nhiều cuộc khảo sát liên tiếp, an toàn thường được liệt kê như là mối quan tâm cao nhất của các thuê bao truy cập vào các ứng dụng SaaS, hoặc ít nhất cũng là rất gần mức cao nhất. Không một nhà cung cấp SaaS nào có thể bỏ qua vấn đề an toàn. Nhưng thông thường, khái niệm về an toàn dữ liệu chỉ được xem xét trong bối cảnh của chính ứng dụng SaaS.
Hầu hết các kiến trúc ứng dụng SaaS có các biện pháp bảo mật dữ liệu nhằm ngăn chặn không cho bên thuê này nhìn thấy dữ liệu của bên thuê khác là một yêu cầu cơ bản. Nhưng:
- Một khả năng quan trọng mà các ứng dụng SaaS phải có là tích hợp và tương tác với các ứng dụng khác.
- Một số trong những ứng dụng khác đó có thể là các ứng dụng bên ngoài (nhà cung cấp SaaS không kiểm soát được).
- Không phải tất cả các kiến trúc SaaS được thiết kế có tính đến khả năng truy cập dành cho các ứng dụng bên ngoài.
Những ứng dụng khác đó có thể là các ứng dụng nội bộ cần truy cập hoặc chia sẻ dữ liệu; chúng có thể là những công cụ phân tích và viết báo cáo, khai phá dữ liệu phát hiện các xu hướng. Ngay cả các công cụ tiện ích được các nhà quản trị cơ sở dữ liệu sử dụng cũng có thể liên quan đến vấn đề an toàn nếu những bên thuê có thể sử dụng chúng để truy cập, hoặc tệ hơn, thao tác các dữ liệu không thuộc về họ.
Một kiến trúc thực tế tốt nhất cho SaaS phải tính đến việc là không phải tất cả các truy cập dữ liệu có thể nằm dưới sự kiểm soát của ứng dụng; phải có cơ chế tại chỗ để cho phép dữ liệu được bảo vệ cho mỗi bên thuê bất kể là việc truy cập thông qua ứng dụng SaaS hoặc thông qua một ứng dụng bên ngoài nào đó.
Chọn chồng công nghệ của bạn
Luôn luôn có các thỏa hiệp khi bạn ra quyết định về các chồng công nghệ; trong một ứng dụng SaaS điều này đặc biệt đúng bởi vì các quyết định được đưa ra cho tất cả những bên thuê. Chúng ta hãy xem xét một số trong những lưu ý nàys.
Những lưu ý về hệ điều hành
Hệ điều hành trong các ứng dụng web chắc là có liên quan ít nhất đến những người dùng vì sự tương tác của họ là thông qua trình duyệt. Tuy nhiên, có những lưu ý về tài chính cũng như kỹ thuật có thể cần tính đến:
- Nếu có một phần phụ thuộc của một mã nguồn cụ thể nào đó là lệ thuộc vào hệ điều hành, thì sự lựa chọn bị hạn chế.
- Các lựa chọn cũng có thể bị hạn chế nếu có một nhu cầu chung về tích hợp với các ứng dụng bên ngoài và việc tích hợp này được thực hiện tốt trên một hệ điều hành nào đó hơn là trên những cái khác.
Quy luật kinh tế khắc nghiệt của đám mây sẽ luôn luôn thúc đẩy sự lựa chọn hướng đến một hệ điều hành có phí giấy phép thấp hơn và hiệu năng tốt. Các biện pháp chính mở rộng các ứng dụng web bao gồm việc mở rộng theo chiều ngang; điều này có nghĩa là khi ứng dụng SaaS phát triển, tổng số các cá thể máy chủ ứng dụng web sẽ tăng lên và đó là chi phí hoạt động trực tiếp.
Những lưu ý về cơ sở dữ liệu
Cơ sở dữ liệu trong các ứng dụng web chắc cũng không phải là một mối quan tâm trọng yếu của những người dùng cuối vì sự tương tác của họ là thông qua trình duyệt và miễn là các ứng dụng có khả năng lưu trữ và lấy ra dữ liệu của họ, phần lớn là không liên quan đến họ.
Một lần nữa, những lưu ý về tài chính và kỹ thuật đụng đến các nhà phát triển ứng dụng. Nếu có sự phụ thuộc của ứng dụng vào các tính năng cụ thể của một cơ sở dữ liệu, thì sự lựa chọn bị hạn chế.
Việc lựa chọn cơ sở dữ liệu có thể rất quan trọng đối với một số lý do thiết kế ứng dụng và nó cũng có thể bị ảnh hưởng vì các yêu cầu cụ thể của môi trường SaaS.
Các yêu cầu về cơ sở dữ liệu trong một ứng dụng SaaS là cao hơn, đơn giản là do số lượng người dùng, những người cuối cùng sẽ ở trên mạng; vì thế khả năng mở rộng cơ sở dữ liệu rất quan trọng. Khả năng mở rộng cơ sở dữ liệu thường được thực hiện trên một cá thể duy nhất với việc sử dụng các máy chủ cơ sở dữ liệu càng ngày càng mạnh hơn cho ứng dụng có yêu cầu ngày càng cao. Tuy nhiên, khả năng mở rộng cần phải có của các ứng dụng SaaS có tiềm năng vượt xa các khả năng mở rộng theo chiều dọc, vì vậy bước tiếp theo trong khả năng mở rộng cơ sở dữ liệu liên quan đến việc có khả năng phân cụm.
Khả năng để thực hiện kiểu phân cụm này trong môi trường đám mây có thể ảnh hưởng đến việc lựa chọn cơ sở dữ liệu. Ví dụ, có thể lựa chọn DB2 vì khả năng chạy trên nhiều hệ điều hành, cung cấp khả năng mở rộng theo chiều dọc và vì sự linh hoạt của nó về các lựa chọn cho khả năng mở rộng thông qua phân cụm nhiều cá thể và dự phòng. Ví dụ, có thể thiết lập một cụm DB2 HADR (Khôi phục sau sự cố có tính sẵn sàng cao) trong đám mây.
Những lưu ý về máy chủ ứng dụng
Việc lựa chọn máy chủ ứng dụng, giống như các quyết định khác về chồng công nghệ, cũng chủ yếu là một quyết định của nhà phát triển ứng dụng SaaS, bởi vì các tương tác của người dùng cuối chỉ thông qua trình duyệt. Nhưng có thể có những sự khác biệt quan trọng đối với một số lý do thiết kế ứng dụng và nó cũng có thể bị ảnh hưởng vì các yêu cầu riêng biệt của môi trường SaaS.
Các ứng dụng lợi dụng các tính năng đặc biệt hoặc các thành phần bổ sung thêm của các máy chủ ứng dụng như WebSphere® sẽ cần phải sử dụng máy chủ ứng dụng đó trong đám mây.
Các lý do cơ bản để lựa chọn một máy chủ ứng dụng thường phải quyết định sớm, ngay đầu vòng đời của ứng dụng vì ứng dụng có thể lợi dụng một số tính năng đặc biệt hoặc những bổ sung thêm của bên thứ ba hoặc các khả năng tích hợp quan trọng cho ứng dụng. Đôi khi chỉ đơn giản là tri thức chuyên gia của tổ chức và các tiêu chuẩn nội bộ áp đặt phải sử dụng các thành phần cụ thể nào đó của chồng công nghệ.
Điểm quyết định trong việc lựa chọn và cấu hình chồng công nghệ để sử dụng trong một môi trường SaaS/đám mây là việc cân bằng các ảnh hưởng kỹ thuật và kinh tế để đạt được một kết quả tốt.
Tính linh hoạt là chìa khóa để phát triển công nghệ
Việc có thể đưa ra các quyết định và những đánh đổi trong sử dụng chồng công nghệ và việc có thể xem xét lại những quyết định đó sau này là một khả năng đáng giá trong kiến trúc SaaS. Do các thay đổi về công nghệ, các nhà cung cấp đám mây hàng đầu sẽ kết hợp các ứng dụng trung gian mới và các khả năng mới và việc có thể thích ứng tiếp nhận chúng cho ứng dụng SaaS của bạn chính là một lợi thế.
Các kiến trúc ứng dụng SaaS mà buộc bạn đưa ra các quyết định sẽ khóa chặt bạn vào một chồng công nghệ cụ thể sẽ làm phương hại đến khả năng phát triển và thích ứng của một ứng dụng SaaS. Các khái niệm then chốt của một kiến trúc hướng dịch vụ rất hợp với việc cung cấp sự nhanh nhẹn và tính linh hoạt cần thiết cho các ứng dụng SaaS. Việc ghép lỏng tạo ra tính linh hoạt và tính linh hoạt lại cho phép phát triển chiến lược và chiến thuật.
Trong phần còn lại của bài viết này, tôi sẽ được sử dụng Corent's Multi-Tenant Server™ (Máy chủ nhiều bên thuê của Corent) để đưa ra một ví dụ về cách bạn có thể chuyển đổi một ứng dụng web mã nguồn mở Java™ để tính cước thành một phiên bản SaaS nhiều bên thuê với nỗ lực ít nhất.
Chuyển thành ứng dụng SaaS tự động bằng Corent's Multi-Tenant Server
Các nhà cung cấp đám mây đưa ra một dải rộng các khả năng và có thể cung cấp hầu hết ứng dụng web bất kỳ. Để chuyển đổi một ứng dụng thành ứng dụng SaaS nhiều bên thuê một cách đầy đủ thường đòi hỏi những thay đổi rất lớn về mã ứng dụng và thiết kế lại và cấu hình lại cơ sở dữ liệu.
Corent's Multi-Tenant Server cho phép các ISV (nhà cung cấp phần mềm độc lập) thực hiện các cách tiếp cận khác nhau, bằng cách sử dụng một tầng trung gian để cung cấp tính năng nhiều bên thuê trọng yếu (do đó bảo toàn được khoản đầu tư vào mã hiện có). Tôi sẽ mô tả bốn bước cần thiết để chuyển đổi jBilling, một ứng dụng web Java mã nguồn mở phổ biến, là đại diện của một ứng dụng một bên thuê điển hình, thành một phiên bản SaaS nhiều bên thuê.
Bước 1. Chuyển đổi lược đồ cơ sở dữ liệu sang một mô hình trừu tượng
Chồng công nghệ điển hình của một ứng dụng web trông giống như Hình 1; một ứng dụng giao tiếp với một cơ sở dữ liệu, thường là thông qua một tầng lưu giữ dữ liệu lâu bền như Hibernate.
Hình 1. Chồng ứng dụng web điển hình trong đám mây
Để biến đổi một ứng dụng thành một ứng dụng nhiều bên thuê, cơ sở dữ liệu phải được thiết kế lại để có thêm các trường để quản lý dữ liệu nhận dạng bên thuê, sẽ cần thiết để cho phép bên thuê lọc dữ liệu.
Ứng dụng SaaS-Factory™ (Nhà máy SaaS) được sử dụng để đọc lược đồ
của cơ sở dữ liệu ứng dụng hiện có. Sau đó nó tạo ra một mô hình của cơ sở
dữ liệu đó rồi sử dụng nó để tạo ra một cơ sở dữ liệu mới trong MySQL có
thêm trường
TenantID trong các bảng. Tại thời
điểm này một số bảng bổ sung thêm được tạo ra, trong đó có một bảng chứa
thông tin bên thuê mà Multi-Tenant Server sử dụng.
Hình 2. Tạo lược đồ cơ sở dữ liệu siêu mô hình
Vì Cơ sở dữ liệu siêu mô hình (MetaModel Database) trông giống như cũ đối
với ứng dụng ban đầu, cũng có chính các bảng và các trường như thế, nên
ứng dụng ban đầu có thể tiếp tục tương tác với Cơ sở dữ liệu siêu mô hình
chính xác giống như nó đã làm với cơ sở dữ liệu MySQL. Có thể tạo ra cơ sở
dữ liệu thực ở dưới mô hình này với các trường
TenantID bổ sung cần thiết cho một ứng dụng
nhiều bên thuê.
Cơ sở dữ liệu siêu mô hình chỉ là trừu tượng hóa và không thực sự lưu giữ bất kỳ dữ liệu nào: Nó chỉ đơn giản là một mô hình. Do đó, khi cơ sở dữ liệu thực được tạo ra, không có lý do nào để không thể tạo ra nó trong bất kỳ Hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) được hỗ trợ nào. Điều này có thể có ích đối với các trường hợp ở đó các ISV đã muốn thay đổi chồng công nghệ bằng cách chọn một RDBMS khác, có thể là DB2 để tận dụng một số tính năng hay hiệu năng tốt hơn cho các ứng dụng của chúng.
Bước 2. Mở rộng quá trình xác thực người dùng
Bất kỳ ứng dụng SaaS nhiều bên thuê nào cũng phải có khả năng quản lý các thông tin phiên làm việc cần thiết của những người sử dụng đã xác thực để có thể xác định người sử dụng ấy thuộc bên thuê nào. Có nhiều phương pháp xác thực cho các ứng dụng; do đó bất kỳ ứng dụng nào được chuyển đổi cũng phải được phân tích và phải hiểu rõ về các phương thức xác thực của nó.
Bước 1 đã giới thiệu cho các bạn cách thiết lập một bảng các bên thuê và
thêm một bảng người dùng sao cho mối quan hệ này có thể được duy trì trong
dữ liệu của ứng dụng. Mục đích là để thực hiện một phương thức sẽ mở rộng
quá trình xác thực người dùng ứng dụng để cho khi một người dùng đăng nhập
vào, anh ta cũng khớp với bên thuê tương ứng của mình và
TenantID trở thành một phần của thông tin phiên
làm việc.
Có nhiều cách để thực hiện điều này, nó phụ thuộc vào việc triển khai thực
hiện ứng dụng. Nếu sử dụng Tomcat như là thùng chứa servlet của ứng dụng,
thì có thể sử dụng việc xác thực do thùng chứa quản lý để khởi đầu một quy
tắc nghiệp vụ chạy trong Máy chủ nhiều bên thuê (Multi-Tenant Server) để
thực hiện tra tìm
TenantID của người sử dụng.
Ngoài ra, có thể sử dụng một bộ lọc servlet để phát hiện và sau đó thiết
lập biến cục bộ luồng
TenantID. Với ví dụ
jBilling này, ứng dụng xử lý việc xác thực trực tiếp bằng cách xác nhận
hợp lệ dựa vào các bảng người dùng của nó. Vì vậy phương thức được sử dụng
để cung cấp xác thực nâng cao đã có một số thay đổi đơn giản về mã xác
thực để thêm vào quá trình tra tìm kiếm thông tin bên thuê của người dùng
được lưu trữ trong các bảng mới.
Nhờ việc người dùng đã được xác thực và biết được
TenantID mà họ thuộc về, nên đã có đầy đủ thông
tin để có thể lọc dữ liệu sao cho chỉ có dữ liệu thuộc về bên thuê đó mới
có thể truy cập được.
Bước 3. Cấu hình kết nối cơ sở dữ liệu
Máy chủ nhiều bên thuê của Corent được xây dựng trên một kiến trúc hướng dịch vụ, sử dụng Cơ sở dữ liệu siêu mô hình (MetaModel Database - đã mô tả trong Bước 1). Đây là một tầng trừu tượng để mô hình hóa cơ sở dữ liệu ban đầu của ứng dụng và các giao tiếp cơ sở dữ liệu của ứng dụng được chuyển hướng đến siêu mô hình trừu tượng thay vì triển khai cơ sở dữ liệu thực tế. Điều này được thực hiện bằng cách chỉ cần cấu hình lại kết nối JDBC của jBilling để truy cập vào Cơ sở dữ liệu siêu mô hình thay vì cơ sở dữ liệu MySQL thực tế. Đối với các ứng dụng sử dụng Hibernate, cần cấu hình nhánh ngôn ngữ Corent của Hibernate.
Do những thay đổi này, các cuộc gọi cơ sở dữ liệu của ứng dụng bây giờ
được hướng tới Cơ sở dữ liệu siêu mô hình. Các sự kiện SQL này bị chặn bởi
Trình điều khiển lanh lẹn của Corent (Corent Agile Controller™) và
sau đó chuyển tới Trình kết nối cơ sở dữ liệu lanh lẹn (Corent's
ADBC™-Agile DataBase Connector). của Corent. ADBC nhận câu lệnh SQL
mà ứng dụng gửi tới Cơ sở dữ liệu siêu mô hình và phân tích cú pháp nó,
sau đó bổ sung thêm các tiêu chí lọc TenantID của người dùng trong phiên
làm việc đã gửi câu lệnh SQL ấy (ví dụ, ở đây
TenantID = <myTenantID>). Điều này đảm
bảo rằng sự an toàn của dữ liệu trong cơ sở dữ liệu chia sẻ chung luôn
được duy trì nghiêm ngặt. Ngay cả khi một ứng dụng bên ngoài như
ReportWriter (Trình viết báo cáo) kết nối tới, dữ liệu mà nó có thể nhìn
thấy vẫn bị hạn chế trong những dữ liệu thích hợp cho bên thuê đó. Vì
chúng ta biết người đang đăng nhập là ai, bất kể từ ứng dụng nào, chúng ta
biết họ thuộc về bên thuê nào và các bộ lọc thích hợp được áp dụng.
Vì việc xử lý các câu lệnh SQL được thực hiện sau khi chúng được gửi tới Cơ sở dữ liệu siêu mô hình và bên thuê của người sử dụng đã biết nên Trình điều khiển lanh lẹn của Corent có thể chặn và thực hiện các hoạt động tinh vi hơn, bao gồm việc tra tìm các quy trình xử lý và các cấu hình của bên thuê cụ thể. Do đó, có thể thực hiện các hành động đặc thù tùy theo mỗi bên thuê, thậm chí thay thế một kết nối cơ sở dữ liệu khác sao cho một bên thuê có thể sử dụng một cơ sở dữ liệu DB2 mặc dù tất cả những bên thuê khác đang sử dụng cơ sở dữ liệu MySQL. Hoặc một bên thuê có thể thêm thao tác SQL để hạn chế dữ liệu mà họ có thể lấy ra trong số các bản ghi đã nhập không quá 90 ngày trước đó. Tất cả các tùy chỉnh cho mỗi bên thuê này có thể được thực hiện thông qua một Máy quy tắc lanh lẹn (Agile Rules Engine™) được xây dựng trong Máy chủ nhiều bên thuê mà không cần bất kỳ các thay đổi nào với mã ứng dụng ban đầu.
Hình 3. Cấu trúc các tùy chỉnh cho mỗi bên thuê
Toàn bộ việc chuyển đổi ứng dụng jBilling được hoàn tất với chỉ một vài thay đổi nhỏ với ứng dụng, chủ yếu là liên quan đến việc cải tiến xác thực để bao gồm thêm các thông tin bên thuê vào trong thông tin phiên làm việc và thay đổi kết nối cơ sở dữ liệu để trỏ đến Máy chủ nhiều bên thuê. Bạn có thể xem tóm tắt các thay đổi của jBilling như sau:
- Ứng dụng ban đầu
- Số lượng các tệp nguồn: 897 (Java và jsp)
- Tổng số dòng mã: 76,621
- Ứng dụng đã chuyển đổi
- Số lượng các tệp nguồn bổ sung: 2 (khuôn mẫu chuẩn)
- Các dòng mã được sửa đổi: ít hơn 100
- Thay đổi logic nghiệp vụ của ứng dụng: không
Việc chuyển đổi jBilling chỉ mất dưới một tuần, bao gồm tất cả việc phân tích và chuẩn bị để xác định nơi mà mã cần được sửa đổi. Nhiều thay đổi trong đó chỉ là lặp lại một dòng sửa đổi trong một loạt mã Java để truy cập JDBC, và nó là không cần thiết nếu sử dụng tầng lưu giữ cơ sở dữ liệu lâu bền như Hibernate.
Bước 4. Triển khai ứng dụng SaaS nhiều bên thuê mới vào đám mây
Bây giờ có thể sử dụng SaaS-Factory (Nhà máy SaaS) để triển khai một ứng dụng SaaS cho một máy chủ đã chọn, bao gồm cả các máy chủ trong đám mây.
Sau khi chọn một máy chủ cho ứng dụng và cơ sở dữ liệu, cơ sở dữ liệu đích được tạo ra (như là một cơ sở dữ liệu MySQL trên máy chủ Windows® cho ứng dụng jBilling của chúng ta) và ứng dụng Máy chủ nhiều bên thuê đã cấu hình đầy đủ được triển khai như là một tập các tệp .WAR lên máy chủ ứng dụng đã chọn. Máy chủ nhiều bên thuê làm việc với bất kỳ thùng chứa J2EE Servlet hiện đại nào và đã được chứng thực cho Máy chủ ứng dụng WebSphere (WebSphere Application Server).
Bây giờ ứng dụng được triển khai có khả năng xử lý nhiều bên thuê. Tuy nhiên, ứng dụng ban đầu sẽ không có một giao diện quản trị và quản lý để quản lý nhiều bên thuê hoặc để theo dõi một ứng dụng nhiều bên thuê.
Nhà máy SaaS (SaaS-Factory) cũng có thể tạo ra và cài đặt một ứng dụng đồng hành được gọi là Buồng lái SaaS (SaaS-Cockpit™) cung cấp các dịch vụ nhiều bên thuê cơ bản này. Nó có quyền truy cập vào Cơ sở dữ liệu siêu mô hình giống như ứng dụng chính và có các màn hình quản lý để cung cấp bên thuê, gán các tài khoản Nhà quản trị của bên thuê (Tenant Administrator) và cấu hình các tham số cơ bản của các cấu hình ứng dụng cho mỗi bên thuê khác nhau đã có sẵn. Ngoài ra còn có các phương tiện quản trị để theo dõi và lập báo cáo về các bên thuê và người dùng của họ. Do một trong các đặc điểm chung của các ứng dụng SaaS là cần theo dõi các thuê bao và tính cước bên thuê, nên cũng có sẵn các phương tiện để tính cước hoặc tích hợp với hệ thống tính cước bên ngoài.
Hình 4. Cấu trúc để triển khai ứng dụng SaaS mới của bạn vào đám mây
Mức triển khai này là khá cơ bản đối với việc triển khai ứng dụng SaaS. Các đặc điểm của các ứng dụng vẫn còn nguyên sau khi chuyển đổi và các kiểu kịch bản triển khai tiêu chuẩn, bao gồm cả việc sử dụng các công cụ quản lý đám mây để tạo ra các khuôn mẫu và lan truyền các cá thể của ứng dụng, có thể được sử dụng để triển khai một kiến trúc vận hành đáp ứng các nhu cầu của ứng dụng về khả năng mở rộng, tính co giãn, khả năng phục hồi và dự phòng.
Một ứng dụng SaaS điển hình có thể có một tập các máy chủ ứng dụng được truy cập thông qua một bộ cân bằng tải và được kết nối đến một máy chủ cơ sở dữ liệu. Chính máy chủ cơ sở dữ liệu có thể được triển khai như một cụm với nhiều máy chủ cơ sở dữ liệu để mang lại khả năng mở rộng và dự phòng.
IBM DB2 cung cấp một số công nghệ và cấu hình có thể được sử dụng để đạt được khả năng phục hồi và thời gian phục hồi được đảm bảo, cũng như cho phép phân phối tải trên cơ sở dữ liệu:
- Các cấu hình Phục hồi sau thảm họa sẵn sàng cao của DB2 (HADR - High Availability Disaster Recovery) có thể cung cấp cả khả năng sẵn sàng phục hồi lẫn một khả năng cân bằng tải nào đó thông qua việc sử dụng chế độ thứ cấp như là một cơ sở dữ liệu chỉ đọc.
- Công nghệ pureScale và Tự động hóa hệ thống Tivoli (TSA - Tivoli System Automation) của IBM cho phép một môi trường cơ sở dữ liệu được phân cụm có nhiều nút chia sẻ tải xử lý, nhưng hai thứ đó có nhiều hạn chế về cấu hình phần cứng và hệ điều hành.
Xu hướng về tính sẵn sàng của cơ sở dữ liệu và khắc phục lỗi đang trở nên phức tạp hơn cho các ứng dụng SaaS vì số lượng khách hàng/bên thuê bị ảnh hưởng bởi bất kỳ hư hại nào đều lớn hơn so với phần mềm cục bộ của khách hàng truyền thống (Hình 5).
Hình 5. Kiến trúc triển khai SaaS cho các hoạt động đám mây có phục hồi mở rộng được
Có xu thế hướng về các khả năng cho phép ứng dụng chạy liên tục thậm chí vượt qua cả việc tổ chức lại dữ liệu không trực tuyến, sự tiến triển của lược đồ, các nâng cấp phiên bản, và các thay đổi lớn về chịu tải. Công nghệ pureScale của IBM đang di chuyển từ thế giới các hệ thống z System sang AIX® và Linux® và cho phép một dạng xử lý năng lực và thời gian hoạt động mà trước đây chỉ dành cho các môi trường máy tính lớn chuyên dụng.
Kết luận
Quá trình phát triển của ngành công nghiệp công nghệ thông tin hướng tới SaaS đang tiếp diễn và như bạn có thể đã phỏng đoán, nó đã bắt đầu gây ra một số thay đổi lớn trong bức tranh toàn cảnh của ngành này. Điện toán đám mây đang phát triển với tốc độ nhanh hơn nhiều so với bất kỳ làn sóng công nghệ thông tin nào khác và SaaS là động lực cho sự phát triển đó. Quá trình chuyển tiếp này đang buộc các công ty phải suy nghĩ lại về tổ chức kinh doanh của họ và phát triển các cách suy nghĩ mới về việc phân phối các dịch vụ trong một thế giới công nghệ thông tin có trung tâm là đám mây. Đối với các nhà cung cấp phần mềm, một điều cấp bách ngày càng gia tăng là phải hiểu, chuẩn bị, và thực hiện việc chuyển đổi đó, hoặc trái lại sẽ bị bỏ rơi lại phía sau trên đống bụi kỹ thuật số của lịch sử.
Mô hình SaaS-trên-một đám mây tự nó khác với mô hình của nhà cung cấp phần mềm truyền thống về cả những vấn đề kỹ thuật lẫn kinh doanh. Những khác biệt đó làm cho quá trình chuyển đổi sang SaaS trở thành một nỗ lực có nguy cơ cao hơn đối với các ISV. Để giảm nguy cơ và đẩy nhanh thời gian vào thị trường, các ISV có thể tận dụng các công nghệ, sản phẩm, và các đối tác đã qua thử thách để hỗ trợ trong quá trình chuyển đổi này.
Lời cảm ơn
Rất cám ơn Mike Oliver, Rob Brown, Mark Joncich, Kaiser Saeed và Feyzi Fatehi đã chiếu cố tham gia đóng góp những ý tưởng và những đề nghị và xem lại bài viết này; và cám ơn Aimee Dean vì đã hỗ trợ biên tập.
Tài nguyên
Học tập
- Loạt bài Tạo các ứng dụng nhiều bên thuê có kịch bản lệnh động bằng cách sử dụng WebSphere sMash giúp bạn xây dựng một mẫu triển khai-ứng dụng nhiều bên thuê.
- Loạt bài Phát triển và triển khai các giải pháp phân phối trên Web cho nhiều bên thuê bằng cách sử dụng phần mềm trung gian của IBM mô tả các mẫu khác nhau để giải quyết cho phép nhiều bên thuê trong các ứng dụng của bạn.
- Bài viết kinh điển An toàn cho một ứng dụng SaaS nhiều bên thuê cung cấp một cách tiếp cận tin tưởng và thiết thực để bảo đảm an toàn một ứng dụng Java nhiều bên thuê.
- Tìm hiểu thêm về Máy chủ nhiều bên thuêcủa Corent Technology
- Để biết thêm về các công nghệ khác được
đề cập trong bài viết này:
- Truy cập Java at developerWorks để biết thêm kiến thức về cách sử dụng JDBC và các thùng chứa Servlet J2EE.
- Bạn có thể tải về và sử dụng jBilling mã nguồn mở miễn phí.
- Tìm hiểu cách chia sẻ cơ sở dữ liệu bằng Hibernate.
- Khám phá DB2 puerScale.
- Tìm hiểu về HADR.
- Trong phần các tài nguyên của nhà phát triển đám mây trên developerWorks, hãy khám phá và chia sẻ kiến thức và kinh nghiệm của các nhà phát triển ứng dụng và dịch vụ đang xây dựng các dự án của họ để triển khai lên đám mây.
Lấy sản phẩm và công nghệ
- Trang web Phát triển và thử nghiệm nghiệp vụ thông minh của IBM trên đám mây của IBM là nơi để bạn thấy cách bắt đầu phát triển các ứng dụng của bạn cho đám mây như thế nào.
- Xem danh sách các ảnh phần mềm có sẵn trên đám mây của IBM đang gia tăng liên tục.
Thảo luận
- Tham gia một nhóm điện toán đám mây trên cộng đồng developerWorks.
- Đọc tất cả các blog tuyệt vời về điện toán đám mây trên cộng đồng developerWorks.
- Tham gia cộng đồng developerWorks, một mạng lưới chuyên nghiệp và tập hợp thống nhất các công cụ cộng đồng để kết nối, chia sẻ, và cộng tác.
Bình luận
-
Vùng dữ liệu trên developerWorks
Khám phá các bài viết xoay quanh lĩnh vực dữ liệu, Quản lý hệ thống thông tin
-
Vùng mã nguồn mở trên developerWorks
Xem các bài viết về HTML, CSS, JavaScript,...
-
Điện toán đám mây
Tìm hiểu về điện toán đám mây

markdown:
Hãy tưởng tượng bạn có một ứng dụng web mà bạn đang bán trên thị trường. Bạn thấy rõ những dấu hiệu báo trước sự thua lỗ của ứng dụng đó và nhận ra rằng mẫu hình Phần mềm là dịch vụ (SaaS) trên một cơ sở hạ tầng đám mây là cách mà ngành này phải hướng tới. Bạn biết bạn cần nó và các khách hàng của riêng bạn có thể cũng gây áp lực, muốn bạn cung cấp một phiên bản SaaS của sản phẩm.
Thách thức là thực hiện chuyển đổi sang SaaS một cách nhanh chóng, hiệu quả, và theo cách sao cho sẽ duy trì hoặc nâng cao lợi nhuận của bạn.
Có nhiều sự khác biệt phải được tính đến cho một ứng dụng SaaS so với một ứng dụng web thông thường. Một số trong đó là kỹ thuật và một số khác có liên quan đến sự thay đổi trong mô hình kinh doanh mà một công ty phải thích ứng khi phân phối SaaS.
## Ứng dụng web điển hình so với SaaS
Đặc trưng trọng tâm xác định một SaaS là khả năng cho phép khách hàng sử dụng một ứng dụng phần mềm trên cơ sở thuê bao dùng đến đâu trả đến đó. Họ không phải mua giấy phép dùng phần mềm và thu xếp để cài đặt, lưu trữ trên máy chủ và quản lý nó. Những khía cạnh vận hành ấy là trách nhiệm của tổ chức cung cấp ứng dụng SaaS.
### Nhiều bên thuê là chìa khóa để SaaS thành công
Mặc dù khả năng cho đăng ký thuê bao một ứng dụng là điều kiện tối thiểu
để đáp ứng tiêu chuẩn cơ bản của SaaS, nhưng trong thực tế điều này là
chưa đủ. Trong thực tế,
**một ứng dụng SaaS cũng phải là một ứng
dụng nhiều bên thuê**.
Điều này là do các nhân tố suy cho cùng, đơn giản chỉ là kinh tế. Các CEO của các công ty SaaS hàng đầu đồng ý, không thể phát triển một doanh nghiệp SaaS mà không có nhiều bên thuê. (Xem phần bên cạnh).
### Nhiều bên thuê là mức hiệu quả đối với SaaS
Tác động chính mang lại hiệu quả xuất phát từ nhiều bên thuê, khả năng
giành chỗ cho nhiều người dùng ứng dụng khác nhau, đồng thời làm cho từng
người dùng cảm thấy toàn bộ ứng dụng đó là dành tất cả cho họ. Chúng ta
quen với khái niệm này khi áp dụng nó cho những người dùng cá nhân trên
một hệ thống, nhưng nó hơi khác trong môi trường SaaS. Trong một ứng dụng
SaaS doanh nghiệp điển hình,
**những người dùng** là các nhóm
nhân viên của một tổ chức cụ thể và tổ chức đó được gọi là *bên
thuê*. Điều này là tương tự như những gì bạn sẽ thấy trong một ứng
dụng web đơn giản, nếu tổ chức đó mua ứng dụng; họ sẽ có một nhóm các nhân
viên là những người dùng ứng dụng và tổ chức này sẽ là **chủ sở
hữu**. Trong một mô hình SaaS, tổ chức là một bên thuê, không
phải là một chủ sở hữu, nhưng các nhóm nhân viên vẫn là những người dùng.
Mỗi người dùng có một sự liên kết với một bên thuê (tổ chức) cụ thể và
SaaS mang lại cho mỗi bên thuê những trải nghiệm như đang sở hữu bản sao
ứng dụng riêng của mình, để người dùng của họ có thể sử dụng.
### Ảo hóa trong các đám mây thúc đẩy SaaS
Sự khác biệt giữa một ứng dụng web đơn giản và một ứng dụng SaaS chạy được với đám mây bao gồm hai trong số các tính năng về tận dụng khả năng lớn nhất trong lĩnh vực công nghệ thông tin hiện nay:
- Nhiều bên thuê (đã được giới thiệu trước).
- Sự ảo hóa phần cứng.
Trong khi nguồn gốc chính mang lại hiệu quả của ứng dụng là do khả năng nhiều bên thuê trong kiến trúc ứng dụng, thì tác động thứ hai mang lại hiệu quả lại đến từ sự ảo hóa phần cứng. Đám mây thực hiện tốt việc tận dụng giá trị nhờ làm tăng tỷ lệ phần trăm sử dụng một số lượng phần cứng đã cho bằng cách dùng công nghệ ảo hóa để làm giảm khả năng không sử dụng, mà điều đó chỉ có được khi sử dụng cách tiếp cận máy tính vật lý của trung tâm dữ liệu thông thường.
Ngoài ra, đám mây còn mang lại khả năng phân phối lại phần cứng một cách động cho ứng dụng tùy theo nhu cầu về tài nguyên. Tính co giãn này, có thể trong ngắn hạn (phút) hoặc dài hạn (tháng), giúp tách các quyết định về phần cứng ra khỏi từng ứng dụng đơn lẻ, mở rộng phạm vi quyết định đối với một lượng lớn các ứng dụng, làm cho sự biến thiên từ tốn hơn và làm cho việc đầu tư về phần cứng trở nên có thể dự báo được và dễ quản lý hơn.
Bây giờ chúng ta hãy xem xét toàn bộ các bước chung mà bạn cần thực hiện để chuyển đổi một ứng dụng web truyền thống thành một ứng dụng chạy được trên SaaS.
## Chuyển đổi các ứng dụng web thành SaaS
Để chuyển đổi ứng dụng web của bạn thành ứng dụng SaaS bạn phải làm bảy việc sau:
- Ứng dụng phải hỗ trợ nhiều bên thuê.
- Ứng dụng phải có một số mức tự đăng ký dịch vụ.
- Phải có cơ chế thuê bao/tính cước hiện hành.
- Ứng dụng phải có khả năng mở rộng một cách hiệu quả.
- Phải có các chức năng hiện hành để theo dõi, cấu hình và quản lý ứng dụng và những bên thuê.
- Phải có một cơ chế hiện hành để hỗ trợ nhận dạng và xác thực người dùng duy nhất.
- Phải có một cơ chế hiện hành để hỗ trợ một số mức tuỳ chỉnh cho từng bên thuê.
Hãy xem xét từng việc chi tiết hơn một chút.
### Hỗ trợ nhiều bên thuê
Nhiều bên thuê là nhân tố then chốt quyết định hiệu quả SaaS. Thông thường một ứng dụng hỗ trợ nhiều người dùng, nhưng với giả định rằng tất cả người dùng ấy trong cùng một tổ chức. Mô hình này là ổn cho thế giới trước SaaS, ở đó một tổ chức sẽ mua một ứng dụng phần mềm để cho các thành viên của nó sử dụng. Nhưng trong thế giới của SaaS và đám mây, nhiều tổ chức sẽ cùng sử dụng ứng dụng đó; tất cả họ phải có khả năng cho phép tất cả những người dùng của mình cùng truy cập nó, nhưng ứng dụng phải cho phép chỉ từng thành viên của riêng tổ chức đó truy cập dữ liệu dành cho tổ chức của họ.
Chính khả năng có nhiều tổ chức (gọi là những bên thuê theo thuật ngữ của SaaS) này, cùng tồn tại trên cùng một ứng dụng mà không làm ảnh hưởng đến sự an toàn dữ liệu của các tổ chức đó, xác định ứng dụng đó là một ứng dụng nhiều bên thuê.
Có vài mức nhiều bên thuê (như đã thấy trong hình vẽ sau danh sách này):
- Ẩo hóa đơn giản trong đám mây, ở đó chỉ chia sẻ phần cứng..
- Một ứng dụng với các cơ sở dữ liệu riêng biệt cho từng bên thuê.
- Một ứng dụng và cơ sở dữ liệu được chia sẻ (hiệu quả cao nhất, nhiều bên thuê thực sự).
##### Các mô hình nhiều bên thuê
![ Các mô hình nhiều bên thuê](figure0.gif)
Người ta có thể biện luận rằng mô hình đầu tiên là không thực sự nhiều bên thuê chút nào, nhưng nó thường được sử dụng trong một đám mây có các máy chủ ảo hóa và được quảng cáo như là một dạng nhiều bên thuê. Trong thực tế, điều này chưa đủ, và chỉ có lợi thế rất nhỏ so với mô hình ASP cũ có phần cứng dành riêng.
Mức hiệu quả nhất là trong đó ứng dụng hoàn toàn chia sẻ một cơ sở dữ liệu
và logic nghiệp vụ ứng dụng. Đạt được điều này có thể là một quá trình khó
khăn đòi hỏi nhiều thay đổi trong lược đồ cơ sở dữ liệu để thêm một
*mã
định danh bên thuê* vào mỗi bảng và khung nhìn, cũng như viết lại
mọi truy cập SQL để thêm tiêu chí bên thuê cho các bộ lọc. Việc thiếu một
đoạn trong mã nguồn ở nơi cần phải có, có thể ảnh hưởng đến sự an toàn dữ
liệu của ứng dụng.
Ngoài các trường hợp truy cập dữ liệu xảy ra trong ứng dụng, có thể có các ứng dụng khác như là các trình viết báo cáo hoặc các ứng dụng tiện ích cũng phải được sửa đổi để bao gồm việc lọc bên thuê cần thiết để giữ cho dữ liệu của những bên thuê riêng biệt chỉ có thể truy cập được bởi những bên thuê cụ thể đó. Loại truy cập không trực tiếp từ bản thân ứng dụng sẽ nảy sinh ra các vấn đề cần phải được kiểm soát. Nếu bất kỳ người dùng có thẩm quyền nào đó có thể viết một báo cáo, thì cần phải ngăn chặn họ không truy cập vào dữ liệu không thuộc về bên thuê mà họ là thành viên của nó.
### Tự đăng ký dịch vụ
Ứng dụng của bạn phải có sẵn một số mức tự đăng ký dịch vụ, thậm chí nếu nó chỉ đơn giản là một cơ chế yêu cầu dẫn đến một quy trình nghiệp vụ để thêm một bên thuê vào ứng dụng.
### Thuê bao và tính cước
Bạn phải đưa ra một cơ chế thuê bao và tính cước. Do các ứng dụng SaaS theo thiết kế liên quan đến một loạt các khoản thanh toán dựa trên các yếu tố như số lượng người dùng cho mỗi bên thuê, các tùy chọn ứng dụng, và có lẽ cả khoảng thời gian sử dụng, nên phải có một cách để theo dõi và quản lý việc sử dụng ứng dụng và tạo ra các thông tin tính cước để cho các nhà quản trị của bên thuê có thể truy cập.
### Mở rộng và quản lý ứng dụng
Bạn phải có khả năng mở rộng khi các thuê bao phát triển. Cơ sở hạ tầng đám mây là một cách hợp lý để làm điều này vì nó thể hiện nhiều khả năng mà bạn sẽ cần để mở rộng năng suất và hiệu quả.
Ngoài ra, bạn phải cung cấp chức năng quản trị và quản lý ứng dụng để theo dõi, cấu hình và quản lý ứng dụng và tất cả những bên thuê.
### Mã định danh (ID) người dùng và xác thực
Bạn cần phải cung cấp một cơ chế để hỗ trợ định danh người dùng và xác thực cho phép nhận dạng duy nhất những người dùng. Vì khả năng nhiều bên thuê đòi hỏi tất cả những người dùng đăng nhập vào hệ thống được nhận dạng để xác định xem họ thuộc về bên thuê nào, phải có một mối quan hệ đáng tin cậy để cho phép những người dùng được nhận dạng thuộc về một bên thuê cụ thể. Mối quan hệ người dùng-của-bên thuê là thông tin then chốt được sử dụng để hạn chế dữ liệu mà người dùng có thể truy cập.
Các địa chỉ email là một cách điển hình để làm điều này sao cho tính duy nhất được bảo đảm và có thể công nhận và xác định các cá nhân là thuộc về một bên thuê cụ thể.
Có nhiều cơ chế xác thực và các phương thức tích hợp với chúng, vì vậy một cơ chế linh hoạt để cho phép một người dùng được nhận dạng là điều căn bản nhất. Thông thường là một bên thuê cụ thể cần có khả năng sử dụng dịch vụ LDAP hiện có của họ hoặc dịch vụ danh mục hoặc một cơ chế xác thực khác để hỗ trợ đăng nhập một lần vào ứng dụng SaaS. Mặc dù loại hình xác thực người dùng từ bên ngoài này là quan trọng, nhưng việc xác minh người dùng đã định danh là một thành viên của bên thuê mà họ tuyên bố, vẫn là trách nhiệm của ứng dụng SaaS.
### Tùy chỉnh cho mỗi bên thuê
Bạn phải đưa ra một cơ chế để hỗ trợ một mức tuỳ chỉnh cơ bản cho mỗi bên thuê để họ có thể có một URL duy nhất, trang đích đến, các biểu trưng, lược đồ màu sắc, phông chữ, và có lẽ cả ngôn ngữ nữa.
Người ta hy vọng nhận được mức cơ bản này của cấu hình cho mỗi bên thuê, nhưng để thực sự đáp ứng các nhu cầu của nhiều bên thuê, thì đó chắc chắn sẽ là một nhu cầu tùy chỉnh cho mỗi bên thuê muốn đi sâu hơn các mức cơ bản.
Các tùy chỉnh tiêu biểu cần thiết cũng tương tự như loại các tùy chỉnh mà bên thuê thực hiện với một phiên bản nội bộ của ứng dụng. Chúng có thể bao gồm việc thêm các trường bổ sung hoặc thậm chí là các bảng, thiết lập logic nghiệp vụ đặc biệt, hoặc tích hợp với ứng dụng khác. Việc có khả năng thực hiện các loại tùy chỉnh này trên cơ sở cho mỗi bên thuê mà không phải thiết lập một trường hợp riêng biệt có ảnh hưởng đến hiệu quả của thiết kế nhiều bên thuê là dấu hiệu chất lượng của kiến trúc SaaS có khả năng cao.
## Các vấn đề hiệu năng cần xem xét
Các vấn đề hiệu năng đối với các ứng dụng SaaS nhiều bên thuê thường cũng
giống như đã thấy với ứng dụng web bất kỳ đang cung cấp cùng số lượng
người dùng với cùng một mức độ hoạt động. Có nhiều cách làm thực tế tốt
nhất để đối phó với nhu cầu về khả năng ngày càng tăng trong các ứng dụng
web, nói chung tất cả những cách này đều có khả năng áp dụng cho các ứng
dụng SaaS nhiều bên thuê. Những kỹ thuật này thường bao gồm
**việc
mở rộng theo chiều ngang và theo chiều dọc** và **cân
bằng tải** trên một tập hợp các máy chủ.
### Mở rộng theo chiều ngang/dọc
Các khả năng của cơ sở hạ tầng đám mây đưa ra nhiều cơ hội để làm cho kiểu khả năng mở rộng này xảy ra động và theo một cách tự động, để cung cấp tài nguyên khi cần thiết và thu gọn bớt tài nguyên khi có thể đáp ứng các thỏa thuận mức dịch vụ hiệu năng (SLAs) với ít tài nguyên hơn. Khả năng co giãn là một cái gì đó có thể được điều chỉnh để đáp ứng theo cách chính xác cần thiết để cung cấp các dịch vụ mà không cần cung cấp thêm tài nguyên vẫn chưa khai thác hết:
- Việc mở rộng theo chiều ngang thường được áp dụng cho tầng máy chủ ứng dụng.
- Việc mở rộng theo chiều dọc thường được áp dụng cho tầng cơ sở dữ liệu.
### Phân cụm cơ sở dữ liệu
Với các ứng dụng SaaS, tổng số người dùng có thể rất cao đối với một sản phẩm thành công; có lúc việc mở rộng cơ sở dữ liệu theo chiều dọc có thể không phải là giải pháp tối ưu. Nhiều công nghệ cơ sở dữ liệu có khả năng cung cấp một mô hình cơ sở dữ liệu có phân cụm cho phép tạo ra nhiều khả năng hơn với cùng một cơ sở dữ liệu. DB2® có một số tùy chọn hoạt động tốt với mô hình này và có thể sử dụng chúng để tạo ra một cụm cơ sở dữ liệu.
### Vị trí địa lý, phân vùng, và đồng bộ hóa
Tuy nhiên có các kỹ thuật khác có thể thích hợp hơn tùy thuộc vào ứng dụng SaaS và quần thể người sử dụng nó. Do SaaS vốn có khả năng truy cập từ bất cứ đâu trên thế giới, nên quần thể người sử dụng có thể ở rất xa; khoảng cách này có thể gây ra những suy giảm hiệu năng do cấu trúc mạng quá dài.
Trong những trường hợp này sẽ có thể có lợi thế hơn nếu sử dụng các đám mây ở các vùng khác nhau và phân vùng dữ liệu hoặc đồng bộ hóa sử dụng để duy trì tính nhất quán. Tùy chọn nào trong các tùy chọn này là thích hợp sẽ phụ thuộc vào bản chất của ứng dụng cụ thể. Một số ứng dụng sẽ không tuân theo những sự đồng bộ hóa đường dài.
### Cơ sở dữ liệu riêng biệt
Tất nhiên, phương thức triệt để nhất (ít nhất cho một ứng dụng SaaS) để áp dụng khi khả năng của cơ sở dữ liệu không thể đáp ứng các yêu cầu là thiết lập một cơ sở dữ liệu riêng biệt. Bất cứ ai cần một ứng dụng SaaS nhiều bên thuê đều phải xem xét xem tùy chọn này có thể dẫn đến tình trạng không duy trì được sự hỗ trợ một cơ sở dữ liệu cho mỗi bên thuê hay không, điều trực tiếp dẫn đến kiểu thiếu khả năng mà nhiều bên thuê cần phải tránh.
Và nếu các máy chủ ứng dụng phải được phân chia để phục vụ chỉ một cơ sở dữ liệu, thì những hiệu quả do nhiều bên thuê tiếp tục bị suy giảm dần. Trong một thị trường cạnh tranh, các hiệu quả nhiều bên thuê là những yếu tố thành công trọng yếu đối với các công ty SaaS.
### Thiết kế cứu giúp năng lực cân bằng tải
Một cách để duy trì hiệu quả cao nhất có thể, ngay cả khi cần phải sử dụng các cơ sở dữ liệu riêng biệt vì bất cứ lý do gì, là phải có một thiết kế nhiều bên thuê có thể cho phép bất kỳ máy chủ ứng dụng nào trong cụm cân bằng tải truy cập vào một cơ sở dữ liệu thích hợp khi có nhiều cơ sở dữ liệu. Bằng cách này có thể duy trì hiệu quả của cụm cân bằng tải với tất cả các máy chủ ứng dụng có khả năng kết nối tới bất kỳ cơ sở dữ liệu nào để phục vụ các phiên làm việc của người dùng mà chúng đang hỗ trợ. Điều này duy trì mức hiệu quả cao nhất với ràng buộc nhiều cơ sở dữ liệu.
### Khả năng không phải là yêu cầu duy nhất
Có thể có các lý do chính đáng để có nhiều cơ sở dữ liệu, bên cạnh lý do về khả năng, chẳng hạn như yêu cầu về một phiên bản cơ sở dữ liệu có mã hóa cho những bên thuê cần mức an toàn cao. Có thể khả năng không phải là vấn đề, vì vậy điều quan trọng là có một thiết kế nhằm tối đa hóa hiệu quả ở nơi có thể, ngay cả khi phải dùng một mô hình vốn đã kém hiệu quả.
## Các vấn đề an toàn cần xem xét
Trong nhiều cuộc khảo sát liên tiếp, an toàn thường được liệt kê như là mối quan tâm cao nhất của các thuê bao truy cập vào các ứng dụng SaaS, hoặc ít nhất cũng là rất gần mức cao nhất. Không một nhà cung cấp SaaS nào có thể bỏ qua vấn đề an toàn. Nhưng thông thường, khái niệm về an toàn dữ liệu chỉ được xem xét trong bối cảnh của chính ứng dụng SaaS.
Hầu hết các kiến trúc ứng dụng SaaS có các biện pháp bảo mật dữ liệu nhằm ngăn chặn không cho bên thuê này nhìn thấy dữ liệu của bên thuê khác là một yêu cầu cơ bản. Nhưng:
- Một khả năng quan trọng mà các ứng dụng SaaS phải có là tích hợp và tương tác với các ứng dụng khác.
- Một số trong những ứng dụng khác đó có thể là các ứng dụng bên ngoài (nhà cung cấp SaaS không kiểm soát được).
- Không phải tất cả các kiến trúc SaaS được thiết kế có tính đến khả năng truy cập dành cho các ứng dụng bên ngoài.
Những ứng dụng khác đó có thể là các ứng dụng nội bộ cần truy cập hoặc chia sẻ dữ liệu; chúng có thể là những công cụ phân tích và viết báo cáo, khai phá dữ liệu phát hiện các xu hướng. Ngay cả các công cụ tiện ích được các nhà quản trị cơ sở dữ liệu sử dụng cũng có thể liên quan đến vấn đề an toàn nếu những bên thuê có thể sử dụng chúng để truy cập, hoặc tệ hơn, thao tác các dữ liệu không thuộc về họ.
Một kiến trúc thực tế tốt nhất cho SaaS phải tính đến việc là không phải tất cả các truy cập dữ liệu có thể nằm dưới sự kiểm soát của ứng dụng; phải có cơ chế tại chỗ để cho phép dữ liệu được bảo vệ cho mỗi bên thuê bất kể là việc truy cập thông qua ứng dụng SaaS hoặc thông qua một ứng dụng bên ngoài nào đó.
## Chọn chồng công nghệ của bạn
Luôn luôn có các thỏa hiệp khi bạn ra quyết định về các chồng công nghệ; trong một ứng dụng SaaS điều này đặc biệt đúng bởi vì các quyết định được đưa ra cho tất cả những bên thuê. Chúng ta hãy xem xét một số trong những lưu ý nàys.
### Những lưu ý về hệ điều hành
Hệ điều hành trong các ứng dụng web chắc là có liên quan ít nhất đến những người dùng vì sự tương tác của họ là thông qua trình duyệt. Tuy nhiên, có những lưu ý về tài chính cũng như kỹ thuật có thể cần tính đến:
- Nếu có một phần phụ thuộc của một mã nguồn cụ thể nào đó là lệ thuộc vào hệ điều hành, thì sự lựa chọn bị hạn chế.
- Các lựa chọn cũng có thể bị hạn chế nếu có một nhu cầu chung về tích hợp với các ứng dụng bên ngoài và việc tích hợp này được thực hiện tốt trên một hệ điều hành nào đó hơn là trên những cái khác.
Quy luật kinh tế khắc nghiệt của đám mây sẽ luôn luôn thúc đẩy sự lựa chọn hướng đến một hệ điều hành có phí giấy phép thấp hơn và hiệu năng tốt. Các biện pháp chính mở rộng các ứng dụng web bao gồm việc mở rộng theo chiều ngang; điều này có nghĩa là khi ứng dụng SaaS phát triển, tổng số các cá thể máy chủ ứng dụng web sẽ tăng lên và đó là chi phí hoạt động trực tiếp.
### Những lưu ý về cơ sở dữ liệu
Cơ sở dữ liệu trong các ứng dụng web chắc cũng không phải là một mối quan tâm trọng yếu của những người dùng cuối vì sự tương tác của họ là thông qua trình duyệt và miễn là các ứng dụng có khả năng lưu trữ và lấy ra dữ liệu của họ, phần lớn là không liên quan đến họ.
Một lần nữa, những lưu ý về tài chính và kỹ thuật đụng đến các nhà phát triển ứng dụng. Nếu có sự phụ thuộc của ứng dụng vào các tính năng cụ thể của một cơ sở dữ liệu, thì sự lựa chọn bị hạn chế.
Việc lựa chọn cơ sở dữ liệu có thể rất quan trọng đối với một số lý do thiết kế ứng dụng và nó cũng có thể bị ảnh hưởng vì các yêu cầu cụ thể của môi trường SaaS.
Các yêu cầu về cơ sở dữ liệu trong một ứng dụng SaaS là cao hơn, đơn giản là do số lượng người dùng, những người cuối cùng sẽ ở trên mạng; vì thế khả năng mở rộng cơ sở dữ liệu rất quan trọng. Khả năng mở rộng cơ sở dữ liệu thường được thực hiện trên một cá thể duy nhất với việc sử dụng các máy chủ cơ sở dữ liệu càng ngày càng mạnh hơn cho ứng dụng có yêu cầu ngày càng cao. Tuy nhiên, khả năng mở rộng cần phải có của các ứng dụng SaaS có tiềm năng vượt xa các khả năng mở rộng theo chiều dọc, vì vậy bước tiếp theo trong khả năng mở rộng cơ sở dữ liệu liên quan đến việc có khả năng phân cụm.
Khả năng để thực hiện kiểu phân cụm này trong môi trường đám mây có thể ảnh hưởng đến việc lựa chọn cơ sở dữ liệu. Ví dụ, có thể lựa chọn DB2 vì khả năng chạy trên nhiều hệ điều hành, cung cấp khả năng mở rộng theo chiều dọc và vì sự linh hoạt của nó về các lựa chọn cho khả năng mở rộng thông qua phân cụm nhiều cá thể và dự phòng. Ví dụ, có thể thiết lập một cụm DB2 HADR (Khôi phục sau sự cố có tính sẵn sàng cao) trong đám mây.
### Những lưu ý về máy chủ ứng dụng
Việc lựa chọn máy chủ ứng dụng, giống như các quyết định khác về chồng công nghệ, cũng chủ yếu là một quyết định của nhà phát triển ứng dụng SaaS, bởi vì các tương tác của người dùng cuối chỉ thông qua trình duyệt. Nhưng có thể có những sự khác biệt quan trọng đối với một số lý do thiết kế ứng dụng và nó cũng có thể bị ảnh hưởng vì các yêu cầu riêng biệt của môi trường SaaS.
Các ứng dụng lợi dụng các tính năng đặc biệt hoặc các thành phần bổ sung thêm của các máy chủ ứng dụng như WebSphere® sẽ cần phải sử dụng máy chủ ứng dụng đó trong đám mây.
Các lý do cơ bản để lựa chọn một máy chủ ứng dụng thường phải quyết định sớm, ngay đầu vòng đời của ứng dụng vì ứng dụng có thể lợi dụng một số tính năng đặc biệt hoặc những bổ sung thêm của bên thứ ba hoặc các khả năng tích hợp quan trọng cho ứng dụng. Đôi khi chỉ đơn giản là tri thức chuyên gia của tổ chức và các tiêu chuẩn nội bộ áp đặt phải sử dụng các thành phần cụ thể nào đó của chồng công nghệ.
Điểm quyết định trong việc lựa chọn và cấu hình chồng công nghệ để sử dụng trong một môi trường SaaS/đám mây là việc cân bằng các ảnh hưởng kỹ thuật và kinh tế để đạt được một kết quả tốt.
## Tính linh hoạt là chìa khóa để phát triển công nghệ
Việc có thể đưa ra các quyết định và những đánh đổi trong sử dụng chồng công nghệ và việc có thể xem xét lại những quyết định đó sau này là một khả năng đáng giá trong kiến trúc SaaS. Do các thay đổi về công nghệ, các nhà cung cấp đám mây hàng đầu sẽ kết hợp các ứng dụng trung gian mới và các khả năng mới và việc có thể thích ứng tiếp nhận chúng cho ứng dụng SaaS của bạn chính là một lợi thế.
Các kiến trúc ứng dụng SaaS mà buộc bạn đưa ra các quyết định sẽ khóa chặt
bạn vào một chồng công nghệ cụ thể sẽ làm phương hại đến khả năng phát
triển và thích ứng của một ứng dụng SaaS. Các khái niệm then chốt của một
**kiến trúc hướng dịch vụ** rất hợp với việc cung cấp sự
nhanh nhẹn và tính linh hoạt cần thiết cho các ứng dụng SaaS. Việc ghép
lỏng tạo ra tính linh hoạt và tính linh hoạt lại cho phép phát triển chiến
lược và chiến thuật.
Trong phần còn lại của bài viết này, tôi sẽ được sử dụng Corent's Multi-Tenant Server™ (Máy chủ nhiều bên thuê của Corent) để đưa ra một ví dụ về cách bạn có thể chuyển đổi một ứng dụng web mã nguồn mở Java™ để tính cước thành một phiên bản SaaS nhiều bên thuê với nỗ lực ít nhất.
## Chuyển thành ứng dụng SaaS tự động bằng Corent's Multi-Tenant Server
Các nhà cung cấp đám mây đưa ra một dải rộng các khả năng và có thể cung cấp hầu hết ứng dụng web bất kỳ. Để chuyển đổi một ứng dụng thành ứng dụng SaaS nhiều bên thuê một cách đầy đủ thường đòi hỏi những thay đổi rất lớn về mã ứng dụng và thiết kế lại và cấu hình lại cơ sở dữ liệu.
Corent's Multi-Tenant Server cho phép các ISV (nhà cung cấp phần mềm độc lập) thực hiện các cách tiếp cận khác nhau, bằng cách sử dụng một tầng trung gian để cung cấp tính năng nhiều bên thuê trọng yếu (do đó bảo toàn được khoản đầu tư vào mã hiện có). Tôi sẽ mô tả bốn bước cần thiết để chuyển đổi jBilling, một ứng dụng web Java mã nguồn mở phổ biến, là đại diện của một ứng dụng một bên thuê điển hình, thành một phiên bản SaaS nhiều bên thuê.
### Bước 1. Chuyển đổi lược đồ cơ sở dữ liệu sang một mô hình trừu tượng
Chồng công nghệ điển hình của một ứng dụng web trông giống như Hình 1; một ứng dụng giao tiếp với một cơ sở dữ liệu, thường là thông qua một tầng lưu giữ dữ liệu lâu bền như Hibernate.
##### Hình 1. Chồng ứng dụng web điển hình trong đám mây
![ Chồng ứng dụng web điển hình trong đám mây](figure1.gif)
Để biến đổi một ứng dụng thành một ứng dụng nhiều bên thuê, cơ sở dữ liệu phải được thiết kế lại để có thêm các trường để quản lý dữ liệu nhận dạng bên thuê, sẽ cần thiết để cho phép bên thuê lọc dữ liệu.
Ứng dụng SaaS-Factory™ (Nhà máy SaaS) được sử dụng để đọc lược đồ
của cơ sở dữ liệu ứng dụng hiện có. Sau đó nó tạo ra một mô hình của cơ sở
dữ liệu đó rồi sử dụng nó để tạo ra một cơ sở dữ liệu mới trong MySQL có
thêm trường
TenantID trong các bảng. Tại thời
điểm này một số bảng bổ sung thêm được tạo ra, trong đó có một bảng chứa
thông tin bên thuê mà Multi-Tenant Server sử dụng.
##### Hình 2. Tạo lược đồ cơ sở dữ liệu siêu mô hình
![ Tạo lược đồ cơ sở dữ liệu siêu mô hình](figure2.gif)
Vì Cơ sở dữ liệu siêu mô hình (MetaModel Database) trông giống như cũ đối
với ứng dụng ban đầu, cũng có chính các bảng và các trường như thế, nên
ứng dụng ban đầu có thể tiếp tục tương tác với Cơ sở dữ liệu siêu mô hình
chính xác giống như nó đã làm với cơ sở dữ liệu MySQL. Có thể tạo ra cơ sở
dữ liệu thực ở dưới mô hình này với các trường
TenantID bổ sung cần thiết cho một ứng dụng
nhiều bên thuê.
Cơ sở dữ liệu siêu mô hình chỉ là trừu tượng hóa và không thực sự lưu giữ bất kỳ dữ liệu nào: Nó chỉ đơn giản là một mô hình. Do đó, khi cơ sở dữ liệu thực được tạo ra, không có lý do nào để không thể tạo ra nó trong bất kỳ Hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) được hỗ trợ nào. Điều này có thể có ích đối với các trường hợp ở đó các ISV đã muốn thay đổi chồng công nghệ bằng cách chọn một RDBMS khác, có thể là DB2 để tận dụng một số tính năng hay hiệu năng tốt hơn cho các ứng dụng của chúng.
### Bước 2. Mở rộng quá trình xác thực người dùng
Bất kỳ ứng dụng SaaS nhiều bên thuê nào cũng phải có khả năng quản lý các thông tin phiên làm việc cần thiết của những người sử dụng đã xác thực để có thể xác định người sử dụng ấy thuộc bên thuê nào. Có nhiều phương pháp xác thực cho các ứng dụng; do đó bất kỳ ứng dụng nào được chuyển đổi cũng phải được phân tích và phải hiểu rõ về các phương thức xác thực của nó.
Bước 1 đã giới thiệu cho các bạn cách thiết lập một bảng các bên thuê và
thêm một bảng người dùng sao cho mối quan hệ này có thể được duy trì trong
dữ liệu của ứng dụng. Mục đích là để thực hiện một phương thức sẽ mở rộng
quá trình xác thực người dùng ứng dụng để cho khi một người dùng đăng nhập
vào, anh ta cũng khớp với bên thuê tương ứng của mình và
TenantID trở thành một phần của thông tin phiên
làm việc.
Có nhiều cách để thực hiện điều này, nó phụ thuộc vào việc triển khai thực
hiện ứng dụng. Nếu sử dụng Tomcat như là thùng chứa servlet của ứng dụng,
thì có thể sử dụng việc xác thực do thùng chứa quản lý để khởi đầu một quy
tắc nghiệp vụ chạy trong Máy chủ nhiều bên thuê (Multi-Tenant Server) để
thực hiện tra tìm
TenantID của người sử dụng.
Ngoài ra, có thể sử dụng một bộ lọc servlet để phát hiện và sau đó thiết
lập biến cục bộ luồng
TenantID. Với ví dụ
jBilling này, ứng dụng xử lý việc xác thực trực tiếp bằng cách xác nhận
hợp lệ dựa vào các bảng người dùng của nó. Vì vậy phương thức được sử dụng
để cung cấp xác thực nâng cao đã có một số thay đổi đơn giản về mã xác
thực để thêm vào quá trình tra tìm kiếm thông tin bên thuê của người dùng
được lưu trữ trong các bảng mới.
Nhờ việc người dùng đã được xác thực và biết được
TenantID mà họ thuộc về, nên đã có đầy đủ thông
tin để có thể lọc dữ liệu sao cho chỉ có dữ liệu thuộc về bên thuê đó mới
có thể truy cập được.
### Bước 3. Cấu hình kết nối cơ sở dữ liệu
Máy chủ nhiều bên thuê của Corent được xây dựng trên một kiến trúc hướng
dịch vụ, sử dụng Cơ sở dữ liệu siêu mô hình (MetaModel Database - đã mô tả
trong
[Bước 1](#step1)). Đây là một tầng trừu tượng để mô hình
hóa cơ sở dữ liệu ban đầu của ứng dụng và các giao tiếp cơ sở dữ liệu của
ứng dụng được chuyển hướng đến siêu mô hình trừu tượng thay vì triển khai
cơ sở dữ liệu thực tế. Điều này được thực hiện bằng cách chỉ cần cấu hình
lại kết nối JDBC của jBilling để truy cập vào Cơ sở dữ liệu siêu mô hình
thay vì cơ sở dữ liệu MySQL thực tế. Đối với các ứng dụng sử dụng
Hibernate, cần cấu hình nhánh ngôn ngữ Corent của Hibernate.
Do những thay đổi này, các cuộc gọi cơ sở dữ liệu của ứng dụng bây giờ
được hướng tới Cơ sở dữ liệu siêu mô hình. Các sự kiện SQL này bị chặn bởi
Trình điều khiển lanh lẹn của Corent (Corent Agile Controller™) và
sau đó chuyển tới Trình kết nối cơ sở dữ liệu lanh lẹn (Corent's
ADBC™-Agile DataBase Connector). của Corent. ADBC nhận câu lệnh SQL
mà ứng dụng gửi tới Cơ sở dữ liệu siêu mô hình và phân tích cú pháp nó,
sau đó bổ sung thêm các tiêu chí lọc TenantID của người dùng trong phiên
làm việc đã gửi câu lệnh SQL ấy (ví dụ, ở đây
TenantID = <myTenantID>). Điều này đảm
bảo rằng sự an toàn của dữ liệu trong cơ sở dữ liệu chia sẻ chung luôn
được duy trì nghiêm ngặt. Ngay cả khi một ứng dụng bên ngoài như
ReportWriter (Trình viết báo cáo) kết nối tới, dữ liệu mà nó có thể nhìn
thấy vẫn bị hạn chế trong những dữ liệu thích hợp cho bên thuê đó. Vì
chúng ta biết người đang đăng nhập là ai, bất kể từ ứng dụng nào, chúng ta
biết họ thuộc về bên thuê nào và các bộ lọc thích hợp được áp dụng.
Vì việc xử lý các câu lệnh SQL được thực hiện sau khi chúng được gửi tới Cơ sở dữ liệu siêu mô hình và bên thuê của người sử dụng đã biết nên Trình điều khiển lanh lẹn của Corent có thể chặn và thực hiện các hoạt động tinh vi hơn, bao gồm việc tra tìm các quy trình xử lý và các cấu hình của bên thuê cụ thể. Do đó, có thể thực hiện các hành động đặc thù tùy theo mỗi bên thuê, thậm chí thay thế một kết nối cơ sở dữ liệu khác sao cho một bên thuê có thể sử dụng một cơ sở dữ liệu DB2 mặc dù tất cả những bên thuê khác đang sử dụng cơ sở dữ liệu MySQL. Hoặc một bên thuê có thể thêm thao tác SQL để hạn chế dữ liệu mà họ có thể lấy ra trong số các bản ghi đã nhập không quá 90 ngày trước đó. Tất cả các tùy chỉnh cho mỗi bên thuê này có thể được thực hiện thông qua một Máy quy tắc lanh lẹn (Agile Rules Engine™) được xây dựng trong Máy chủ nhiều bên thuê mà không cần bất kỳ các thay đổi nào với mã ứng dụng ban đầu.
##### Hình 3. Cấu trúc các tùy chỉnh cho mỗi bên thuê
![ Cấu trúc các tùy chỉnh cho mỗi bên thuê](figure3.gif)
Toàn bộ việc chuyển đổi ứng dụng jBilling được hoàn tất với chỉ một vài thay đổi nhỏ với ứng dụng, chủ yếu là liên quan đến việc cải tiến xác thực để bao gồm thêm các thông tin bên thuê vào trong thông tin phiên làm việc và thay đổi kết nối cơ sở dữ liệu để trỏ đến Máy chủ nhiều bên thuê. Bạn có thể xem tóm tắt các thay đổi của jBilling như sau:
**Ứng dụng ban đầu**
- Số lượng các tệp nguồn: 897 (Java và jsp)
- Tổng số dòng mã: 76,621
**Ứng dụng đã chuyển đổi**
- Số lượng các tệp nguồn bổ sung: 2 (khuôn mẫu chuẩn)
- Các dòng mã được sửa đổi: ít hơn 100
- Thay đổi logic nghiệp vụ của ứng dụng: không
Việc chuyển đổi jBilling chỉ mất dưới một tuần, bao gồm tất cả việc phân tích và chuẩn bị để xác định nơi mà mã cần được sửa đổi. Nhiều thay đổi trong đó chỉ là lặp lại một dòng sửa đổi trong một loạt mã Java để truy cập JDBC, và nó là không cần thiết nếu sử dụng tầng lưu giữ cơ sở dữ liệu lâu bền như Hibernate.
### Bước 4. Triển khai ứng dụng SaaS nhiều bên thuê mới vào đám mây
Bây giờ có thể sử dụng SaaS-Factory (Nhà máy SaaS) để triển khai một ứng dụng SaaS cho một máy chủ đã chọn, bao gồm cả các máy chủ trong đám mây.
Sau khi chọn một máy chủ cho ứng dụng và cơ sở dữ liệu, cơ sở dữ liệu đích được tạo ra (như là một cơ sở dữ liệu MySQL trên máy chủ Windows® cho ứng dụng jBilling của chúng ta) và ứng dụng Máy chủ nhiều bên thuê đã cấu hình đầy đủ được triển khai như là một tập các tệp .WAR lên máy chủ ứng dụng đã chọn. Máy chủ nhiều bên thuê làm việc với bất kỳ thùng chứa J2EE Servlet hiện đại nào và đã được chứng thực cho Máy chủ ứng dụng WebSphere (WebSphere Application Server).
Bây giờ ứng dụng được triển khai có khả năng xử lý nhiều bên thuê. Tuy nhiên, ứng dụng ban đầu sẽ không có một giao diện quản trị và quản lý để quản lý nhiều bên thuê hoặc để theo dõi một ứng dụng nhiều bên thuê.
Nhà máy SaaS (SaaS-Factory) cũng có thể tạo ra và cài đặt một ứng dụng
đồng hành được gọi là Buồng lái SaaS (SaaS-Cockpit™) cung
cấp các dịch vụ nhiều bên thuê cơ bản này. Nó có quyền truy cập vào Cơ sở
dữ liệu siêu mô hình giống như ứng dụng chính và có các màn hình quản lý
để cung cấp bên thuê, gán các tài khoản
**Nhà quản trị của bên
thuê** (Tenant Administrator) và cấu hình các tham số cơ bản
của các cấu hình ứng dụng cho mỗi bên thuê khác nhau đã có sẵn. Ngoài ra
còn có các phương tiện quản trị để theo dõi và lập báo cáo về các bên thuê
và người dùng của họ. Do một trong các đặc điểm chung của các ứng dụng
SaaS là cần theo dõi các thuê bao và tính cước bên thuê, nên cũng có sẵn
các phương tiện để tính cước hoặc tích hợp với hệ thống tính cước bên
ngoài.
##### Hình 4. Cấu trúc để triển khai ứng dụng SaaS mới của bạn vào đám mây
![ Cấu trúc để triển khai ứng dụng SaaS mới của bạn vào đám mây](figure4.gif)
Mức triển khai này là khá cơ bản đối với việc triển khai ứng dụng SaaS. Các đặc điểm của các ứng dụng vẫn còn nguyên sau khi chuyển đổi và các kiểu kịch bản triển khai tiêu chuẩn, bao gồm cả việc sử dụng các công cụ quản lý đám mây để tạo ra các khuôn mẫu và lan truyền các cá thể của ứng dụng, có thể được sử dụng để triển khai một kiến trúc vận hành đáp ứng các nhu cầu của ứng dụng về khả năng mở rộng, tính co giãn, khả năng phục hồi và dự phòng.
Một ứng dụng SaaS điển hình có thể có một tập các máy chủ ứng dụng được truy cập thông qua một bộ cân bằng tải và được kết nối đến một máy chủ cơ sở dữ liệu. Chính máy chủ cơ sở dữ liệu có thể được triển khai như một cụm với nhiều máy chủ cơ sở dữ liệu để mang lại khả năng mở rộng và dự phòng.
IBM DB2 cung cấp một số công nghệ và cấu hình có thể được sử dụng để đạt được khả năng phục hồi và thời gian phục hồi được đảm bảo, cũng như cho phép phân phối tải trên cơ sở dữ liệu:
- Các cấu hình Phục hồi sau thảm họa sẵn sàng cao của DB2 (HADR - High Availability Disaster Recovery) có thể cung cấp cả khả năng sẵn sàng phục hồi lẫn một khả năng cân bằng tải nào đó thông qua việc sử dụng chế độ thứ cấp như là một cơ sở dữ liệu chỉ đọc.
- Công nghệ pureScale và Tự động hóa hệ thống Tivoli (TSA - Tivoli System Automation) của IBM cho phép một môi trường cơ sở dữ liệu được phân cụm có nhiều nút chia sẻ tải xử lý, nhưng hai thứ đó có nhiều hạn chế về cấu hình phần cứng và hệ điều hành.
Xu hướng về tính sẵn sàng của cơ sở dữ liệu và khắc phục lỗi đang trở nên phức tạp hơn cho các ứng dụng SaaS vì số lượng khách hàng/bên thuê bị ảnh hưởng bởi bất kỳ hư hại nào đều lớn hơn so với phần mềm cục bộ của khách hàng truyền thống (Hình 5).
##### Hình 5. Kiến trúc triển khai SaaS cho các hoạt động đám mây có phục hồi mở rộng được
![ Kiến trúc triển khai SaaS cho các hoạt động đám mây có phục hồi mở rộng được](figure5.gif)
Có xu thế hướng về các khả năng cho phép ứng dụng chạy liên tục thậm chí vượt qua cả việc tổ chức lại dữ liệu không trực tuyến, sự tiến triển của lược đồ, các nâng cấp phiên bản, và các thay đổi lớn về chịu tải. Công nghệ pureScale của IBM đang di chuyển từ thế giới các hệ thống z System sang AIX® và Linux® và cho phép một dạng xử lý năng lực và thời gian hoạt động mà trước đây chỉ dành cho các môi trường máy tính lớn chuyên dụng.
## Kết luận
Quá trình phát triển của ngành công nghiệp công nghệ thông tin hướng tới SaaS đang tiếp diễn và như bạn có thể đã phỏng đoán, nó đã bắt đầu gây ra một số thay đổi lớn trong bức tranh toàn cảnh của ngành này. Điện toán đám mây đang phát triển với tốc độ nhanh hơn nhiều so với bất kỳ làn sóng công nghệ thông tin nào khác và SaaS là động lực cho sự phát triển đó. Quá trình chuyển tiếp này đang buộc các công ty phải suy nghĩ lại về tổ chức kinh doanh của họ và phát triển các cách suy nghĩ mới về việc phân phối các dịch vụ trong một thế giới công nghệ thông tin có trung tâm là đám mây. Đối với các nhà cung cấp phần mềm, một điều cấp bách ngày càng gia tăng là phải hiểu, chuẩn bị, và thực hiện việc chuyển đổi đó, hoặc trái lại sẽ bị bỏ rơi lại phía sau trên đống bụi kỹ thuật số của lịch sử.
Mô hình SaaS-trên-một đám mây tự nó khác với mô hình của nhà cung cấp phần mềm truyền thống về cả những vấn đề kỹ thuật lẫn kinh doanh. Những khác biệt đó làm cho quá trình chuyển đổi sang SaaS trở thành một nỗ lực có nguy cơ cao hơn đối với các ISV. Để giảm nguy cơ và đẩy nhanh thời gian vào thị trường, các ISV có thể tận dụng các công nghệ, sản phẩm, và các đối tác đã qua thử thách để hỗ trợ trong quá trình chuyển đổi này.
### Lời cảm ơn
Rất cám ơn Mike Oliver, Rob Brown, Mark Joncich, Kaiser Saeed và Feyzi Fatehi đã chiếu cố tham gia đóng góp những ý tưởng và những đề nghị và xem lại bài viết này; và cám ơn Aimee Dean vì đã hỗ trợ biên tập.
## Tài nguyên
### Học tập
- Loạt bài
[Tạo các ứng dụng nhiều bên thuê có kịch bản lệnh động bằng cách sử dụng WebSphere sMash](http://www.ibm.com/developerworks/offers/lp/demos/summary/wesd-saaswsmash1.html?S_TACT=105AGY75)giúp bạn xây dựng một mẫu triển khai-ứng dụng nhiều bên thuê.
- Loạt bài
[Phát triển và triển khai các giải pháp phân phối trên Web cho nhiều bên thuê bằng cách sử dụng phần mềm trung gian của IBM](http://www.ibm.com/developerworks/webservices/library/ws-middleware/index.html?S_TACT=105AGY75)mô tả các mẫu khác nhau để giải quyết cho phép nhiều bên thuê trong các ứng dụng của bạn.
- Bài viết kinh điển
[An toàn cho một ứng dụng SaaS nhiều bên thuê](http://www.ibm.com/developerworks/java/library/j-saas/?S_TACT=105AGY75)cung cấp một cách tiếp cận tin tưởng và thiết thực để bảo đảm an toàn một ứng dụng Java nhiều bên thuê.
- Tìm hiểu thêm về
[Máy chủ nhiều bên thuê](http://corenttechnology.com/index.php?option=com_content&view=category&layout=blog&id=1&Itemid=66) [của Corent Technology](http://corenttechnology.com/)
- Để biết thêm về các công nghệ khác được
đề cập trong bài viết này:
- Truy cập
[Java at developerWorks](http://www.ibm.com/developerworks/java/?S_TACT=105AGY75)để biết thêm kiến thức về cách sử dụng JDBC và các thùng chứa Servlet J2EE.
- Bạn có thể tải về và sử dụng
[jBilling](http://www.jbilling.com/)mã nguồn mở miễn phí.
- Tìm hiểu
[cách chia sẻ cơ sở dữ liệu bằng Hibernate](http://www.ibm.com/developerworks/java/library/j-javadev2-11/?S_TACT=105AGY75).
- Khám phá
[DB2 puerScale](http://www.ibm.com/developerworks/data/library/dmmag/DBMag_2010_Issue1/DBMag_Issue109_pureScale/?S_TACT=105AGY75).
- Tìm hiểu về
[HADR](http://www.ibm.com/developerworks/data/library/long/dm-0907hadrdb2haicu/?S_TACT=105AGY75).
- Truy cập
- Trong phần
[các tài nguyên của nhà phát triển đám mây](https://www.ibm.com/developerworks/cloud/index.html?S_TACT=105AGY75)trên developerWorks, hãy khám phá và chia sẻ kiến thức và kinh nghiệm của các nhà phát triển ứng dụng và dịch vụ đang xây dựng các dự án của họ để triển khai lên đám mây.
### Lấy sản phẩm và công nghệ
[Trang web Phát triển và thử nghiệm nghiệp vụ thông minh của IBM trên đám mây của IBM](http://www-935.ibm.com/services/us/igs/cloud-development/)là nơi để bạn thấy cách bắt đầu phát triển các ứng dụng của bạn cho đám mây như thế nào.
- Xem
[danh sách các ảnh phần mềm có sẵn trên đám mây của IBM đang gia tăng liên tục](http://www.ibm.com/developerworks/cloud/devtest.html?S_TACT=105AGY75).
### Thảo luận
- Tham gia một
[nhóm điện toán đám mây trên cộng đồng developerWorks](https://www.ibm.com/developerworks/mydeveloperworks/groups/service/html/allcommunities?tag=cloud&page=1&S_TACT=105AGY75).
- Đọc tất cả
[các blog tuyệt vời về điện toán đám mây trên cộng đồng developerWorks](https://www.ibm.com/developerworks/mydeveloperworks/blogs/home/tags/cloud?lang=en&S_TACT=105AGY75).
- Tham gia
[cộng đồng developerWorks](https://www.ibm.com/developerworks/mydeveloperworks/?S_TACT=105AGY75), một mạng lưới chuyên nghiệp và tập hợp thống nhất các công cụ cộng đồng để kết nối, chia sẻ, và cộng tác.
## Bình luận
[Vùng dữ liệu trên developerWorks](http://www.ibm.com/developerworks/vn/views/data/libraryview.jsp)
Khám phá các bài viết xoay quanh lĩnh vực dữ liệu, Quản lý hệ thống thông tin
[Vùng mã nguồn mở trên developerWorks](http://www.ibm.com/developerworks/vn/views/opensource/libraryview.jsp)
Xem các bài viết về HTML, CSS, JavaScript,...
[Điện toán đám mây](http://www.ibm.com/developerworks/vn/views/cloud/libraryview.jsp)
Tìm hiểu về điện toán đám mây

Content-Language: en-US

Kp-eeAlive: timeout=10, max=84


text:
Rượu
Rượu được sử dụng như một chất tẩy màu phổ biến nhất, giúp hòa tan các chất nhuộm cứng đầu. Thấm rượu vào miếng bông rồi cọ xát phần bị lem màu. Bạn sẽ thấy hiệu quả nhanh chóng.
Kem đánh răng
Nếu bạn muốn một phương pháp khác nhẹ nhàng và ít bị kích ứng da hơn, hãy dùng kem đánh răng. Với vết bẩn mỏng, nhẹ bạn có thể dùng bản chải ẩm với kem đánh răng để chải vào khu vực da bị lấm màu.
Bột nở
Rất nhiều bà nội trợ dùng bột nở (baking soda) để giải quyết các vết bẩn. Nó là một phương pháp tự chế giúp loại bỏ màu nhuộm tóc trên da bạn. Bạn chỉ cần hòa bột nở vào nước, dùng bông thấm rồi chà lên da.
Dầu thoa người trẻ em (baby oil)
Baby oil là phương pháp xóa màu khá hữu hiệu. Nó có tác dụng tốt mà lại nhẹ nhàng cho da,hòa tan các phẩm màu, chất nhuộm tóc. Nhỏ vài giọt dầu vào khăn hay miếng bông, chà lên da bị lem màu. Để qua đêm rồi rửa bằng nước ấm, vết bẩn sẽ hết hoàn toàn.
Thiết kế web bán hàng
Đăng ký tên miền
Doanh nhân
Tên miền miễn phí
Email Marketing
Rao vặt Điện thoại chính hãng
Rao vặt Laptop
Rao vặt Bất động sản
Rao vặt Thời trang nữ
Rao vặt Điện tử điện lạnh
Rao vặt Thuê nhà trọ
Mùa hè
nuoi bo cau
Cách tết tóc đẹp
Bao cao su
Chuyện ấy
Cách làm trắng da
Món ngon ngày hè
Chăm sóc da mặt
Tổ chức đám cưới
Chăm sóc da ngày hè
Oral sex, quan hệ bằng miệng
Cách tán gái
Cách trang điểm nhẹ
Thời trang mùa hè
Các tư thế quan hệ
Du lịch hè
Giảm cân hiệu quả
Cách tán gái
Xem tử vi
Ky tu dac biet
Handmade
Chuyện ấy
Phòng bệnh ngày hè
Váy công sở
Quan hệ vợ chồng
Dang ky facebook
Chuyện hẹn hò
Sinh con trai
Stt buồn
Ảnh bìa facebook đẹp
Oral Sex
Zing me đăng nhập
quan he lan dau
vo tac thien
các tư thế khi quan hệ
quen mat khau facebook
cách nấu bò kho
cách búi tóc đẹp
cách hôn
suon xao chua ngot
toc xoan
cách làm giá đỗ
sinh con trai
cắm hoa nghệ thuật
that bim toc
làm đồ handmade
Cúng rằm tháng 7
lễ vu lan
áo crop top
cách nấu bún bò huế
lau thai
cach lam giau
nhung kieu toc ngan dep
cách cắm hoa đẹp
cho chihuahua
Địa chỉ: 442 Đội Cấn, Phường Cống Vị, Quận Ba Đình, Hà Nội - ĐT: 04 66558868 - Fax: 04 37868904
Giấy phép số 1669/GP-STTTT do Sở Thông tin và Truyền thông Hà Nội cấp ngày 12/06/2014.

WARC-Type: response

Content-Type: application/http; msgtype=response

Cache-Control: private

Content-Type: text/html; charset=utf-8

Connection: close


markdown:
![ Mưa Buồn - Như Quỳnh](http://image.mp3.zdn.vn/thumb/165_165/covers/3/2/32eef9210c4a0d64bcec77cfd49e0939_1289464259.jpg)
# Mưa Buồn - Như Quỳnh
Năm phát hành: 2009 Số bài hát: 7
Thể loại: Việt Nam, Nhạc Trữ Tình
Mưa buồn là album của Như Quỳnh ra đời năm 2009 với dòng nhạc trữ tình dạt dào cảm xúc đã đem lại thành công của Như Quỳnh. Album tuyển tập 10 ca khúc như: Mưa buồn, Trên đỉnh mùa đông, Đôi Bóng, Xin cám ơn tình nhân....

WARC-Truncated: length

Content-Type: text/html; charset=UTF-8

Cache-Control: private, max-age=0

X-Content-Type-Options: nosniff

X-XSS-Protection: 1; mode=block

Server: GSE


text:
Thích Thiện Xuân video - Thich Thien Xuan video - Trang thứ 2 của 7
Loading
Trang chủ
Download
Top Videos
New Videos
Random video
Tác giả
Liên hệ
Đăng ký
Đăng video
Tải lên
Chuyên mục
Kinh - Chú
Pháp thoại
Sách nói
Tân nhạc Phật giáo
Cổ nhạc Phật giáo
Nhạc Thiền
Phim truyện
Phim hoạt hình
Phim tài liệu
Phật pháp nhiệm màu
Ánh sáng Phật pháp
Một ngày an lạc
Tác giả
Sắp xếp theo số video:
Phật Âm
Thích Nhật Từ
Thích Trí Huệ
Pháp Sư Tịnh Không
Thích Pháp Hòa
Thích Trí Quảng
Thích Phước Tiến
ĐĐ. Thích Minh Thành
Thích Thiện Thuận
Thích Nhất Hạnh
Thích Nữ Như Lan
Thích Thiện Xuân
Thích Giác Nhàn
Thích Thanh Từ
TT. Thích Minh Thành
Diệu Pháp Âm
Thích Giác Hóa
Thích Chân Quang
Thích Bửu Chánh
Võ Tá Hân
Xem thêm >>
Thành viên
Nhớ tôi
Quên mật khẩu?
Thích Thiện Xuân
Có tất cả 329 videos
Sắp xếp theo:
Ngày
Lượt xem
Đánh giá
Tiêu đề
Tiêu đề video
Lượt xem
Mới
Tác giả:
Thích Thiện Xuân
1,141
Vết Thương
Tác giả:
Thích Thiện Xuân
2,435
Liên Trì
Tác giả:
Thích Thiện Xuân
1,315
32 Tướng Tốt Của Đức Phật
Tác giả:
Thích Thiện Xuân
1,117
Phương Pháp Hóa Giải Phiền Não
Tác giả:
Thích Thiện Xuân
2,668
Địa ngục trong ba cõi
Tác giả:
Thích Thiện Xuân
1,467
Tự Tin
Tác giả:
TT. Thích Thiện Xuân
2,060
Báo Đức Ân Sư
Tác giả:
TT. Thích Thiện Xuân
974
Trì Giới Ba La Mật (Kỳ 3)
Tác giả:
TT. Thích Thiện Xuân
622
Ý Nghĩa Của Tam Thời Hệ Niệm
Tác giả:
TT. Thích Thiện Xuân
1,040
Tìm Hiểu Quy Y Tam Bảo (Trọn Bài, 1 Phần)
Tác giả:
Thích Thiện Xuân
1,329
Lịch Sử Đức Phật (Kỳ 2)
Tác giả:
TT. Thích Thiện Xuân
513
Tứ Tinh Tấn Pháp
Tác giả:
TT. Thích Thiện Xuân
528
Lịch Sử Phật Giáo Trung Hoa
Tác giả:
TT. Thích Thiện Xuân
675
Luân Hồi
Tác giả:
Thích Thiện Xuân
2,822
Kính Mừng Ngày Nhà Giáo Việt Nam
Tác giả:
Thích Thiện Xuân
764
Nghi thức cung thỉnh giảng sư
Tác giả:
Thích Thiện Xuân
1,060
Giá Trị Của Thời Gian
Tác giả:
Thích Thiện Xuân
1,451
Phương Tiện xưa và nay
Tác giả:
Thích Thiện Xuân
1,201
Niệm Phật Thành Phật
Tác giả:
TT. Thích Thiện Xuân
856
Ôn Tập Phật Học Phổ Thông
Tác giả:
Thích Thiện Xuân
1,104
Nghi Thức Thực Hành
Tác giả:
Thích Thiện Xuân
849
Tụng Kinh (Giảng Tại Úc Châu, 2013)
Tác giả:
Thích Thiện Xuân
1,352
Niệm Phật (Giảng Tại Úc Châu, 2013)
Tác giả:
Thích Thiện Xuân
1,171
7 Ý Niệm Tinh Tấn (Trọn Bài, 1 Phần)
Tác giả:
TT. Thích Thiện Xuân
605
Thứ Bậc
Tác giả:
Thích Thiện Xuân
931
Tám Điều Khuyên Dạy Của Pháp Môn Tu Tịnh Độ
Tác giả:
TT. Thích Thiện Xuân
963
Cực Lạc
Tác giả:
Thích Thiện Xuân
1,384
Ta Là Ai Ta Đang Ở Đâu
Tác giả:
Thích Thiện Xuân
1,820
Văn Tư Và Tu
Tác giả:
Thích Thiện Xuân
1,057
Sống Vì Hạnh Phúc Lớn
Tác giả:
Thích Thiện Xuân
963
Gian Nan Cuộc Đời
Tác giả:
Thích Thiện Xuân
1,624
Chìa Khóa
Tác giả:
Thích Thiện Xuân
914
Hiểu Biết, Thực Tế, An Lạc
Tác giả:
Thích Thiện Xuân
1,243
Phương Pháp Tạo Phước
Tác giả:
Thích Thiện Xuân
1,426
Niềm Tin Tăng Bảo
Tác giả:
Thích Thiện Xuân
632
Lịch Sử Phật Giáo Ấn Độ
Tác giả:
TT. Thích Thiện Xuân
633
Bốn Pháp Trong Bốn Tám Pháp Của Ngài Triệt Ngộ Đại Sư
Tác giả:
TT. Thích Thiện Xuân
395
Lịch Sử Của Đức Phật (Kỳ 1)
Tác giả:
TT. Thích Thiện Xuân
415
Ý Nghĩa Của Hình Tượng Quán Thế Âm
Tác giả:
TT. Thích Thiện Xuân
2,365
Bốn Điều Kiện Vãng Sanh
Tác giả:
TT. Thích Thiện Xuân
548
Những Lời Phật Dạy
Tác giả:
TT. Thích Thiện Xuân
663
Bảy Ý Niệm Tinh Tấn
Tác giả:
TT. Thích Thiện Xuân
408
Bài Sám Nhất Tâm
Tác giả:
TT. Thích Thiện Xuân
995
Sử 33 Vị Tổ Thiền Tông
Tác giả:
Thích Thiện Xuân
2,217
Bồ Tát Hạnh Lộ Trình Tâm
Tác giả:
Thích Thiện Xuân
636
Chánh Kiến Trong Câu Niệm Phật
Tác giả:
Thích Thiện Xuân
535
Cái Rốn Của Vũ Trụ, Cái Rốn Của Con Người
Tác giả:
Thích Thiện Xuân
680
Ghen
Tác giả:
Thích Thiện Xuân
1,572
Giá Trị Của Thời Gian
Tác giả:
Thích Thiện Xuân
647
Trang thứ 2 của 7
« Lùi
1
2
3
4
5
6
7
Tiếp »
Trang chủ
|
Liên hệ
|
Đăng ký
|
Lên trên
Thư ngỏ kêu gọi ủng hộ quỹ phát triển trang nhà Phật Âm
© 2014 Phật Âm. All rights reserved

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Pragma: no-cache

Content-Encoding: gzip

Vary: Accept-Encoding,User-Agent


text:
Xem 0nline Phim Hành Động Đặc Vụ
http://phim88.com/online/xem-phim-view-143-1548.html
Download DVD Rip Phim Và Bình Luận Phim – Hành Động Đặc Vụ
http://phim88.com/forum/showthread.php?t=1740
“Phá vỡ các tầng lớp cạm bẫy
khám phá ra những cạm bẫy của các tập đoàn với các bí mật đen tối”
tên tiếng Anh: The brink of law
tên gốc: đột vây hành động
số tập: 25
ngày thử trang phục: 27/4/2006
ngày phát sóng trên TVB: 8/1/2007
ngày phát hành ở VN: 13/6/2007
giám chế: Mai Tiểu Thanh (bằng chứng thép, quyền lực đen tối, trói buộc)
đề tài: buôn lậu, cá độ
diễn viên:
Mã Tuấn Vỹ – Đường Chí Cao
Ngô Trác Hy – Đồng Nhật Tiến Leo
Liêu Bích Nhi – Từ Dĩnh
Từ Tử San – Ân Hướng Tình
Dương Tư Kỳ – Tống Gia Nhi
Nhạc Hoa – Đồng Triển Long
Mễ Tuyết – Tống Kim Chi
Huỳnh Gia Lạc – Đồng Nhật Lãng Vincent
Thái Kỳ Tuấn – Đồng Nhật Chiêu
Mã Quốc Minh – Ân Hướng Minh
Trần Kỳ – Madam Dương
Hạ Vũ – Đường Đại Hải
Lý Quốc Lân – Tống Kim Nguyên
La Lạc Lâm – Đồng Triển Bằng
Trần Tự Dao – Đường Chỉ Mẫn Coco
Hàn Mã Lợi – Hà Mỹ Nghiên
Lâm Y Kỳ – Lý Thục Linh
Lý Thành Xương – Châu Văn Bưu
Lỗ Chấn Thuận – sir Tăng
Phùng Tố Ba – chị Bảo
Đới Chí Vỹ – Tưởng Diệu Quyền
Triệu Tịnh Nghi – May
Giản Mộ Hoa – Cindy
Trịnh Tuấn Hoằng – Ben
Trần Dĩnh Nghiên – Rita
Diệp Khải Nhân – Susan
Lâm Vịnh Đông – Johnny
Huỳnh Dật Đồng – Apple
« TVBI : Song Long Đại Đường 42 eps US Lồng Tiếng | Ân Tình Bích Huyết Kiếm – 30 Eps Uslt ! »

markdown:
**Xem 0nline Phim Hành Động Đặc Vụ**
[http://phim88.com/online/xem-phim-view-143-1548.html](http://phim88.com/online/xem-phim-view-143-1548.html) **Download DVD Rip Phim Và Bình Luận Phim – Hành Động Đặc Vụ **
[http://phim88.com/forum/showthread.php?t=1740
](http://phim88.com/forum/showthread.php?t=1740)
“Phá vỡ các tầng lớp cạm bẫy
khám phá ra những cạm bẫy của các tập đoàn với các bí mật đen tối”
tên tiếng Anh: The brink of law
tên gốc: đột vây hành động
số tập: 25
ngày thử trang phục: 27/4/2006
ngày phát sóng trên TVB: 8/1/2007
ngày phát hành ở VN: 13/6/2007
giám chế: Mai Tiểu Thanh (bằng chứng thép, quyền lực đen tối, trói buộc)
đề tài: buôn lậu, cá độ
diễn viên:
Mã Tuấn Vỹ – Đường Chí Cao
Ngô Trác Hy – Đồng Nhật Tiến Leo
Liêu Bích Nhi – Từ Dĩnh
Từ Tử San – Ân Hướng Tình
Dương Tư Kỳ – Tống Gia Nhi
Nhạc Hoa – Đồng Triển Long
Mễ Tuyết – Tống Kim Chi
Huỳnh Gia Lạc – Đồng Nhật Lãng Vincent
Thái Kỳ Tuấn – Đồng Nhật Chiêu
Mã Quốc Minh – Ân Hướng Minh
Trần Kỳ – Madam Dương
Hạ Vũ – Đường Đại Hải
Lý Quốc Lân – Tống Kim Nguyên
La Lạc Lâm – Đồng Triển Bằng
Trần Tự Dao – Đường Chỉ Mẫn Coco
Hàn Mã Lợi – Hà Mỹ Nghiên
Lâm Y Kỳ – Lý Thục Linh
Lý Thành Xương – Châu Văn Bưu
Lỗ Chấn Thuận – sir Tăng
Phùng Tố Ba – chị Bảo
Đới Chí Vỹ – Tưởng Diệu Quyền
Triệu Tịnh Nghi – May
Giản Mộ Hoa – Cindy
Trịnh Tuấn Hoằng – Ben
Trần Dĩnh Nghiên – Rita
Diệp Khải Nhân – Susan
Lâm Vịnh Đông – Johnny
Huỳnh Dật Đồng – Apple
«
[TVBI : Song Long Đại Đường 42 eps US Lồng Tiếng](http://www.phim88.com/phim-online/song-long-dai-duong-167.html) | [Ân Tình Bích Huyết Kiếm – 30 Eps Uslt !](http://www.phim88.com/phim-online/an-tinh-bich-huyet-kiem-175.html) »

Vary: User-Agent

Server: cloudflare-nginx


text:
Tân Thủ Đăng KýQuên Mật Mã?
Hệ Thống CSKH : Đặt câu hỏi
Yahoo : phitiencs
RaidCall : 2004
Phản Hồi : Thời gian làm việc
Giờ Làm Việc : 9:00-20:00 Thứ 2 - Thứ 7
Home > Login
Đăng Nhập
Gồm 6-20 ký tự, hoặc điền vào địa chỉ mail của bạn
Gồm 6-20 ký tự
Quên Mật Mã?
Log in with:
Copyright 2011-2012 phitien.com All rights reserved

Vary: Accept-Encoding

Set-Cookie: lang=vn; expires=Fri, 22-Aug-2014 06:15:54 GMT; path=/; domain=.phitien.com

P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"


text:
MÌNH CÓ 1 KHO SÁNG KIẾN KINH NHGIÊM ĐẠT GIẢI CAO Ở CẤP TỈNH từ lớp 1,2,3,4,5,6,7,8,9,10,11,12 tiểu học, trung học cơ sở, cấp 3, mầm non....
BẠN NÀO MUỐN THAM KHẢO THÌ ALO. 0922 949197 MÌNH GỬI QUA EMAIL.
DANH SÁCH CÁC SKKN ĐANG CÓ tại www.vinhhienbio.violet.vn


text:
Trong cuộc sống hiện đại, ngoài những hình thức giải trí thông thường thì việc chơi game trên máy tính đã là một thú vui cực kỳ hấp dẫn. Và lẽ tất nhiên, lĩnh vực kinh doanh game trở thành miếng bánh ngon cho các nhà kinh doanh, trong đó có Chris Russo và Kelly Perdew.
Sống và lập nghiệp ở xứ người chưa bao giờ là một việc dễ dàng, nhưng với Macario Ramirez, thì điều đó lại chẳng vấn đề gì. Ông đã xây dựng được cơ ngơi kinh doanh khá thành đạt chính nhờ tình yêu quê hương bản xứ của mình.
Sống và lập nghiệp ở xứ người chưa bao giờ là một việc dễ dàng, nhưng với Macario Ramirez, thì điều đó lại chẳng vấn đề gì. Ông đã xây dựng được cơ ngơi kinh doanh khá thành đạt chính nhờ tình yêu quê hương bản xứ của mình.
Peter Crawfurd và Michael Yang là hai trong số các nhà kinh doanh theo đuổi trào lưu bán sản phẩm theo thiết kế của khách hàng. Họ đã thành công nhờ các chiến lược kinh doanh đầy sáng tạo.

Cache-Control: no-store, must-revalidate, private


text:
Chuyên phân phối điện thoại giá sỉ cho đại lý
iPhone 6 XÁCH TAY SINGAPORE Giá bán:3.500.000.vnđ
Samsung galaxy s5 xách tay singapore
Samsung S5 trung quốc
Siêu khuyến mãi.Samsung Galaxy S4,,S5,,Note 3,,Iphone 5,5s cho anh em Vào mà xem
điện thoại samsung galaxy s4 xách tay singapo,16 gb,màn hình 5 ing,ram 2 gb
Samsung galaxy note 3 hàn quốc mới zin giá rẻ nhất sài gòn.
apple iphone 6 32 gb xách tay mới nguyên hộp,giá cực rẻ,bảo hành chu đáo,
IPHONE 5S GOLD 32gb bản quốc tế xách tay singapore mới 100%,giá 2tr1.vnđ.
Hoàng Huy mobile
Samsung Galaxy S4 i9500 16gb bản quốc tế Xách Tay giá cực rẻ.
Iphone 5s korea hàng liên doanh
Iphone 6 chính hãng Hongkong giá 3,5tr bảo hành 12 tháng
Samsung galaxy note 3 xách tay singapo mới nguyên hộp
Samsung Galaxy S5 Xách Tay Hàn Quốc 4 màu : đen/xanh/trắng/gold.
Samsung Galaxy S4 16G màu trắng chính hãng Hàn Quốc
Móc Điện Thoại Chuông Giáng Sinh
Túi điện thoại hạt cườm TDT 14
Dây đeo móc điện thoại M.13
Móc điện thoại C003
Đại lý phân phối sỉ Jeep A8i.land rover A8+, ADMET B30, Land rover B36, Vertu V1
Chống Sốc,Chống Va Đập Land Rover Jeep A8i bạn có thể sở hữu chỉ với 390.000vnd
Pin 6.000mAh xạc cho Smatphone-- Land Rover A8+(XP3300) Hầm Hố,cực chất
>Hello Kitty D10 đẹp,xinh nhìn là yêu <. Louis Vuitton LVM9 sang trọng Quý Phái
Đại lý phân phối Vertu Ferrari V1 Sang Trọng, Lịch Lãm, Đẳng Cấp, Đỉnh Cao

markdown:
|
|
##
|
1 phút trước
||
|
380.000
VNĐ
|
|
##
|
5 phút trước
||Thỏa thuận...|
|
|
##
|
5 phút trước
||Thỏa thuận...|
|
|
##
|
6 phút trước
||
|
99.000
VNĐ / 1
|
|
##
|
12 phút trước
||
|
550.000
VNĐ / máy
|
|
##
|
16 phút trước
||
|
495.000
VNĐ / 1
|
|
##
|
17 phút trước
||
|
550.000
VNĐ / máy
|
|
##
|
18 phút trước
||
|
349.000
VNĐ / cái
|
|
##
|
21 phút trước
||
|
530.000
VNĐ / cái
|
|
##
|
21 phút trước
||
|
250.000
VNĐ
|
|
##
|
25 phút trước
||
|
2.600.000
VNĐ / chiếc
|
|
##
|
26 phút trước
||
|
380.000
VNĐ / 1
|
|
##
|
29 phút trước
||
|
380.000
VNĐ / cái
|
|
##
|
38 phút trước
||
|
1.800.000
VNĐ / chiếc
|
|
##
|
41 phút trước
||
|
1.200.000
VNĐ
|
|
##
|
41 phút trước
||
|
3.800.000
VNĐ
|
|
##
|
42 phút trước
||
|
2.200.000
VNĐ / chiếc
|
|
##
|
45 phút trước
||
|
2.600.000
VNĐ
|
|
##
|
47 phút trước
||
|
2.800.000
VNĐ / chiếc
|
|
##
|
56 phút trước
||
|
3.500.000
VNĐ / cái
|
|
##
|
1 giờ 1 phút trước
||
|
3.800.000
VNĐ / chiếc
|
|
##
|
1 giờ 7 phút trước
||Thỏa thuận...|
|
|
##
|
1 giờ 13 phút trước
||
|
2.000.000
VNĐ / chiếc
|
|
##
|
1 giờ 13 phút trước
||
|
3.100.000
VNĐ / chiếc
|
|
##
|
1 giờ 17 phút trước
||
|
550.000
VNĐ / cái
|
|
##
|
1 giờ 17 phút trước
||
|
550.000
VNĐ / máy
|
|
##
|
1 giờ 23 phút trước
||
|
1.800.000
VNĐ / chiếc
|
|
##
|
1 giờ 25 phút trước
||
|
2.850.000
VNĐ / chiếc
|
|
##
|
1 giờ 28 phút trước
||Thỏa thuận...|
|
|
##
|
1 giờ 28 phút trước
||
|
550.000
VNĐ / máy

Server: Apache

Set-Cookie: history_raovat=820396%7C0; path=/


text:
Keywords:phim bo, phim hong kong, phim han quoc, phim tam ly, phim 18, hai kich, phim hoat hinh, tan co, cai luong, webcam videos
Category:Video, Phim, Hài Kịch, Nấu Ăn, Nhạc Việt Nam, Nhạc Hàn Quốc, Nhạc Vàng, Phim Việt Nam, Phim Trung Quốc, Phim Hồng Kông, Phim Nhật Bản, Phim Hàn Quốc, Phim Đài Loan, Phim Thái Lan, Phim Hành Động, Phim Hoạt Hình, Phim Tâm Lý, Phim Viễn Tưởng, Phim Dã Sử, Phim Kinh Dị - Ma, Phim Hài, Phim Tình Cảm, Phim Võ Thuật, Phim Thần Thoại, Tân Cổ - Cải Lương, Trang Điểm - Làm Đẹp, Việt Karaoke, Webcam Videos, Phim 18+, Hong Kong Drama, Hong Kong Movie, Japanese Drama, Japanese Movie, Chinese Drama, Chinese Movie, Korean Drama, Korean Show, Korean Movie, Hollywood Drama, Taiwan Movie, Taiwan Drama, Phỏng Vấn, Phỏng Vấn Xin Việc, Phim HD, Người Đẹp, Hot Jav, Phim Chiếu Rạp, Anri Sugihara, Saori Hara, Maria Ozawa, Tsubasa Amami, Tsukasa Aoi, Kirara Asuka, Yui Hatano, Aino Kishi, Azumi Mizushima, Rina Rukawa, Ria Sakurai, Hitomi Tanaka, Akie Harada, Rina Aizawa, Yoko Matsugane, Akiho Yoshizawa, Reon Kadena, Mizuki Hoshina, Momoka Nishina, Sayaka Isoyama, Ai Shinozaki
Disclaimer: VideosViet.Com is a video search engine that indexing and organizing videos on the web. Everyday 1,000+ new videos, phim, ca nhac, hai kich, phong su.


text:
Sơ đồ
|
Trợ giúp
Nhập tên:
Mật khẩu:
Lấy lại mật khẩu
Đăng ký
Trang chủ
Tin tức
Cơ sở dữ liệu
Từ khóa:
Tìm chuyên sâu
Giới thiệu WSS
Giới thiệu công ty
Lịch sử phát triển
Sơ đồ tổ chức
Bộ máy quản lý
Dịch vụ cung cấp
Hoạt động sự kiện
Video sự kiện
Hình ảnh hoạt động
Tin tức - sự kiện
Tin tức
Công bố thông tin
Tin CK niêm yết
Công bố thông tin
Nghị quyết
Giao dịch nội bộ
Báo cáo tài chính
Thực hiện quyền
Tin thị trường UPCoM
Công bố thông tin
Giao dịch nội bộ
Thực hiện quyền
Đấu giá cổ phần
Tin đấu giá cổ phần
Tin trái phiếu
Tin thị trường
Tin Kinh tế - Tài chính
Tin trong nước
Tin quốc tế
Bản tin WSS
Tin WSS
Cơ sở dữ liệu
Thị trường
Công ty niêm yết
Hồ sơ doanh nghiệp
Cơ cấu sở hữu
Báo cáo tài chính
-
Cân đối kế toán
-
Hoạt động kinh doanh
-
Lưu chuyển tiền tệ
-
Chỉ tiêu tài chính
Tin tức
Bản cáo bạch
Đối thủ cạnh tranh
Phân tích
Lịch sử giao dịch
Biểu đồ
Công ty sàn UPCoM
Giới thiệu công ty
Tin tức
Báo cáo tài chính
Trái phiếu
Giới thiệu trái phiếu
Tin tức
Hướng dẫn nhà đầu tư
Mở tài khoản
Đóng tài khoản
Gửi - rút tiền
Thực hiện giao dịch
Biểu phí giao dịch
Lưu ký chứng khoán
Thực hiện quyền
Đăng ký đấu giá
Hỗ trợ liên hệ
Quan hệ cổ đông
Công bố thông tin
Báo cáo tài chính
Báo cáo phân tích
Phân tích nền kinh tế
Phân tích ngành
Phân tích công ty
Lập báo cáo tài chính
Tuyển dụng
Vị trí tuyển dụng
Đường dây nóng
Đặt lệnh qua điện thoại:
- Tel: 043.8248686
Chăm sóc khách hàng:
- Tel: 043.8248686
Hộp thư WSS
mail.wss.com.vn/exchange
Online
29001766
Tiện ích
Bảng giá trực tuyến
Giao dịch trực tuyến
Biểu đồ kỹ thuật
Thông tin tổng hợp
Kết quả giao dịch
Bản tin WSS
STT
Ngày
Tiêu đề
Tải về
1
08/08/2014
Bản tin Tư vấn Tài chính WSS ngày 08/08/2014
2
07/08/2014
Bản tin Tư vấn Tài chính WSS ngày 07/08/2014
3
06/08/2014
Bản tin Tư vấn Tài chính WSS ngày 06/08/2014
4
05/08/2014
Bản tin Tư vấn Tài chính WSS ngày 05/08/2014
5
04/08/2014
Bản tin Tư vấn Tài chính WSS ngày 04/08/2014
6
30/07/2014
Bản tin Tư vấn Tài chính WSS ngày 30/07/2014
7
29/07/2014
Bản tin Tư vấn Tài chính WSS ngày 29/07/2014
8
28/07/2014
Bản tin Tư vấn Tài chính WSS ngày 28/07/2014
9
24/07/2014
Bản tin Tư vấn Tài chính WSS ngày 24/07/2014
10
23/07/2014
Bản tin Tư vấn Tài chính WSS ngày 23/07/2014
11
22/07/2014
Bản tin Tư vấn Tài chính WSS ngày 22/07/2014
12
21/07/2014
Bản tin Tư vấn Tài chính WSS ngày 21/07/2014
13
18/07/2014
Bản tin Tư vấn Tài chính WSS ngày 18/07/2014
14
17/07/2014
Bản tin Tư vấn Tài chính WSS ngày 17/07/2014
15
16/07/2014
Bản tin Tư vấn Tài chính WSS ngày 16/07/2014
16
09/12/2013
Bản tin Tư vấn Tài chính WSS ngày 09/12/2013
17
03/12/2013
Bản tin Tư vấn Tài chính WSS ngày 03/12/2013
18
02/12/2013
Bản tin Tư vấn Tài chính WSS ngày 02/12/2013
19
27/11/2013
Bản tin Tư vấn Tài chính WSS ngày 27/11/2013
20
26/11/2013
Bản tin Tư vấn Tài chính WSS ngày 26/11/2013
21
22/11/2013
Bản tin Tư vấn Tài chính WSS ngày 22/11/2013
22
20/11/2013
Bản tin Tư vấn Tài chính WSS ngày 20/11/2013
23
19/11/2013
Bản tin Tư vấn Tài chính WSS ngày 19/11/2013
24
18/11/2013
Bản tin Tư vấn Tài chính WSS ngày 18/11/2013
25
12/11/2013
Bản tin Tư vấn Tài chính WSS ngày 12/11/2013
26
11/11/2013
Bản tin Tư vấn Tài chính WSS ngày 11/11/2013
27
08/11/2013
Bản tin Tư vấn Tài chính WSS ngày 08/11/2013
28
05/11/2013
Bản tin Tư vấn Tài chính WSS ngày 05/11/2013
29
01/11/2013
Bản tin Tư vấn Tài chính WSS ngày 01/11/2013
30
30/10/2013
Bản tin Tư vấn Tài chính WSS ngày 30/10/2013
31
29/10/2013
Bản tin Tư vấn Tài chính WSS ngày 29/10/2013
32
28/10/2013
Bản tin Tư vấn Tài chính WSS ngày 28/10/2013
33
24/10/2013
Bản tin Tư vấn Tài chính WSS ngày 24/10/2013
34
23/10/2013
Bản tin Tư vấn Tài chính WSS ngày 23/10/2013
35
22/10/2013
Bản tin Tư vấn Tài chính WSS ngày 22/10/2013
36
17/10/2013
Bản tin Tư vấn Tài chính WSS ngày 17/10/2013
37
15/10/2013
Bản tin Tư vấn Tài chính WSS ngày 15/10/2013
38
14/10/2013
Bản tin Tư vấn Tài chính WSS ngày 14/10/2013
39
10/10/2013
Bản tin Tư vấn Tài chính WSS ngày 10/10/2013
40
08/10/2013
Bản tin Tư vấn Tài chính WSS ngày 08/10/2013
41
07/10/2013
Bản tin Tư vấn Tài chính WSS ngày 07/10/2013
42
04/10/2013
Bản tin Tư vấn Tài chính WSS ngày 04/10/2013
43
03/10/2013
Bản tin Tư vấn Tài chính WSS ngày 03/10/2013
44
01/10/2013
Bản tin Tư vấn Tài chính WSS ngày 01/10/2013
45
30/09/2013
Bản tin Tư vấn Tài chính WSS ngày 30/09/2013
46
27/09/2013
Bản tin Tư vấn Tài chính WSS ngày 27/09/2013
47
25/09/2013
Bản tin Tư vấn Tài chính WSS ngày 25/09/2013
48
24/09/2013
Bản tin Tư vấn Tài chính WSS ngày 24/09/2013
49
23/09/2013
Bản tin Tư vấn Tài chính WSS ngày 23/09/2013
50
20/09/2013
Bản tin Tư vấn Tài chính WSS ngày 20/09/2013
Xem tiếp
<
1
|
2
|
3
|
4
|
5
>
Trang chủ
|
Tin tức
|
Cơ sở dữ liệu
|
Liên hệ
Trụ sở chính:
Tầng 9, Tòa nhà ICON4 số 243A Đê La Thành, Quận Đống Đa, Hà Nội
Tel: 84.4.39367083 / Fax: 84.4.39367082
Email:
info@wss.com.vn
Website: www.wss.com.vn
Phát triển bởi
Active Group

Set-Cookie: Counter785=1; expires=Thu, 21-Aug-2014 06:47:34 GMT; path=/; HttpOnly