{"id":26109,"date":"2025-03-27T12:02:59","date_gmt":"2025-03-27T19:02:59","guid":{"rendered":"https:\/\/www.pingcap.com\/?p=26109"},"modified":"2025-03-27T12:03:01","modified_gmt":"2025-03-27T19:03:01","slug":"scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql","status":"publish","type":"post","link":"https:\/\/www.pingcap.com\/ko\/blog\/scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql\/","title":{"rendered":"Scaling Beyond Limits: How EasyPost Future-Proofed Its Infrastructure with Distributed SQL"},"content":{"rendered":"<p>When legacy infrastructure hits its limits, innovation isn\u2019t just a choice \u2014 it\u2019s a necessity. For <a href=\"https:\/\/www.easypost.com\/\">EasyPost<\/a>, a leader in logistics technology, scaling up meant more than just more hardware. It meant a fundamental shift in their approach to data.&nbsp;<\/p>\n\n\n\n<p>In this customer story, we explore how EasyPost\u2019s infrastructure team, led by Head of Infrastructure Adam Firester, navigated a complex scaling challenge and found their answer in <a href=\"https:\/\/www.pingcap.com\/ko\/tidb-self-managed\/\">\ud2f0DB<\/a>, a powerful <a href=\"https:\/\/www.pingcap.com\/ko\/blog\/why-distributed-sql-databases-elevate-modern-app-dev\/\">distributed SQL database<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"The_Scaling_Up_Challenge_A_32-Terabyte_Problem\"><\/span>The Scaling Up Challenge: A 32-Terabyte Problem<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>EasyPost, the all-in-one shipping API platform that connects e-commerce companies with major carriers like USPS, UPS, and FedEx, has grown substantially since its founding in 2012. At the center of this growth was a legacy MySQL 5.7 monolith \u2014 now a 32-terabyte (TB) beast with serious limitations.<\/p>\n\n\n\n<p>\u201cWe\u2019d been talking about sharding for over a decade,\u201d said Firester. \u201cBut nothing ever tackled the core issue: Shard zero just kept growing. We were hitting the max local storage on our IBM bare metal servers. Backups would run over each other. DDL changes took hours. We were reaching the end of our runway.\u201d<\/p>\n\n\n\n<p>The company needed more than incremental fixes. They needed a transformation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Evaluating_the_Options\"><\/span>Evaluating the Options<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>EasyPost\u2019s team considered the classic trio of solutions for scaling up its data infrastructure:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Sharding<\/strong>: Complex and ineffective against their primary bottleneck. <a href=\"https:\/\/www.pingcap.com\/ko\/blog\/database-sharding-defined\/\">Sharding<\/a> is a database architecture pattern that involves splitting a database into multiple smaller databases, or shards. While sharding can be an effective way to scale a database, it is also a complex solution that can introduce a number of challenges. In EasyPost&#8217;s case, sharding was ineffective because it did not address the core issue of shard zero&#8217;s continuous growth.<br><\/li>\n\n\n\n<li><strong>Outsourcing the problem<\/strong>: Ideal in theory, but not aligned with their current ops. Outsourcing the problem to a cloud provider could have been a potential solution, but it was not aligned with EasyPost&#8217;s current operations.<br><\/li>\n\n\n\n<li><strong>Replatforming to a new database<\/strong>: Risky, but potentially the most impactful. Replatforming to a new database would be a risky move with the possibility of substantial code refactoring, but it was also the solution with the most potential impact.<\/li>\n<\/ol>\n\n\n\n<p>After an extensive review of options across these categories, one solution stood out: TiDB.<\/p>\n\n\n\n<p>\u201cWe chose TiDB because it aligned with both our current constraints and future ambitions,\u201d Firester explained. \u201cWe could run it on bare metal now, but it\u2019s cloud-ready. That gave us optionality.\u201d<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Scaling_Up_Why_TiDB\"><\/span>Scaling Up: Why TiDB?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Several features made TiDB the clear front-runner:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Horizontal scalability<\/strong>: EasyPost needed a solution that could grow with them. TiDB is a <a href=\"https:\/\/docs.pingcap.com\/tidb-in-kubernetes\/stable\/scale-a-tidb-cluster\/#:~:text=Horizontally%20scaling%20TiDB%20means%20that,the%20values%20of%20their%20replicas.\">horizontally scalable<\/a> database, meaning it can be easily scaled by adding more nodes to the cluster. This was important for EasyPost because they needed a solution that could handle their growing data volume.<\/li>\n\n\n\n<li><strong>MySQL compatibility<\/strong>: Allowed for easier migration and avoided the need for a major upgrade to MySQL 8. TiDB is compatible with the <a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/mysql-compatibility\/\">MySQL protocol<\/a>, which means that EasyPost could easily migrate their data from their legacy MySQL database to TiDB without making any major changes to their application code.<\/li>\n\n\n\n<li><strong>Time-to-Live (TTL)<\/strong>: Critical for aging out old data from the oversized shard zero. TiDB supports <a href=\"https:\/\/www.pingcap.com\/ko\/blog\/how-tidb-ttl-efficiently-handles-expired-data\/\">Time-to-Live (TTL)<\/a>, which allows data to be automatically deleted after a certain period of time. This was important for EasyPost because they needed to age out old data from their database to free up space.<\/li>\n\n\n\n<li><strong>Support for ACID transactions and hybrid workloads<\/strong>: Enabled EasyPost to handle online transaction processing (OLTP) and online analytical processing (OLAP) from the same system. TiDB also supports <a href=\"https:\/\/www.pingcap.com\/ko\/blog\/distributed-transactions-tidb\/\">strong ACID transactions<\/a>. Both were important for EasyPost as they required a database that could handle both workload types with strong data integrity.<\/li>\n\n\n\n<li><strong>Strong commercial support from PingCAP<\/strong>: This is essential for navigating the unknowns of production readiness. PingCAP is the company behind TiDB, and it provides strong commercial support. This was important for EasyPost just in case they encountered any problems during the migration or operation of their TiDB cluster.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"The_Proof_of_Concept\"><\/span>The Proof of Concept<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Rather than risking disruption in production, the team set up a parallel TiDB cluster: 18 TiKV nodes, 3 PD nodes, and 3 TiDB nodes with ProxySQL in front, mirroring their MySQL environment.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/static.pingcap.com\/files\/2025\/03\/27111055\/Screenshot-2025-03-27-at-2.10.38%E2%80%AFPM-1024x411.png\" alt=\"EasyPost\u2019s original scaling up solution architecture for the PoC containing TiDB.\" class=\"wp-image-26110\"\/><\/figure>\n\n\n\n<p class=\"has-text-align-center\"><em>Figure 1. EasyPost\u2019s original solution architecture for the PoC containing TiDB.<\/em><\/p>\n\n\n\n<p>Their goal was simple: <strong>replicate real-world conditions, then stress test it.<\/strong> ProxySQL mirrored reads at first, then full read\/write transactions. By tapping into ProxySQL logs, they could analyze top query performance and identify opportunities for tuning.<\/p>\n\n\n\n<p>The POC wasn\u2019t without its bumps. The TiDB nodes initially suffered from out-of-memory crashes due to disabled garbage collection by default. \u201cOnce we enabled Go\u2019s memory limits and tuned query timeouts, we stabilized things,\u201d said Firester. \u201cMost of the early issues had more to do with our own technical debt than the platform itself.\u201d<\/p>\n\n\n\n<p>PingCAP\u2019s responsiveness was another big win. \u201cWe reported three bugs. Two had fixes within a week. That\u2019s lightning-fast in vendor time,\u201d Firester added.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Scaling_Up_Unexpected_Lessons_and_Wins\"><\/span>Scaling Up: Unexpected Lessons and Wins<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>The journey surfaced some hidden landmines and surprising performance gains.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Hotspot Issues<\/strong>: TiDB\u2019s default use of auto-increment keys introduced latency. Removing the auto-increment attribute from key tables improved P80 insert times by 90%.<br><\/li>\n\n\n\n<li><strong>Missing Indexes<\/strong>: Just like in MySQL, missing indexes crippled performance. Fixing them brought dramatic gains.<br><\/li>\n\n\n\n<li><strong>Query Plan Surprises<\/strong>: The optimizer didn\u2019t always choose the best execution plan, sometimes opting for full table scans. Using the plan replayer helped, though it required patience.<br><\/li>\n\n\n\n<li><strong>Partition Performance<\/strong>: MySQL-style partitioning didn\u2019t carry over well. Dropping partitions and reloading data slashed latency.<br><\/li>\n\n\n\n<li><strong>TTL Missteps<\/strong>: Dumping years of data in one go backfired. Now, the team plans to purge iteratively: Seven years back, then five, then three.<br><\/li>\n<\/ul>\n\n\n\n<p>Still, the wins far outweighed the pains. \u201cSome DDL changes that used to take hours? Instant now,\u201d Firester emphasized. \u201cI\u2019ve never seen anything that fast.\u201d<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Putting_TiDB_Through_the_Holiday_Gauntlet\"><\/span>Putting TiDB Through the Holiday Gauntlet<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>One of the boldest moves was keeping the TiDB cluster live through EasyPost\u2019s busiest time of the year: The holiday peak season.<\/p>\n\n\n\n<p>\u201cWe mirrored traffic through ProxySQL during peak season as a trial-by-fire. We were ready to pull the ripcord if things went south. But we didn\u2019t have to. It stood up the whole time \u2014 rock solid,\u201d Firester said.<\/p>\n\n\n\n<p>Based on peak load analysis, they scaled TiDB compute nodes 3x for holiday traffic but later realized backend storage needed less capacity than anticipated. TiDB proved not only stable but efficient.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Still_to_Come_Active-Active_Ambitions\"><\/span>Still to Come: Active-Active Ambitions<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>EasyPost isn\u2019t done. With the POC successful and production rollout in view, the next steps include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Addressing locking differences<\/strong>: MySQL uses pessimistic locking to prevent duplicate shipment charges, something TiDB handles differently.<\/li>\n\n\n\n<li><strong>Initial deployment in active-passive mode<\/strong>: This mirrors the current MySQL setup and buys time for confidence-building.<\/li>\n\n\n\n<li><strong>Active-active deployment<\/strong> <strong>(long-term goal)<\/strong>: TiDB supports this model, enabling a resilient, highly available future state.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Advice_for_Others\"><\/span>Advice for Others<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Firester shared a few key lessons for teams embarking on a similar journey:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Understand the knobs<\/strong>: Spend the time learning how to tune TiDB.<br><\/li>\n\n\n\n<li><strong>Analyze your queries<\/strong>: What worked in MySQL may need rethinking.<br><\/li>\n\n\n\n<li><strong>Be ready to refactor<\/strong>: Hardware sizing, indexing strategies, partitioning \u2014 all may change.<br><\/li>\n\n\n\n<li><strong>Don\u2019t install monitoring on functional nodes<\/strong>: Isolate Prometheus and others from production workloads.<br><\/li>\n\n\n\n<li><strong>Purge data gradually<\/strong>: Especially when using TTL \u2014 don\u2019t bite off too much at once.<br><\/li>\n\n\n\n<li><strong>Lean on PingCAP<\/strong>: \u201cThey\u2019ve been great partners,&#8221; Firester said. &#8220;Responsive, invested, knowledgeable.\u201d<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span>Conclusion<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>EasyPost\u2019s move toward TiDB isn\u2019t just a story about migrating databases \u2014 it\u2019s a blueprint for modernizing infrastructure in a high-growth, high-demand environment. From monolithic pain to scalable promise, their journey highlights what\u2019s possible when a team combines practical engineering with forward-thinking architecture.<\/p>\n\n\n\n<p>As EasyPost gears up for full production deployment, they\u2019ve already proven something crucial: With the right platform and partner, even a 32 TB legacy system can be transformed into a flexible, modern data foundation.<\/p>\n\n\n\n<p>Want to learn how your company can get started scaling up TiDB the right way? <a href=\"https:\/\/www.pingcap.com\/ko\/contact-us\/\">Book a tech talk with one of our distributed SQL experts<\/a>.\u00a0<\/p>","protected":false},"excerpt":{"rendered":"<p>When legacy infrastructure hits its limits, innovation isn\u2019t just a choice \u2014 it\u2019s a necessity. For EasyPost, a leader in logistics technology, scaling up meant more than just more hardware. It meant a fundamental shift in their approach to data.&nbsp; In this customer story, we explore how EasyPost\u2019s infrastructure team, led by Head of Infrastructure [&hellip;]<\/p>\n","protected":false},"author":218,"featured_media":26123,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ub_ctt_via":"","footnotes":""},"categories":[199],"tags":[147,395,256,9,111],"class_list":["post-26109","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-customer-stories","tag-distributed-sql","tag-easypost","tag-mysql-alternative","tag-scalability","tag-tidb"],"acf":[],"featured_image_src":"https:\/\/static.pingcap.com\/files\/2025\/03\/27115409\/tidb_feature_1800x600-1-5.png","author_info":{"display_name":"Brian Foster","author_link":"https:\/\/www.pingcap.com\/ko\/blog\/author\/brian-james-foster\/"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Scaling Up: EasyPost&#039;s Journey to Distributed SQL<\/title>\n<meta name=\"description\" content=\"Find out how EasyPost\u2019s infrastructure team navigated a complex MySQL scaling up challenge and found their answer in TiDB.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.pingcap.com\/ko\/blog\/scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Scaling Up: EasyPost&#039;s Journey to Distributed SQL\" \/>\n<meta property=\"og:description\" content=\"Find out how EasyPost\u2019s infrastructure team navigated a complex MySQL scaling up challenge and found their answer in TiDB.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.pingcap.com\/ko\/blog\/scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql\/\" \/>\n<meta property=\"og:site_name\" content=\"TiDB\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/pingcap2015\" \/>\n<meta property=\"article:published_time\" content=\"2025-03-27T19:02:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-27T19:03:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/static.pingcap.com\/files\/2025\/03\/27115426\/tidb_1200x627-5.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2400\" \/>\n\t<meta property=\"og:image:height\" content=\"1254\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Brian Foster\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/static.pingcap.com\/files\/2025\/03\/27115440\/tidb_twitter_1600x900-5.png\" \/>\n<meta name=\"twitter:creator\" content=\"@PingCAP\" \/>\n<meta name=\"twitter:site\" content=\"@PingCAP\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Brian Foster\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql\/\"},\"author\":{\"name\":\"Brian Foster\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/person\/e2c94b706bf3eaeebbd9a511005c41f2\"},\"headline\":\"Scaling Beyond Limits: How EasyPost Future-Proofed Its Infrastructure with Distributed SQL\",\"datePublished\":\"2025-03-27T19:02:59+00:00\",\"dateModified\":\"2025-03-27T19:03:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql\/\"},\"wordCount\":1342,\"publisher\":{\"@id\":\"https:\/\/www.pingcap.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/static.pingcap.com\/files\/2025\/03\/27115409\/tidb_feature_1800x600-1-5.png\",\"keywords\":[\"Distributed SQL\",\"EasyPost\",\"MySQL Alternative\",\"Scalability\",\"TiDB\"],\"articleSection\":[\"Customer Story\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql\/\",\"url\":\"https:\/\/www.pingcap.com\/blog\/scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql\/\",\"name\":\"Scaling Up: EasyPost's Journey to Distributed SQL\",\"isPartOf\":{\"@id\":\"https:\/\/www.pingcap.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/static.pingcap.com\/files\/2025\/03\/27115409\/tidb_feature_1800x600-1-5.png\",\"datePublished\":\"2025-03-27T19:02:59+00:00\",\"dateModified\":\"2025-03-27T19:03:01+00:00\",\"description\":\"Find out how EasyPost\u2019s infrastructure team navigated a complex MySQL scaling up challenge and found their answer in TiDB.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.pingcap.com\/blog\/scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql\/#primaryimage\",\"url\":\"https:\/\/static.pingcap.com\/files\/2025\/03\/27115409\/tidb_feature_1800x600-1-5.png\",\"contentUrl\":\"https:\/\/static.pingcap.com\/files\/2025\/03\/27115409\/tidb_feature_1800x600-1-5.png\",\"width\":3600,\"height\":1200},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.pingcap.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Scaling Beyond Limits: How EasyPost Future-Proofed Its Infrastructure with Distributed SQL\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.pingcap.com\/#website\",\"url\":\"https:\/\/www.pingcap.com\/\",\"name\":\"TiDB\",\"description\":\"TiDB | SQL at Scale\",\"publisher\":{\"@id\":\"https:\/\/www.pingcap.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.pingcap.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.pingcap.com\/#organization\",\"name\":\"PingCAP\",\"url\":\"https:\/\/www.pingcap.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png\",\"contentUrl\":\"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png\",\"width\":811,\"height\":232,\"caption\":\"PingCAP\"},\"image\":{\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/facebook.com\/pingcap2015\",\"https:\/\/x.com\/PingCAP\",\"https:\/\/linkedin.com\/company\/pingcap\",\"https:\/\/youtube.com\/channel\/UCuq4puT32DzHKT5rU1IZpIA\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/person\/e2c94b706bf3eaeebbd9a511005c41f2\",\"name\":\"Brian Foster\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/static.pingcap.com\/files\/2023\/07\/06161300\/brian-foster-150x150.jpeg\",\"contentUrl\":\"https:\/\/static.pingcap.com\/files\/2023\/07\/06161300\/brian-foster-150x150.jpeg\",\"caption\":\"Brian Foster\"},\"description\":\"Global Content Director\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/brian-foster-33453a6\/\"],\"url\":\"https:\/\/www.pingcap.com\/ko\/blog\/author\/brian-james-foster\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Scaling Up: EasyPost's Journey to Distributed SQL","description":"Find out how EasyPost\u2019s infrastructure team navigated a complex MySQL scaling up challenge and found their answer in TiDB.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.pingcap.com\/ko\/blog\/scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql\/","og_locale":"ko_KR","og_type":"article","og_title":"Scaling Up: EasyPost's Journey to Distributed SQL","og_description":"Find out how EasyPost\u2019s infrastructure team navigated a complex MySQL scaling up challenge and found their answer in TiDB.","og_url":"https:\/\/www.pingcap.com\/ko\/blog\/scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql\/","og_site_name":"TiDB","article_publisher":"https:\/\/facebook.com\/pingcap2015","article_published_time":"2025-03-27T19:02:59+00:00","article_modified_time":"2025-03-27T19:03:01+00:00","og_image":[{"width":2400,"height":1254,"url":"https:\/\/static.pingcap.com\/files\/2025\/03\/27115426\/tidb_1200x627-5.png","type":"image\/png"}],"author":"Brian Foster","twitter_card":"summary_large_image","twitter_image":"https:\/\/static.pingcap.com\/files\/2025\/03\/27115440\/tidb_twitter_1600x900-5.png","twitter_creator":"@PingCAP","twitter_site":"@PingCAP","twitter_misc":{"Written by":"Brian Foster","Est. reading time":"7\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.pingcap.com\/blog\/scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql\/#article","isPartOf":{"@id":"https:\/\/www.pingcap.com\/blog\/scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql\/"},"author":{"name":"Brian Foster","@id":"https:\/\/www.pingcap.com\/#\/schema\/person\/e2c94b706bf3eaeebbd9a511005c41f2"},"headline":"Scaling Beyond Limits: How EasyPost Future-Proofed Its Infrastructure with Distributed SQL","datePublished":"2025-03-27T19:02:59+00:00","dateModified":"2025-03-27T19:03:01+00:00","mainEntityOfPage":{"@id":"https:\/\/www.pingcap.com\/blog\/scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql\/"},"wordCount":1342,"publisher":{"@id":"https:\/\/www.pingcap.com\/#organization"},"image":{"@id":"https:\/\/www.pingcap.com\/blog\/scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql\/#primaryimage"},"thumbnailUrl":"https:\/\/static.pingcap.com\/files\/2025\/03\/27115409\/tidb_feature_1800x600-1-5.png","keywords":["Distributed SQL","EasyPost","MySQL Alternative","Scalability","TiDB"],"articleSection":["Customer Story"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/www.pingcap.com\/blog\/scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql\/","url":"https:\/\/www.pingcap.com\/blog\/scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql\/","name":"Scaling Up: EasyPost's Journey to Distributed SQL","isPartOf":{"@id":"https:\/\/www.pingcap.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.pingcap.com\/blog\/scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql\/#primaryimage"},"image":{"@id":"https:\/\/www.pingcap.com\/blog\/scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql\/#primaryimage"},"thumbnailUrl":"https:\/\/static.pingcap.com\/files\/2025\/03\/27115409\/tidb_feature_1800x600-1-5.png","datePublished":"2025-03-27T19:02:59+00:00","dateModified":"2025-03-27T19:03:01+00:00","description":"Find out how EasyPost\u2019s infrastructure team navigated a complex MySQL scaling up challenge and found their answer in TiDB.","breadcrumb":{"@id":"https:\/\/www.pingcap.com\/blog\/scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.pingcap.com\/blog\/scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.pingcap.com\/blog\/scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql\/#primaryimage","url":"https:\/\/static.pingcap.com\/files\/2025\/03\/27115409\/tidb_feature_1800x600-1-5.png","contentUrl":"https:\/\/static.pingcap.com\/files\/2025\/03\/27115409\/tidb_feature_1800x600-1-5.png","width":3600,"height":1200},{"@type":"BreadcrumbList","@id":"https:\/\/www.pingcap.com\/blog\/scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.pingcap.com\/"},{"@type":"ListItem","position":2,"name":"Scaling Beyond Limits: How EasyPost Future-Proofed Its Infrastructure with Distributed SQL"}]},{"@type":"WebSite","@id":"https:\/\/www.pingcap.com\/#website","url":"https:\/\/www.pingcap.com\/","name":"\ud2f0DB","description":"TiDB | SQL at Scale","publisher":{"@id":"https:\/\/www.pingcap.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.pingcap.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.pingcap.com\/#organization","name":"PingCAP","url":"https:\/\/www.pingcap.com\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/","url":"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png","contentUrl":"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png","width":811,"height":232,"caption":"PingCAP"},"image":{"@id":"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/facebook.com\/pingcap2015","https:\/\/x.com\/PingCAP","https:\/\/linkedin.com\/company\/pingcap","https:\/\/youtube.com\/channel\/UCuq4puT32DzHKT5rU1IZpIA"]},{"@type":"Person","@id":"https:\/\/www.pingcap.com\/#\/schema\/person\/e2c94b706bf3eaeebbd9a511005c41f2","name":"Brian Foster","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.pingcap.com\/#\/schema\/person\/image\/","url":"https:\/\/static.pingcap.com\/files\/2023\/07\/06161300\/brian-foster-150x150.jpeg","contentUrl":"https:\/\/static.pingcap.com\/files\/2023\/07\/06161300\/brian-foster-150x150.jpeg","caption":"Brian Foster"},"description":"Global Content Director","sameAs":["https:\/\/www.linkedin.com\/in\/brian-foster-33453a6\/"],"url":"https:\/\/www.pingcap.com\/ko\/blog\/author\/brian-james-foster\/"}]}},"grav_blocks":false,"card_markup":"<a class=\"card-resource bg-white\" href=\"https:\/\/www.pingcap.com\/ko\/blog\/scaling-up-how-easypost-future-proofed-data-infrastructure-distributed-sql\/\"><div class=\"card-resource__image-container\"><img class=\"card-resource__image\" alt=\"tidb_feature_1800x600 (1)\" src=\"https:\/\/static.pingcap.com\/files\/2025\/03\/27115409\/tidb_feature_1800x600-1-5.png\" loading=\"lazy\" width=3600 height=1200 \/><\/div><div class=\"card-resource__content-container\"><div class=\"card-resource__content-head\"><div class=\"card-resource__category\">Customer Story<\/div><\/div><h5 class=\"card-resource__title\">Scaling Beyond Limits: How EasyPost Future-Proofed Its Infrastructure with Distributed SQL<\/h5><\/div><\/a>","_links":{"self":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts\/26109","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/users\/218"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/comments?post=26109"}],"version-history":[{"count":24,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts\/26109\/revisions"}],"predecessor-version":[{"id":26137,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts\/26109\/revisions\/26137"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/media\/26123"}],"wp:attachment":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/media?parent=26109"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/categories?post=26109"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/tags?post=26109"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}