쉐도잉 연습: Distributed Systems 1.1: Introduction - 영상으로 영어 말하기 배우기

레슨 만드는 중...
1
Hello everybody, my name is Martin Kleppmann and I'm going to be giving the next eight lectures on distributed systems.
2
This is the second half of the course on concurrent and distributed systems.
3
And so in the first half of this course, you've seen a lot on concurrency that occurs within a single process.
4
So when you have, especially when you have multiple threads within a single process that are performing operation concurrently, will ensuring safe concurrency.
5
In this kind of concurrent system, you have all of the threads usually sharing a single address space.
6
And so you can just pass a variable from one thread to another thread, and that variable can contain pointers or references to arbitrary objects,
7
and this will work because the memory addresses
8
that one thread can access are the same as the memory addresses that another thread can access.
9
Now, when we move to distributed systems, this changes.
10
So in distributed systems, we still have concurrency.
11
We still have multiple processes and multiple threads performing operations concurrently, potentially.
12
But we also have the additional challenge that now we're talking about not just a single program running on a single computer,
13
but multiple programs running on multiple computers where those computers are communicating via a network.
14
And this aspect that we are now introducing this network is part of what makes a distributed system distributed.
15
Another aspect is also that we don't have a single shared address space anymore.
16
So a pointer that makes sense in one process, if you send it over the network to another process running on a different computer,
17
that pointer will not necessarily make any sense to the recipient of that message,
18
And so we have to think about different ways of sharing data between these concurrent entities.
19
So, um, A definition of a distributed system, a somewhat joking definition provided by Leslie Lamport,
20
is that a distributed system is a system in
21
which the failure of a computer you didn't even know existed can render your own computer unusable.
22
Whether this is a good definition or not, we can debate, but Leslie Lamport is a bit of a legend in the area of distributed systems,
23
and we will see various aspects of work that he's done over the decades.
24
and of course lots of other people have done work in this area, and we will see that over the course of these lectures.
25
So more generally I think I would define a distributed system as one
26
in which you have got multiple computers or computing devices.
27
devices might be smartphones, they might be robots, they might be self -driving cars, they might be desktop computers, they might be servers in a data center.
28
So any sort of computing device really.
29
And these computing devices are communicating via some kind of network, which might be the internet, and they are trying to achieve some kind of task together.
30
And the study of distributed systems is really the study of
31
how do we coordinate the activities of these different devices in such a way
32
that they achieve together the task that they are trying to achieve.
33
So I will start with a little bit of background first, just the administrative things to get that done.
34
First of all, if you want any further background reading on this course, hopefully the lecture notes will be reasonably self -contained,
35
but of course further detail is available in books if you're interested.
36
There are several different styles of books that I've put here on the list.
37
So the textbook by Van Steen and Tannenbaum, is a sort of systems level overview.
38
So this is, it comes at distributed systems from quite an applied angle of real applications that real people use and
39
discusses how these work and discusses the various implementation details of it.
40
It doesn't go as far into the theory as some of the other books and But it's more practically oriented.
41
If you like the theory, then the second book on this list is a good choice.
42
So the textbook by Kershin, Gerari, and Rodriguez is an excellent but quite detailed overview of distributed systems theory.
43
So it goes into a lot more depth than we have time to talk about in this course.
44
But if you want to read more about the theory, this is an excellent book.
45
I also wrote a book in this area called Designing Data Intensive Applications.
46
This book is a bit more oriented towards distributed database systems, so it's not just not just distributed systems in general,
47
there's a lot of other databases content in there, and this book is more oriented towards industrial software engineers.
48
So people who are working professionally with distributed databases will probably find this kind of useful.
49
And finally, there's the Bacon and Harris textbook, which was already recommended for the concurrent systems part of this course
50
which really provides the link between operating systems and distributed systems.
51
Okay, so this course is also connected to various other courses in the TRIPOS, most obviously concurrent systems that this course is part of,
52
also operating systems which you studied last year.
53
So all of the background that you had there on processes and inter -process communication and scheduling processes, all of that stuff is relevant for this course.
54
Also the databases course is connected to distributed systems because as I mentioned just now, Many modern databases are in fact distributed
55
and they use a lot of the techniques that we will talk about in this course.
56
So using modern databases often involves using distributed systems as well.
57
There's a strong connection between distributed systems and computer networking because as I said, distributed systems involve network communication generally.
58
The difference between the two courses is
59
that the computer networking course is mostly about how do you
60
actually get the bytes over the wire from one device to the other device.
61
So what do the network protocols look like that enable devices to communicate?
62
and then distributed systems builds on top of computer networking and saying, okay, assuming we now have this mechanism for devices to communicate,
63
how can we now ensure that these devices behave in the ways that we want?
64
So, There's connection to further Java, so there's programming exercises, that involve a bit of distributed computing.
65
The security aspects of distributed systems are very interesting
66
and they are covered in a course in Easter Term that's dedicated just to the topic of security.
67
And finally, next year's cloud computing course, builds upon distributed systems because cloud computing is all about
68
being able to flexibly process large amounts of data and if you have sufficiently large amounts of data,
69
you generally need a distributed system in order to process it.
70
Thank you.
71
Okay, so I gave a brief definition of what a distributed system is.
72
The next question is then why?
73
Like why should we go to all of this effort of making a system distributed.
74
Why can't we just use a single computer and keep things simple?
75
And well, one reason is that some applications, some types of things you want to do, computers are inherently distributed.
76
So if you want to send a message from your phone to your friend's phone, this inevitably involves two different phones and a network.
77
So this is a distributed system.
78
There's no way around it.
79
There's no way of building a messaging system that is not distributed.
80
if you want to be able to communicate across different devices.
81
And so building this type of software is one reason why we might be interested in distributed systems, but there are many other reasons as well.
82
So another good reason for being interested in distributed systems is that it actually allows us to make systems more reliable.
83
And the reason for this is say you have multiple computers which are each performing part of some some job.
84
If one of those fails, maybe one of them has to be rebooted for example, or one of them has a hardware failure,
85
about the work from the failed computer, and
86
so now this allows the system as a whole to continue
87
functioning even though one of the computers involved in it has actually gone down.
88
Another reason we might want to make systems distributed is for better performance.
89
So for example, in internet distributed systems, you might have users all around the world.
90
You might have some users in the UK, some users in the US, some users in New Zealand, some users in South Africa, wherever.
91
There are large distances between these different places, and so network communication from one of these places to the others is always going to take a little while.
92
uh you know you're talking at least 100 milliseconds uh
93
simply because of the speed of light that it takes for communication to travel from one continent to another.
94
And so one reason why people are interested in distributed systems is to make
95
systems faster by putting data closer to where the people are.
96
So if you have some users in multiple different continents, you can have computers in multiple different continents.
97
And if you have each user communicating with the computer that is most local to them,
98
then you avoid the long -distance intercontinental communication as part of the delays that are added to their communication.
99
So making systems distributed allows us to make them faster,
100
Another reason why people build distributed systems is to solve bigger problems than they could with a single computer.
101
So some computing problems are simply very large scale.
102
So think of scientific computing examples like,
103
for example, the CERN at the particle accelerator in Switzerland that includes the Large Hadron Collider,
104
they have a vast computing infrastructure involving a million CPU cores and God knows how many hard disks,
105
in order to just take all of the data
106
that they're gathering from the particle accelerator and process it and analyze it and try to
107
use this to discover new particles for example.
108
Now
109
this scale of task would simply not be possible to achieve on a single computer
110
because there is no supercomputer that is big enough to be able to handle these vast volumes of data.
111
simply solving this problem of analyzing such large volumes of data
112
has to be done on a network of lots of small computers
113
and and those computers have to distribute the work amongst them, and they have to work together in order to achieve the tasks that the scientists are trying to do.
114
This is really another key area in which we can use distributed systems is to solve bigger problems.
115
Now, those are the advantages of making systems distributed.
116
There are unfortunately some significant disadvantages as well.
117
And the main disadvantage that you will be well familiar with is whenever you're trying to do something over a network, that network might not be working for some reason.
118
And so everyone has experienced what it's like for the internet to be down
119
or for your Wi -Fi signal to be weak.
120
or for some rural part of the country
121
and your cellular data signal is weak and you're trying to load a map or something like that.
122
Everyone has experienced this kind of frustration before.
123
Well, the study of distributed systems is all about the study of such frustrations.
124
So, We assume whenever we are building a distributed system, that involves communication over a network, that networks are not perfectly reliable.
125
And so it is always possible for communication to fail.
126
It is always possible that because because if it's a wi -fi network you might be out of range,
127
if it's a wired network somebody might have unplugged the wrong cable, If it's any type of network, it might just be temporarily overloaded,
128
and so it might be dropping messages.
129
Maybe even somebody might be maliciously trying to interfere with the network, and cause it to drop packets, maybe causing a denial of service attack, for example.
130
There are many reasons why communication might not work from time to time.
131
And so we have to build systems that are robust so that even if communication is interrupted from time to time,
132
the system as a whole still functions in some correct way.
133
Where, of course, we can define what we mean with "correct", but we want it to continue functioning.
134
Another thing that can go wrong in distributed systems is that some of the processes, the running the code might crash and For example,
135
if you have a system consisting of multiple computers and you reboot one of them,
136
you probably want the remaining computers to carry on the task of serving user requests.
137
What we want here is that one of the processes is temporarily out of action, and we want the system as a whole to still continue nevertheless.
138
And finally, all of these failures can happen non -deterministically.
139
That is, we simply don't know when they happen.
140
They could happen at any moment, unpredictably, and we still have to ensure that the software works nevertheless.
141
So what we often strive for in distributed systems is what is known as fault tolerance
142
which means that even if some part of the system is faulty, some part of the system is not working,
143
the system as a whole still continues providing the service to the users.
144
This is one of the main challenges in distributed systems: how do we make things in such a way
145
that they can tolerate faults?
146
In fact, making things
147
distributed and fault tolerant is so difficult
148
that a lot of people who work professionally on distributed systems think
149
that oh well if you can solve a problem on a single computer it's basically easy so
150
if you can solve a problem on a single computer you'll
151
probably have a much better time just keeping it on one
152
computer not over complicating things not going into a distributed system setting and so All of the problems,
153
this Pandora's box of problems that arise with distributed systems, well, we should try and open that only if we actually have to.
154
But as we said earlier, there are lots of good reasons why you might have to open that box.

맥락 및 배경

안녕하세요. 이 강의를 진행하는 마르틴 클레프만입니다. 이번 강의에서는 분산 시스템에 대한 개별 주제를 다룰 예정입니다. 본 과목의 전반부에서는 단일 프로세스 내에서 발생하는 동시성에 대해 배웠습니다. 여러 스레드가 같은 주소 공간을 공유하며 변수를 교환하는 방법을 다루었습니다. 하지만 분산 시스템을 이야기할 때는 상황이 달라집니다. 이제는 여러 컴퓨터가 네트워크를 통해 연결되어 작업을 수행하는 다수의 프로그램을 다루게 됩니다. 이러한 변화는 분산 시스템의 핵심적인 특징이며, 이를 통해 데이터를 공유하는 방식에 대해 깊이 고민해야 합니다.

일상 소통을 위한 상위 5개 구문

  • 여러 프로세스와 스레드가 동시에 작업을 수행합니다. (Multiple processes and threads perform operations concurrently.)
  • 우리는 이제 네트워크를 통해 소통하는 여러 컴퓨터에 대해 이야기하고 있습니다. (We are now talking about multiple computers communicating via a network.)
  • 변수를 한 프로세스에서 다른 프로세스로 전달해야 합니다. (We need to transfer variables from one process to another.)
  • 분산 시스템의 정의를 논의할 수 있습니다. (We can discuss the definition of a distributed system.)
  • 이 시스템들은 어떤 작업을 함께 수행하기 위해 소통합니다. (These systems communicate to achieve some tasks together.)

단계별 쉐도우링 가이드

이 비디오에서는 분산 시스템의 기본 개념을 설명하기 때문에, 영어 스피킹 스킬 향상에 많은 도움이 될 것입니다. shadowspeak 연습을 통해 발음과 억양을 개선하는 것을 목표로 하세요. 특히, 영어 발음 교정에 초점을 맞추고, 강사가 사용하는 리듬과 억양을 따라 해 보세요.

1단계: 비디오를 처음 시청하면서 전체적인 내용을 이해하려고 하세요. 유튜브 영어 공부를 통해 강의의 주제를 먼저 파악합니다.

2단계: 강사의 목소리를 따라 해보세요. 중요한 구문을 선택해 shadow speech를 연습합니다. 상기한 상위 구문에서 시작하는 것이 좋습니다.

3단계: 반복해서 소리 내어 연습하면서 자신의 목소리를 녹음해 보세요. 발음의 차이를 확인하고 IELTS 스피킹과 같은 시험에서 좋게 평가받기 위해 어떤 점을 개선해야 하는지 고민해보세요.

이렇게 단계를 진행함으로써, 분산 시스템의 복잡한 개념을 더 쉽게 이해하고, 영어 실력을 한 단계 더 발전시킬 수 있습니다.

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

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