#211 - Cách Google, Twitter, và Spotify xây dựng văn hóa documentation
Trong số này, chúng ta cùng tìm hiểu về:
Cách Google, Twitter, và Spotify xây dựng văn hóa documentation
Cách eBay sao chép dữ liệu NoSQL sang phiên bản staging
Bài presentation về Skinny, một project cá nhân về Distributed Lock Service của Dan Lüdtke
Bài thuyết trình về Parquet file
Lời giải bài Delete Duplicate Folders in System
Grokking Webinar #11 vào 12/03/2022
Những bài viết hay
How Google, Twitter, and Spotify built a culture of documentation
Nhiều vấn đề kỹ thuật cuối cùng lại trở thành vấn đề về mặt con người, và việc thiếu thốn documents tốt trong công ty cũng không phải là trường hợp ngoại lệ. Đặc biệt là thói quen viết document cần được duy trì và nuôi dưỡng trong môi trường làm việc của các kỹ sư phần mềm. Bài viết sau đây đưa ra các case study của 3 công ty là Google, Twitter và Spotify trong việc xử lí các technical documents của họ và xây dựng văn hóa documentation trong công ty vốn dĩ là một điều khó khi mà đa phần các kỹ sư phần mềm hay tập trung vào coding hơn là documentation.
Những bài học được đưa ra có thể tóm gọn thành 3 nguyên tắc chính:
Giảm tối đa sự phiền toái và "ma sát" khi viết document. Một sự thật hiển nhiên là các kỹ sư luôn né tránh việc bảo trì document. Việc context-switching khi đang code mà chuyển sang một hệ thống riêng biệt mà không được sử dụng công cụ hiện tại khiến document sẽ ít được viết hơn. Ở ví dụ này, cả ba công ty đều áp dụng các phương pháp tiếp cận docs-as-code vì nó giúp cập nhật tài liệu cho các kĩ sư một cách dễ dàng và xuyên suốt hơn.
Tiêu chuẩn hóa và đầu tư vào công cụ viết document. Cả 3 công ty đều đầu tư rất nhiều về công cụ, đảm bảo một nơi thống nhất và duy nhất cho document, để các kĩ sư không phải hỏi rằng "Document ở đâu?". Google là g3docs, Twitter là DocBird, Spotify là TechDocs.
Truyền bá văn hóa document thông qua đào tạo và dẫn dắt với ví dụ. Dạy các lập trình viên cách viết document, cung cấp các ví dụ và template để sử dụng, tổ chức các ngày hackathon dành riêng cho viết document và hợp tác với kỹ sư có tầm ảnh hưởng để khuyến khích và truyền bá.
Bài viết có đưa ra nhiều số liệu và ví dụ cụ thể, mời bạn tham khảo thêm.
(by nghialuu)
Creating High-Quality Staging Data with a NoSQL Data Migration System
Với hàng triệu người mua và người bán tại hơn 190 thị trường toàn cầu, eBay là kênh đấu giá online kết nối được số lượng người dùng lớn nhất thế giới. Tại eBay, nhằm tăng tốc độ software delivery, đội ngũ kỹ sư tại đây xác định và tập trung vào bài toán cải thiện môi trường staging với chất lượng dữ liệu tốt nhất có thể, điều này cho phép các user nội bộ có thể xây dựng các features nhanh hơn.
Mục đích của việc này là đảm bảo môi trường staging có dữ liệu thử nghiệm chất lượng cao, cơ sở hạ tầng mạnh mẽ. Từ đó trở thành nền tảng để thử nghiệm hàng nghìn features trên toàn bộ trang eBay theo cách có thể mở rộng và đạt được hiệu quả cao.
Dự án này được các kỹ sư tại đây thực hiện bằng cách thiết lập một hệ thống data migration chuyên dụng và có thể mở rộng. Nhờ có hệ thống này user nội bộ có thể sao chép bất kỳ tập hợp keys nào đã cho từ phiên bản NoSQL Production (source) sang phiên bản staging tương ứng (destination). Hệ thống được xây dựng với nền tảng là module data orchestrator được thiết lập như một Jenkins pipeline trong cả môi trường production và môi trường staging nhằm sao chép và ghi dữ liệu. Module này bao gồm 2 thành phần lớn là: Data processor và Transporter.
Hệ thống này đã giúp user nội bộ của eBay sao chép nhiều dữ liệu phức tạp từ môi trường production để kiểm tra tất cả các tình huống có thể xảy ra trên thực tế. Ngoài ra, các kỹ sư tại đây cũng sẽ mở rộng để hệ thống có thể sử dụng cho cơ sở dữ liệu Oracle, CouchDB và ClickHouse.
Để đọc thêm về các thành phần cũng như chi tiết kiến trúc hệ thống mời bạn đọc truy cập đường dẫn sau.
(by hungngph)
Góc Distributed System
Góc DS tuần này giới thiệu tới bạn đọc một bài presentation về Skinny, một project cá nhân về Distributed Lock Service của Dan Lüdtke, engineer ở Google, được trình bày ở SRECon 2020. Những điểm thú vị trong bài trình bày:
Giới thiệu về Paxos và các vấn đề cơ bản khi lập trình một biến thể của thuật toán đồng thuận Paxos.
Xem trực tiếp Paxos hoạt động như thế nào.
Những điểm khó khăn gặp phải khi lập trình thuật toán này.
Slide bài trình bày: https://www.usenix.org/sites/default/files/conference/protected-files/srecon20americas_slides_ludtke.pdf
Video: https://www.youtube.com/watch?v=gAGGPaFDfwE
Github repo: https://github.com/danrl/skinny
(by tuna)
Góc Data
Khi bắt tay vào thiết kế Data Lake thì chúng ta sẽ bắt đầu bằng việc lựa chọn công nghệ và kiến trúc cho thành phần chính: phần Storage và phần Computing.
Đối với Storage, có rất nhiều loại định dạng có thể chọn để lưu trữ như Log file, text file, CSV, JSON, ... trong số đó, parquet file là loại format khá thông dụng hiện nay vì nhiều ưu điểm:
Format được đặc tả dưới dạng binary tốn tài nguyên hơn so với dạng text như csv, json.
Cấu trúc được thiết kế dạng Columnar, phù hợp để chạy các câu query về OLAP
Dễ nén và dễ mã hóa
Trong mục Góc Data kỳ này, mời các bạn cùng xem một bài thuyết trình về xoay quanh chủ đề Parquet file. Bài thuyết trình này sẽ mang đến cho bạn một cái nhìn toàn cảnh về những lợi ích của Parquet file, tại sao nó hay được dùng trong Data Lake, cũng như mô tả một cách trực quan về cấu trúc của loại định dạng này.
(by n^4)
Góc Lập Trình
Đề tuần này: Smallest String With Swaps
Lời giải đề bài tuần trước:
Đề bài: Delete Duplicate Folders in System
Lời giải:
Đề bài yêu cầu loại bỏ các cây thư mục con bị trùng trong danh sách các cây thư mục được cho sẵn. Để giải bài toán này, ta cần một cấu trúc dữ liệu phù hợp để biểu diễn các đường đi trong cây thư mục. Các ví dụ trong đề bài giúp chúng ta liên tưởng đến Trie, hay còn gọi là Prefix Tree.
Đây là một cấu trúc dữ liệu có rất nhiều ứng dụng trong Autocomplete, hay IP Routing,... Nếu các bạn chưa biết đến cấu trúc dữ liệu này thì có thể làm quen trước qua bài tập sau: Implement Trie (Prefix Tree)
Quay lại bài toán ban đầu, hướng giải quyết bài toán như sau:
Biểu diễn các cây thư mục bằng Trie.
Ứng với mỗi nút trong cây, ta tính giá trị băm (hash) của nút này bằng cách biểu diễn thông qua giá trị cây con của nó. Thông qua giá trị này có thể xác định được cây thư mục con nào bị lặp. Giả sử ta có cây thư mục a->b->x->y, giá trị băm của nút a sẽ là "(b,x,y)"; của nút b là "(x,y)"",...
Tìm các nút con trong cây có giá trị băm trùng lặp và xóa nút đó khỏi cây Trie ban đầu.
Trả kết quả sau khi đã xóa các cây thư mục trùng lặp.
Ý tưởng cho bài toán không khó, tuy nhiên việc cài đặt lại khá phức tạp vì phải vận dụng nhiều cấu trúc dữ liệu khác nhau và các bước duyệt cây cần sử dụng thuật đệ quy backtrack.
Dưới đây là một hướng cài đặt tham khảo bằng ngôn ngữ Java: https://pastebin.com/0Wx6M3NU
(by ndaadn)
Tech Talks
Grokking Webinar #11: Demystifying Remote Work in Tech — www.facebook.com
Trước khi đại dịch covid 19 xuất hiện, nhiều đại gia trong làng công nghệ tự hào với việc cung cấp cho nhân viên trải nghiệm được làm việc trong những văn phòng đẹp đẽ, hiện đại, đầy đủ tiện nghi, v.v… Từ khi dịch bệnh xuất hiện, làm việc từ xa (remote work) hoặc làm việc từ nhà (work from home), từ chỗ chỉ được áp dụng với một vài công ty, đã trở thành một xu hướng mới ở các công ty công nghệ. Một vài công ty như Square, Twitter, Coinbase, v.v… đã chuyển sang làm việc từ xa toàn thời gian. Một số công ty từ chỗ nói không với làm việc từ xa cũng đã phải dần dần nới lỏng quy định khi gặp phải sự phản ứng quyết liệt của nhân viên.
Làm việc từ xa ở các công ty tech diễn ra như thế nào? Mô hình làm việc này có những thuận lợi và khó khăn gì? Làm thế nào để đảm bảo công việc vẫn hoàn thành đúng tiến độ khi không gặp mặt nhau trực tiếp? Chúng ta sẽ cùng nhau trả lời các câu hỏi này thông qua webinar “Demystifying Remote Work in Tech"
Agenda: (12/03/2022 - Giờ Việt Nam)
09:00 - 10:30: Breaking into the Tech Industry
10:30 - 11:00: Q&A
Notes:
LINK ZOOM THAM GIA EVENT SẼ ĐƯỢC GỬI QUA GOOGLE CALENDAR
Link đăng ký tham gia: https://forms.gle/vb1ZvQn2cY2g96dp7Đ
ặt câu hỏi cho diễn giả: https://pigeonhole.at/EFQK5G
Click Going/Interested để nhận thông tin cập nhật mới tại event link
Code & Tools
MDN Content - Repo chứa tài liệu cho MDN Web
TerarkDB - Một database thay thế cho RocksDB với tối ưu hóa cho tail latency, throughput, và compression của Byteance
Góc Sponsors
Fossil Việt Nam, tiền thân là Misfit, giữ vị thế là Trung tâm Nghiên cứu và Phát triển Công nghệ Thiết bị đeo thông minh trực thuộc Fossil Group. Từ những ngày đầu thành lập, đội ngũ kỹ sư Việt đã thiết kế và xây dựng hệ sinh thái thiết bị đeo thông minh phục vụ cuộc sống của hàng triệu người toàn cầu. Chúng tôi tự hào là những nhà đổi mới luôn bứt phá giới hạn của công nghệ và thời trang, tập trung phát triển 3 nhóm sản phẩm chủ lực: thiết bị, ứng dụng, và dữ liệu trên đám mây.
ĐIỀU FOSSIL TỰ TIN MANG ĐẾN CHO BẠN?
Tham gia nghiên cứu và phát triển Thiết bị đeo thông minh hàng triệu người dùng trên toàn thế giới. Với Fossil, mỗi việc bạn làm đều có thể mang lại thay đổi cho cuộc sống của rất nhiều người.
Lộ trình nghề nghiệp đa dạng, bất kể bạn muốn quản lý đội ngũ hay tập trung phát triển chuyên môn kỹ thuật.
Cơ hội làm việc và học hỏi từ các kỹ sư Google, Qualcomm, Citizen, v.v.
Bảo hiểm sức khỏe cao cấp, thu nhập và phúc lợi cạnh tranh mang đến trải nghiệm làm việc toàn diện nhất.
Môi trường làm việc linh hoạt để bạn thỏa sức học hỏi, phát triển và tạo ra tác động tích cực!
Fossil Việt Nam đang mở ra cơ hội với hàng loạt vị trí hấp dẫn
(Cloud Engineer, Android Engineer, Software Architect), mời bạn tham khảo chi tiết công việc tại ĐÂY.
Kết nối với Fossil Việt Nam
Email tuyển dụng: people@fossil.com
Linkedin: https://www.linkedin.com/company/fossilvietnamcareers
Quotes
What do we want? Now! When do we want it? Fewer race conditions!
― Anna Melzer
Bạn đánh giá nội dung số newsletter này thế nào?
(1 = Rất tệ / 5 = Rất tốt)
(Việc đánh giá của các bạn là rất quan trọng, sẽ giúp chúng tôi liên tục cải thiện nội dung newsletter tốt hơn)