#242 - Tại sao Twitter không "down" - Từ góc nhìn của một SRE
Vậy là chỉ còn hơn 1 tháng nữa, năm 2022 sẽ chính thức khép lại. Sau hai năm ảnh hưởng bởi Covid thì chúng ta tới 1 năm chịu ảnh hưởng của suy thoái kinh tế trên toàn thế giới dẫn tới tình hình không quá khả quan cho dev tại Việt Nam. Nếu bạn có bị ảnh hưởng bởi đợt layoff vừa qua, có thể gửi về cho Grokking và chia sẻ với các độc giả của Grokking Newsletter nhé.
Ngoài ra chúng tôi có nhận được một số phản hồi từ bạn đọc là link pastebin không access được. Chúng tôi đã kiểm tra lại và link vẫn vào bình thường (Trên cả Mac/Windows và Chrome lẫn Firefox). Vậy nên các bạn có thể kiểm tra lại máy của mình hoặc thử một trình duyệt khác xem sao nhé.
Một số bài viết tới từ medium, nên các bạn có thể đổi DNS hoặc cài Warp để đọc nhé.
Có 1 bạn đọc khác có phản hồi là không thấy link để đọc bài. Có lẽ là bạn chưa quen với giao diện của Newsletter. Các bạn có thể bấm trực tiếp trên email của mình (từ điện thoại hoặc máy tính) vào phần tựa đề tô đậm màu đen, hoặc phần chữ màu xanh ngay phía dưới mỗi bài viết, như trong hình dưới đây để đi tới link trực tiếp của bài viết. Rất dễ dàng đúng không nào.
P/S: Dạo này Newsletter chỉ có 1 vài người soạn nên nếu thấy bài viết ít mong các bạn thông cảm. Đây là 1 dự án được thực hiện cũng khá lâu, và các thành viên của team Newsletter cũng đã rất nỗ lực để duy trì trong nhiều năm. Tuy nhiên ai cũng có những công việc riêng của mỗi người (rất nhiều người đã đến và đi). Và để duy trì 1 số newsletter như thế này thì cần khá nhiều công sức. Bên cạnh việc soạn nội dung thì còn cần review, chỉnh sửa rồi tổng hợp lại. Đôi khi thiếu nội dung quá thì phải chờ tuần sau. Đó là lý do các bạn thấy ra đôi khi sẽ ra số mới không đều.
News
(by lpv)
In Memoriam: Frederick P. Brooks, Jr. – a Personal Recollection
Tác giả của cuốn sách nổi tiếng "The Mythical Man-Month" Frederick P. Brooks vừa mới qua đời vào ngày 17 vừa qua. Không chỉ là một người khổng lồ trong ngành khoa học máy tính, ông còn là nguồn cảm hứng cho nhiều người trong chúng ta.
Ông bắt đầu sự nghiệp của mình tại IBM. Từng là người đứng đầu của dự án dòng máy IBM 8000 nhưng thất bại. Dù cố gắng từ chức sau đó nhưng Watson (CEO của IBM lúc đó) đã giữ ông lại vì lý do: "Tôi đã chi cả tỉ đô để đào tạo anh, tôi không cho phép anh rời đi vào thời điểm này".
Sau đó, ông đứng đầu dự án thiết kế và xây dựng loạt máy tính lớn S/360 của IBM. Có khá nhiều khía cạnh thú vị đối với kiến trúc của S/360, nhưng một trong những đóng góp quan trọng nhất là byte 8-bit (và sau đó là 32 bit). Ông cho rằng thành tựu lớn nhất của mình đó là "Thay đổi dòng máy IBM 360 từ byte 6-bit thành byte 8-bit, do đó cho phép sử dụng các chữ cái viết thường, sự thay đổi này lan truyền khắp nơi".
Ông tiếp tục quản lý nhóm phát triển OS/360. Cả ông (và Watson) coi đó là một thất bại; cả hai đều tự hỏi tại sao. Đó là lý do đã khiến ông viết nên cuốn sách nổi tiếng The Mythical Man-Month. Sau khi rời IBM, ông bắt đầu học lên cao học và giảng dạy tại Đại học North Carolina ở Chapel Hill. Tại đây ông đã thành lập khoa Khoa Học Máy Tính của trường.
Ông đã nhận được nhiều giải thưởng với những đóng góp về thiết kế hệ thống máy tính và phát triển các chương trình học thuật, trong đó có giải Turing 1999.
Investigating a backdoored PyPi package targeting FastAPI applications
Vào ngày 23 tháng 11, nhóm Datadog Security Labs đã xác định được một gói package Python trên PyPI có liên quan đến FastAPI, fastapi-toolkit, có khả năng đã bị kẻ xấu xâm phạm. Kẻ tấn công đã chèn một backdoor vào đó, thêm vào một FastAPI route cho phép kẻ tấn công từ xa thực thi mã python và truy vấn SQL tùy ý trong ngữ cảnh web app. Vậy nên nếu bạn đang sử dụng fastapi-toolkit phiên bản 0.0.27 thì nên xử lý ngay nhé.
Những bài viết hay
Why Twitter Didn’t Go Down: From a Real Twitter SRE
(by lpv)
Sau khi sa thải rất nhiều nhân viên, nhưng tại Twitter vẫn không có một sự cố nào xảy ra. Để tìm hiểu về điều này, chúng ta có thể đọc câu chuyện được kể bởi một kỹ sư SRE tại Twitter qua đó giải thích tại sao Twitter "didn't go down". Từ những ngày khi còn phải quản lý hệ thống server qua một file ... spreadsheet, cho tới khi hoàn tất việc monitoring hệ thống, đảm bảo nhanh chóng phát hiện lỗi và sửa lỗi. Đồng thời đảm bảo khi lỗi xảy ra và quá trình sữa chữa sẽ không gây ảnh hưởng tới các chức năng liên quan. Mọi thứ được tự động hóa và liên tục tìm cách tối ưu về hiệu suất. Mời các bạn cùng đọc.
On Spark Performance and partitioning strategies
(by steven)
Với vai trò là Data Engineer khi làm việc với Spark chắc chắn chúng ta sẽ phải giải quyết vấn đề liên quan đến partition để tận dụng tối đa hiệu suất của Spark
Với một chiến lược partition không tốt có thể dẫn đến hiệu quả xử lý data không hiệu quả và thông thường sẽ rơi vào 03 trường hợp sau:
Quá nhiều partition so với cluster size và sẽ không sử dụng hiệu quả resouce.
Thiếu partition so với cluster size và dẫn đến các vấn đề về bộ nhớ CPU, kích thước partition quá lớn vượt quá khả năng lưu trữ của bộ nhớ gây lên tình trạng Out of Memory (OOM), phân bổ partition không đều trên cluster dẫn đến một vài CPU phải làm việc quá tải trong khi các CPU khác không sử dụng.
Tình trạng data phân phối không đều trong các partition (skewed data). Dẫn đến một vài task sẽ xử lý lâu hơn các task khác làm chậm quá trình xử lý và sử dụng resouce kém hiệu quả.
Thông qua bài viết tác giả sẽ giải thích chi tiết về Spark partition và cơ chế hoạt động cùng với các ví dụ cụ thể vào các trường hợp, tác giả cũng chia sẻ thêm về các giải pháp để giải quyết các vấn đề liên quan đến chiến lược chia partition trong Spark. Thông tin chi tiết có thể tham khảo tại bài viết gốc.
Góc Lập Trình
Đề ra tuần này: Two City Scheduling
(by ndaadn)
Một công ty dự định thực hiện phỏng vấn với 2n ứng viên. Cho mảng costs với costs[i] = [aCost_i, bCost_i], với chi phí để người thứ i bay tới thành phố A là aCost_i, và bay tới thành phố B là bCost_i.
Hãy tìm tổng chi phí ít nhất sao cho n người thực hiện phỏng vấn ở thành phố A, n người thực hiện phỏng vấn ở thành phố B.
Ví dụ:
Input: costs = [[10,20],[30,200],[400,50],[30,20]]
Output: 110
Giải thích:
Người thứ nhất bay tới thành phố A tốn 10.
Người thứ hai bay tới thành phố A tốn 30.
Người thứ ba bay tới thành phố B tốn 50.
Người thứ tư bay tới thành phố B tốn 20.
Tổng chi phí là 110 để 2 người phỏng vấn ở thành phố A, 2 người phỏng vấn ở thành phố B.
Lời giải tuần trước: Maximize the Confusion of an Exam
(by phucnh)
Bài toán cho phép ta thực hiện hoán đổi mỗi ký tự T thành F hoặc ngược lại nhiều nhất k lần, và yêu cầu tìm chiều dài lớn nhất của chuỗi con liên tiếp gồm toàn ký tự T hoặc F.
Do chuỗi đầu vào chỉ gồm 2 giá trị 'T' và 'F', ta có thể biểu diễn bài toán này lại như sau:
Tìm chuỗi con dài nhất chứa nhiều nhất k ký tự 'T' hoặc chứa nhiều nhất k ký tự 'F'.
Để giải bài toán tìm chuỗi con dài nhất chứa nhiều nhất k ký tự bất kỳ, ta áp dụng phương pháp cửa sổ trượt (sliding window). Các diễn đạt tổng quát của phương pháp cửa sổ trượt như sau:
Định nghĩa cửa sổ trượt và điều kiện tăng giảm kích cỡ cửa sổ
Mở rộng cửa số trượt
Kiểm tra điều kiện, và nếu điều kiện thoả mãn, ta thu hẹp cửa sổ
Giải thuật được thực hiện như sau: https://pastebin.com/THsPujfX
Độ phức tạp về thời gian của giải thuật là O(n) với n là độ dài của chuỗi đầu vào, độ phức tạp về thời gian là O(1).
Code & Tools
D2: A modern diagram scripting language that turns text to diagrams.
Semantic code search: Search your codebase with natural language
Feedback
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)
Grokking mang lại cho các bạn những kiến thức mới mẻ và hữu ích thông qua:
Tech Talk: Là một hoạt động thường xuyên của Grokking từ những ngày đầu thành lập. Tại đây các diễn giả chia sẻ kiến thức xoay quanh Computer Science và Software Engineer. Các buổi Tech Talk đều được record và upload lên kênh youtube của Grokking.
Grokking Knowledge Graph: Tập hợp những nguồn kiến thức phong phú với hơn 1000 bài viết chọn lọc, các đầu sách, khóa học, v.v… Các bài viết đều được gán nhãn để giúp bạn đọc dễ dàng tìm kiếm.
Webinar: Là chương trình kết nối các kỹ sư Việt Nam và các kỹ sư đang làm việc tại các công ty công nghệ hàng đầu thế giới.
Dijkstra: Một ấn phẩm được xuất bản bởi các thành viên của Grokking. Với những bài viết đào sâu vào kỹ thuật và kiến thức khoa học máy tính.
Kipalog: Nền tảng chia sẻ kiến thức dành cho các lập trình viên.
Newsletter: Những bài viết hay về công nghệ sẽ được gửi tới bạn hàng tuần qua email.
Xin hẹn gặp lại các bạn vào tuần sau.
Quotes
"An evolving system increases its complexity unless work is done to reduce it." - Meir Lehman