#103 - Sử dụng Skiplist làm index cho MemSQL
Vào ngày 4/1 vừa qua, tại văn phòng của Axon Việt Nam, Grokking TechTalk #37 đã diễn với chủ đề Software Design & Refactoring. Với những kinh nghiệm của mình, 2 anh Hồ Nguyễn & anh Thành Đinh đã có những chia sẻ rất quý báu. Các bạn có thể xem lại slide của 2 diễn giả này tại đây: Data Intensive Problem, Software Design And Refactoring
What is Skiplist & Why a Skiplist Index for MemSQL
Những RDBMS như MYSQL, Postgres lựa chọn cấu trúc B-Tree để lưu trữ index data on disk với mục đích tối ưu I/O operation. Phần cứng ngày càng phát triển và những ý tưởng tận dụng memory để tối ưu quá trình vận hành của ứng dụng đang được cân nhắc rất chi tiết. Có một giải pháp lưu trữ thông tin index data in-memory bằng cấu trúc Skip List đã được đưa ra.
Đội ngũ phát triển MemSQL đã đưa ra những luận điểm phân tích về complexity, lock-free, thread-safe, read performance .... cũng như những thực nghiệm kiểm chứng để so sánh ưu điểm và nhược điểm của Skip List so với B-Tree. Từ đó có thể thiết kế cấu trúc dữ liệu lưu trữ thông tin index in-memory một cách tối ưu nhất có thể.
Những bài viết hay
Hypothesis Testing in Production — engineering.remind.com
Khác với môi trường local, khi sự cố xảy ra trên Production, đa số chúng ta không thể đặt breakpoint và debug qua từng dòng code. Chúng ta chỉ có thể quan sát hiện tượng và khoanh vùng nguyên nhân. Và đôi khi đặt đúng câu hỏi là đã giải quyết được 1 nửa vấn đề. Trong bài viết sau, team Remind thuật lại cách họ xử lý vấn đề ở Production thông qua việc đặt hàng loạt câu hỏi giả thuyết, và lần lượt kiểm chứng chúng.
Making the LinkedIn experimentation engine 20x faster — engineering.linkedin.com
Hệ thống thử nghiệm AB testing của LinkedIn sử dụng một phần mềm có tên là Lix Engine, phần mềm này được tạo ra vào năm 2012 với mục đích lấy mẫu người dùng, phân chia các tập user & gán tính năng thử nghiệm trên đó. Cùng với việc cung cấp DSL (Domain Specification Language), nó thực sự mang lại nhiều ưu điểm trong quá trình triển khai & vận hành. Nhưng đó là thời điểm của 8 năm trước, khi mà mọi thứ trải qua một quá trình hoạt động, phần mềm này bắt đầu bộc lộ những vấn đề gây ảnh hưởng tới tốc độ cũng như tiêu tốn nhiều tài nguyên hệ thống.
Vì vậy các kĩ sư ở LinkedIn đã viết lại v2 cho Lix Engine với nhiều cải tiến trong đó có việc thiết kế lại kiến trúc DSL & thay đổi ngôn ngữ lập trình . . .
How to test microservices for functionality and compliance — searchapparchitecture.techtarget.com
Đặc tính quan trọng của kiến trúc microservices là các services hoạt động độc lập và giao tiếp với nhau thông qua cơ chế đồng bộ (API) hoặc bất đồng bộ (Message Bus). Do đó, việc kiểm thử hệ thống microservices rất phức tạp, đặc biệt khi số lượng service tăng nhanh, có thể lên đến hàng trăm hoặc thậm chí là hàng ngàn services. Vì vậy chúng ta cần có một chiến lược kiểm thử hiệu quả.
Code & Tools
Making Python Programs Blazingly Fast — towardsdatascience.com
Các cách đơn giản để theo dõi & cải tiến hiệu năng của một chương trình python
Dynein: Building an Open-source Distributed Delayed Job Queueing System — medium.com
Dynein là một Queueing System được Airbnb phát triển & thay thế cho Resque, nó có thể dễ dàng scale & khả năng chịu tải cao nhờ việc tích hợp: SQS & DynamoDB
Challenging projects every programmer should try
Khi học một ngôn ngữ với, hoặc một công nghệ mới, bắt đầu một side project có lẽ là con đường nhanh nhất, giúp bạn thực hành và hiểu rõ hơn về công nghệ này. Tuy nhiên, các bạn có lẽ đã chán với các side project như blog, hay To-do-list mà chẳng đem lại cho bạn những tư duy mới mẻ. Các dự án ở bài viết sau đây sẽ đáp ứng điều đó, đồng thời củng cố khả năng tư duy lập trình của bạn.
Theo một thống kê nói rằng: hơn 70% thời gian của các lập trình viên chính là đọc mã nguồn và tài liệu phần mềm, chính vì vậy khả năng dễ đọc (readability) của một dự án là rất quan trọng. Steven Luu, một kiến trúc sư phần mềm tại Facebook đã đưa ra lời khuyên rằng với việc sử dụng enum thay thế cho boolean, khả năng dễ đọc (readability) sẽ được cải thiện đáng kể.
This week sponsor
KMS Technology
Thành lập năm 2009 với trụ sở chính tại Atlanta (US), KMS Technology cung cấp 3 dịch vụ chính: Gia công phần mềm (Software Outsourcing), đầu tư & phát triển sản phẩm công nghệ (Tech-Startup incubator), tư vấn dịch vụ giải pháp kỹ thuật. Với đội ngũ hơn 1000 nhân viên, KMS hướng đến khách hàng toàn cầu, từ các công ty startup đến các tập đoàn công nghệ lớn. Một số sản phẩm từ KMS đã được tín nhiệm trên thị trường thế giới: QASymphony, Katalon Studio, Kobiton. KMS Technology xây dựng một nơi làm việc năng động sáng tạo, chọn con người làm nền tảng văn hoá, nhiều năm liên tiếp nằm trong danh sách các nơi làm việc tốt nhất tại Việt Nam và Atlanta (Mỹ).
Góc tuyển dụng
Cơ hội việc làm tại KMS Technology:
Fresher Software/Test Engineer: http://bit.ly/KMS-Fresher-Jobs
Senior Software Engineers (.NET/Java/Front-end): http://bit.ly/KMS-SE-Jobs
Quote
Programming languages, like pizza, come in only two sizes: too big and too small.
― Richard Pattis