Bạn có biết thị trường toàn cầu đã chi bao nhiêu cho công nghệ vào năm 2019 không? Câu trả lời là một con số khổng lồ: 3360 tỷ đô la! Không thể phủ nhận đây là một con số lớn, và nếu xem xét sự thống lĩnh hiện tại của lĩnh vực công nghệ thông tin (CNTT), điều này là hiển nhiên. CNTT, đặc biệt là phát triển phần mềm, như một gã khổng lồ mau ăn chóng lớn. Cuộc sống của chúng ta đang được bao vây bởi công nghệ, các ứng dụng, các phần mềm, và thậm chí đang được vận hành bởi chúng. Tương lai nói rằng “gã khổng lồ” này sẽ càng lớn mạnh hơn rất nhiều.
Để nổi bật trên thị trường công nghệ với các doanh nghiệp trẻ mọc lên như nấm hiện nay, bạn phải nắm bắt được các xu hướng đang chiếm thế thượng phong để đưa ra các nước đi tốt nhất cho doanh nghiệp hoặc sự phát triển cá nhân của bạn. Trong bài viết dưới đây, VietnamWorks InTech xin giới thiệu 08 xu hướng phát triển phần mềm hàng đầu cho năm 2020. Hầu hết các xu hướng trong danh sách này đã trở thành xu hướng từ năm 2019 hoặc 2018. Nhưng quan trọng là, sẽ có gì khác cho năm 2020, và cho thập kỷ tới?
Nền tảng: Cloud thống trị
Năm 2019 là một năm tuyệt vời cho các nhà cung cấp dịch vụ Cloud (dịch vụ đám mây). Không chỉ các công ty khởi nghiệp đang sử dụng Cloud mà cả các tổ chức đặc biệt quan tâm đến vấn đề bảo mật như Tổ chức Chính phủ, Chăm sóc sức khỏe, Khai thác, Ngân hàng, Bảo hiểm và thậm chí Lầu năm góc cũng đang dần hướng về “đám mây” màu nhiệm này. Xu hướng sẽ tiếp tục vào năm 2020, nơi các công ty thuộc mọi quy mô và loại hình sẽ tiến hành hoặc ít nhất là có kế hoạch để “bay trên mây”. Trang Gartner gần đây đã công bố số liệu sau đây cho năm 2020:
Ngoài tính năng truy cập và chia sẻ dữ liệu rất phổ biến mà hầu hết mọi người đều biết khi nhắc đến Cloud, nó có những ứng dụng quan trọng khác như thử nghiệm và phát triển web, ứng dụng; phân tích big data; lưu trữ dữ liệu cho website (còn gọi là cloud server). Hầu hết các nhà cung cấp Cloud lớn (Amazon, Microsoft, Google) đều cung cấp các khoản tín dụng miễn phí cho trải nghiệm thực tế trên đám mây. Google là hào phóng nhất về mặt này với khoản tín dụng miễn phí 300 USD trong một năm.
Amazon Web Services (AWS) vẫn là lựa chọn tuyệt vời nhưng các nền tảng khác cũng không kém cạnh
Là nhà cung cấp dịch vụ đám mây đầu tiên, Amazon AWS thống trị thị trường trong năm 2019. Với danh mục dịch vụ rộng nhất, Amazon AWS cũng sẽ tiếp tục trụ ở ngôi vua vào năm 2020. Như Canalys đã công bố số liệu quý 3 năm 2019: các nhà cung cấp Big Cloud (AWS, Azure, GCP) nắm giữ 56% thị phần trong khi riêng AWS chiếm 32,6% thị phần.
Các nhà cung cấp dịch vụ đám mây khác cũng đang lên kế hoạch mạnh mẽ để thu hẹp khoảng cách với AWS. Microsoft đã đặc biệt nhắm mục tiêu đến các doanh nghiệp lớn. Gần đây, Microsoft đã “thắng kèo” Amazon và nhận được hợp đồng trị giá 10 tỷ USD từ Lầu năm góc cho dự án đám mây “JEDI” của họ. Thỏa thuận này có thể nâng cao danh tiếng của Azure Microsoft và làm mẻ chiếc giáp sắt kiên cố của AWS.
Không kém cạnh, ông lớn Google đang thúc đẩy Nền tảng điện toán đám mây để chuẩn hóa các hoạt động của Đám mây. Mục tiêu dài hạn của Google là giúp các hoạt động trên đám mây diễn ra dễ dàng hơn để các công ty có thể chuyển từ AWS sang GCP (Google Cloud Platform). Còn IBM gần đây đã mua hẳn RedHat với số tiền khổng lồ 36 tỷ để có cổ phần trong thị trường Đám mây.
Trong năm 2020 và thập kỷ tới, chúng ta sẽ còn được chứng kiến nhiều hơn việc mua lại và sáp nhập. Ngoài ra, nhiều công ty Start-up sẽ mọc lên với những ý tưởng và đổi mới mới thú vị. Chẳng hạn như Multi-Cloud service (dịch vụ đa đám mây). Từ sự cạnh tranh gay gắt này của các nhà cung cấp điện toán đám mây, các công ty chỉ có thể kiếm lợi từ việc giảm giá thành và mang lại thật nhiều đổi mới hữu ích.
Công nghệ ảo hóa / tự động hóa: Kubernetes đang dần áp đảo
Trong lĩnh vực ảo hóa / tự động hóa, đã từng có một cuộc chiến giữa Kubernetes, Docker Swarm và Mesos. Kubernetes đã nổi lên như là người chiến thắng rõ rệt từ cuộc chiến và đang tiếp tục phát triển mạnh hơn nữa. Dưới đây là sự tăng trưởng theo cấp số nhân của Kubecon + CloudNativeCon trong bốn năm qua:
Dự đoán trong tương lai gần tốc độ tăng trưởng của Kubernetes sẽ không hề suy giảm. Bạn có thể an tâm đặt cược vào Kubernetes trong năm 2020 vì nó chính là “xương sống” của phong trào Could-Native. Một lưu ý phụ nhỏ nhỏ: Docker gần đây đã được bán cho Mirantis với số tiền không được tiết lộ.
Chỉ một vài năm trước, Docker còn là bà hoàng nhưng bây giờ tất cả đã ngả về Kubernetes. Docker đã thất bại trong việc gia tăng lợi nhuận trong thời hoàng kim và nhiều nỗ lực đã được thực hiện một vài năm sau đó nhưng có vẻ đã muộn. Đây cũng là một ví dụ cho thấy “thời gian là vàng là bạc”, đặc biệt là trong thế giới công nghệ hiện đại và thay đổi chóng mặt hiện nay.
Kiến trúc phần mềm: Microservices sắm vai chính
Theo Google Trend, sự chuyển đổi sang mô hình kiến trúc Microservices tăng dần đều trong năm 2019.
Khi ngành công nghệ thông tin càng dịch chuyển sang Cloud vào năm 2020, kiến trúc Microservice sẽ càng chiếm ưu thế hơn. Một trong những lý do chính cho sự trỗi dậy của Microservice là nó phù hợp một cách hoàn hảo với Cloud-Native, phát triển phần mềm nhanh chóng.
Bên cạnh đó, có thể xu hướng cũng sẽ quay trở lại với Kiến trúc phần mềm nguyên khối (Monolithic Software Architecture) vì đối với nhiều trường hợp sử dụng, Kiến trúc Microservice là vượt mức cần thiết và việc thiết kế nó cũng là một thách thức.
Ngôn ngữ lập trình: Python – con trăn nuốt trọn thế giới; Java vẫn thống lĩnh
Trong Học máy, Phân tích dữ liệu, Xử lý dữ liệu, Phát triển web, Phát triển phần mềm doanh nghiệp hay thậm chí là việc chụp ảnh hố đen vũ trụ: Python có mặt ở khắp mọi nơi. Ngoài ra, trang web xếp hạng ngôn ngữ lập trình phổ biến TIOBE đã xếp hạng Python là ngôn ngữ lập trình phổ biến thứ ba sau Java và C.
Một điều thú vị hơn nữa là mức độ phổ biến của Python đã tăng gấp đôi vào năm 2019 (từ 5% đến 10%). Sự trỗi dậy của Python sẽ tiếp tục vào năm 2020 và khoảng cách của Python với Java và C sẽ được thu hẹp. Là một ngôn ngữ lập trình cấp cao có thể đáp ứng phần lớn yêu cầu của lập trình viên, Python đã lược bớt nhiều rào cản và vì thế được yêu thích bởi các nhà khoa học dữ liệu và các lập trình viên thế hệ mới.
Bên cạnh đó, như được chỉ ra bởi chỉ số TIOBE ở hình trên, Java vẫn là ngôn ngữ lập trình chiếm ưu thế nhất trên hành tinh và sẽ tiếp tục giữ vị trí đó vào năm 2020. Thời gian chạy (runtime) của Java – JVM là một trong những ứng dụng hữu ích nhất của công nghệ phần mềm và luôn cung cấp nền tảng vững chắc cho Java. Nhiều ngôn ngữ phổ biến như Kotlin, Scala, Clojure, Groovy sử dụng JVM làm thời gian chạy.
Hãy cùng tóm lại danh sách này bằng các ngôn ngữ lập trình mới mẻ và không kém phần tiềm năng. Trong những năm 2000, đã có sự đình trệ trong bối cảnh ngôn ngữ lập trình khi hầu hết mọi người nghĩ rằng không cần một ngôn ngữ lập trình mới vì Java, C, C ++, JavaScript và Python đã đáp ứng tất cả các nhu cầu của thị trường lúc bấy giờ. Tuy nhiên, Google đã mở tung cánh cửa đóng bằng cách tạo ra Go. Trong thập kỷ qua, nhiều ngôn ngữ lập trình thú vị đã xuất hiện như Rust, Swift, Kotlin, TypeScript. Lý do chính cho sự phát triển này là các ngôn ngữ lập trình “gạo cội” lúc đó thường không có khả năng tận dụng lợi thế của những thay đổi mới nhất trong phần cứng (ví dụ: Đa lõi, Mạng nhanh hơn, Đám mây). Một yếu tố khác là các ngôn ngữ hiện đại đặc biệt tập trung vào nhà phát triển Ergonomics (công thái học), tức là phát triển nhanh hơn và dễ dàng hơn. Trong kết quả khảo sát kỹ sư phần mềm của Stackoverflow, hầu hết các ngôn ngữ hiện đại chiếm vị trí hàng đầu (Rust chiếm vị trí đầu tiên trong 4 năm liên tiếp) về mức độ yêu thích.
Xu hướng đổi mới này sẽ tiếp tục vào năm 2020. Nhiều “gã khổng lồ” có lẽ đang nhìn sâu hơn vào “cánh cửa đóng” của các ngôn ngữ lập trình thế hệ mới và cân nhắc việc bắt đầu hỗ trợ chúng một cách cởi mở.
JavaScript sẽ tiếp tục làm “vua của Web”
Thuở xa xưa, JavaScript không phải là ngôn ngữ lập trình đủ mạnh, Frontend chủ yếu được phát triển bằng cách sử dụng các framework Backend như JSF, Ruby on Rails, Django, Laravel và được kết xuất từ máy chủ. Tình thế đã thay đổi hoàn toàn khi AngularJS xuất hiện vào năm 2014. Kể từ đó, nhiều khung Web JavaScript khác đã xuất hiện (Angular 2+, React, Vue.js, Meteor.js) và JavaScript là khung phát triển Web chủ đạo hiện nay. Với nhiều đổi mới cùng với sự phát triển của Kiến trúc Microservice, framework JavaScript sẽ tiếp tục chi phối sự phát triển của Frontend vào năm 2020 và thập kỷ tới.
React đang đứng đầu danh sách JavaScript framework.
Mặc dù xuất hiện sau AngularJS, React có tác động lớn nhất đến phát triển web trong thập kỷ qua và đã cứu Facebook trong cuộc chiến với Google+. React đã mang đến một số ý tưởng mới mẻ và sáng tạo trong phát triển Frontend, ví dụ: event sourcing, virtual dom, liên kết dữ liệu một chiều, phát triển dựa trên thành phần và còn nhiều hơn nữa. Nó đã tạo được tác động to lớn đến cộng đồng đến mức Google đã loại bỏ AngularJS và viết lại hoàn toàn Angular 2+ bằng cách mượn ý tưởng từ React. React cho đến nay là framework web JavaScript ổn định và chiếm ưu thế nhất như được hiển thị bên dưới từ số liệu thống kê tải xuống NPM.
Vào năm 2020, bạn nên lựa chọn React cho các dự án mới của bạn. Bên cạnh đó, Angular và Vue cũng là các framework web vững chắc và đặc biệt phù hợp cho các doanh nghiệp.
Trí tuệ nhân tạo (AI): Tiếp tục phát triển mạnh mẽ
AI đang được thế giới nhắc đến như một khái niệm hào nhoáng trong giới công nghệ, nhưng còn lâu mới đạt được đến đỉnh cao thực sự. Tuy nhiên, không thể phủ nhận rằng toàn bộ thế giới đang hướng tới tự động hóa và phần mềm đóng vai trò quan trọng nhất. Công nghệ phát triển phần mềm hiện đã đạt đến trình độ có thể được sử dụng để triển khai trí tuệ nhân tạo trong đời thực. Machine learning (học máy), deep learning (học sâu) hoặc bất cứ điều gì khác, các doanh nghiệp đang sử dụng trí tuệ nhân tạo để tối ưu hóa hoạt động của họ và cải thiện trải nghiệm người dùng.
Nói về Deep Learning/Neural Network ở cấp độ thế giới thì không thể phủ nhận rằng Google và Facebook là những người chơi chính. Google đã cung cấp cho chúng ta thư viện TensorFlow dựa trên khung Deep Learning phổ biến Theano. Nó nhanh chóng trở thành thư viện chính cho việc tính toán Deep Learning/Neural Network. Google thậm chí đã cung cấp một GPU (TPU) được thiết kế đặc biệt để tăng tốc độ tính toán của TensorFlow. Facebook cũng không kém cạnh với bộ sưu tập hình ảnh và video lớn nhất thế giới. Facebook đã phân phối thư viện Deep Learning PyTorch dựa trên một thư viện Deep Learning nổi tiếng khác: Torch.
Có một sự khác biệt tinh tế trong cách cả hai framework này vận hành. TensorFlow sử dụng đồ thị tĩnh (static graph) cho việc tính toán trong khi PyTorch sử dụng đồ thị động (dynamic graph). Ưu điểm của việc sử dụng biểu đồ động là nó có thể tự điều chỉnh trong quá trình hoạt động. Ngoài ra, PyTorch thân thiện với Python (ngôn ngữ lập trình chính trong Khoa học dữ liệu) hơn.
Khi PyTorch ngày càng trở nên phổ biến, Google đã phát hành TensorFlow 2.0 vào tháng 10 năm 2019, sử dụng biểu đồ động và thân thiện với Python hơn. Vào năm 2020, có lẽ TensorFlow 2 và PyTorch sẽ có một trận chiến nảy lửa.
Phân tích dữ liệu lớn (big data)
Hiện nay, các doanh nghiệp thường cần chạy các tính toán trên bộ cơ sở dữ liệu quy mô lớn của họ, do đó họ cần Distributed Batch Job (phân phối hàng loạt theo lô). Hadoop Map-Reduce là nền tảng tính toán phân phối hàng loạt đầu tiên. Gần đây, Apache Spark đã thay thế Hadoop trở thành vua của Batch Processing.
Spark với bước đi sau bao quát và thận trọng hơn đã nhắm mục tiêu cụ thể đến các hạn chế của Hadoop, tức là xử lý mọi thứ trong bộ nhớ thay vì lưu dữ liệu vào bộ lưu trữ sau mỗi hoạt động tốn kém. Tuy Spark sử dụng JVM với CPU và bộ nhớ khá yếu để xử lý Batch, nhưng nó vẫn là ứng cử viên sáng giá nhất cho việc xử lý Batch. Một khung xử lý Batch hiệu quả hơn bằng cách sử dụng Rust, có thể thay thế Spark và tiết kiệm các hóa đơn khổng lồ cho dịch vụ đám mây của các công ty, là một ý tưởng đáng để thử nghiệm đó chứ?
Một khía cạnh quan trọng khác của big data là việc truyền dữ liệu lớn (big data streaming). Một vài năm trước, xử lý luồng thời gian thực (real-time streaming processing) là điều không thể. Người ta đã sử dụng các framework batching vi mô như Spark Streaming để mô phỏng gần đúng quá trình real-time streaming. Tuy nhiên sự ra đời của Apache Flink đã thay đổi cục diện bằng cách mang đến real-time streaming processing thực sự.
Cho đến năm 2019, Apache Flink có vẻ không đủ lực để cạnh tranh với chiến lược tiếp thị của Spark. Nhưng với thông tin gã khổng lồ công nghệ Trung Quốc Alibaba đã mua Data Artisan (công ty đứng sau Apache Flink) vào tháng 1 năm 2019, tình hình rất có thể sẽ có nhiều chuyển biến. Flink nên là lựa chọn số một nếu doanh nghiệp của bạn muốn xử lý real-time streaming dữ liệu lớn vào năm 2020. Mặc dù Flink cũng sử dụng JVM và có nhược điểm về CPU và hóa đơn Cloud tương tự như Spark.
Tương tự như AI, “thời đại dữ liệu lớn” đang dần nổi lên ở khắp nơi nhưng phải còn rất lâu, chúng ta mới thực sự “lên đến đỉnh” của công nghệ phần mềm này.
Sự nổi lên của Low / No-Code
Cuộc cách mạng số hóa và công nghiệp 4.0 đã và đang tạo ra một khoảng cách lớn về cung – cầu cho các kỹ sư phần mềm. Do đó, nhiều người hoặc công ty không thể thực hiện ý tưởng của mình vì thiếu nhà phát triển (developers). Trong các giải pháp được đề ra để hạ thấp rào cản trong lĩnh vực phát triển phần mềm, phải kể đến nỗ lực thực hiện phát triển phần mềm không cần Code (No Code) hoặc ít Code nhất (Low Code). Nỗ lực này được gọi là LCNC (Low-Code No-Code) và đã gặt hái được một số thành công trong năm 2019.
Điều đầu tiên thường xuất hiện trong đầu chúng ta khi nói về phát triển phần mềm là ngôn ngữ lập trình rất phức tạp. Phát triển low-code là xây dựng phần mềm hoặc ứng dụng sử dụng giao diện người dùng đồ họa và không cần bất kỳ ngôn ngữ lập trình nào. Với việc mã hóa một ứng dụng hoặc phần mềm thành các phần, bạn có thể hình dung được nó mà không cần các kỹ sư phần mềm lập trình nó. Một số nền tảng đã được xây dựng để phát triển phần mềm low-code dễ dàng hơn và toàn bộ thị trường này dự kiến sẽ tăng vào năm 2020. Mục tiêu của LCNC là bất cứ ai cũng có thể phát triển phần mềm, chỉ cần họ có một ý tưởng thú vị, không cần kinh nghiệm viết code.
Mặc dù vẫn còn nhiều nghi ngờ về việc sử dụng các framework LCNC trong sản xuất, nhưng chúng có thể đặt nền móng cho những sáng kiến khác. Các công ty như Amazon, Google có thể xây dựng một sản phẩm vững chắc trên nền tảng này (giống như cách AWS Lambda phát triển mạnh mẽ trên nền tảng của Google App Engine).
Hy vọng phong trào LCNC sẽ có nhiều tiến triển trong năm 2020 và thập kỷ tới.
Kết luận
Những xu hướng phát triển phần mềm hàng đầu này cho thấy toàn bộ ngành công nghiệp đang hướng đến đâu. Nếu là một kỹ sư phần mềm, bạn có thể tìm hiểu các công nghệ mới và xây dựng các ứng dụng cấp tiến. Nếu là chủ doanh nghiệp, bạn có thể sử dụng các xu hướng phát triển phần mềm hàng đầu này để đưa doanh nghiệp của mình vượt lên trên các đối thủ cạnh tranh bằng cách cắt giảm chi phí hoạt động, tạo trải nghiệm người dùng tuyệt vời và gia tăng doanh số.
Tuy nhiên, phát triển phần mềm trong thời buổi hiện đại rất phức tạp và đa dạng. Tác giả Md Kamaruzzaman cũng khuyến cáo người đọc cân nhắc và thực hiện phân tích của riêng bạn nếu muốn chọn Tech Stack cho một lĩnh vực cụ thể.
Theo Towards Data Science
VietnamWorks InTech
Bài viết dành riêng cho thành viên của HR Insider.