Quá trình phát triển Web đã thay đổi như thế nào trong 10 năm qua?

2884

Chào bạn! Tôi hi vọng bạn thích khung cảnh của thế giới này. Mọi thứ thay đổi rất nhiều so với thời điểm 2007 của bạn.

Tôi khá là vui khi bạn vẫn còn quan tâm tới máy tính! Trong tương lai, 2017 này, chúng ta đã đạt được rất nhiều thành tựu vượt xa mọi thứ 10 năm trước, tất nhiên thử thách mới cũng xuất hiện. Máy tính giờ được thu gọn tới mức ta đã có thể mang nó như một vật trang sức, đồng hồ đeo tay hay tích hợp chúng vào cả tủ lạnh. Xe ô tô thì đã có khả năng tự lái, và máy móc đã chiến thắng con người tại hầu hết mọi lĩnh vực trừ uống bia.

(Web) Apps

Bạn có thể có nghe qua tin tức về iPhone trước khi bước vào buồng lái thời gian tới 2017. Apple hiện giờ đã là công ty công nghệ giàu nhất thế giới, chủ yếu là nhờ vào iPhone và hệ điều hành của nó, iOS. Google thì có Android, còn Microsoft thì cũng cố chen vào với sản phẩm Windows Phone. Nhưng thật tiếc là nó chẳng thành công mấy.

Bên trái: iPhone 3GS từ năm 2008. Bên phải: iPhone X kích thước lớn hơn từ năm 2017. Trái: iMore, phải: BusinessInsider

chúng ta cũng bắt đầu gọi program là apps, và một số website còn tự gọi chúng là web apps. Trong 2008, Google tung ra một trình duyệt mới là “Chrome.” 9 năm sau nó trở thành browser thông dụng nhất để vào Web.

Chrome team bỏ ra rất nhiều công sức vào JavaScript, nhờ đó mà code càng ngày được cải thiện. Web app cũng sử dụng JS rất nhiều với hiển thị khá giống desktop interface từ thời của bạn.

Nhiều công ty cũng tập trung phát triển JavaScript – nó giờ đã support cả classes và modules. chúng ta dùng ngôn ngữ có khả năng compile vào JavaScript, như TypeScript hoặc Flow.

JavaScript được dùng rất rộng rãi ngày nay bởi không ai còn dựa vào Flash nữa. Thậm chí, còn chạy JavaScript trên server bằng Node thay vì Perl, (Nghe vậy thôi chứ nó khó lắm)

Thiết kế responsive: cùng 1 website nhưng hiển thị khác nhau trên nhiều thiết bị. Source: 10twelve.

Bạn có còn nhớ Swing, SWT hay wxWidgets? chúng ta đã sáng tạo lại chúng cho thế giới browser. Một vài UI programming model mới xuất hiện, vốn tập trung hơn vào components.

chúng ta cũng kiếm được cách thức design, build, và test apps trong khi vẫn giữ chúng responsive (thuật ngữ dùng để miêu tả một website nhưng không nhìn quá tởm trên mobile phone). Ngoài ra thì website cũng được cho giảm “cân” để dễ dàng load hơn.

Để làm được những điều trên thì chúng ta dùng tới component frameworks với Angular từ Google, React từ Facebook, và Vue từ cộng đồng.

À mà tôi không chắc là bạn có biết về Facebook không. Trong năm 2007, thời của bạn, thì nó khá nổi tiếng tại US. Còn giờ, Facebook phát triển ra cả toàn thế giới với hơn một tỉ user và là một trong những codebase lớn nhất ngày nay.

Facebook development team viết ra rất nhiều code tuyệt vời và công bố chúng. Thậm chí họ còn có cả hội nghị riêng, F8. À mà giờ thì các công ty đều có sự kiện hội nghị của mình.

CSS cũng đã tiến hóa bởi app giờ đòi hỏi nhiều layout phức tạp hơn. Thay cho các bảng với hình ảnh hay Frame thì giờ đây ta dùng CSS Floats, Flexbox, và CSS Grid.

Dựa trên những tiêu chuẩn mới, chúng ta tạo ra các libraries nhằm giữ mọi thứ nhất quán, như Bootstrap, Foundation và nhiều thứ khác nữa. Tương tự như JavaScript, chúng ta cũng tạo ra các ngôn ngữ có khả năng compile vào CSS. Chúng giúp bổ sung những thứ mà CSS thiếu như variables hoặc modules.

Đừng lo nếu bạn cảm thấy hơi khó hiểu

Đừng thấy buồn nếu bạn không theo kịp những gì tôi vừa nói. Giờ đây đã có nhiều developer và công ty công nghệ trên khắp thế giới. “startup” được dùng để miêu tả những công ty phát triển quá nhanh chóng nhưng vẫn không chắc chắn mình nên làm gì.

Ngày càng có nhiều program, programmer và thiết bị điện tử. Chúng ta cũng có nhiều data hơn. Computer giờ đã trở nên đủ mạnh mẽ để xử lí hết chúng, và ta cũng có những kĩ thuật để thu thông tin từ data.

Đầu tiên, một lĩnh vực mới ra đời với tên gọi là Data Science, vốn tập trung vào việc nghiên cứu và phân tích, thu thập thông tin từ data.

Ví dụ, Waze là một app thu thập dữ liệu về hành trình của user khi họ di chuyển bằng ô tô. Bởi do lượng người dùng cực lớn, Waze thu được rất nhiều Data phục vụ cho việc phân tích tình hình giao thông tại các thành phố. Họ dùng nó để phát triển một hệ thống dự báo cũng như cho người dùng biết đoạn đường nào bị tắc nghẽn.

Waze hiện đã bị mua lại bởi Google. Đây cũng là một việc thường thấy với các startup.

Ai đó đang sử dụng Waze để tới nơi họ muốn đến. Những users khác của Waze được hiển thị thành những icon ngộ nghĩnh. Source: The waze blog.

Có 3 thử thách lớn đặt ra cho Data Science – Lữu trữ Data, Thấu hiểu Data, Hành động dựa trên data. Chúng ta đã cải thiện cả 3 phương diện trên.

Lưu trữ Data

Giờ đây việc lưu trữ data đang trở nên rất cấp thiết bởi lượng thông tin khổng lồ. Do đó mà cần tới một database mới bởi MySQL hay PostgreSQL không còn thích hợp để chứa hàng terabytes Data (hay còn gọi là Big data)

Các ông lớn công nghệ luôn phải đối mặt với vấn đề này nên họ cũng rất tập trung đầu tư vào những giải pháp tương ứng. NoSQL, chính là database thế hệ mới cho vấn đề trên.

Ngoài ra còn có Hadoop, chuyên về cách thức data được lưu trữ trên nhiều máy tính khác nhau. Nó thay đổi cách xử lí data với phương thức MapReduce.

Rồi Cassandra, nó xem data không đơn thuần là những table mà là các set key và cột vốn có thể lưu trữ trong nhiều máy tính khác nhau và bảo đảm nếu máy có offline cũng không dẫn tới hiện tượng mất data.

Cuối cùng, ta phải nói tới MongoDB, một database rất dễ cài đặt và sử dụng. Trong 2017, chúng ta xem công nghệ giống như các ngôi sao ca nhạc vậy – sẵn sàng bảo vệ thứ mình thích và sỉ vả các đối thủ khác.

Thấu hiểu Data

Bức ảnh chú chó đc chụp bằng Prisma – ứng dụng sử dụng machine learning để biến những bức ảnh đời thường trở nên nghệ thuật như những danh họa nổi tiếng. Không còn Photoshop Plastic Wrap nữa. Source: cultofmac.

Hay còn gọi là Machine Learning. Đã có rất nhiều phương pháp khác nhau, trải dài từ naive classification cho đến deep learning, giờ đã được tích hợp trong mọi toolbox của các Data Scientist. Python chính là ngôn ngữ chính, được dùng để dạy máy móc học hỏi.

Ví dụ, với sự trợ giúp từ các nhà khoa học về Data, rất nhiều app sử dụng A/B testing. Kĩ thuật này phục vụ cho hai phiên bản khác nhau của app nhưng vẫn có chung nhóm user. Nó được dùng để xem phiên bản nào dẫn đến goal mà chúng ta muốn nhanh nhất.

Rất nhiều công ty lớn như Airbnb, Uber, và Netflix vẫn chạy hàng trăm ngàn A/B test cùng lúc để bảo đảm rằng những user của họ có trải nghiệm tốt nhất. Netflix là một app cho phép user xem TV ở trên mọi thiết bị.

Microservices và The Cloud

Những công ty như Netflix được xem là kẻ khổng lồ bởi chúng phục vụ rất nhiều người, do đó mà hãng phải bảo đảm rằng chúng đều có thể vận hành bình thường. Nói cách khác việc quản lí máy tính cần phải rất tốt cũng như có khả năng thêm hàng trăm server mới khi cần.

Đây là mà gần như bất khả thi với data center truyền thống, do đó mà các engineer tại Netflix đã dùng tới virtual machines. Bạn có còn nhớ Amazon Web Services, được tung ra vào 2006 không? Hồi đó họ có Elastic Cloud Compute,hay còn gọi là EC2, để giúp người dùng sử dụng virtual computers trong Amazon’s data centers.

Ngày nay, có tới khoảng 80 dịch vụ tương tự như vậy, tất cả đều được tạo ra nhằm giúp công ty có thể phát triển nhanh chóng. Thậm chí còn có cả một cái tên riêng cho nó là  “The Cloud” 


Danh sách các services có thể tìm thấy trên cloud của Amazon. Danh sách vẫn đang tăng thêm…

Các nhà cung cấp cloud cho phép ta chạy nội dung của mình trực tiếp trên cloud của họ. Những tool như MarathonKubernetes, còn được gọi là orchestration frameworks. Những framework này cho phép developer chạy app trong container mà không phải lo về scaling, fault-tolerance, theo dõi và khám phá. Bạn có thể bỏ server thoải mái cũng như không cần nhắc đầu vụ tên của chúng nữa.

Điều đó cũng cho phép developer build những app nhỏ và nhẹ hơn, còn được gọi là services hoặc microservices, và chạy chúng độc lập. Bởi các microservices này có một vài external dependencies, chúng ta bắt đầu dùng các ngôn ngữ mới như Go và Java. Đúng vậy đấy! Java vẫn sống rất khỏe.

Ngoài ra, Scala Clojure cũng cho phép ta dùng Java Virtual Machine và các libraries liên quan khác. Một website như AirBnB chạy hàng trăm microservices sử dụng nhiều ngôn ngữ lập trình và database khác nhau.

Bởi vì những microservices này, chúng ta phải xem lại những model lập trình và thay đổi chúng. Giờ đây các app đã được rút gọn đi rất nhiều. Những tool như Apache Kafka, Google PubSub, và RabbitMQ là để phục vụ cho mục đích sử nhiều app khác nhau một cách dễ dàng.

Cách chúng ta tạo ra Software

Do sự phức tạp của orchestration framework mà các team developer cũng bắt đầu tăng thêm nhân sự. Bạn có thể thấy chúng ta đang có rất nhiều lập trình viên hơn bao giờ hết và ai cũng đều muốn ship code của mình đi ngay lập tức. Nếu công ty của bạn có tới hàng trăm developer thì bạn sẽ muốn họ không phải lo lắng về vấn đề trên.

Do đó chúng ta build những app này với các team nhỏ. Những thành viên trong team thường có vài kĩ năng về DevOps, cũng biết operation để deploy software của họ.  

Thường những project về công nghệ sẽ được công bố là nguồn mở cho cộng đồng. Phần lớn chúng đều ở trên một website là GitHub. Tại đó, ta có thể bàn luận về software, tạo ra các build khác nhau.

Hiện giờ có rất nhiều cộng đồng ra sức giúp phát triển software. Ví dụ, một web framework tên là EmberJS cũng dựa vào cộng đồng với lịch release 6 tuần một lần.

À ngoài ra thì cuộc chiến editor vẫn còn tiếp diễn. Chúng ta viết code trên các desktop apps mà khi chạy một browser sẽ hiển thị ra text field. Nó cực kì tiện lợi bởi chạy khá mượt mà lại dễ dàng tinh chỉnh. Thậm chí còn có cả hỗ trợ cho VIM mode!

Khán giả tham dự hội nghị ra mắt Windows 10. Source: reddit

Hội nghị liên tục được diễn ra với đa dạng về topic tại khắp mọi nơi. Bạn có thể gặp được nhiều loại người khác nhau! Hãy thử tham dự một sự kiện, làm bạn với vài người và khám phá sự đẹp đẽ của code.

Nguồn: TopDev via Medium