Giải ngố về API: Vì sao nói API có ý nghĩa sống còn với cả thế giới điện toán?

19/10/2019

Không, API không phải là một "giao diện". Nếu không phải là lập trình viên, hãy đọc bài viết này.

Nếu theo dõi các tin tức công nghệ, ít nhất một tháng một lần bạn sẽ bắt gặp cụm từ "API", ví dụ như "Instagram khóa API khiến các ứng dụng bên thứ 3 thành đồ bỏ" hoặc mới đây là "Microsoft ra mắt 22 API có tri giác để nhận diện cảm xúc, hành động trong video, tự động 'phiên dịch' giọng nói ngọng nghịu của trẻ em hay tự động mô tả vật thể có trong hình ảnh".

Khi đọc những tin tức dạng này, bạn chắc hẳn đã một lần tự hỏi "API" là gì? Vì sao việc một công ty nào đó ra mắt (hay khóa) API lại đáng quan tâm?

API không phải là một "giao diện" theo cách hiểu thông thường

Một trong những lý do khiến cho người tiêu dùng phổ thông (không có hiểu biết về lập trình) tại Việt Nam không thực sự hiểu rõ về API là bởi tên gọi tiếng Việt khá tối nghĩa: giao diện lập trình ứng dụng. "Lập trình ứng dụng" thì đúng nghĩa, nhưng "giao diện" thì không hẳn là chính xác.

 

Nói đến API đám mây của Google không phải là nói tới giao diện web trong hình.

Nguyên gốc API viết đầy đủ trong tiếng Anh là "application programming interface", trong đó chữ "interface" đang bị dịch thành "giao diện". Thực ra, trong các bối cảnh khác thì cách dịch này là chính xác, ví dụ như GUI (graphical user interface) dịch thành "giao diện đồ họa người dùng", còn CLI (command line interface) dịch thành "giao diện dòng lệnh". Từ "giao diện" ở đây được hiểu là "bề mặt" để con người tương tác với máy, như khi chúng ta dùng cửa sổ để tương tác với Windows hoặc dùng các câu lệnh để tương tác với DOS.

Nhưng nếu bạn mang cách hiểu "giao diện" như trong các cụm từ "giao diện cửa sổ", "giao diện cảm ứng", "giao diện iOS" để áp dụng vào từ "giao diện" trong API thì bạn đã hiểu sai. API là một "giao diện" giữa phần mềm với phần mềm. API là cách để các phần mềm (hệ điều hành, ứng dụng, các module trong hệ thống doanh nghiệp v…v…) giao tiếp với nhau và tận dụng năng lực của nhau.

Vì sao phần mềm lại cần giao tiếp và tận dụng phần mềm khác?

Vì thế giới điện toán đòi hỏi nhiều phần mềm.

Khi bạn sử dụng một phần mềm, bất kể đó là một ứng dụng di động, một trang web hay một game PS4 thì trải nghiệm của bạn thực chất là thành quả lao động kết hợp của ngành công nghiệp phần mềm. Ví dụ, khi bạn chơi Candy Crush trên iPhone 6 chẳng hạn, bạn đang sử dụng một ứng dụng game (Candy Crush) và một hệ điều hành (iOS).

 

Khi mô tả tới một trải nghiệm phần mềm là bạn đang nhắc tới nhiều thành phần.

Rõ ràng là trải nghiệm Candy Crush không chỉ đòi hỏi duy nhất các phần mềm của King. Điều gì xảy ra khi không có hệ điều hành và trình duyệt? Khối lượng công việc mà King phải thực hiện sẽ tăng khủng khiếp:

1. Nghiên cứu mã máy, nghiên cứu cách giải phóng RAM, nghiên cứu cách ghi luồng nhị phân lên ổ cứng, nghiên cứu cách ra lệnh cho card màn hình để xuất tín hiệu hiển thị… Nói chung là làm tất cả các tác vụ cấp thấp vốn được dành cho hệ điều hành.

2. Thiết kế giao diện và cơ chế chơi game cho Candy Crush.

Rõ ràng là King chỉ muốn làm công việc (2) nhưng vẫn phải thực hiện một công việc đồ sộ hơn rất nhiều. Mỗi trải nghiệm trên máy tính đều là kết quả kết hợp của nhiều phần mềm: hệ điều hành, ứng dụng, dịch vụ web, phần mềm trên máy chủ… Nếu trải nghiệm số của chúng ta không được chia làm nhiều phần mềm có khả năng giao tiếp và tận dụng lẫn nhau, mỗi nhà sản xuất ứng dụng hay nhà thiết kế web đều sẽ phải thực hiện thêm rất nhiều công việc nằm ngoài trọng tâm của họ. Kịch bản này đảm bảo cho cả thế giới… sụp đổ.

Bản thân mỗi "phần mềm" cũng buộc phải có nhiều thành phần giao tiếp và tận dụng lẫn nhau. Ví dụ, phần mềm trên máy chủ của Facebook.com chắc chắn chắc chắn sẽ có nhiều thành phần, có thể kể tới: một thành phần chuyên xử lý ảnh, một thành phần chuyên xác thực danh tính người dùng, một thành phần chuyên phân tích dữ liệu để hiển thị ra bài đăng phù hợp với sở thích của bạn nhất.

 

Mỗi phần mềm, mỗi module, mỗi package có thể được ví như một bánh răng cưa.

Nhìn chung, một trải nghiệm phần mềm đầy đủ là do nhiều phần mềm giao tiếp với nhau mà thành, mỗi phần mềm cũng là do nhiều module, package kết hợp. Ý nghĩa sống còn của nguyên tắc này là ở chỗ các lập trình viên không thể một mình tạo ra một hệ điều hành, một trình duyệt, một trang web hay một module. Việc chia nhỏ các trải nghiệm phần mềm ra nhiều lớp sẽ giúp cho lập trình viên này có thể tận dụng lại thành quả của lập trình viên khác, module này có thể tận dụng module khác, phần mềm này có thể tận dụng phần mềm khác.

Bạn có thể hình dung một phần mềm, hay một module bên trong một phần mềm là một bánh răng cưa. Mỗi bánh răng cưa có thể quay độc lập, nhưng để tạo ra trải nghiệm phần mềm thì các bánh răng cưa đó phải kết hợp với nhau, bánh răng cưa này tạo lực cho bánh răng cưa nằm sát.

API là khớp nối giữa các thành phần phần mềm

Nếu bạn có một tính năng cần cung cấp cho module khác, phần mềm khác, bạn sẽ mở ra một API để tác giả của module/phần mềm kia truy cập vào.

Ví dụ, trên tất cả các thiết bị điện toán thì hệ điều hành là phần mềm duy nhất có khả năng truy cập tới các thiết bị phần cứng. Do đó, hệ điều hành sẽ phải cung cấp API để ghi file, đọc file, thu và truyền dữ liệu từ card đồ họa, thu và truyền dữ liệu từ card mạng v…v… Khi cần ghi file chẳng hạn, các ứng dụng sẽ gọi tới API tương ứng của hệ điều hành. Điều này đảm bảo cho nhà phát triển ứng dụng không cần phải lo tìm hiểu mã nhị phân và các nguyên tắc máy móc phức tạp để tương tác với ổ cứng.

Nói ví von, cung cấp API giống như là lớn tiếng tuyên bố "Này thế giới, tôi có khả năng làm được điều này". Khi một phần mềm gọi tới API của bạn, phần mềm đó nói với phần mềm của bạn rằng "Tôi biết anh có thể thực hiện hành động sau đây, hãy làm điều đó cho tôi". Phần mềm gọi có thể cung cấp dữ liệu đầu vào và đòi hỏi dữ liệu đầu ra từ phần mềm cung cấp API hoặc không, nhưng trong mọi trường hợp, để có thể tiếp tục hoạt động thì phần mềm gọi thực sự cần phần mềm cung cấp phải thực hiện những gì đã cam kết qua API.

 

API là những khớp nối trên "bánh răng cưa" phần mềm.

Hoặc, bạn có thể sử dụng tài khoản Facebook của mình để đăng nhập vào rất nhiều trang web không do Facebook kiểm soát. Để người dùng của mình có thể sử dụng thông tin cá nhân Facebook trên các trang này, điều duy nhất mạng xã hội này cần làm là tạo ra một API đăng nhập tài khoản Facebook. Mỗi lần bạn click vào nút "Đăng nhập với Facebook" trên Instagram, WhatsApp hay Quora thì các trang web/ứng dụng này sẽ "gọi" tới API của Facebook. Công việc xác thực danh tính sẽ được Facebook thực hiện, các trang web và các ứng dụng không cần phải nhúng tay vào. Sau khi xác thực xong, Facebook sẽ "ném" lại cho các trang web và ứng dụng gọi tới API của mình trên một gói tin có nội dung đại loại như "Đây là anh Lê Hoàng, tài khoản Facebook là abcxyz" chẳng hạn.

Nhờ có API mà Facebook có thể thực hiện tính năng xác thực hộ các dịch vụ khác. Trở lại với 2 thông tin mà chúng ta nhắc tới ở đầu bài viết. "Microsoft cung cấp 22 API tri giác" có nghĩa là gì? Điều này có nghĩa rằng bạn có thể mang khả năng "tri giác" do Microsoft cung cấp vào bên trong ứng dụng của bạn. Ví dụ, nếu muốn tạo ra một ứng dụng có hiệu ứng ghép những giọt nước mắt "ảo" lên khuôn mặt của những người đang buồn trong ảnh chụp, bạn có thể gọi tới API nhận diện cảm xúc của Microsoft để tìm ra tất cả những người có mặt buồn. Tất cả những gì ứng dụng của bạn cần làm là thêm hiệu ứng nước mắt ảo.

Bạn có vẻ là người được lợi, nhưng thực chất bạn đang phụ thuộc vào Microsoft. Nếu một ngày nào đó Microsoft đóng API tri giác của họ, ứng dụng của bạn cũng trở thành đồ bỏ. Các ứng dụng bên thứ 3 dùng để truy cập Instagram hay các ứng dụng có thể nhắn tin trên nền Facebook cũng vậy, chúng phụ thuộc vào "lòng tốt" của Instagram và Facebook để có thể tiếp tục tồn tại.

 

Các phần mềm muốn tương tác với nhau thì phải "gọi" API của nhau.

Thực ra, ngày nay cứ nói tới các bước tiến phần mềm là nói tới API. Các đám mây như Microsoft Azure, Amazon Web Services hay Google Cloud Platform được cung cấp qua API. Các phần mềm nổi tiếng của Apple như HealthKit, HomeKit hay tất cả các SDK (gói công cụ phát triển phần mềm) nói chung cũng chủ yếu quan trọng nhất là API. Nếu hiểu thế nào là API thì bạn cũng không cần phải lắc đầu ngán ngẩm khi bắt gặp thuật ngữ "SDK" nữa, bởi mỗi SDK thực chất bao gồm nhiều API có sẵn để các lập trình viên có thể tạo ra sản phẩm riêng một cách dễ dàng hơn. Ví dụ, SDK HealthKit có nhiều API để phát triển ứng dụng sức khỏe một cách dễ dàng. Các thành phần khác của SDK như các công cụ phát triển, các tài liệu hướng dẫn chỉ là thứ yếu so với API.

Nói tóm lại, nếu bạn không bao giờ code thì các thông tin về API sẽ không bao giờ ảnh hưởng trực tiếp tới bạn. Nhưng cũng vì thế mà mà chúng có ý nghĩa quan trọng hơn tất cả các sản phẩm hoàn thiện: có thể nói rằng thiếu Windows, thiếu iOS hay thiếu Android thì loài người có thể vẫn sống sót được, nhưng thiếu đi khái niệm API thì chắc chắn là thế giới… ngừng quay. Các API trong hệ điều hành là cơ sở để thế giới ứng dụng bùng nổ, các API giữa các module trong các hệ thống doanh nghiệp là cơ sở để kinh tế phát triển. Các API đột phá, ví dụ như API của Microsoft chẳng hạn, sẽ nâng tầm chất lượng ứng dụng và dịch vụ phần mềm lên các tầm cao mới.

GenK

 

Tin liên quan

07/07/2020

Ứng dụng của cơ sở dữ liệu trong hoạt động kinh doanh thực tế của doanh nghiệp

Ngày nay, với sự phát triển của giải pháp quản trị cơ sở dữ liệu (Database as a Service), các công ty có thể lưu trữ và quản lý dữ liệu một cách thuận tiện đơn giản và an toàn. Vậy ứng dụng của cơ sở dữ liệu trong các hoạt động kinh doanh trên thực tế là gì?

04/07/2020

10 tiêu chí cần xem xét khi lựa chọn nhà cung cấp dịch vụ đám mây và IaaS

Việc loại bỏ cơ sở hạ tầng cố định giúp gia tăng khả năng bảo mật, kết nối, tiết kiệm chi phí và tạo ra một môi trường làm việc hiệu quả. Tuy nhiên, một khi doanh nghiệp bắt đầu chiến lược đám mây của mình, các công việc khó khăn sẽ dần xuất hiện cùng hàng loạt câu hỏi: Làm thế nào để chọn một nhà cung cấp đám mây phù hợp để sử dụng các dịch vụ IaaS?

23/06/2020

Viettel IDC phối hợp Dell Technologies tổ chức Hội thảo "Chuyển đối số và ứng dụng trong doanh nghiệp"

Hội thảo đã giới thiệu đến các doanh nghiệp nền tảng công nghệ điện toán đám mây cùng với các dịch vụ về Cloudserver, Cloud backup, Camera AI hỗ trợ cho xu thế chuyển đổi số đang diễn ra mạnh mẽ.

22/06/2020

Viettel IDC hợp tác với Akamai cung cấp bộ sản phẩm bảo mật và phòng chống tấn công mạng

Với sứ mệnh đồng hành cùng khách hàng trong cuộc cách mạng công nghiệp 4.0, Viettel IDC hợp tác với Akamai Technologies – công ty cung cấp giải pháp bảo mật hàng đầu thế giới, để mang tới cho khách hàng những sản phẩm, dịch vụ bảo mật và phòng chống tấn công hiện đại nhất.

18/06/2020

TOP 4 Trending công nghệ đám mây trong năm 2020 doanh nghiệp cần nắm bắt

Từng là 1 công nghệ rất mới ở Việt Nam nhưng những năm gần đây, điện toán đám mây giờ đã trở thành 1 yếu tố tất yếu đối với bất kỳ tổ chức nào bắt tay vào quá trình chuyển đổi kỹ thuật số. Theo thống kê, hiện tại có khoảng 3,6 tỷ người dùng dịch vụ đám mây trên toàn thế giới.

16/06/2020

Phân tích chuyên sâu về xu hướng thị trường Trung tâm dữ liệu ở Đông Nam Á

Thị trường trung tâm dữ liệu ở Đông Nam Á đang ngày tăng trưởng mạnh với các khoản đầu tư lớn từ các nhà cung cấp đám mây như Google, AWS và Alibaba. Nhu cầu về các dịch vụ dựa trên đám mây sẽ chính là động lực cho thị trường trong vài năm tới.​

11/06/2020

Viettel IDC cung cấp dịch vụ StartDB giúp doanh nghiệp triển khai hệ thống quản trị cơ sở dữ liệu tự động

Dịch vụ cơ sở dữ liệu StartDB do Viettel IDC phát triển là dịch vụ Database as a Service đầu tiên của Việt Nam vừa xuất sắc đạt giải thưởng Sao Khuê 2020. Với dịch vụ này, doanh nghiệp không cần tự vận hành cơ sở dữ liệu mà chỉ cần đi thuê với chi phí rẻ hơn ít nhất 3 lần.

10/06/2020

So sánh 2 loại hình cơ sở dữ liệu phổ biến nhất hiện nay: SQL và NoSQL

Cơ sở dữ liệu (Database) đã và đang ngày càng chứng tỏ tầm quan trọng của nó trong thời đại 4.0 hiện nay. 2 trong những công cụ để thực hiên thao tác với cơ sở dữ liệu phổ biến hiện nay chính là SQL và NoSQL. Vậy thì sự khác nhau giữa chúng là gì?

09/06/2020

Vì sao quản trị Database hiệu quả giúp doanh nghiệp thành công trong thời đại công nghệ 4.0?

Trong thời buổi công nghệ số hiện nay, nhiều quy trình, công đoạn hay các hệ thống quản trị đều được mã hóa và vận hành bởi các thiết bị, phần mềm nhằm giúp doanh nghiệp đạt được hiệu suất làm việc tốt nhất. Trên cơ sở đó, các hệ thống quản trị cơ sở dữ liệu ra đời và đóng vai trò quan trọng trong xử lý và kiểm soát nguồn thông tin.

08/06/2020

Cơ sở dữ liệu Database là gì? Có những loại Database nào?

Database hay cơ sở dữ liệu là các cụm từ được sử dụng nhiều trong các lĩnh vực dữ liệu, lập trình phần mềm, công nghệ thông tin, website … là thành phần vô cùng quan trọng để xây dựng và phát triển phần mềm, ứng dụng trên nền tảng mobile, PC.