쉐도잉 연습: How Uber Scaled from One Server to 150 Million Reads Per Second - 영상으로 영어 말하기 배우기

연습 모드 선택

각 모드는 전체 화면 연습실로 열립니다.

134 문장
문장이 너무 짧거나 길면 Edit를 눌러 조정하세요.
1
In 2009, Uber was starting with a Python mullet.
2
One application, one growing business.
3
By 2019, Uber reported more than 15 million trips a day.
4
And in 2025, its caching infrastructure reported over 150 million cache database row reads per second at peak.
5
So how does a system grow at that scale?
6
Let's build it step by step.
7
Imagine you are building Uber you start with one application
8
and a postgres database and this is called monolith
9
and all your main application features live inside one application
10
and early days that's not a bad thing it's easier to build test
11
and deploy code but now more rides are booing trips more drivers are sending updates
12
and your application has work to do if the application and database share one machine they compete for the CPU and RAM.
13
The database run queries, the application handle request and both need resources.
14
One solution is to move the database onto its own server.
15
Now the application and database have separate resources.
16
You can scale them independently but there is a catch.
17
They now communicate over a network and the database can still become a bottleneck.
18
Meanwhile your application is also getting more traffic.
19
So let's scale your application first the simplest option is to give your application server more cpu
20
and memory and this is called vertical scaling it can work well
21
when you are just starting out you don't need to redesign everything just
22
because traffic increases but one machine has limits and
23
if it fails your application may become unavailable
24
so instead of making one server bigger you can add more servers
25
and that is horizontal scaling now you have multiple servers handling request
26
but there's a new question when the request arrives
27
which server should handle it
28
so you put a load of answer in front of replication server
29
it distributes incoming requests across them it can use strategies like round robin
30
or lease connection
31
and health checks can help it avoid sending traffic to unhealthy server
32
now one server failing does not necessarily take down the whole application
33
but there is a other problem imagine a user logs in replication store their session on the first server
34
then the user's next request reaches a different server
35
that server may not have the session so how does it know
36
that you are logged in one option is to store session in a shared system such as redis
37
now any application server can retrieve the session
38
and other option is to use a token such as gwd
39
that carries signed claims that can reduce the need to look up a session on every request.
40
But remember, tokens don't eliminate every kind of server -side state.
41
The key idea is simple.
42
Don't make one application server the only place where information needed by the next request exists.
43
We've added application servers, but all of them still depend on database.
44
And every request does not necessarily need to read fresh data from it.
45
Some data gets requested repeatedly, and that is where caching comes in.
46
Imagine a request needs a piece of data.
47
First, the application checks the cache.
48
If the data is there, it returns it and that is cache hit.
49
If it is missing, the application fetches it from database
50
and can put it in the cache and that is a cache miss.
51
The next request may get the data without querying the database again.
52
But caching introduces a problem.
53
What happens when the original data changes?
54
The cached copy might become stale.
55
You can use techniques such as time to live or TTL to expire entries.
56
You can also use invalid cache data when the underlying data changes.
57
Strategies like write -through or write -around handle writes differently.
58
And there is no single strategy that's best for every workload.
59
Uber has built caching infrastructure called CacheFront.
60
In August 1995, Uber reported that it handled more than 150 million cache row reads per second at peak.
61
Notice what that number means.
62
It's cache database row reads handled by that infrastructure.
63
And it does not mean every database read across
64
Uber was subbed from the cache.
65
Caching can remove a lot of repeated work, but it does not solve every database problem.
66
Some applications read data far more often than updated.
67
For those workloads, you can introduce read replicas.
68
The primary database handle writes, replica receive copies of the data then application can send suitable read queries to those replicas
69
that take some read traffic away from the primary
70
but there is an important catch replication can take time the primary might have the latest update
71
while the replica is still catching up and this is called replication lack
72
so if a request need the fresh data you may need a read from the primary.
73
Replica help with re -capacity but they don't automatically solve right bottlenecks or storage limits.
74
Now imagine your trip data keeps growing.
75
Eventually one database may struggle to store and serve everything efficiently.
76
Uber ran into storage challenges with the Postgres -packed trip data in its early growth period.
77
It developed a system called SchemaLess on top of MySQL.
78
This brings us to another scaling technique.
79
It is called Sharding.
80
Instead of storing all the data on one database, you split it across multiple database groups.
81
For example, imagine dividing trips into groups based on hash of the trip identifier.
82
One group stores some trips, another group stores others.
83
The application needs a way to work out which group contains the requested trip.
84
And that is the basic idea.
85
This example explains sharding.
86
It is not a claim about Uber's exact partitioning algorithm okay
87
so sharding lets you distribute data and workload
88
but now your application need to know where each record live
89
and the workload might not be evenly distributed imagine one shard receiving far more requests than the others
90
that shard can become a bottleneck even when the rest are healthy
91
and this is also called a hot shard so sluting the data helps but it also makes data management more complicated.
92
Okay, so there is one more challenge.
93
As the developer team grow, more developers work on the same application.
94
A change in one area might affect other.
95
Deployment can become much harder to coordinate.
96
One response is to split the application into small services.
97
And Uber documented its move toward a microservice architecture in 2015.
98
So imagine this.
99
Payments, pricing, and trips matching as separate services.
100
These are illustrative examples of how an application can be divided.
101
Each service can have its own code base and deployment process.
102
Teams can work more independently, but now one user request might depend on several services working together.
103
And that creates a different kind of problem.
104
Okay, inside one application, calling a function is usually straightforward.
105
For example, a fare calculation function might take the trip details as input and return the calculated fare.
106
But when one service calls another service over a network, things change.
107
The other service might be slow or it might be unavailable or the network request might time out.
108
Now you need to handle failure across service boundaries.
109
Okay, so when an application has many services, finding the cause of slow request gets hard.
110
Was the delay in pricing, was it payments or was one service waiting on another?
111
So Uber developed Yaeger, a distributed tracing system to help engineer follow requests across services.
112
Tracing helps you to see where time is spent and where request is failing.
113
Without that visibility, debugging a distributed system becomes much harder.
114
Ok, as the services multiply, service discovery and communication also becomes more complicated.
115
A service needs to find the service it wants to call.
116
And the system need to handle those connections reliably.
117
So Uber developed Hyperband as a part of its service communication infrastructure.
118
So engineers also used general resilience patterns such as timeouts, retries and circuit breakers.
119
But those patterns need careful configuration.
120
Retries for example can make an overload service even busier.
121
So by July 2020, Uber had described an architecture with around 2200 critical microservices organized into 70 domains.
122
These 70 domains were not 70 services.
123
They were broader grouping used to organize services.
124
And that is important lesson here.
125
Microservices can be more independent but also create more dependence, more network calls, more operational complexity.
126
So just look at the progression.
127
You start with one application, then you separate the database, you add application servers, you share session state, you introduce caching and read applicas,
128
you shard the data, and eventually you split the application into services.
129
Each decision solves a problem, but each decision also introduces a new trade -off.
130
That's how production systems grow.
131
Not by adding every technology from the beginning, but by identifying the bottleneck, choosing a solution, and understanding the new problem that solution create.
132
When you are designing a system, don't just ask, what technology should I use?
133
Ask, what problem am I solving and what trade -off am I accepting?
134
Save this for your next systemline interview and follow for more.

앱 다운로드

유창하게 말하는 데 필요한 모든 것

AI 발음 평가문장마다 점수 확인
IPA 발음 연습모든 소리 마스터
단어 학습나만의 단어장 만들기
단어 게임놀면서 외우기
FOR YOU

추천 영상

이 레슨의 어휘와 말하기 포인트

이 말하기 레슨은 영상 “How Uber Scaled from One Server to 150 Million Reads Per Second”을(를) 바탕으로 합니다. 가장 자주 반복되는 단어는 다음과 같습니다: application, database, server, request, Uber. 이 영상에는 섀도잉할 문장 134개와 단어 1507개가 있습니다. 말하는 구간의 길이는 9:46입니다. 화자는 분당 약 154단어로, 일상 대화에 가까운 자연스러운 속도로 말합니다. 영어에서 가장 많이 쓰이는 3,000단어에 속하는 단어가 79%뿐이라 어휘가 어려운 편입니다.

이 영상의 핵심 어휘

영상에 나오는 익혀 둘 만한 단어 15개를 발음, 뜻과 함께 정리했습니다.

단어발음뜻
database 명사/ˈdeɪtəˌbeɪs/데이터베이스
server 명사/ˈsɝvɚ/서버, 봉사기
cache 명사/kæʃ/캐시
infrastructure 명사/ˈɪnfɹəˌstɹʌkt͡ʃə/기반시설, 기간시설
solve 동사/sɒlv/해결하다
introduce 동사/ˌɪntɹəˈdus/소개(紹介)하다
query 명사/ˈkwɪɹ.i/질문
complicated 형용사/ˈkɑm.plɪˌkeɪ.tɪd/복잡하다
technique 명사/tɛkˈniːk/기술
architecture 명사/ˈɑː.kɪˌtɛk.t͡ʃə/건축, 건축학
log 명사/lɔɡ/통나무
depend 동사/dɪˈpɛnd/의존하다, ...에 달려 있다
trace 명사/tɹeɪs/흔적, 자국
divide 동사/dɪˈvaɪd/나누다, 가르다
independently 부사/ˌɪndɪˈpɛndəntli/독립하여, 자주적으로

이 영상의 문법

화자가 가장 많이 쓰는 문형을 영상 속 실제 표현과 함께 정리했습니다.

문형영상 속 표현
수동태 be + 과거분사 — 누가 하는지보다 무슨 일이 일어나는지에 초점is called · are logged · was subbed
현재완료 have/has + 과거분사 — 과거의 일이 지금도 관련이 있을 때We've added · has built

주의할 발음

화자는 don't, we've 같은 축약형과 약화된 형태를 6번 사용합니다. 들리는 대로 짧게 발음하세요.

  • “th” 소리: algorithm /ˈælɡəɹɪðm̩/, unhealthy /ʌnˈhɛl.θi/, monolith /ˈmɑn.əˌlɪθ/
  • “sh”와 “zh” 소리: cache /kæʃ/, operational /ˌɑ.pəˈɹeɪ.ʃə.nəl/, configuration /kənˌfɪɡ.əˈɹeɪ̯.ʃən/, progression /pɹəˈɡɹɛʃən/, calculation /ˌkælkjuˈleɪʃn̩/
  • 긴 단어 — 강세 위치에 주의: infrastructure /ˈɪnfɹəˌstɹʌkt͡ʃə/, necessarily /ˌnɛs.əˈsɛɹ.ə.li/, complicated /ˈkɑm.plɪˌkeɪ.tɪd/, architecture /ˈɑː.kɪˌtɛk.t͡ʃə/, developer /dɪˈvɛləpɚ/

한국어 화자가 어려워하는 소리:

  • /f/ — ㅍ(/p/)으로 바꾸지 말고 윗니를 아랫입술에 대기: infrastructure /ˈɪnfɹəˌstɹʌkt͡ʃə/, fare /ˈfɛə/, differently /ˈdɪf.ə.ɹənt.li/, configuration /kənˌfɪɡ.əˈɹeɪ̯.ʃən/, straightforward /ˌstɹeɪtˈfɔː(ɹ)wə(ɹ)d/
  • /v/ — ㅂ(/b/)과 구별하기: server /ˈsɝvɚ/, solve /sɒlv/, developer /dɪˈvɛləpɚ/, divide /dɪˈvaɪd/, unavailable /ˌʌnəˈveɪləbəl/
  • /z/ — ㅈ이 아니라 성대를 울리는 /s/: organize /ˈɔɹɡənaɪz/, horizontal /ˌhoɹəˈzɑn.təl/, visibility /ˌvɪz.əˈbɪl.ɪ.ti/, resilience /ɹɪˈzɪl.ɪ.əns/, redesign /ˌɹiː.dɪˈzaɪn/

이 영상으로 연습하는 방법

  1. 먼저 말하지 않고 영상을 끝까지 듣고 모르는 단어를 적어 둡니다.
  2. 0.75배속으로 한 문장씩 섀도잉을 시작하고, 익숙해지면 보통 속도로 돌아갑니다.
  3. 자신의 목소리를 녹음해 원본과 비교하고, database, server, cache 같은 단어에 특히 주의합니다.

쉐도잉이란? 영어 실력을 빠르게 키우는 과학적 방법

쉐도잉(Shadowing)은 원래 전문 통역사 훈련을 위해 개발된 언어 학습 기법으로, 다언어 학자인 Dr. Alexander Arguelles에 의해 대중화된 방법입니다. 핵심 원리는 간단하지만 매우 강력합니다: 원어민의 영어를 들으면서 1~2초의 짧은 지연으로 즉시 소리 내어 따라 말하는 것——마치 '그림자(shadow)'처럼 화자를 따라가는 것입니다. 문법 공부나 수동적인 청취와 달리, 쉐도잉은 뇌와 입 근육이 동시에 실시간으로 영어를 처리하고 재현하도록 훈련합니다. 연구에 따르면 이 방법은 발음 정확도, 억양, 리듬, 연음, 청취력, 말하기 유창성을 크게 향상시킵니다. IELTS 스피킹 준비와 자연스러운 영어 소통을 원하는 분들에게 특히 효과적입니다.

섀도잉 방법: 단계별 전체 가이드 읽기 →