Sau gần 2 năm làm việc ở VN, mình lên đường qua UK du học. May mắn là cũng có việc làm tại phòng IT trong trường nên không bị lụt nghề.
Kì này, mình sẽ chia sẻ về công nghệ mình đã dùng hồi ở UK, và khi mới qua Sing đi làm nhé
Đây là series bài viết 4 phần:
- Phần 1 – Công nghệ mình dùng hồi còn ở VN
- Phần 2 – Đi du học UK và làm startup Algomerchant
- Phần 3- Học quá trời công nghệ mới tại 90Seconds
- Phần 4 – Các công nghệ hiện tại mình đang dùng
Làm front-end – Học React trong 2 ngày
Vào ISS, phòng IT của Đại Học Lancaster, công việc của mình là code cái app iLancaster, ứng dụng cho sinh viên của trường dùng. App được xây dựng bằng platform của thằng nào mình không nhớ, nhưng bên trong là nhiều web app nhỏ, mỗi app nhỏ được viết bằng React.
Thuở đó, React vẫn còn khá mới, chưa phổ biến như bây giờ. Mình ban đầu cũng không ưa React lắm vì thấy nó … kì kì, tự dưng gom cả HTML lẫn JavaScript vào chung 1 file JSX. Thế nhưng vì yêu cầu công việc nên cũng phải học để code thôi!
Code 1 thời gian thì mình thấy React cũng tạm ổn, thay vì dùng view/controller như Angular thì tách làm nhiều component, tái sử dụng component cũng khá là tiện. Số lượng các thư viện/component đã có sẵn cũng khá là nhiều.
Điểm mình không thích React chắc là … code 1 dự án khá tuỳ tiện, chả có chuẩn gì! Nếu cả team không có chuẩn chung, code ẩu thì code sẽ rất nhanh trở thành 1 đống bùi nhùi (đấy là chưa lỗi Redux v…v vào đấy).
React theo mình cho tới tận bây giờ (và chắc sẽ còn theo mình vài ba năm nữa), nên mình sẽ chia sẽ kĩ hơn về React hiện tại ở bài sau!
Tạm biệt UK, về Singapore – Gặp lại Angular, lần đầu được đụng Cloud
Sau đó, mình về Singapore, làm việc cho startup Algomerchant. Công ty nhỏ (Tầm 4-5 ông dev), nhưng dự án là bự nên mình được ôm khá là nhiều thứ.
Back-end của hệ thống viết theo kiến trúc Microservice, dùng ASP.NET Web API nên mình cũng không cần tốn quá nhiều thời gian để tiếp cận. Front-end thì mình lại may mắn được dùng … Angular 1 cũ mèm, do dự án của công ty đã chạy được vài năm.
Đây cũng là lần đầu tiên mình được dùng các dịch vụ Cloud Computing. Thay vì thuê server, toàn bộ hạ tầng của công ty, từ Web App, Database, Redis… đều sử dụng dịch vụ của Microsoft Azure cả! Cảm nhận của mình là dùng khá là sướng:
- Không cần quản lý server gì phức tạp, muốn scale cho API chạy nhanh hơn cũng rất dễ
- Chỉ cần setup 1 chút là đã có nguyên hệ thống dashboard/analytics (CPU/RAM load thế nào, API nào gọi nhiều, API nào chậm), notification qua tin nhắn/email khi có service bị chết hay bị chậm.
- Dùng Azure SQL Database lâu lâu hệ thống còn thông báo query nào chậm, cần thêm index nào, optimize ra sao
Nhược điểm là mỗi tội… giá hơi cao, lại phải trả hàng tháng. Tuy nhiên, nếu so với tiền tự mua server, tự host, thêm tiền thuê mấy ông operation vận hành thì chắc cũng không quá cao!
ElectronJS – Viết Code 1 lần chạy tùm lum… chỗ
Tiếp theo, công ty có dự án viết app tên AutoInvest, kết nối với broker để trading (mua/bán cổ phiếu).
Khổ nỗi, broker mà công ty muốn dùng (Interactive Brokers – IB) lại …. méo hỗ trợ Web API, hoặc chỉ support với chức năng cực kì có hạn. Do vậy, hệ thống phải chạy trên máy tính, kết nối với app của Interactive Broker chứ không làm web được.
Do đã ớn WinForm và WPF, mình quyết định dùng ElectronJS để làm app này!
Nói đơn giản, Electron là sự kết hợp của Chromium và NodeJS, cho phép bạn tạo giao diện như web bằng HTML/CSS/JS, dùng NodeJS để làm các tác vụ liên quan tới phần cứng, mạng, database… Các ứng dụng lớn như Atom, VSCode, Slack, Figma,… đều viết bằng Electron cả.
Sau 1 thời gian dùng, mình nhận ra Electron khá là bá đạo:
- Viết code 1 lần, chạy được trên cả Window, Linux, Mac (mỗi tội setup build hơi rườm ra). Nhờ vậy, sau này mình migrate app qua Linux cũng khá nhanh, chỉnh nửa buổi là xong.
- Dùng HTML/CSS/JS để làm giao diện, nên dân web developer như mình bay qua phát là code được ngay
- Tái sử dụng được quá trời thư viện của JavaScript và NodeJS
Bên cạnh đó, Electron có 1 số khuyến điểm nho nhỏ, các bạn cần lưu ý:
- Build ra file cài đặt hơi bự (Vài chục tới vài trăm MB), vì phải chức Chromium Core và NodeJS
- Giao diện hiển thị bằng Chromium Core nên có thể sẽ … tốn RAM, chạy chậm nếu không biết cách optimize
Tạm kết
Về sau, khi hệ thống có nhiều người dùng, mình bắt đầu sử dụng bộ ba ELK (ElasticSearch – LogStask – Kibana) để quản lý log. Do mình đã giới thiệu trong bài viết riêng rồi nên các bạn đọc lại nha!
Sau 1 thời gian, mình lại rời Algomerchant – startup đầu tiên, nhảy đi tới chân trời mới vì … lương cao hơn. May thay, công ty mới dùng khá nhiều công nghệ mới, mình lại tiếp tục được học và dùng công nghệ mới!
Tất cả mình sẽ chia sẻ ở phần sau của blog nhé!
[Blogs Phạm Huy Hoàng]