쉐도잉 연습: How I deploy serverless containers for free - 영상으로 영어 말하기 배우기

로딩 중...
1
One of the most annoying things in the world is when you're trying to steal an image from the internet, and it looks like it's going to have a transparent background, but when you download it, it looks like this.
2
Luckily, nowadays there are all kinds of good tools for removing backgrounds from images, like RemoveBG or the new AI tools in Photoshop.
3
Now if you watch my videos, you'll notice I use a lot of images with the background removed, and it's extremely inefficient to have to go into Photoshop, upload an image, remove its background,
4
and then re-export it and bring it back into Adobe Premiere.
5
As a developer, this inefficiency is totally unacceptable, and my only option was to build my own app from scratch.
6
In today's video, I want to show you how I built this background remover from scratch, but more importantly, I want to talk about why I dockerized it, and explain how I deployed it to the cloud for free.
7
Earlier this week on the main channel, I made a Docker video, which you should definitely check out first if you have no idea what Docker is, but that video was sponsored by Docker.
8
This video is not sponsored.
9
I don't work with sponsors very often, but when I do, it's usually with tools that I have first-hand experience with, and Docker is something I use all the time.
10
By containerizing this background remover, which is just a Python web app, I'm able to run it locally with the click of a button, and also deploy it to the cloud with a single command.
11
Without Docker, I would have to go into my terminal, make sure I have the right Python dependencies installed, and then run the app in the background every time I want to use it.
12
And on top of that, deployment to the cloud would be a lot more complex, and also more expensive.
13
First I want to talk about the app itself.
14
The reason I built this app in Python, and not my typical choice of JavaScript, is that there's a python package called removeBG,
15
which is based on the U2net model to magically remove the background with AI.
16
Oh man, I just realized I said the A word again.
17
I guess we have to reset the counter, but really this video has nothing to do with AI.
18
The model itself is heavily abstracted, to the point where all we do is open an image with Pillow, call the remove function from this library, which returns a new image with the background removed.
19
It's an extremely practical use case for image models, but I don't want to use it from the terminal.
20
I want to be able to drag and drop images directly from my browser into it, so I can then drag the result directly back into my Adobe Premiere timeline.
21
To do that, I built a little app with Flask, which creates a single HTTP route that handles both git and post methods.
22
Git displays the initial webpage, then when we drag an image into that webpage, it makes a post request, which calls that remove background function.
23
Now the website itself is rendered in this index.html file, which uses nothing but plain JavaScript and CSS.
24
There's an HTML form with a file input, then when that form is submitted, it makes a post request to the root URL.
25
I also wrote a little bit of JavaScript here that will automatically submit the form when a file is dropped onto it, just to make the process even more efficient.
26
That's the entire app, and now I can run it from the terminal with the Python command.
27
But now here's where Docker comes in.
28
I want to be able to use this code on multiple computers, and I also want to deploy it to the web
29
so I could even use it from my phone or some other device.
30
And I want everyone in the world to have the opportunity to use my awesome invention.
31
First, you'll need to have Docker installed.
32
I'm doing that through Docker Desktop, but in the past I've used tools like Podman, which is developed by Red Hat and is also a good option.
33
But now we need to go into our code and create a Docker file.
34
The Docker file itself is very simple.
35
It starts with the official Python base image, creates a working directory for the app, installs the dependencies, copies the code, exposes a port, and then runs the app.
36
The only unusual thing I'm doing here is taking the actual AI model weights and copying them into the Docker image.
37
The weights are about 175 megabytes, and doing this prevents the actual Python package from downloading asynchronously, which will slow things down in general.
38
Now let's build the image and make sure to give it a tag.
39
That'll take a minute, then if we go into Docker Desktop, we should see it here in the images panel.
40
To actually run the image as a container, we simply hit the play button, and make sure to map the port to something we can use on localhost.
41
And now the app is always ready to go in the background with Docker.
42
Pretty cool, and that's how I use this tool 90% of the time, but I also want to show you how to deploy it to the web.
43
There's a bunch of different options for deploying containers to the cloud, and there's also some free options if you're cheap like me.
44
The most well-known option is Elastic Container Engine on AWS with a related service called Fargate
45
that can deploy your container in a serverless way, which means it will scale down to zero when it's not in use
46
and then scale back up once the requests start coming in.
47
You've also got services like the app platform on DigitalOcean, which starts at $0 a month, but my go-to for deploying random utilities like this is Google Cloud Run.
48
To deploy something that's dockerized, though, you first need to get your image on a registry.
49
Every cloud has one built in, and on Google, it's called Artifact Registry.
50
What you do is create a repository for your images that'll store them in a specific region, and then you can copy this link up here, which can be used as a tag on your images,
51
so it knows where to upload them.
52
Let's go into the terminal and use the docker tag command to tag our existing image with this namespace.
53
Once that's done, we can use the docker push command to upload it to Google Cloud.
54
Now, one caveat is that of course you need a Google Cloud account, and you'll also need the gcloud CLI tool installed on your system.
55
But once that's done, you should then be able to see the image in Google Cloud.
56
One nice thing about this is that if you want to use this image on a different machine, you can simply pull it from this repo.
57
But now let's head over to Cloud Run and deploy it to the internet.
58
Create a new service, then the first thing you'll do is select that container image.
59
Now from here we have a bunch of configuration options, but if you want to make this a public web service, the most important one is to allow unauthenticated invocations.
60
That means anybody can access it from a public API or URL.
61
The next option is CPU allocation.
62
One problem with serverless deployments is that when the app is not being used, it scales down to zero, which is great because it means you're not paying for anything, but the tradeoff is a cold start,
63
which means it takes like four or five seconds for the thing to boot up when the next request comes in.
64
In my case, that's not a problem, but if you want to eliminate cold starts, you can make sure that the CPU is always allocated.
65
It's just going to cost more because you'll always be burning through these free CPU seconds every month.
66
Now from there, let's go down to the container options, and one thing we'll also want to change here is the allocated memory for the container.
67
It takes a lot of memory to run the AI model, so let's bump this up to two gigabytes.
68
One other thing I want to do is also decrease the amount of auto-scaling this thing can do.
69
Instead of 100 maximum instances, I'm only going to allow three.
70
We just don't need to be prepared to scale for this type of app, but it's nice to have that option if you're building something viral.
71
Let's go ahead and deploy it, and a few minutes later, we should have a URL where we can actually access our Python app on the web.
72
Pretty awesome, and one huge benefit of having this all dockerized is that our code is portable, so if we want to get off Cloud Run, we could take that to any other cloud service and deploy it there just as easily.
73
And that's basically all there is to it.
74
There's a ton of other stuff we could talk about when it comes to Docker and Cloud run, but let me know what you want to see next in the comments.
75
I do have one update for Fireship Pro members.
76
I'm currently finishing up a new Stripe course that's designed specifically for people building software as a service products.
77
More details to come on that soon.
78
Thanks for watching, and I will see you in the next one.

이 클립이 좋은 말하기 연습 자료인 이유

이 동영상은 일상적인 개발자 이야기 형식으로, 자연스러운 미국 영어 발음과 구어체 표현이 풍부해 영어 쉐도잉에 최적입니다. 특히 기술 용어와 일상 대화가 자연스럽게 섞여 있어 실용적인 언어 실력을 키우기에 좋습니다. 발화 속도가 빠르지 않고, 설명적인 문장 구조가 명확해 듣기와 따라하기가 쉽습니다.

자연스러운 표현 분석

  • "One of the most annoying things in the world is when you're trying to steal an image from the internet..." : "One of the most annoying things..."은 일상에서 자주 사용되는 표현으로, 불만을 자연스럽게 표현할 때 유용합니다. "when you're trying to..." 구문은 상황을具體적으로 설명하며, 듣는 이로 하여금 공감할 수 있게 합니다.
  • "As a developer, this inefficiency is totally unacceptable, and my only option was to build my own app from scratch." : "As a developer"로 직업적 배경을 밝히고, "this inefficiency is totally unacceptable"는 강한 의견을 표현하면서도 구어체로 사용됩니다. "build my own app from scratch"는 "처음부터 직접 앱을 만드는 것"을 간결하게 표현하는 실용적인 구문입니다.
  • "The model itself is heavily abstracted, to the point where all we do is open an image with Pillow..." : "heavily abstracted"는 기술적 내용을 설명할 때 자주 사용되는 표현입니다. "to the point where..."는 결과를 강조하며, "all we do is..."는 행동을 단순화하여 설명해 이해하기 쉽게 만듭니다.

연습 방법: 쉐도잉 루틴

이 비디오를 활용한 영어 쉐도잉 연습은 다음과 같이 진행할 수 있습니다:

  1. 비디오를 5-10초 구간으로 나눕니다. 예를 들어, "One of the most annoying things...re-export it and bring it back into Adobe Premiere." 부분을 선택합니다.
  2. 원본을 듣고 발음, 억양, 강세를 주의깊게 관찰합니다. 특히 "annoying", "inefficient" 같은 단어의 발음을 확인합니다.
  3. 원본을 멈추고 즉시 따라합니다. 목소리 크기, 속도, 억양을 최대한 비슷하게 맞춥니다.
  4. 자신의 연습을 녹음한 후 원본과 비교합니다. 틀린 발음이나 부자연스러운 부분을 찾아 수정합니다.
  5. 같은 구간을 3-5번 반복하며, 점점 원본과 같은 ритм으로 말할 수 있도록 연습합니다.

이와 같은 repeat-and-record loop를 통해 영어 발음과 구어체 표현을 자연스럽게 익힐 수 있습니다. shadowing site를 사용해 녹음과 비교를 더 편리하게 할 수도 있습니다.

추가 팁: 영상 영어 공부의 장점

이 비디오와 같은 실제 영상을 사용한 연습은 영상 영어 공부의 장점을 살릴 수 있습니다. 화면 속 내용과 함께 듣는 영어는 상황을 이해하기 쉽고, 자연스러운 대화 흐름을 익힐 수 있습니다. 또한, 기술 용어와 일상 표현이 혼합되어 있어 다양한 어휘를 학습할 수 있습니다. 발음 교정이 필요한 경우, 특정 단어를 반복 연습하며 정확한 발음을 익히는 것이 중요합니다.

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

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