Tìm kiếm
40 kết quả cho “Java”. Tìm không phân biệt dấu.
- From 48k lines of code to 10: the story of GitHub's JavaScript SDK Bài tóm tắt · GitHub · 2020
…imization/from-48k-lines-of-code-to-10-the-story-of-githubs-javascript-sdk/) Bối cảnh - @octokit/rest khởi đầu là package cộng đồng github (commit đầu 6/2010, thời Node v0.1). Năm…
- Sparkplug — a non-optimizing JavaScript compiler Bài tóm tắt · V8 (Google) · 2021
…y biên dịch nhanh, ít bộ nhớ, không phải viết lại ngữ nghĩa JavaScript (ít bug, ít bề mặt tấn công). Thực chất là "tuần tự hoá" việc interpreter làm để bỏ chi phí giải mã và dispat…
- Garbage Collection Optimization for High-Throughput and Low-Latency Java Applications Bài tóm tắt · LinkedIn · 2014
…age-collection-optimization-high-throughput-and-low-latency-java-applications) Bối cảnh - Khi dựng thế hệ mới của feed data platform (index cập nhật từ member, company, group để ph…
- The static-all Split - Dividing Zillow's JavaScript Monolith Repository Bài tóm tắt · Zillow · 2017
…nguyên tĩnh (JS, CSS, ảnh, template) khỏi ứng dụng monolith Java vào một repo tên static-all . - Bốn năm sau: hơn 30 team đều sửa static-all. Code từ 9 file JS (1.119 dòng, 4/2007)…
- Code caching for JavaScript developers Bài tóm tắt · V8 (Google) · 2019
…kế và các cách cache bị vô hiệu. Bối cảnh - Parse + compile JavaScript chiếm phần đáng kể thời gian khởi động trang. Code cache lưu kết quả (bytecode) để lần sau bỏ qua bước đó. Th…
- A Brief History of Scaling LinkedIn Bài tóm tắt · LinkedIn · 2015
…ó profile tải khác hẳn Leo nên tách ra scale riêng, gọi qua Java RPC. Search (Lucene) là service thứ hai, nhận dữ liệu từ graph. - Replica đọc: DB profile bị Leo dồn tải. Đầu tiên…
- How Uber Executed A JUnit Migration at Massive Scale Bài tóm tắt · Uber · 2026
…w.uber.com/us/en/blog/junit-migration/) Bối cảnh - Monorepo Java của Uber chạy test bằng JUnit 4: hơn 600.000 test, 15 triệu dòng code . JUnit 4 ngừng phát triển từ 2021; JUnit 5 đ…
- Taming architecture complexity in V8 — the CodeStubAssembler Bài tóm tắt · V8 (Google) · 2017
…Bối cảnh - Builtin là các hàm có sẵn trong mọi chương trình JavaScript ( Array.prototype. ...). V8 viết chúng theo hai cách, cả hai đều có giá: - Self-hosted bằng một phương ngữ Ja…
- Architecting Restaurant Wait Time Predictions Bài tóm tắt · Yelp · 2019
…Spark, MySQL cho trạng thái nhà hàng) rồi gọi model server Java nội bộ (thư viện XGBoost Java đã tối ưu cho latency). Online không dùng Spark, nên cách xử lý dữ liệu khác offline.…
- Sitar-agent: Building a reliable dynamic configuration sidecar at scale Bài tóm tắt · Airbnb · 2026
…t chút thì được, không đọc được thì không). Fleet viết bằng Java, Python, Go, TypeScript, Ruby. Thay đổi chính - Vòng đời giao config: commit vào Sitar Service (version, changelog,…
- Making the LinkedIn experimentation engine 20x faster Bài tóm tắt · LinkedIn · 2020
…g còn ai viết được Clojure . Thay đổi chính - Viết lại bằng Java: proof-of-concept nhanh hơn 2–3 lần ngay chưa tối ưu. Thông dịch cây đánh giá (đủ nhanh, làm nhanh hơn sinh bytecod…
- Service Level Testing for Microservices in Swiggy Bài tóm tắt · Swiggy · 2021
…est không còn một bước. - Thư viện Oh-My-Test-Helper (Go và Java) gom các mẫu lặp: khởi container Kafka một dòng rồi gắn bootstrap server vào cấu hình app, produce message để test…
- The story of a V8 performance cliff in React Bài tóm tắt · V8 (Google) · 2019
…https://v8.dev/blog/react-cliff) Bối cảnh - V8 không lưu số JavaScript (Float64 theo spec) theo một cách cố định: số nguyên 31 bit có dấu là Smi , số khác là HeapNumber . Mỗi trườn…
- Fleet Management at Spotify (Part 3): Fleet-wide Refactoring Bài tóm tắt · Spotify · 2023
Polyrepo hàng nghìn repo; phần lớn backend dùng một service framework và bộ thư viện lõi chung, phần lớn pipeline batch dùng Scio. Từ 2021 Spotify đầu tư vào refactor toàn fleet để "repo" không còn là đơn vị công việc,…
- Đổi ngôn ngữ và runtime Chủ đề Thành viên
Ngôn ngữ ban đầu được chọn để làm nhanh. Khi lớn lên, nó có thể thành nút thắt về hiệu năng, latency, hoặc tổ chức code. Có ba hướng: tối ưu runtime đang dùng, cải tiến dần, hoặc viết lại có phạm vi.
- Quản lý fleet và migrate code hàng loạt Chủ đề Thành viên
Khi số component (repo, service, pipeline, thư viện) tăng nhanh hơn số kỹ sư, chi phí của mỗi thay đổi xuyên suốt (nâng thư viện, vá bảo mật, đổi API nội bộ, khai tử dataset) tỉ lệ với số component chứ không với độ khó…
- Kiến trúc frontend Chủ đề Thành viên
Frontend bắt đầu là vài trang render ở server; lớn lên thành ứng dụng có trạng thái, nhiều team cùng sửa, và mỗi tính năng thêm vào là thêm byte phải tải. Ba trục lặp lại trong các nguồn: render ở đâu (server, client,…
- Monolith và microservices — đi và quay lại Chủ đề Thành viên
Lúc nào nên tách hệ thống thành nhiều service, và cái giá của việc đó là gì? Các nguồn hiện có cho thấy đây không phải đường một chiều.
- Nền tảng ML (feature, training, serving, giám sát model) Chủ đề Thành viên
Model ML đầu tiên của một công ty thường được nhúng thẳng vào một service có sẵn, với feature tính trong vài script và train bằng một job riêng. Khi số model và số người làm model tăng, bốn chỗ cùng hỏng:
- CI và build ở quy mô lớn Chủ đề Thành viên
Lúc nhỏ, CI là "mỗi commit chạy hết build và test". Khi codebase và số commit tăng, chạy hết trở thành bất khả (Stripe 2026: chạy tuần tự mất bốn tháng), và thời gian chờ của một thay đổi không còn chỉ là thời gian…
- Event-driven, message queue và Kafka Chủ đề Thành viên
Khi một hệ có nhiều bên cần biết "có gì vừa xảy ra" (đơn hàng đổi trạng thái, tin đăng được sửa, ticket được cập nhật), gọi đồng bộ từng bên một làm producer phải biết mọi consumer, và một consumer chậm kéo chậm cả…
- Hạ tầng tìm kiếm Chủ đề Thành viên
Lúc đầu, tìm kiếm là LIKE trên database hoặc một thư viện (Lucene) nhúng trong app. Khi dữ liệu và tính năng tăng, search thành một hệ có trạng thái riêng, khác database ở mấy điểm:
- Thử nghiệm A/B và nền tảng experimentation Chủ đề Thành viên
Khi nhiều team cùng thay đổi một sản phẩm, "ship rồi xem metric" không còn trả lời được thay đổi nào gây ra gì. Thí nghiệm có đối chứng trả lời được, nhưng ở quy mô lớn nó thành một hệ thống: gán người dùng vào biến thể…
- Tracing phân tán và log theo request Chủ đề
Khi một request đi qua hàng chục service, metric của từng service cho biết có chậm, log của từng service cho biết từng mảnh; không cái nào trả lời "request này chậm vì đâu" hay "trang này tốn bao nhiêu". Tracing phân…
- Distributed tracing at Pinterest with new open source tools Bài tóm tắt · Pinterest · 2017
…c) gửi span đi. Backend có service Thrift viết bằng Python, Java, Go, Node, C++; mỗi ngôn ngữ có một framework chung nên chỉ cần làm cho Python và Java, nơi có phần lớn service qua…
- GitHub Công ty Thành viên
Rails + một MySQL; sau đó tách vài tính năng, thêm replica, ProxySQL; nhưng lõi vẫn là cluster mysql1 được scale dọc liên tục. Từ 2019 họ tách ảo bằng schema domain + linter rồi dời vật lý bằng Vitess hoặc write-cutover…
- LinkedIn Công ty Thành viên
Bài khung là bài nhìn lại năm 2015 . LinkedIn bắt đầu năm 2003 là một monolith tên Leo. Service đầu tiên tách ra là member graph, vì đồ thị kết nối có profile tải khác hẳn; DB profile được đỡ bằng scale dọc rồi replica…
- Pinterest Công ty Thành viên
Năm 2015 Pinterest sinh sẵn nội dung cho mọi user và lưu trong HBase, cách đã đưa họ tới 100 triệu MAU nhưng tốn lưu trữ và khó thử nghiệm. Họ xây 9 hệ thống C++/RocksDB để sinh feed lúc đọc . Phía dưới là tầng cache…
- Avoiding Double Payments in a Distributed Payments System Bài tóm tắt · Airbnb · 2019
…sản phẩm. Thay đổi chính - Orpheus : thư viện idempotency (Java), không phải service. Gồm idempotency key, bảng thông tin idempotency luôn đọc/ghi trên master đã shard , gộp trans…
- Evolution of our platform architecture Bài tóm tắt · Allegro · 2015
…trùng dữ liệu để tách rời; chuyển từ PHP sang JVM (chủ yếu Java) ; - có team kỹ thuật lo event bus, discovery, thư viện chung. Ưu: xoá/viết lại hơn 1 triệu dòng code cũ trong một…
- 5-year Evolution of Ele.me's Transaction System - Part 2 Bài tóm tắt · Ele.me · 2020
…eue tối đa 10.000 message tồn. - Bản thiết kế viết lại bằng Java bị architecture review bác (9/2015). Câu hỏi của đại diện vận hành: hệ thống có nằm trên đường găng không, và lỗi t…
- Etsy's Journey to TypeScript Bài tóm tắt · Etsy · 2021
…ối cảnh - Etsy hơn 16 năm tuổi; monorepo có hơn 17.000 file JavaScript trải qua nhiều thế hệ site. Khó biết phần nào là thực hành tốt, phần nào là nợ kỹ thuật; JavaScript ít ràng b…
- Inside the Go Playground Bài tóm tắt · Go · 2013
…trên App Engine (nhận HTTP, gọi backend, có cache), client JavaScript. - Chạy code không tin cậy phải cách ly khỏi hạ tầng Google: backend chạy chương trình trong Native Client (N…
- Journey from EC2 to Containers Bài tóm tắt · Disney Hotstar · 2020
…ai tên team, ghi log vào đường dẫn chuẩn); - core image cho Java, Python, Go đã có sẵn cấu hình môi trường và logging; - GoCD (chạy trên Kubernetes) cho CI/CD deploy một click; Vau…
- グローバルなメルカリの検索バックエンド設計と検索基盤拡充 (Search backend for the Global App and extending the search platform) Bài tóm tắt · Mercari · 2025
…vice Go, gắn chặt vào nghiệp vụ Nhật; plugin Elasticsearch (Java) hầu như không ai viết vì ít engineer Java. Thay đổi chính - Dùng dịch vụ managed để ra nhanh, có kế hoạch quay về…
- Achieving observability in async workflows Bài tóm tắt · Netflix · 2021
…ọc chức năng watermark bất đồng bộ (Ruby on Rails) bằng một Java DGS mỏng. Team ôm cả tích hợp Google Drive, watermark, quản lý traffic bùng nổ và on-call; gỡ lỗi phải lần qua nhiề…
- Building a dynamic and responsive Pinterest Bài tóm tắt · Pinterest · 2018
…AM) cho gợi ý realtime. - Công nghệ: lúc đó backend chủ yếu Java, chưa có hệ thống C++ nào. Họ chọn C++11, FBThrift, Folly, RocksDB vì cần tail latency thấp với fan-out lớn (có lúc…
- Solving Remote Build Cache Misses by Annoying Your Colleagues Bài tóm tắt · SoundCloud · 2019
…nt Run, nếu có thì fail kèm hướng dẫn tắt. - Thư mục rỗng : javac bỏ qua, nhưng Gradle coi là input khác; Git không theo dõi thư mục rỗng nên chúng hay sót lại sau refactor hay đổi…
- How We Improved Our Performance Using ElasticSearch Plugins: Part 1 Bài tóm tắt · Tinder · 2019
…i cho mỗi document được chấm , tốn cấp phát và GC. - Plugin Java nhanh hơn, nhưng mỗi lần cập nhật plugin phải khởi động lại cả cụm : đắt và giảm độ tin cậy. Thay đổi chính - Scrip…
- Attribute-Based Access Control at Uber Bài tóm tắt · Uber · 2023
…chọn CEL của Google thay vì tự viết; có bản Go (cel-go) và Java (cel-java), đánh giá vài micro giây, hỗ trợ lấy thuộc tính theo nhu cầu (chỉ fetch khi biểu thức cần). - Áp dụng (2…