Gần đây có cơ hội tham gia outsourcing cho một dự án phần mềm chiến lược về tài chính. Dự án này bao gồm khá nhiều dự án nhỏ và sử dụng khá nhiều các framework phần mềm mở, trong số đó có một cái tên khá mới mẻ đó là Apache CamelW
Được phát triển bởi Apache Software Foundation từ giữa năm 2007, cho đến nay Apache Camel đã được 2 tuổi rưỡi, phiên bản release mới nhất (tại thời điểm viết bài) là 2.1.0 với nhiều thay đổi, bổ sung so với phiên bản 1.6.x trước đó. Và cũng như ý nghĩa của cái tên Camel, mục tiêu của Apache Camel đó là hướng tới việc định tuyến và xử lý các luồng thông tin đến/đi từ nhiều nguồn như file-base, các giao thức HTTP, SMTP, FTP…, nói một cách nôm na đó Apache Camel là một chú lạc đà chuyên vận chuyển thông tin :-d
Hình dung một doanh nghiệp với nhiều phòng ban, tương ứng với mỗi phòng ban có thể triển khai một hoặc một vài phần mềm chuyên biệt, chẳng hạn như phân hệ quản lý nhân sự, quản lý chấm công – tiền lương, quản lý khách hàng, quản lý kho bãi… Dĩ nhiên là mỗi phân hệ có một chức năng riêng, tuy nhiên tất cả chúng đều xoay quanh những đối tượng chung tiêu biểu đó là con người, vậy làm cách nào để giữ cho thông tin trên toàn bộ hệ thống đồng bộ.
Chẳng hạn, một sinh viên sau khi làm thủ tục nhập học và được cấp thẻ sinh viên, sinh viên có thể dùng thẻ của mình để mượn trả sách từ thư viện, tra cứu kết quả học tập, đóng học phí, đăng ký môn học…Thông thường các phân hệ phầm mềm (trong trường hợp này là phần mềm quản lý sinh viên, quản lý thư viện, quản lý điểm) không thể giao tiếp với nhau để chia sẻ thông tin cũng như các quy trình nghiệp vụ doanh nghiệp. Do vậy vấn đề đặt ra đó là cần phải phát triển hệ thống tích hợp thông tin doanh nghiệp (EII – Enterprise Information IntegrationW) và để giải quyết vấn đề này, giải pháp Tích hợp Ứng dụng Doanh nghiêp (EAI – Enterprise Application Integration) được sử dụng.
Một EAI (Enterprise Application IntegratioinW) được định nghĩa như một framework gồm nhiều công nghệ và dịch vụ, nó đóng vai trò như ứng dụng trung gian đứng ra để tích hợp các ứng dụng doanh nghiệp lại với nhau.
Một ví dụ khác và cũng cụ thể hơn, chẳng hạn bạn đang phát triển một ứng dụng dự đoán thị trường chứng khoán dựa vào lịch sử giao dịch. Hàng ngày sau khi thị trường chứng khoán kết thúc phiên giao dịch, ứng dụng của bạn phải kết nối tới một máy chủ của công ty chứng khoán để lấy thông tin giá (dạng excel), chuyển nó sang xml và lưu vào CSDL của ứng dụng, cập nhật lại báo cáo về xu hướng của chứng khoán; bên cạnh đó, thông tin giá ở dạng excel cũng được lưu trữ lại…
EAI cung cấp những pattern (EIP – Enterprise Integration PatternsW) để có thể giải quyết những vấn đề này một cách dễ dàng. Có khoảng trên 60 patterns đã được xây dựng. Danh sách các Pattern cũng như cách thức sử dụng được liệt kê tại đây
Bây giờ chúng ta sẽ trở lại với những chú lạc đà vận chuyển thông tin không mệt mỏi!
Apache Camel là một framework cho phép developer hiện thực hóa trên 60 patterns ở trên để định tuyến và xử lý thông tin dễ dàng, điều này có nghĩa là developer có thể tự định nghĩa những quy tắc truyền dữ liệu, quyết định ứng dụng sẽ nhận thông tin từ những nguồn nào, cách thức xử lý dữ liệu và những nơi nào sẽ nhận kết quả…
Điểm mạnh của Apache Camel đó là cho phép giao tiếp với nhiều loại dịch vụ như file, HTTP, FPT, RSS, Database… hoặc thậm chí là Gmail, GTask! Một điểm đáng lưu ý nữa đó là việc định nghĩa những quy tắc truyền và xử lý dữ liệu không tốn nhiều dòng code. Developer chỉ cần tùy chính bằng XML, sử dụng Annotation hoặc đơn giản với Java DSL.
Hiện tại Apache Camel cũng có một số đối thủ nhất định, trong số đó phải kể tới Spring Integration của Spring “lão làng”. Nói Spring lão làng bởi Apache Camel mới được phát triển được hơn 2 năm, tài liệu chưa đầy đủ và thậm chí quyển sách dành cho nó là Camel in Action vẫn đang được viết! Tuy nhiên với những gì mà Apache Camel hướng tới, một kiến trúc giúp nó nhanh hơn, gọn gàng hơn thực sự đáng để một Java Developer tìm hiểu, và tích hợp đưa vào những dự án của mình.





