#110 - Code less, engineer more
Ngày 07/03 vừa qua, Grokking đã tổ chức Webinar #03: Data Science in Silicon Valley, với gần 200 bạn tham gia đã được lắng nghe những chia sẻ rất quý báu từ hai anh Phạm Vĩnh Thụy (Senior Data Scientist, Tech Lead @ Uber) và anh Lương Hoài Xuân (Software Engineer @ Google).
Thông qua buổi chia sẻ này, các bạn đã được giải đáp nhiều câu hỏi về những kiến thức, kỹ năng cần thiết cho Data Scientist, công việc thường ngày và cách thức để tổ chức, xây dựng một data project có sự tham gia của nhiều nhóm làm việc khác nhau, những case study áp dụng insight từ data science dẫn đến business success...
Nếu bạn bỏ lỡ Webinar này có thể xem lại tại link: Grokking Webinar #03: Data Science in Silicon Valley
Những bài viết hay
Code less, engineer more — increment.com
Chúng ta thường cho rằng "Reinvent the wheel" là một cách tiếp cận không phù hợp vì nó không góp phần cải tiến một sản phẩm có sẵn mà chỉ tạo ra thêm một sản phẩm với chức năng tương tự. Vì vậy mà những sản phẩm "reinvented" đó sẽ không có những thế mạnh riêng cạnh tranh khác so với những đối thủ khác trên thị trường. Tác giả bài viết này đã đưa ra những quan điểm, nguyên tắc để đội ngũ engineer có thể đóng góp cho công ty những giá trị duy nhất với tư tưởng "code less, engineer more" - Tận dụng những gì có sẵn để tạo nên những giá trị độc nhất.
Project LightSpeed: Rewriting Messenger to be faster, smaller, and simpler — engineering.fb.com
Mới đây, Facebook đã cho ra mắt phiên bản mới của Messenger trên iOS, trở nên nhanh, nhẹ & đơn giản hơn. Về mặt kĩ thuật: app đã khởi động nhanh hơn 2 lần mà dung lượng chỉ còn 1/4 so với trước (lượng code giảm tới 84%). Team engineer đã tận dụng tối đa các thành phần native của OS. Cải tiến SQLite hỗ trợ Stored Procedure & sử dụng database này như một hệ thống chung cho nhiều mục đích.
Câu hỏi là: nếu thêm các tính năng mới, team sẽ làm gì để Messenger giữ được khả năng nhanh - nhỏ - nhẹ này?
Mạng lưới Facebook được trải rộng khắp thế giới, làm thế nào mà chỉ trong tích tắc, bạn có thể thấy ai đó trong friend list đang like, comment, hay gửi nhận được tin nhắn dù mới check in cách bạn nửa vòng Trái Đất?
Nếu bạn là người tò mò muốn tìm hiểu về networking, hãy cùng tác giả tìm ra câu trả lời & khám phá những điều thú vị về hệ thống network của Facebook.
Collecting the right data — www.datadoghq.com
Tương tự như logging, thu thập monitoring data thực sự không tốn nhiều công sức, nhưng tới khi cần mà không có thì thực sự đau đầu. Vậy phải thu thập các loại metrics/data gì, khối lượng/tần suất bao nhiêu là đủ, và làm thế nào để tối đa hóa giá trị của các dữ liệu đó.
Góc Database
Scylla review: Apache Cassandra supercharged | InfoWorld — www.infoworld.com
Cassandra là một trong các database thuộc nhóm NoSQL đáp ứng được tính Availability khá cao (HA) nhưng cũng có yếu điểm là độ trễ cao nhất khi tải cao cũng khó kiểm soát bởi vì Cassandra được xây dựng trên nền tảng Java VM, trong đó có cơ chế dọn dẹp bộ nhớ và cơ chế compact các file SSTables đều tốn tài nguyên và ảnh hưởng đến hệ thống.
Để giải quyết vấn đề độ trễ không nhất quán (inconsistent latency) cũng như tìm cách nâng performance tốt hơn, team ScyllaDB đã xây dựng lại một phiên bản drop-in thay thế được cho Cassandra nhưng có những thiết kế tối ưu hơn như: có một bộ I/O scheduler và load balancer riêng cho các node database, cũng như có cơ chế shard-per-core, auto-tuning...
Tin tức khác:
Góc Algorithm
When Bloom filters don't bloom — blog.cloudflare.com
Bài toán đưa ra: lọc số ip duy nhất từ 1 file ip có 40 triệu dòng (600 MB)
Ban đầu xử lý bằng lệnh bash tốn 2 phút 3 giây và tác giả cảm thấy chậm nên muốn xây dựng 1 chương trình để xử lý nhanh hơn. Và tác giả nghĩ tới việc dùng Bloom Filter.
Thử nghiệm cài đặt Bloom Filter với thông số: k=8 (8 hàm hash), n=40,000,000 (số dòng) thì tính ra được:
m=128 MB (làm tròn về mũ 2 - vùng nhớ cần làm mảng bit)
p=0.000019 (tỉ lệ collision phù hợp)
Chạy thử chương trình vừa cài đặt tốn 12 giây trong khi thử nghiệm chạy 'wc -l' thì chỉ tốn 0.5 giây, chậm hơn gần 24 lần.
Về mặt thuật toán thì quá trình cài đặt bloom filter chỉ là quá trình hash các giá trị thành bit và lưu vào mảng, sau đó kiểm tra, vậy thì nếu chậm là do đâu? Có phải là do các thuật toán hash không?
Sau khi đo thì thật ra thuật toán hash chỉ mất khoảng 2 giây để chạy, và sau khi đo đạc bằng nhiều cách thì thấy là chậm là do quá trình "truy xuất" các thành phần bộ nhớ nằm trong mảng các bit của bloom filter. Lý do là với cài đặt bloom filter kích cỡ 128 MB thì ko vừa với L3 cache nên sẽ được lưu ở RAM, dẫn đến thao tác để đọc/ghi các thành phần trong mảng bit chậm hơn so với đọc trên cache.
Quyết định chuyển qua cài đặt bằng hash-table bình thường sử dụng kỹ thuật linear probing với key 64 bit. Thời gian chạy là khoảng 6 giây, giảm còn 1 nửa và độ collision ít hơn.
Chốt lại, nếu bạn thấy một chương trình chạy 2 phút là chậm và dành vài tiếng đồng hồ để tối ưu nó xuống còn chạy 6 giây thì bạn sẽ học được nhiều thứ hay ho, bạn nhỉ.
Code & Tools
Sorbet: Static Type Checking In Ruby on Rails
Java 14: Arrives with a Host of New Features
System Design Primer: How to design large-scale systems
This week sponsor
Ascenda is a global innovator in loyalty management, established 2014 and headquartered in Singapore with offices across Asia, Europe and the Americas. With a team of 80 full-time employees, we enable over 50 major financial services and travel brands worldwide with rewards technology, loyalty marketing, advisory and customer servicing.
We believe that nothing should stand in the way of brands who aim to deliver extraordinary moments for their customers. That’s why our solutions are beautifully simple to manage, easy and rapid to deploy, and always delivering exceptional value. In a world of increasingly complex enterprise software and proliferating buzzwords, we strip away the noise and take a fresh, practical approach to loyalty management.
Visit ascendaloyalty.com for more information and current job openings.
Góc tuyển dụng
Quote
Those hours of practice, and failure, are a necessary part of the learning process.
― Gina Sipley
Để giúp cải thiện chất lượng nội dung của Grokking Newsletter, mong bạn dành chút thời gian phản hồi cũng như đóng góp ý tưởng giúp team thông qua link khảo sát hàng tuần tại đây nhé.