(Post 21/04/2011) Ngày nay, tại một ngân hàng của Việt Nam, khách hàng muốn thanh toán thẻ tín dụng họ phải đến một quầy riêng, muốn rút tiền phải đến quầy ATM riêng v.v… Nếu họ muốn chỉ đến một quầy mà có thể giải quyết mọi chuyện liên quan thì sao? Nếu họ chỉ muốn ở nhà và giải quyết chuyện tiền nong qua Internet mà không phải đi đến quầy này, quầy nọ thì sao? SOA giải quyết được những vấn đề đó. Với SOA, một ngân hàng vẫn khai thác được các hệ thống và giải pháp cũ nhờ kết nối chúng và cung cấp dịch vụ hỗ trợ KH theo các địa điểm hay giao diện khác nhau.

Kiến trúc hướng dịch vụ là gì? Kiến trúc hướng dịch vụ – Service Oriented Architecture – là một thuật ngữ khó hiểu bởi vì nó miêu tả hai thứ hoàn toàn khác nhau. Hai từ đầu tiên (Service Oriented) miêu tả phương pháp luận của việc phát triển phần mềm. Từ thứ ba (Architecture), kiến trúc là một bức tranh của tất cả các tài sản phần mềm trong một công ty, khá giống như một bản vẽ kiến trúc là một màn trình diễn tất cả các mảnh ghép nhỏ với nhau để tạo nên một toà nhà. Do vậy, kiến trúc hướng dịch vụ là một chiến dịch cho biết dự định xây dựng tất cả các tài sản phần mềm của công ty đó bằng cách sử dụng phương pháp luận lập trình hướng dịch vụ.

Dịch vụ là gì?

Dịch vụ là khúc dữ liệu phần mềm hoặc các cấu phần được cấu trúc để chúng có thể liên kết với các cấu phần phần mềm khác một cách dễ dàng. Ý tưởng đằng sau các phần mềm này thật đơn giản: Công nghệ nên được diễn tả thành từng đoạn dữ liệu mà người kinh doanh có thể hiểu được hơn là một phần mềm ứng dụng ít người hiểu như ERP hoặc CRM.

Sự trừu tượng là cốt lõi của khái niệm dịch vụ, ý tưởng mà bạn có thể hợp dịch code phần mềm vào trong một đoạn dữ liệu có ý nghĩa mà nó có thể được chia sẻ hoặc tái sử dụng trong nhiều lĩnh vực khác nhau của công ty đó.

Đây là một khái niệm cổ lỗ quay trở lại thập niên 80, khi mà lập trình hướng đối tượng xuất hiện lần đầu tiên, sự khác biệt duy nhất đó là hiện nay tham vọng về quy mô và tính tinh sảo của các đối tượng phần mềm này lớn hơn trước rất nhiều.

Có nhiều cách khác nhau để kết nối các dịch vụ chẳng hạn các liên kết lập trình tuỳ chọn hoặc các phần mềm tích hợp từ các nhà cung cấp nhưng từ năm 2001, một loạt các cơ chế giao tiếp phần mềm được biết đến như là các dịch vụ web được xây dựng dựa trên nền tảng web toàn cầu, bất cứ nơi nào cũng có, đã trở thành một phương pháp phổ biến cho việc kết nối các cấu phần phần mềm với nhau.

Sự khác nhau giữa kiến trúc hướng dịch vụ (SOA) và các dịch vụ web là gì?

Kiến trúc hướng dịch vụ là chiến dịch bao quát toàn bộ việc xây dựng các ứng dụng phần mềm trong một công ty – nghĩ về một thiết kế kiến trúc – ngoại trừ trường hợp này, kiến trúc này cần phải làm cho tất cả các chi tiết của phần mềm được xây dựng trên cơ sở dùng một phương pháp luận phát triển phần mềm cụ thể được biết đến như là việc lập trình hướng dịch vụ. Trong khi đó, dịch vụ web là một tập hợp các cơ chế giao tiếp chuẩn được xây dựng trên nền tẳng web toàn cầu. Các dịch vụ web là một phương pháp giao tiếp và kết nối. SOA là một chiến dịch CNTT toàn diện.

Làm thế nào để biết được liệu tôi có nên chấp nhận SOA như là một chiến dịch hay không?

Bởi vì nó là một chiến dịch kiến trúc, SOA liên quan đến nhiều thứ hơn chứ không phải chỉ đơn giản là xây dựng phần mềm. Thiết lập một kiến trúc trên nền tảng một danh mục đầu tư các dịch vụ yêu cầu các giám đốc CNTT của doanh nghiệp đó phải làm một vụ hấp dẫn cho kiến trúc doanh nghiệp, một phương pháp luận phát triển tập trung và một đội ngũ nhân lực tập trung gồm các giám đốc, kiến trúc sư và lập trình viên dự án. Điều đó cũng yêu cầu một giám đốc điều hành và nhân viên hành chính luôn sẵn lòng mở đường cho CNTT để ngụp lặn trong quá trình kinh doanh chủ đạo của công ty đó. Hiểu được các quy trình đó và việc nhận được các đơn hàng mua dự trữ trên cơ sở chia sẻ của doanh nghiệp là những viên đá quan trọng của việc chuyển đổi kinh doanh dựa trên kiến trúc hướng dịch vụ – SOA.

Đối với các dịch vụ được tái sử dụng khắp công ty đó, thì phải có một phương pháp luận phát triển phần mềm tập trung để các lĩnh vực khác nhau của doanh nghiệp đó không xây dựng dịch vụ giống hệt theo những cách thức khác nhau hay sử dụng những sự liên kết không tương thích. Phải có một kho dữ liệu tập trung hoặc chỗ chứa để các lập trình viên sẽ biết được tìm kiếm dịch vụ ở đâu và vì vậy CNTT sẽ biết ai đang sử dụng chúng. Các dịch vụ này sẽ được chuyển hoá thành tài liệu để các lập trình viên biết được các thông tin hay dữ liệu đó dùng để làm gì, liên kết tới chúng như thế nào và những quy tắc để sử dụng chúng.

Hầu hết các công ty mà gặt hái được nhiều thành công dọc theo chặng đường đi tới SOA đã tạo ra một nhóm kiến trúc tập trung để chọn các quy trình sẽ là dịch vụ được kích hoạt và để tham khảo với những lĩnh vực khác nhau của công ty đó để xây dựng các dịch vụ cụ thể. Nhóm tập trung đó cũng tạo ra một cơ chế thuận tiện cho việc quản lý. Nếu tất cả các yêu cầu dịch vụ phải đi qua nhóm kiến trúc đó, các phương pháp luận phát triển dịch vụ ấy và dự án và những thoả thuận thực hiện có thể được quản lý dễ dàng hơn.

Các công ty đã có nhiều thành công nhất với SOA cho đến tận bây giờ là những công ty mà luôn gặt hái thành công với công nghệ: Các công ty lớn với những nguồn ngân sách lớn có nhiều hoạt động kinh doanh được dựa trên nền tảng công nghệ. Họ cũng có xu hướng có những nhà lãnh đạo kinh doanh sành sỏi về công nghệ và có khả năng hỗ trợ công việc trong công ty. Đối với các công ty không có những thành tựu này, SOA đang được làm ra không thể là “thần dược”.

Đối với các công ty nhỏ hơn, đối với những công ty mà có những sự cá cược lớn vào những phần mềm ứng dụng tích hợp và đối với những công ty đã chuẩn bị sẵn các chiến dịch tích hợp phần mềm ứng dụng chắc chắn tại chỗ thì SOA không phải là “khi nào” mà là “nếu”. Các giám đốc CNTT cần theo đuổi một chiến dịch SOA một cách cẩn thận bởi vì những phần lập kế hoạch kiến trúc và phát triển dịch vụ đó của SOA là khác biệt nhưng không phải độc lập – chúng cần được xem xét kỹ và triển khai song song. Các dịch vụ được xây dựng biệt lập không để lưu tâm đến các mục tiêu kinh doanh và kiến trúc của công ty đó thì có thể có khả năng tái sử dụng (một trong số những lợi ích quan trọng nhất của SOA) hoặc có thể thất bại hoàn toàn.

Lợi ích của SOA là gì?

Đầu tiên hãy đặt lợi ích của SOA trong triển vọng. SOA là một lưỡi hái mà nó lát mỏng sự phức tạp và sự dư thừa. Nếu công ty của bạn không lớn hay phức tạp, ví dụ hơn 2 hệ thống cơ bản đòi hỏi vài cấp tích hợp – không có vẻ như SOA sẽ mang lại nhiều lợi ích. Thất bại trong tất cả các quảng cáo thổi phổng sự thật về SOA hiện nay là thực tế mà phương pháp luận phát triển này bản thân nó không đem lại lợi ích thực – đó là những tác động mà nó có được trên một cơ sở hạ tầng dư thừa và phức tạp, cái cơ sở mà đem lại phần thưởng. Các kiến trúc sư nói có nhiều công việc có liên quan đến việc tạo một ứng dụng hướng dịch vụ tốt hơn là có một sự tích hợp phần mềm ứng dụng truyền thống hiện có. (Các cuộc điều tra cho thấy SOA đang được sử dụng cho việc tích hợp ứng dụng truyền thống ở hầu hết các công ty). Vì vậy thực tế có một chi phí bổ sung sinh ra do việc phát triển SOA trả trước. Vì có một lợi ích từ công việc đó nên nó phải loại bỏ công việc ở nơi nào khác bởi vì phương pháp luận này trong nội tại bản thân nó không hề tạo lợi ích kinh doanh. Trước khi xem xét xem liệu SOA có lợi ích hay không, đầu tiên bạn phải quyết định xem liệu có sự dư thừa nào không, thật tồi tệ nếu các ứng dịng được tích hợp mà có thể được cố kết hay bị loại bỏ là kết quả của việc chấp nhận SOA. Trong trường hợp này thì có vài lợi ích tiềm năng.

Để nhận được bức tranh toàn cảnh những lợi ích được bán kèm với SOA, bạn phải quan sát nó ở 2 mức: đầu tiên, là những ưu điểm (lợi ích) sách lược của sự phát triển hướng dịch vụ và thứ hau đó là những ưu điểm của SOA như là một chiến dịch kiến trúc tổng thể.

Ưu điểm của việc phát triển hướng dịch vụ:

  1. Tái sử dụng phần mềm. Nếu gói mã mà tạo thành một dịch vụ có quy mô và kích thước phù hợp sau đó nó có thể được tái sử dụng cho lần kế tiếp, một đội phát triển cần chức năng cụ thể đó cho một ứng dụng phần mềm mới mà nó mong muốn xây dựng. Họ không cần biết bất cứ thứ gì về việc mã được gói chặt như thế nào hay nó có nguồn gốc từ đâu. Tất cả những thứ mà họ cần làm đó là xây dựng một sự kết nối đến mã đó.
  2. Trong một công ty mà thường xuyên xây dựng những hệ thống mới dựa trên những chức năng tương tự – ví dụ một công ty bảo hiểm với nhiều bộ phận, mỗi một bộ phận đảm nhận cho các sản phẩm khác nhau hay một công ty thường xuyên thu được những công ty mới – thời gian được tiết kiệm thông qua việc phát triển, kiểm thử và tích hợp đó với chức năng phần mềm nhỏ bé tương tự đó có thể thêm vào.Năng suất gia tăng. Nếu các lập trình viên tái sử dụng các dịch vụ điều đó có nghĩa là các dự án phần mềm có thể tiến xa hơn và đội phát triển tương tự có thể tiếp tục nhiều dự án hơn. Sự tích hợp trở nên rẻ hơn nhiều( theo ước tính của Gartner thì ít nhất sẽ rẻ hơn 30%) và cũng nhanh hơn, chu trình phát triển các dự án mới sẽ giảm bớt thời gian đi vài tháng.
  3. Linh hoạt Thậm chí nếu các dịch vụ sẽ không được tái sử dụng, thì họ có thể đưa ra nhiều giá trị nếu họ làm cho hệ thống CNTT chỉnh sửa dễ dàng hơn. Ví dụ tại website ProFlowers.com có nhiều ứng dụng dư thừa hoặc tình trạng kêu la của nhiều đơn vị doanh nghiệp. Tuy nhiên theo ông Kevin Hall giám đốc CNTT của ProFlowers thì việc phân chia quá trình đặt hoa thành các dịch vụ riêng rẽ có nghĩa là mỗi một cấu phần có thể được tách biệt và được thay đổi như mong muốn để xử lý các cụm hoa theo yêu cầu nảy sinh xung quanh các ngày nghỉ. Khi ProFlowers đã có một ứng dụng nguyên khối, đơn lẻ xử lý quá trình đó thì một sự thay đổi đơn lẻ trong quy trình đó hay một sự gia tăng số lượng giao dịch( nói vào ngày Lễ tình nhân) đồng nghĩa với việc xé nhỏ toàn bộ hệ thống và xây dựng lại hệ thống đó.

Các ưu điểm khác của SOA đối với danh nghiệp:

  1. Định hướng kinh doanh. SOA là một bức tranh lớn của tất cả các quy trình kinh doanh và dòng dịch chuyển trong một công ty. Điều đó có nghĩa là người làm kinh doanh lần đầu tiên có thể mường tượng toàn bộ các quy trình kinh doanh được xây dựng theo quan điểm của công nghệ. Khi các dự án CNTT được đặt theo quan điểm của các hoạt động và các quy trình kinh doanh hơn là các ứng dụng phần mềm phức tạp, những người làm kinh doanh có thể đánh giá và ủng hộ các dự án CNTT tốt hơn. Tầm nhìn vĩ đại đối với SOA là khi dịch vụ CNTT toàn diện kích hoạt được các quy trình lớn của một doanh nghiệp, người làm kinh doanh một ngày nào đó sẽ có thể nắm quyền chỉnh sửa, pha trộn và kết hợp nhịp nhàng, ăn khớp các dịch vụ khác nhau đó với nhau thành những sự kết hợp quy trình mới trên chính doanh nghiệp của họ. Tuy vậy tầm nhìn này còn là viễn cảnh trong nhiều năm.
  2. Một cách thức tốt hơn để nâng cao vị thế CNTT. Kiến trúc doanh nghiệp là khái niệm mà đã khá lâu người ta không dám nói đến tên của nó. Một vài giám đốc CNTT tiến đến những bước đi lớn để nhằm tránh việc sử dụng thuật ngữ này với những người ngang cấp vì sợ hăm dọa, làm xa lánh hay đơn giản là việc làm cho họ buồn tê tái. Kiến trúc doanh nghiệp luôn luôn là một công việc lớn, khó khăn và đắt đỏ còn chỉ số đầu tư hiệu của (ROI) của nó thường không rõ ràng đối với doanh nghiệp đó. Việc tiêu chuẩn hóa, ánh xạ và kiểm soát các tài sản CNTT không làm cho doanh nghiệp đó linh động hơn, có năng lực hơn và nhiều lợi nhuận hơn. Kết quả là, những nỗ lực kiến trúc CNTT thường thất bại hoặc trở nên hoàn toàn hướng về CNTT. SOA cung cấp giá trị cho doanh nghiệp đó mà với kiến trúc doanh nghiệp cũ thì chỉ là những lời “hứa hươu, hứa vượn”. Tái sử dụng, năng suất và sự nhanh nhạy trong CNTT thông tin được nâng cao và một cơ sở hạ tầng phần mềm ăn khớp với các quy trình kinh doanh cụ thể là sự hấp dẫn để bán một nỗ lực kiến trúc doanh nghiệp cho doanh nghiệp đó. Nhưng phải nhớ rằng kiến trúc ấy không giành cho tất cả mọi người. Các công ty nhỏ hoặc các công ty phân tán lớn có thể không thể điều chỉnh được một đội ngũ nhân sự tập chung gồm các giám đốc dự án, các kiến trúc sư và các lập trình viên.

Làm thế nào tôi có thể cân bằng giữa nhu cầu lập kế hoạch kiến trúc trong SOA với nhu cầu chứng minh giá trị của nó đối với doanh nghiệp là nhanh chóng?

Việc lập kế hoạch kiến trúc là việc tiêu tốn thời gian, việc phát triển theo hướng dịch vụ, vẽ lên những nguyên tắc lập trình nổi tiếng và những tiêu chuẩn công nghệ phù hợp (chẳng hạn như SOAP, HTTP …) có thể xảy ra nhanh hơn nhiều.

Trong khi đó nó sẽ giúp cho bạn có được kế hoạch kiến trúc và ánh xạ quy trình tại chỗ trước khi xây dựng các dịch vụ (để cải thiện những cơ hội tái sử dụng), việc lập kế hoạch kiến trúc không có sự đáp lại trong thời gian ngắn cái mà có thể đang bị phá hủy.

Làm thế nào để tôi biết được dịch vụ nào sẽ cung cấp giá trị cao nhất cho việc đầu tư của tôi?

Khi hoàn nghi ngờ thì bạn hãy bắt đầu với những quy trình có liên quan đến khách hàng, ảnh hưởng trực tiếp đến doanh thu và chỉ ra những thiệt hại cụ thể đối với doanh nghiệp. Một cuộc điều tra năm 2006 của viện quản lý hiệu quả hoạt động kinh doanh đã cho thấy những khách hàng đang phát triển cần và thích trở thành người chèo lái trong việc thay đổi quy trình kinh doanh hoặc giới thiệu các ứng dụng mới, theo sau là các mối đe dọa cạnh tranh và những cơ hội về doanh thu. (Tiết kiệm chi phí đã là một quãng xa cách).

SOA là một kiến trúc phần mềm nhằm giúp hệ thống CNTT cung cấp dịch vụ, hỗ trợ cho người dùng DN tốt hơn. Bạn đọc có thể tìm hiểu thêm về SOA qua các bài viết đã đăng trên TGVT-PCW (www.pcworld.com.vn): “SOA – Kết nối những ốc đảo thông tin”, ID: B0809_80; “Tìm hiểu SOA”, ID: B0710_68

Làm việc trên “mây”

Trong năm 2008, IBM đã công bố công nghệ đám mây (cloud technology). Đầu năm nay, IBM đã bước thêm một bước: bằt đầu giới thiệu các hạ tầng “mây” tư nhân (private cloud), “mây” công cộng (public cloud) và “mây lai” (hybrid cloud) dành cho từng đối tượng khác nhau. Một ví dụ điển hình chính là hệ thống Lotus Live cho phép người dùng có thể chạy các giải pháp Lotus trực tuyến mà không phải cài đặt vào máy của mình. Lotus Live chính là “đám mây” riêng thuộc sở hữu của IBM nhưng lại là một dịch vụ hay “đám mây” công cộng. Một chuyên gia công nghệ của IBM cho biết, hiện tại giới kỹ thuật ứng dụng công nghệ đám mây nhiều vì họ có thể thử nghiệm trên nhiều nền tảng hạ tầng công nghệ thuộc các hãng khác nhau mà không phải mất tiền mua các thiết bị đó. Chẳng hạn, một nhóm phát triển có thể chọn thử nghiệm sản phẩm của mình trên nền tảng của Sun Solaris hay IBM i5/OS hay Windows Server… Theo IBM, Nhà Nước sẽ có nhu cầu triển khai các đám mây công cộng ,trong khi các DN sẽ có nhu cầu triển khai các “đám mây” tư nhân. Đi cùng với các “đám mây”, IBM công bố thiết bị Websphere CloudBurst vận hành như một “trung gian” giữa người dùng và hạ tầng “đám mây”.

Singapore ứng dụng SOA vào hệ thống giao thông

Singapore chỉ là một hòn đảo nhỏ bé bằng ½ TP. New York (Mỹ). Trong vòng 50 năm qua, đảo quốc này đã trở thành một trong những trung tâm kinh tế sầm uất nhất khu vực. Trong vài năm qua, bên cạnh việc xây dựng hệ thống tàu điện ngầm, Singapore còn hợp tác với IBM trong việc xây dựng hệ thống vé giao thông điện tử.

IBM cung cấp cho Singapore một nền tảng (platform) sử dụng một cơ chế tính giá để tác động tới hệ thống giao thông công cộng. Nền tảng này mang tính mở và lấy cơ sở nền tảng là hệ thống Websphere. Singapore đã đưa hệ thống này vào vận hành từ đầu năm và những lợi ích đạt được là:

  1. Một thẻ (card) có thể dùng cho nhiều loại phương tiện của một người.
  2. Hệ thống định giá cho phép tăng giá sử dụng cầu đường và giảm ùn tắc giao thông. Hệ thống này tiết kiệm không chỉ cho người dân sử dụng phương tiện giao thông mà còn giảm chí phí bảo trì cho nhà cung cấp dịch vụ. Người dân có thể chuyển đổi qua lại giữa các hình thức vận tải nhanh chóng.

Ông Silvester Prakasam, đại diện cho cơ quan quản lý giao thông Singapore (Singapore Transport Authority)

SOA: Là bước tiến hóa hơn là cuộc cách mạng

DN ứng dụng hẳn sẽ giật mình và tự hỏi: “Vậy các phần mềm như kế toán, CRM, ERP mà chúng tôi đang ứng dụng đã lỗi thời hay sao? Phải chăng chúng tôi phải chạy đi tìm những giải pháp phần mềm được xây dựng theo kiểu SOA mới là tân tiến và mạnh nhất?” Ông Subramanyam Venkatakrishnan, giám đốc bộ phận phần mềm của IBM phụ trách thị trường Việt Nam, cho biết, DN không nhất thiết phải dùng những phần mềm nói trên được viết theo kiểu SOA mà chỉ cần dùng SOA để kết nối các phần mềm này lại, tùy biến giao diện của chúng phục vụ cho nhu cầu biến đổi dịch vụ, giao diện của DN. Đó mới chính là lĩnh vực IBM đang tập trung phát triển mạnh. Dịch vụ kết nối các ứng dụng của IBM bổ sung cho thị trường phần mềm ứng dụng hơn là cạnh tranh, mặc dù cũng đã có không ít các hãng phát triển các ứng dụng theo hướng SOA dựa trên chuẩn mở. Ông Subramanyam đưa ra một ví dụ: “Ngày nay, tại một ngân hàng của Việt Nam, KH muốn thanh toán thẻ tín dụng họ phải đến một quầy riêng, muốn rút tiền phải đến quầy ATM riêng v.v… Nếu họ muốn chỉ đến một quầy mà có thể giải quyết mọi chuyện liên quan thì sao? Nếu họ chỉ muốn ở nhà và giải quyết chuyện tiền nong qua Internet mà không phải đi đến quầy này, quầy nọ thì sao? SOA giải quyết được những vấn đề đó. Với SOA, một ngân hàng vẫn khai thác được các hệ thống và giải pháp cũ nhờ kết nối chúng và cung cấp dịch vụ hỗ trợ KH theo các địa điểm hay giao diện khác nhau”.

FPT APTECH mở ra cho các bạn đam mê học tin học, học công nghệ thông tin chuyên sâu về học lập trình cơ hội được đào tạo Công Nghệ Thông Tin trong môi trường tiêu chuẩn chất lượng quốc tế ISO 9001

Học CNTT – Học Aptech – Học tại FPT

Để tìm hiểu thêm về Kiến trúc hướng dịch vụ – SOA, hãy tham gia hội thảo cùng chuyên gia Phí Anh Tuấn – Phó chủ tịch Hội tin học TPHCM, đăng ký trực tuyến tại đây

(Nguồn Internet)

FPT Aptech trực thuộc Tổ chức Giáo dục FPT có hơn 25 năm kinh nghiệm đào tạo lập trình viên quốc tế tại Việt Nam, và luôn là sự lựa chọn ưu tiên của các sinh viên và nhà tuyển dụng.
0981578920
icons8-exercise-96