Làm việc nhanh chóng mặt với AWS
Trong những năm gần đây, mọi người cứ mải mê chú ý đến “năng suất”. Trước thế giới Internet phát triển không ngừng, hoàn thành công việc một cách nhanh chóng luôn được ưu ái. Dù vẫn biết tôi phải vận dụng logic vào công việc một cách nhanh chóng và chính xác, là một lập ...
Trong những năm gần đây, mọi người cứ mải mê chú ý đến “năng suất”. Trước thế giới Internet phát triển không ngừng, hoàn thành công việc một cách nhanh chóng luôn được ưu ái. Dù vẫn biết tôi phải vận dụng logic vào công việc một cách nhanh chóng và chính xác, là một lập trình viên PHP giàu kinh nghiệm, tôi vẫn phải tiêu tốn hàng tiếng đồng hồ cho những nhiệm vụ khác, như thiết lập database hoặc cache, deploy dự án, theo dõi các thông số online,… Từ trước đến nay, lập trình viên vẫn luôn vật lộn với những công việc “tạp nham” này, phí quá nhiều thời gian thay vì chỉ tập trung vào logic dự án.
Bốn năm trước, cuộc đời tôi đã thay đổi khi một người bạn nhắc đến Amazone Web Services (AWS). AWS đã mở ra một cánh cửa mới, là chìa khóa đi đến hiệu suất tăng cao và những dự án chất lượng. Với những ai chưa biết đến AWS, hãy đọc bài báo này, tôi đảm bảo bạn sẽ không phí thời gian.
Chỉ trong vài phút, AWS có thể gia tăng hiệu năng chóng mặt.Một vài thông tin về AWS
Amazon Web Services được chính thức ra mắt năm 2006. Nhiều người có lẽ đã nghe đến tên nó, nhưng chưa biết được những tính năng nó amng lại. Vậy, câu hỏi đặt ra đầu tiên là: AWS là cái gì?
Amazon Web Services (AWS), là một tập hợp các dịch vụ điện toán đám mây, còn được gọi là dịch vụ web, góp phần xây dựng nên nền tảng điện toán đám mây do Amazon.com cung cấp.
Wikipedia
Từ định nghĩa này, ta biết được hai điều: AWS được dựa trên đám mây, và AWS là một tập hợp dịch vụ (chứ không phải đơn lẻ). Theo tôi, với người mới, ta nên hều AWS như sau:
- Theo như định nghĩa, AWS là một tập hợp dịch vụ đám mây.
- AWS cung cấp nguồn xử lý trực tuyến nhanh chóng (Ví dụ như, bạn chỉ cần 10 phút để thiết lập một máy chủ Linux).
- AWS thu một mức phí chấp nhận được.
- AWS cũng cấp dịch vụ có sẵn dễ sử dụng, giúp ta tiếp kiệm nhiều thời gian thiết lập database, cache, storage, network,… bằng tay.
- AWS luôn luôn sẫn sằng và luôn luôn cải tiến.
Tạo tài khoản AWS miễn phí
Để bắt đầu sử dụng bất cứ dịch vụ nào, bạn cần có một tài khoản. Với AWS bạn chỉ mất hơn 5 phút thôi. Hãy chuẩn bị sẵn những thông tin sau đây:
- Địa chỉ email để xác nhận.
- Thẻ tín dụng, thẻ sẽ không đưa vào thanh toán vì quá trình hoàn toàn miễn phí.
- Số điện thoại để nhận cuộc gọi xác định tự động từ hệ thống.
Vậy là đủ rồi. Khi đã có những thông tin như trên, vào trang web AWS, và tạo một tài khoản theo các bước đơn giản dưới đây.
Nên chú ý:
- Đa số dịch vụ của AWS cung cấp một số tài nguyên miễn phí hàng tháng. Vì vậy, bạn cứ yên tâm dùng thử thoải mái.
- Theo kinh nghiệm của tôi, số điện thoại và các thông tin cá nhân khác vẫn chưa bị lạm dụng.
Hãy thử setup máy chủ EC2 đầu tiên
Một trong những lợi ích của dịch vụ đám mây là khả năng thu thập tài nguyên được chia sẻ nếu yêu cầu. Amazon cũng cấp 4 mức dịch vụ cho người dùng truy cập dịch vụ, được liệt kê dưới đây theo độ dễ sử dụng:
- Management Console,
- Command-Line-Tool,
- SDK,
- RESTful API.
Trong bài này, ta sẽ dùng Management Console. Vì vậy, sau khi bạn đăng nhập vào console, bạn sẽ thấy một màn hình như dưới:
Có hai khu vực bạn cần chú ý:
- Góc phải-bên trên, bạn sẽ thấy nơi chọn khu vực. AWS cung cấp các dịch vụ cho 11 khu vực khắp thế giới, và đang ngày càng mở rộng. Chọn khu vực bạn cần nhé, hoặc để nguyên US East (N. Virginia) như mặc định. Những khu vực khác nhau có các mức giá khác nhau, bạn nên để ý khi cần sử dụng với tuần suất cao hơn.
- Hầu hết màn hình được dùng để hiển thị một loạt các dịch vụ. Ta sẽ nói đến EC2 trong phần này. Hãy xem qua AWS cung cấp những gì. Nếu bạn không hiểu những dịch vụ này làm gì, mỗi thứ đều có hiệu dụng riêng. Và nếu bạn biết cách kết hợp nhiều dịch vụ, hiệu suất của bạn sẽ hoàn toàn đổi khác.
Thứ một dịch vụ đám mây cần đó là máy chủ ảo. EC2, hoặc Elastic Compute Cloud, là tên do Amazon lựa chọn cho dịch vụ máy chủ ảo của mình. Hãy tìm hiểu xem, xây dựng một máy chủ Linux đơn giản như thế nào nhé.
- Trong EC2 management console, bắt đầu quá trình thiết lập như sau:
- Chọn machine image (AMI). Đây chính là hệ điều hành cho máy chủ của bạn. Hãy chọn bất cứ hệ thống nào bạn thích. Tôi khuyến khích bắt đầu với Amazon Linus, dùng yum để quản lí dữ liệu:
- Kế đến, lựa chọn một instance type. Đây có thể xem là thông số phần cứng cho máy chủ ảo. Bạn có thể bắt đầu với t2.micro, với kiểu này bạn có thể có 750 giờ sử dụng miễn phí mỗi tháng trong năm đầu tiên. Chú ý: ưu đãi chỉ trong vòng một năm sau đăng ký, và chỉ cho t2.micro thôi. Nếu bạn muốn dùng thử AWS, bạn hãy dùng t2.micro.
- Nếu biết tinh chỉnh máy chủ thêm một chút, bạn có thể khởi chạy máy chủ ngay. Lần đầu tiên sử dụng EC2, bạn sẽ thấy một màn hình tương tự như bên dưới. Cảnh báo bảo mật cho thấy sự ưu tiên của Amazone. Tuy nhiên, ta có thể làm ngơ cảnh báo này cho đến khi ta đi đến phần dịch vụ quản lí.
- Cuối cùng, để truy cập máy chủ miễn phí, ta cần một danh tính. AWS sẽ nhắc nhở chúng ta sử dụng SSH key pair, như hình dưới. Tải file privacy key và click vào nút lanch. Đến đây đã xong rồi; máy chủ ảo đang được cài đặt và và sẽ sử dụng đợc trong vòng vài phút.
- Một khi instance đã sẵn sàng. Bạn có thể đăng nhập vào hệ thống dưới tên người dùng mặc định ec2-user, với privacy key. ec2-user là tên mặc định với khả năng sudo. Dù không thể thay đổi tên người dùng mặc định, bạn có thể tạo thêm tên người dùng mới và ấn định quyền lợi theo ý thích. Địa chỉ của máy chủ có thể thấy ở đây:
Quá trình trên chỉ mất chưa đến 5 phút, và bạn đã có một máy chủ để đưa vào sử dụng rồi. Trong phần kế tiếp, ta sẽ tìm hiểu AWS sẽ giúp ta quả lý instnace mới tạo ra sao.
On-demand billing
Đa số tài nguyên AWS được tính phí theo đồng hồ, rất linh hoạt. Ví dụ như, với EC2 instance vừa tạo, có hai cách ngắt hoạt động: stop và terminate. Cả hai hành động sẽ ngưng tính phí. Điểm khác biệt là khi stop một instance, ta có thể khởi động lại sau với tất cả công việc được lưu lại. Trái lại, khi terminate một instance, ta chuyển giao lại cho AWS để tái tạo và sẽ không có các khôi phục thông tin. Nhu cầu terminate một instance bắt nguồn từ thiết đặt mặc định AWS giới hạn 20 instance mỗi khu vực mỗi tài khoản, và instance đã stop vẫn đếm cho đến khi bị terminate.
Ta có thể stop instance nhanh chóng với:
Khi bạn stop EC2 instance, phí tổn cũng sẽ ngừng gia tăng. Đều này sẽ rất có lợi cho bạn trong các trường hợp:
- Nếu bạn muốn thử nghiệm, bạn chỉ cần trả một vài tiếng sử dụng để tiếp kiệm chi phí, bạn thậm chí còn được miễn phí với một ố dịch vụ.
- Khi nhu cầu xử lý trong môi trường sản xuất gia tăng. Ví dụ như, trong quá khứ, tôi cần phải giữ lại đến 30-50% hơn so với nhu cầu đỉnh điểm. Với AWS, tôi có thể dự phòng tài nguyên linh hoạt hơn.
Các mức giá trong AWS đã có sẵn trên mạng. Một câu hỏi được đặt ra: AWS có thực sự rẻ hơn không? Khi nhân số tiền mỗi giờ sử dụng theo tháng, có vẻ nhưng giá cả của dịch vụ cũng không cạnh tranh cho lắm. Câu trả lời là có và không.
AWS sẽ không rẻ hơn nếu bạn chỉ đơn thuần tính toán phí giờ dùng tài nguyên lực theo yêu cầu trong tháng. Tuy nhiên, ta vẫn vẫn có các lựa chọn instance thay thế với mức phí như dưới đây:
Với yêu cầu tài nguyên tối thiểu, ta có thể được giảm giá từ 30% đến 70% khi sử dụng instance thay thế, cùng với nhiều tài nguyên khác được tính dưới dạng instance theo yêu cầu. Trong thực tế, mức giá sẽ rẻ hơn từ 30-40% nếu bạn sử dụng nhiều hơn một năm. Cũng chính vì lý do này, tôi sẽ trả lời là “có” rẻ hơn. Và bạn sẽ thấy AWS rẻ hơn nhiều nếu bạn tính thêm cả khả năng bảo mật và giám sát của ứng dụng.
Gói dịch vụ tự quản lý
Một mục đích của AWS là giảm chi phí vận hành xuống thấp nhất có thể. Thông thường, dù hệ thống của ta là online hay onsite, ta sẽ luôn cần một đội ngũ kỹ sư giúp duy trì bảo mật và “sức khỏe” của thệ thống. Đội ngũ này cũng sẽ viết và triển khai các công cụ tự động để đơn giản hóa dự án. AWS lúc này đồng thời kiêm luôn vai trò của đội ngũ này. Bạn có thể xem thử một số dịch vụ của AWS bên dưới:
- AWS Security Group
- IAM, Identity Access Management, quản lí danh tính truy cập
- CloudWatch,
- Một loạt các dịch vụ tự triên khai khác như OpsWorks
AWS kiểm soát truy cập dịch vụ theo hai lớp riêng biệt. Với tầng mạng, ta có một khái niệm mang tên “security groups”. Tất cả các dịch vụ của AWS đều có tích hợp security group. Và security group này quyết định ai được đi qua. Với EC2 instance, AWS đã tự tạo sẵn security group cho chúng ta:
Khi tinh chỉnh quy tắc inbound/outbound ta có thể quyết định cái gì được vào và ra. Các quy tắc TCP, UDP, và ICMP cũng được EC2 hỗ trợ. Security group hoạt động tương tự như lớp tường lửa của phần cứng bên ngoài, không cần phải vá hay chỉnh sửa nhiều.
Security group còn một lợi thế nữa: tái sử dụng lại được. Một security group có thể dùng chung được cho nhiều tài nguyên. Trong thực tế, security group giúp ta tiếp kiệm thời gian thiết lập chính sách bảo mật cho từng tài nguyên một, từ đó cải thiện hiệu suất bảo trì. Hơn nữa, tính chất dễ chia sẻ của security group cho phép ta tinh chỉnh chỉ với một tài nguyên, rồi áp dụng cho tất cả các tài nguyên khác, mà không cần phải thiết lập từng bằng tay từng cái một.
Quản lý nhận dạng và truy cậpAWS cũng có cung cấp một kiểu kiểm soát truy cập khác với IAM. Đây là một ứng dụng kiểm soát mức bảo mật khi bạn cần truy cập giao diện RESTful. Mỗi yêu cầu REST phải được đánh dấu để AWS biết được ai đang truy cập dịch vụ. Hơn nữa, sau khi đối chiếu với một loạt chính sách cấu hình sẵn, AWS sẽ xác hoạt động nào được cho phép, hoạt động nào không được.
Trong bài viết này, ta sẽ không đi sâu vào IAM. Tuy nhiên, AWS rất chú trọng vào vấn đề bảo mật, nên hãy yên tâm, dữ liệu của bạn sẽ không bị truy cập trái phép đâu.
CloudWatchCloudWatch là một dịch vụ do AWS cung cấp giúp thu thập và theo dõi tất cả thông số tài nguyên AWS. Công cụ này mạnh mẽ ở chỗ nó có khả năng phản ứng với các sự kiện (hoặc nguy cơ) nhất định. Với CloudWatch, ta có thể giám sát tình trạng của EC2 instance mới khởi tạo.
- Ta có thể thêm cảnh báo vào EC2 instance rất nhanh chóng:
- Các cảnh báo được tạo có thể hướng đến nhều mục đích khác nhau:
LƯU Ý: SNS là một dịch vụ gửi thông báo theo chủ đề do AWS cung cấp. Thông báo có thể gửi qua email, SMS, iOS/Android gửi thông báo cùng nhiều định dạng khác nhau.
Từ giám sát đến thông báo, CloudWatch tự động hóa quy trình giám sát chỉ trong vài cú click chuột. Có vô vàn thông số xử lý sẵn cho nhiều dịch vụ AWS. Với người dùng nâng cao, bạn thậm chí còn có thể tạo thông số tùy chỉnh cho ứng dụng.
Về vấn đề chi phí, các dịch vụ miễn phí do CloudWatch cung cấp thường “dư sức” dùng cho các dự án start-up. Tuy nhiên, ngay cả khi quy mô kinh doanh mở rộng, chi phí gia tăng cũng thường chưa đến 1% của chi phí dịch vụ. Nếu bạn quan tâm về vấn đề chi phí, xem thêm ở đây. Với CloudWatch, việc giám sát hệ thống đã trở nên dễ dàng hơn bao giờ hết.
Dịch vụ ứng dụng miễn phí Hassle
Là một lập trình viên, có lẽ ai cũng đã trải qua những tình huống sau:
- Ứng dụng của ta cần thành phần database, đồng nghĩa là ta phải:
- Tìm máy chủ cho database.
- Cài đặt phần mềm database.
- Thiết đặt giám sát máy chủ và database.
- Kế hoạch dự phòng.
- Patch phần mềm nếu cần thiết.
- …
- Ứng dụng của ta cần kho lưu trữ file phân bổ, đồng nghĩa là ta phải:
- Tìm giải pháp nguồn mở (hoặc thương mại) hiện có cho kho lưu trữ file phân bổ.
- Chuẩn bị máy chủ ần thiết.
- Cài đặt và tinhc hỉnh giải pháp (thường không trực tiếp) đã chọn.
- Điều chình bộ giám sát cho máy chủ và database.
- …
- Ứng dụng của ta cần cache.
- Ứng dụng của ta cần message queue.
- Và vấn đề khác, bao gồm việc tinh chỉnh và các công việc sau giám sát.
Và bạn cũng biết rồi dấy, AWS sẽ giúp ta rất nhiều với các vấn đề trên. Có rất nhiều dịch vụ ứng dụng cho bạn, bạn không cần phải để tâm nhiều.
Hãy điểm qua một số dịch vụ trong đó.
RDS, giúp bạn quản lý database mà không cần phải động một ngón tayRelational databases (RDBMS) đã được nhiều ứng ứng dụng hỗ trợ. Trong môi trường sản suất, deploy ứng dụng với RDBMS luôn cần sự chú ý đặc biệt, bắt đầu với cách thức cài đặt và tùy chình database, rồi đến khi nào và như thế nào để tạo và khôi phục backup.
Trong một đội, Database Administrator (DBA) từng dành ít nhất 30% thời gian viết csript cài đặt và bảo trì. Với sự ra mắt của AWS RDS, DBA có thêm nhiều thời gian điều chỉnh hiệu suất SQL.
Vậy thì, RDS mang lại đều gì?
- RDS hỗ trợ hầu hết engine database thường gặp, bao gồm MySQL, SQLServer, PostgreSQL.
- Một database, node hay cluster, có thể tạo mới chỉ trong vài click.
- RDS có hỗ trợ sẵn cho nhiều thông số database chung, có tên dịch vụ là “Parameter Group”.
- Với sự hỗ trợ từ Security Group, RDS cung cấp sẵn quản lý truy cập.
- RDS cung cấp thêm nhều dịch vụ khi bạn kích hoạt Multi-AZ. Tất cả chuyển đổi dự phòng, chờ sẵn, giám sát đều được thực hiện tự động.
- Việc bảo trì và sao lưu RDS đều được tự động.
Cuối cùng, RDS tiếp kiệm kha khá thời gian khi cài đặt và bảo trì dịch vụ database. Đổi lại, bạn sẽ phải trả thêm 40% so với máy chủ EC2 tương ứng. Nếu bạn chấp nhận mức phí này, bạn có thể dành nhiều thời gian hơn cho những công việc “thật” của doanh nghiệp thay vì chỉ chúi mũi vào lo cho cơ sở hạ tầng.
Dynamo DB, kho dữ liệu khổng lồTrong những năm gần đây, người ta hay bàn tán về NoSQL. Và Amazon có vẻ như cũng không muốn bỏ qua xu hướng này. Dynamo DB (https://aws.amazon.com/dynamodb) là kho lưu trữ key-value được Amazon ra mắt năm 2012, và người góp công nhiều nhất và dịch vụ này là Werner Vogels (CTO của Amazone), một trong những chuyên gia hàng đầu về hệ thống siêu mở rộng.
Hiển nhiên, Amazon phải xử lý một lưu lượng dữ liệu khổng lồ. DynamoDB được xây dựng dựa theo Dynamo, kho dữ liệu nội bộ cho rất nhiều việc kinh doanh của Amazon, bao gồm hàng tỷ lượt mua hàng mỗi mùa giáng sinh. DynamoDB có thể mở rộng không giới hạn.
Hơn nữa, so với các giải pháp khác từ NoSQL, như Cassandra hay MongoDB, DynamoDB có lợi thế chi phí, phí này được tính theo lưu lượng lưu thông (lượng write/read mỗi giây được cho phép). Dưới đây là bảng phí so sánh giữa DynamoDB và các giải pháp NoSQL khác:
Nhu cầu | Dịch vụ DynamoDB | Chi phí DynamoDB | Sử dụng dịch vụ khác | Chi phí của dịch vụ khác |
Quy mô nhỏ (< 1000 DAU, 16GB dữ liệu) | 10 đơn vị viết
10 đơn vị đọc |
$9,07/tháng • | t1.micro ••
16GB EBS ••• |
$14,64/tháng |
Quy mô vừa(< 10k DAU, 160GB dữ liệu) | 100 đơn vị viết
100 đơn vị đọc |
$101,62/tháng | m4.xlarge
160GB EBS |
$190,95/tháng |
Quy mô lớn(< 10tr DAU, 1T dữ liệu) | 1000 đơn vị viết
1000 đơn vị đọc |
$852,58/month | Clustered c4.4xlarge • 512GB EBS • | $1329,24/tháng |
• tính theo giá theo yêu cầu khu vực US-EAST
•• AWS EC2 instance được chỉ định host các dịch vụ NoSQL khác
••• EBS dịch vụ lưu trữ ổn định do AWS cung cấp
Như đã đọc từ bảng, DynamoDB cung cấp dịch vụ với chi phí thường thấp hơn so với xây dựng kho dữ liệu key-value. Nếu bạn chưa đạt dung tích MongoDB/Cassandra cluster tối đa, bạn đang phí tiền cho những thứ bạn chả bao giờ sử dụng.
Amazon cung cấp dịch vụ theo cách thức quản lý hoàn chỉnh. Nói cách khác, bạn không cần phải lo về việc setup, mở rộng, hay theo dõi DynamoDB; tất cả đều do AWS quản lý.
SQS, distributed queue serviceKhi làm việc với lượng lớn dữ liệu, ta thường phân phối tính toán cho chiều node. Với công việc quy mô quốc tế, ta thường cần một đường xử lý dữ liệu từ các node phân bố trong dải địa lý. Để đạt yêu cầu cho các trường hợp trên, AWS giới thiệu SQS, Simple Queue Service. Như nhiều dịch vụ queue nổi tiếng khác, SQS cho phép nhất quán chuyển tin nhắn/công việc giữa các thành tố logic khác nhau.
Giống như tên, SQS là một dịch vụ cơ bản trong AWS đã có từ sớm. Tuy nhiên, đã “bí mật” phát triển SQS lên cao hơn, dựa theo nhu cầu của bạn, SQS có thể đơn giản hay mạnh mẽ với nhiều thông số tùy chỉnh được. Một vài tính năng nâng cao của SQS:
- Lưu trữ tin nhắn đến 14 ngày.
- Cơ chế tránh mất mát tin nhắn khi hỏng hóc.
- Delay chuyển mỗi tin nhắn.
- Chính sách Redrive để quản lý các tin nhắn lỗi (dead letter)
Dịch vụ Queue sẽ không quá phức tạp. Như các dịch vụ khác của AWS, SQS là một dịch vụ được quản lý hoàn toàn:
- Queue có thể mở rộng mạnh mẽ, bạn có thể thông qua hàng chục hoặc hàng triệu tin nhắn.
- Queue nhất quán và phân bổ, các dữ liệu quan trọng sẽ không bị mất đi trừ khi chúng hết hạn.
- Bạn không cần phải setup máy chủ để deploy phần mềm queue. Và tất nhiên, bạn cũng không cần phải thiết đặt giám sát phức tạp.
S3 là viết tắt của Simple Storage Service và giống như Dropbox, nhưng lại cho ứng dụng. Theo định nghĩa, S3 là một kho object-based với giao diện web đơn giản.
S3 rất đơn giản, nhưng cũng có kèm theo nhiều tính năng cao cấp. S3 đơn giản đến mức bạn có thể tích hợp vào bất cứ dịch vụ AWS nào. Hơn nữa, nhiều dịch vụ, như DynamoDB, SQS,… yêu cầu sử dụng S3 rất nhiều.
Hiểu rõ S3 sẽ phóng đại lợi ích từ các dịch vụ AWS khác. Đây là vì đa số dịch vụ lưu trữ backup trên S3. Hơn nữa, S3 là điểm export/import thường thấy cho nhiều dịch vụ.
Cuối cùng, S3 cũng được tự động hóa như nhiều dịch vụ AWS khác. Về mặt chi phí, S3 không thu phí quá cao nếu bạn muốn dùng thử.
SDK và nhiều dịch vụ nâng caoCòn nhiều dịch vụ AWS khác đáng chú ý. Chúng tôi sẽ chỉ liệt kê một số tiêu biểu trong bài viết này:
- Redshift: database theo hàng, có thể sử dụng để xử lý hàng nghìn tỷ đơn vị dữ liệu một cách nhanh chóng.
- Data Pipeline: chuyển đổi dữ liệu giữa các dịch vụ AWS nhanh chóng.
- ElastiCache: máy chủ Memcache được quản lý, đơn giản và hiệu quả.
- Lambda: thế hệ điện toán đám mây kế tiếp. Lambda chạy một đoạn code đã upload theo event.
- Route53: giải pháp DNS mạnh mẽ có hỗ trợ weighted response, geolocation based response bênh cạnh các giải pháp DNS chuẩn khác.
- SNS: dịch vụ thông báo dễ sử dụng.
- …
Khi bạn thêm thành tố mới vào ứng dụng, bạn nên kiểm tra AWS. Đa phần, AWS sẽ có sẵn SaaS thay thế.
Hơn nữa, để truy cập giao diện RESTful dễ hơn. Amazon có cung cấp SDK với hầu hết ngôn ngữ lập trình.
Tóm lại
Ta đã đề cập đến đa số dịch vụ trong AWS trong bài báo này. Nếu bạn còn thắc mắc AWS có thể thay thế phần nào trong chuỗi sản xuất của bạn, và gia tăng hiệu suất đến bao nhiêu lần? hãy tạo thử, và dùng thử hay ngày hôm nay.
Techtalk via toptal