Lời tựa
Mùi cafe thơm nồng, tôi khuấy nhanh vài vòng rồi nhấp một ngụm. Vị đắng đậm đổ bộ vào đầu lưỡi trong khoảnh khắc tạo ra hiệu ứng “Context Switch” khiến tôi bừng tỉnh sau cơn ngủ nướng (Thông thường tôi lái đến cty trong tâm thế Auto Pilot).
Một buổi sáng quen thuộc ở Idtek, tôi ngồi trong phòng họp, anh Mỹ dặn tôi ở đó, cùng với các đồng nghiệp đội Công Nghệ, hôm nay chúng tôi có vài việc cần bàn.
Sau vài tháng nghiệm thu các dự án thành công mỹ mãn, cuộc họp đột xuất này khiến chúng tôi mường tượng ra điều gì đó.
“Chúng ta có dự án mới”, anh Mỹ nói.
“Quy mô lớn chưa từng có”. (WT… Project?)
“Chúng ta chuẩn bị làm một nền tảng Data Warehouse cho GAS”. (Ông ấy sale kinh đấy, tôi dần thấy ông ấy có gắn Attribute: Thương gia)
Màn mở đầu cuộc họp khá ấn tượng, sau một loạt từ ngữ hào nhoáng của làng công nghệ như “Big data”, “Data warehouse”, anh em đội Công Nghệ chúng tôi cảm thấy cực kỳ háo hức.
Sau bài mô tả Scope của anh Mỹ, phải nói thế nào nhỉ, tôi chưa từng nhai cái Scope nào dài và nhiều mục như thế, tôi nghĩ chắc mẩm: cục này tiền khá! Anh em công nghệ thì tủm tỉm trong bụng: đây là đất dụng võ của anh em chúng ta.
Nói thì nói, cục tiền lớn, vận dụng cái mới nhiều, nhưng trước mắt vẫn là một cái mốc trách nhiệm: Deadline. Chúng tôi có hơn 1 năm để hoàn thiện Project này.
Vẫn những câu hỏi cũ từ Sếp khi Start 1 dự án:
- Chúng ta có tái sử dụng lại phần nào từ các dự án trước không?
- Chúng ta viết phần dùng chung như thế nào?
- Hệ thống này phân hoạch thành các Chuẩn và Module gì để đội ngũ cộng tác một cách thống nhất?
Như mọi khi, một đứa nhanh miệng như tôi hầu như ngay lập tức trình bày phương án A, phương án B theo cách đầy trực giác, đầy cảm tính. Anh Mỹ hiểu điều đó, điền đạm, chậm rãi, ổng mô tả các “Điều kiện đạt”, ngồi cùng đội ngũ, phân tích tiền định trước một số hướng đi, và cho chúng tôi một khoảng thời gian thong thả để suy nghĩ một thiết kế hệ thống toàn diện.
~~*~~
Chương 1. TimeKey, ParamCode, Khuôn đúc và Đối tượng
Được thừa hưởng nền tảng kiến thức từ dự án SLDT, anh Mỹ cùng đội ngũ Công Nghệ chúng tôi hình dung ngay cái Data Warehouse này phải đặt nền móng căn bản từ 2 Dimension này.
1/ TimeKey: Khía cạnh thời gian, ghi Timeline, quá trình chuyển biến, thay đổi của dữ liệu. Nếu bạn hỏi tôi rằng có giá trị nào đó bất biến theo thời gian thì sao? Yên tâm đi, tôi vẫn dùng nó để phục vụ cho người dùng muốn “ghim” cái thời điểm mà họ muốn giá trị ấy phải “ghim” vào.
2/ ParamCode: Khía cạnh thông số. À, tôi quên giới thiệu về chữ “giá trị” ở trên, ý tôi là “Value of Some Attribute of Something”.
- [Tên] of Thangok = “Thangok”
- [Chiều cao] of Thangok = 1.75m
- [Cân nặng] of Thangok = 75kg
Như các bạn thấy đấy, [Tên] của tôi thì bất biến. Nhưng [Chiều cao] và [Cân nặng] của tôi thay đổi theo thời gian. Thế nên, nếu anh/chị hỏi [Chiều cao] và [Cân nặng] của tôi trong quá khứ, tôi sẽ hỏi ngược lại anh/chị: Cụ thể là thời điểm nào?
Và anh/chị sẽ có được câu trả lời mới, đại loại như là:
- [2018-01-01] [Chiều cao] of Thangok = 1.65m
- [2018-01-01] [Cân nặng] of Thangok = 85kg
- [2019-01-01] [Chiều cao] of Thangok = 1.75m (mới dậy thì, :D )
- [2019-01-01] [Cân nặng] of Thangok = 75kg
Còn [Tên] của tôi thì sao? Tôi làm 2 việc sau đây:
1/ Tôi “ghim” nó vào thời điểm tôi làm giấy khai sinh:
- [1992-07-10] [Tên] of Thangok = “Thangok”
2/ Tôi gắn nó vào Attribute của tôi:
- [Tên] of Thangok = “Thangok” (just like this, enough.).
Vậy là các bạn thiết kế có thể nghĩ như sau: Chẳng ai hỏi “Tên của anh có từ bao giờ?” hoặc “Tại thời điểm [2018-01-01], tên của anh là gì?” Nên tên của tôi đơn giản chỉ là tên thôi (just Attribute, enough.).
Đọc tới đây hơi rối, tôi còn quên luôn việc giới thiệu cặn kẽ về ParamCode. Thôi, để độc giả tự tìm hiểu ạ. Trong ví dụ trên đã có ParamCode.
Khuôn đúc và Đối tượng
(To be continued in next Magazine)
~~*~~
Chương 2. Khuôn Excel
“Công ty Idtek tuyển lập trình viên sử dụng ngôn ngữ nào ạ?” (Cô bé phóng viên khá xinh khiến tôi muốn ghẹo cô ta)
“Công ty chúng tôi tuyển lập trình viên sử dụng ngôn ngữ Excel”
“Anh đùa em à?!”
“Không. Tôi nói thật đấy” (Rồi tôi hẹn cô ấy bữa khác ghẹo sau)
Vâng, “Tôi nói thật đấy”, Ban lãnh đạo và đội Công Nghệ chúng tôi đang hướng đến những điều này, cho những dự án nào cần Nhập liệu & Báo cáo… (Tôi không viết dấu chấm, tôi để 3 chấm, Khuôn Excel còn nhiều năng lực xử lý tiềm năng mà chúng tôi sẽ khai thác tiếp).
Được biết anh Đạt là một người từng làm biểu mẫu Excel với những danh hiệu như “Kỳ cựu”, “Cộm cán”. Anh Mỹ chỉ đạo ngay đội Công Nghệ chúng tôi tổ chức 1 cuộc họp về Template Excel với anh Đạt đóng vai trò chủ lực, xây dựng dựa trên nền tảng [TimeKey, ParamCode, Khuôn đúc và Đối tượng]
Không ngoài mong đợi, anh Đạt đã cho ra 1 cái …. Khuôn bánh Đúc, đúng nghĩa, Phiên bản Excel. Và rồi từ ngày ấy, chúng tôi thấy anh Tựu ngồi dập từng cái khuôn một, từng khuôn một, chúng tôi nạp dữ liệu vào trong Database mà không phải code thêm dòng nào nữa.
Chúng tôi đã có Data Warehouse!
Tiếp nối thành công ấy, Tuấn Đào còn cho ra lò hẳn 1 tiện ích Xem và Chỉnh sửa dữ liệu Excel ngay trên Web Browser, giờ đây, chúng tôi có thể Highlight đến từng Ô trên Excel, khi muốn nhắc nhở người nhập liệu rằng Ô này đang bị lỗi.
(Dành cho Quảng cáo)
Với Hệ thống Khuôn Excel, Data Warehouse và Excel Engine (Idtek ™) của chúng tôi, quý công ty có thể cùng với chúng tôi xây dựng hệ thống Big Data, Business Intelligence với độ Scale và độ Đa dạng dữ liệu không giới hạn, một hệ thống trợ thủ đắc lực cho việc hoạch định chiến lược, thống kê tình hình sản xuất, kinh doanh, những bản báo cáo chất lượng, kịp thời.
~~*~~
Chương 3. Workflow Engine
Sau hàng tháng dài đằng đẵng, anh em chúng tôi code chỉn chu từng Quy trình một cho các nghiệp vụ của khách hàng. Các bạn biết đấy, khi chấp nhận sự thay đổi từ khác hàng, apply chính sách quản trị thay đổi, đã hiệu chỉnh đến lần thứ N, có khi khách hàng còn muốn quay lại quy trình ban đầu, mà tôi còn dám viết chữ “chỉn chu” ở trên, nghĩa là anh em đội phát triển phần mềm Idtek đã cần mẫn và kiên trì đến mức nào. Tôi phải gọi là hàng tá Mandays chồng lên nhau để phục vụ 1 manday của khách hàng về việc thí nghiệm ý tưởng quy trình.
Chiều hôm ấy, đội chúng tôi code xong cái quy trình cuối cùng cho khách hàng. Anh em chúng tôi tụ tập ăn tối, tí men nồng từ chai Strongbow. Và tôi có một giấc ngon lành.
Sáng hôm sau, tôi lại đến công ty và rót cafe. Thôi không rót nữa, tôi rót 1 ly ở đầu bài rồi. Tôi đang chuẩn bị các công việc tiếp theo. Một cuộc gọi tới, số lạ, tôi rung đùi, nghĩ thầm trong bụng:
(Sale Bất động sản => Tài)
(Sale Bảo hiểm => Xỉu)
(Hehe)
“Alo, ThangOK nghe”
“Thắng à, chị Jolie đây” (WT…)
“Chị mới đổi số điện thoại à?”
“Không, chị mới họp nội bộ với anh Wood, điện thoại chị hết pin nên lấy điện thoại anh Wood gọi cho em luôn”. (Ông Wood này tôi có nghe nhắc vài lần, cặp đôi anh chị Joliewood thay đổi xoành xoạch này khiến chúng tôi cảm thấy sau 3 tháng, uống lại chai Strongbow nó có vị ngọt ngào đến thế, chắc là gọi điện thanks đội ngũ vì quy trình chạy mượt mà quá).
“Em đổi lại quy trình cho chị nhé”
Tôi nghe xong rớt cái điện thoại.
…. (Under construction)
…. (Done!)
Tôi nói qua về “Engine” trước nhé. Engine cũng là 1 chương trình máy tính, nhưng trong các vấn đề chuyên biệt như Tính toán khối lượng dữ liệu khổng lồ (Excel Engine đề cập ở trên), Phân luồng dữ liệu (Workflow Engine), thì vai trò của chương trình này như trái tim vận hành của hệ thống, động cơ của 1 dây chuyền (Engine).
Workflow Engine do anh Mỹ định hướng, Tuấn Đào chủ lực, đã hình thành sản phẩm gồm 4 phần như sau:
1/ Workflow Connector: Đây là cầu nối giữa Workflow Engine và Dịch vụ Web, ông Web sẽ khai vào đây ổng có bao nhiêu [Đối tượng dữ liệu], bao nhiêu [Hành động], bao nhiêu [Vai trò].
2/ Workflow Designer Tools: Ông nào nắm nghiệp vụ, quy trình thì cấu hình luôn vào đây, không cần nhờ Dev nữa. Sau này các độc giả sẽ thấy nguyên một nhóm ngồi mở TV và cùng nhau bàn bạc cấu hình quy trình ngay trên TV ạ!
3/ Workflow Engine: Data muốn vào Warehouse thì phải đi qua đây, Engine sẽ kiểm tra xem Ông người dùng này [Vai trò] gì, đang thực hiện [Hành động] nào, có quyền trên [Đối tượng dữ liệu] này hay không, rồi chuyển [Đối tượng dữ liệu] sang bước tiếp theo của Workflow (Next Step on Workflow).
4/ Workflow Monitor: Trạng thái hiện hành của [Đối tượng dữ liệu], các đường đi mà [Đối tượng dữ liệu] đã đi qua. Câu này tôi nói rồi nhưng nói lại tiếp ạ: Sau này các độc giả sẽ thấy nguyên một nhóm ngồi mở TV và cùng nhau điều tra bug ngay trên TV ạ!
Tôi nhớ cái điện thoại cũ của tôi quá. Nếu có Workflow Engine sớm thì mặt nó không có sẹo.
Thảo luận