<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>클라이밍하는 개발자</title>
    <link>https://pyoja.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Fri, 31 Jul 2026 13:53:46 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>표자</managingEditor>
    <image>
      <title>클라이밍하는 개발자</title>
      <url>https://tistory1.daumcdn.net/tistory/1082608/attach/06f8c685207549b6b5884dd83408b67a</url>
      <link>https://pyoja.tistory.com</link>
    </image>
    <item>
      <title>[1일 1CS] 프론트엔드 개발자의 주적, CORS 에러 완벽하게 이해하기</title>
      <link>https://pyoja.tistory.com/entry/1%EC%9D%BC-1CS-%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EA%B0%9C%EB%B0%9C%EC%9E%90%EC%9D%98-%EC%A3%BC%EC%A0%81-CORS-%EC%97%90%EB%9F%AC-%EC%99%84%EB%B2%BD%ED%95%98%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;프론트엔드 개발을 하다 보면 누구나 한 번쯤 시뻘건 에러 메시지와 마주하게 됩니다. 분명히 백엔드 서버도 잘 켜져 있고 내 코드도 완벽한데, 브라우저 콘솔 창에 &quot;Blocked by CORS Policy&quot;라는 에러가 뜨면서 데이터 통신이 꽉 막혀버리는 현상입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발자들을 당황하게 만드는 이 CORS 에러는 도대체 왜 발생하는 것이며, 어떻게 해결해야 할까요? 브라우저의 보안 정책이라는 관점에서 아주 쉽게 풀어보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 모든 것의 시작: SOP (동일 출처 정책)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CORS를 이해하려면 먼저 브라우저의 기본 보안 규칙인 &lt;b&gt;SOP(Same-Origin Policy, 동일 출처 정책)&lt;/b&gt;를 알아야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉽게 말해 브라우저는 아주 깐깐한 아파트 경비 아저씨와 같습니다. &lt;b&gt;&quot;우리 아파트 주민(같은 출처)이 아니면 함부로 자원을 주고받을 수 없습니다&quot;&lt;/b&gt;라고 철저하게 막아서는 것이죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 말하는 '출처(Origin)'란 프로토콜(http/https), 호스트(도메인), 포트 번호 이 세 가지를 합친 것을 말합니다. 이 세 가지 중 단 하나라도 다르면 브라우저는 '남'으로 간주하고 통신을 차단해 버립니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왜 이렇게 깐깐할까요? 만약 여러분이 은행 사이트에 로그인해 둔 상태로 악성 사이트에 접속했다고 가정해 봅시다. 이 정책이 없다면, 악성 사이트의 해커 코드가 여러분의 브라우저를 조종해 은행 서버로 마음대로 '송금' 요청을 보낼 수 있습니다. SOP는 이런 끔찍한 상황(CSRF 공격 등)을 막기 위해 브라우저가 스스로 쳐둔 안전망입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. CORS의 등장: &quot;아저씨, 저 사람은 들여보내 주세요&quot;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;과거에는 프론트엔드와 백엔드가 한 서버에 있어서 이 정책이 문제가 되지 않았습니다. 하지만 현대 웹은 프론트엔드와 백엔드 서버가 분리되어 있고, 외부 API나 이미지, 폰트 등을 마구 끌어다 씁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출처가 다르다는 이유로 이 모든 것을 막아버리면 현대의 웹사이트는 제대로 돌아갈 수가 없습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 브라우저 경비 아저씨에게 &quot;저 외부 출처는 내가 허락한 안전한 곳이니까 예외적으로 통과시켜 주세요&quot;라고 허가증을 써주는 메커니즘이 등장했습니다. 이것이 바로 CORS(Cross-Origin Resource Sharing, 교차 출처 리소스 공유)입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, CORS는 우리를 괴롭히는 에러가 아니라, 꽉 막힌 SOP 정책 속에서 숨통을 트여주는 고마운 예외 조항인 셈입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. CORS가 동작하는 3가지 시나리오&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;브라우저가 외부 서버와 통신하며 이 허가증(CORS)을 검사하는 방식은 크게 3가지로 나뉩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 흔한 것은 예비 요청(Preflight Request)입니다. 브라우저가 무턱대고 본 요청을 보내지 않고, 미리 'OPTIONS'라는 메서드를 사용해 &quot;똑똑, 저격수(CORS) 없습니까? 제가 이런 데이터를 보낼 건데 받아주실 건가요?&quot;라고 찔러보는 방식입니다. 서버가 &quot;허용합니다&quot;라고 응답해야만 비로소 진짜 데이터를 보냅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 번째는 단순 요청(Simple Request)입니다. 예비 요청 없이 곧바로 들이미는 방식인데, 조건이 워낙 까다롭습니다. 현대 웹 개발에서 주로 쓰는 JSON 형식(application/json)은 이 단순 요청의 조건을 통과하지 못하므로 실무에서는 거의 만나기 어렵습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세 번째는 인증된 요청(Credentialed Request)입니다. 쿠키나 인증 헤더 같은 중요한 '신분증'을 실어 보낼 때 사용합니다. 보안이 훨씬 중요해지기 때문에, 서버에서도 &quot;아무나 들어오세요(*)&quot;라고 설정하면 에러가 나고 정확히 어떤 출처를 허용할지 콕 집어서 명시해 주어야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. CORS 에러, 어떻게 해결할까?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에러가 났다면 해결하는 방법은 크게 두 가지입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 번째는 &lt;b&gt;프록시(Proxy) 서버&lt;/b&gt;를 활용하는 꼼수입니다. CORS는 '브라우저'의 정책일 뿐, 서버와 서버끼리 통신할 때는 적용되지 않습니다. 따라서 브라우저는 같은 출처의 프론트엔드 서버로 요청을 보내고, 프론트엔드 서버가 대신 백엔드 서버로 요청을 전달받아오는 방식입니다. 개발 단계에서 많이 쓰입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 번째이자 가장 정석적인 방법은 &lt;b&gt;서버 응답 헤더 설정&lt;/b&gt;입니다. 백엔드 개발자가 서버 코드에 Access-Control-Allow-Origin 이라는 헤더를 설정하여, 프론트엔드의 도메인 주소를 정확하게 '허용 목록'에 등록해 주는 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국 CORS 에러를 가장 빠르고 쉽게 해결하는 방법은 프론트엔드 개발자와 백엔드 개발자가 배포할 도메인 주소를 정확히 공유하고, 코드를 맞춰보는 원활한 소통에 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;요약&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;SOP (동일 출처 정책): 브라우저가 해킹을 막기 위해 다른 출처(프로토콜, 호스트, 포트)와의 통신을 차단하는 기본 보안 정책입니다.&lt;/li&gt;
&lt;li&gt;CORS (교차 출처 리소스 공유): SOP로 인해 꽉 막힌 현대 웹 환경에서, 서버가 허락한 안전한 다른 출처와는 리소스를 공유할 수 있도록 해주는 예외 규칙입니다.&lt;/li&gt;
&lt;li&gt;동작 방식: 주로 브라우저가 본 요청 전에 '예비 요청(Preflight)'을 보내 서버의 허락을 구하는 방식으로 동작합니다.&lt;/li&gt;
&lt;li&gt;해결책: 프록시 서버를 이용해 브라우저를 속이거나, 백엔드 서버에서 응답 헤더(Access-Control-Allow-Origin)에 프론트엔드의 주소를 명확히 등록하여 해결합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;면접Tips&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CORS는 브라우저의 기본 보안 정책인 SOP(동일 출처 정책)로 인해 발생하는 리소스 차단 문제를 해결하기 위한 '교차 출처 리소스 공유' 메커니즘입니다. 브라우저가 예비 요청(Preflight)을 보내 서버의 허용 여부를 확인하며, 이를 해결하기 위해서는 백엔드 서버의 응답 헤더(Access-Control-Allow-Origin)에 클라이언트의 출처를 정확히 명시하거나 프록시 서버를 활용해야 합니다.&lt;/p&gt;</description>
      <category>1일 1CS(Computer Science)</category>
      <category>CORS</category>
      <category>CS</category>
      <category>면절집문</category>
      <author>표자</author>
      <guid isPermaLink="true">https://pyoja.tistory.com/668</guid>
      <comments>https://pyoja.tistory.com/entry/1%EC%9D%BC-1CS-%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EA%B0%9C%EB%B0%9C%EC%9E%90%EC%9D%98-%EC%A3%BC%EC%A0%81-CORS-%EC%97%90%EB%9F%AC-%EC%99%84%EB%B2%BD%ED%95%98%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0#entry668comment</comments>
      <pubDate>Fri, 31 Jul 2026 13:31:51 +0900</pubDate>
    </item>
    <item>
      <title>[1일 1CS] 세션 vs JWT 로그인, 무엇을 선택할까? (Access Token과 Refresh Token)</title>
      <link>https://pyoja.tistory.com/entry/1%EC%9D%BC-1CS-%EC%84%B8%EC%85%98-vs-JWT-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EB%AC%B4%EC%97%87%EC%9D%84-%EC%84%A0%ED%83%9D%ED%95%A0%EA%B9%8C-Access-Token%EA%B3%BC-Refresh-Token</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;웹 서비스를 개발할 때 절대 빠질 수 없는 기능이 바로 '로그인'입니다. 그런데 로그인을 구현하는 방식을 두고 개발자들은 늘 고민에 빠집니다. 전통적인 세션(Session) 방식을 쓸 것인가, 아니면 최신 트렌드인 JWT(토큰) 방식을 쓸 것인가?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 두 가지 방식이 왜 등장했는지, 그리고 현대 아키텍처에서는 이 둘의 단점을 어떻게 보완하고 있는지 알아보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 로그인이 필요한 이유: 기억상실증에 걸린 HTTP&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹 통신의 기반이 되는 HTTP는 '무상태성(Stateless)'이라는 치명적인 특징을 가지고 있습니다. 서버는 클라이언트의 이전 요청을 전혀 기억하지 못합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마치 카페에서 점원에게 아메리카노를 주문하고 결제까지 마쳤는데, 1분 뒤에 픽업대로 가서 &quot;제 커피 언제 나오나요?&quot;라고 물으면 점원이 &quot;누구신데 저한테 커피를 달라고 하시죠?&quot;라고 묻는 것과 같습니다. 서버는 매번 새로운 사람이 요청을 보낸다고 생각하기 때문입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 매 요청마다 &quot;저 아까 로그인했던 사람입니다&quot;라는 증표를 보여주어야 하는데, 매번 아이디와 비밀번호를 보내는 것은 해킹의 위험이 큽니다. 이를 안전하게 해결하기 위해 두 가지 방식이 등장했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. 전통적인 방식: 세션 (Session) 로그인&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세션 방식은 카페 점원이 장부를 꺼내어 VIP 명단을 직접 관리하는 방식입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가 로그인을 하면 서버는 장부(메모리나 DB)에 사용자의 정보를 적고, 고유한 '세션 아이디'를 발급해 줍니다. 클라이언트는 이 세션 아이디를 브라우저의 쿠키에 저장해 두고, 요청을 보낼 때마다 쿠키를 함께 보냅니다. 서버는 장부를 뒤져서 세션 아이디가 일치하는지 확인합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;장점&lt;/b&gt;은 서버가 주도권을 쥐고 있다는 것입니다. 해커가 세션 아이디를 훔쳐 갔다면, 서버에서 해당 세션을 지워버리면 그만입니다. &lt;b&gt;단점&lt;/b&gt;은 사용자가 100만 명으로 늘어나면 서버의 장부(DB)도 100만 줄이 되어 서버에 엄청난 과부하가 걸린다는 점입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. 현대적인 방식: JWT (JSON Web Token) 로그인&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버가 장부를 관리하기 힘들어지자, 아예 사용자에게 위조가 불가능한 '전자 신분증'을 발급해 주는 방식을 고안했습니다. 이것이 JWT입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JWT는 토큰 자체에 사용자의 정보(페이로드)와 서버만 알 수 있는 위변조 방지 도장(서명)을 쾅 찍어둔 형태입니다. 클라이언트가 이 토큰을 들고 오면, 서버는 굳이 DB(장부)를 뒤져볼 필요 없이 도장이 진짜인지만 확인하면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;장점&lt;/b&gt;은 서버가 상태를 기억할 필요가 없어서, 사용자가 아무리 많아져도 서버를 쾌적하게 유지할 수 있다는 점입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;단점&lt;/b&gt;은 한 번 발급된 신분증(토큰)은 만료일이 지날 때까지 무효화할 수 없다는 것입니다. 토큰을 해커에게 도둑맞으면 속수무책으로 당할 수밖에 없습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. 토큰은 어디에 보관해야 안전할까?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로그인 방식을 정했다면, 발급받은 증표(세션 아이디나 JWT)를 브라우저 어디에 보관할지도 중요합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;로컬 스토리지&lt;/b&gt;: 자바스크립트로 쉽게 접근할 수 있어 편리하지만, 해커가 악성 스크립트를 심어 토큰을 탈취하는 XSS 공격에 매우 취약합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;쿠키&lt;/b&gt;: 자바스크립트로 읽지 못하게 막는 옵션(HttpOnly)을 설정할 수 있어 XSS 공격을 방어할 수 있습니다. 다만 쿠키가 자동으로 전송되는 점을 노린 CSRF 공격에 취약한데, 이는 SameSite 옵션 등으로 충분히 방어할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 &lt;b&gt;보안상 가장 민감한 토큰은 'HttpOnly 쿠키'에 저장&lt;/b&gt;하는 것이 일반적이고 권장되는 방식입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5. 궁극의 타협점: Access Token + Refresh Token&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세션은 DB가 힘들고, JWT는 탈취당하면 끝입니다. 그래서 현대 웹 서비스는 이 둘의 장점만 취한 하이브리드 전략을 사용합니다. 바로 토큰을 두 가지로 쪼개는 것입니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Access Token (입장권): 실제 API 요청에 쓰이는 토큰입니다. 유효기간을 15분 정도로 아주 짧게 만듭니다. 해커에게 털려도 15분 뒤면 쓸모없는 휴지 조각이 됩니다. 수명이 짧으므로 굳이 DB에 저장하지 않고 서버가 서명만 검증합니다. (DB 부하 해소)&lt;/li&gt;
&lt;li&gt;Refresh Token (교환권): Access Token이 만료되었을 때, 새롭게 재발급을 받기 위한 토큰입니다. 유효기간이 2주 정도로 깁니다. 이 토큰은 서버의 DB에 안전하게 저장해 둡니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 해커가 Refresh Token마저 훔쳐 갔다면? 서버가 DB에 저장된 Refresh Token을 삭제해버리면 그만입니다. (토큰 무효화 불가 문제 해결) 결국 JWT의 가벼움과 세션의 강력한 제어력을 모두 챙긴 아주 현실적이고 훌륭한 전략입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;요약&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;세션 방식: 서버가 사용자의 상태를 DB(장부)에 기억하는 방식. 제어가 쉽지만 서버 부하가 큽니다.&lt;/li&gt;
&lt;li&gt;JWT 방식: 사용자에게 정보를 담은 서명된 토큰(신분증)을 발급하는 방식. 서버 부하가 없지만 탈취 시 무효화가 어렵습니다.&lt;/li&gt;
&lt;li&gt;보관 전략: 토큰이나 세션 아이디는 XSS 공격을 막기 위해 브라우저의 HttpOnly 쿠키에 보관하는 것이 안전합니다.&lt;/li&gt;
&lt;li&gt;Access &amp;amp; Refresh Token: 유효기간이 짧은 Access 토큰으로 DB 부하를 줄이고, 긴 Refresh 토큰을 DB에 저장하여 탈취 위험을 통제하는 완벽에 가까운 보안 전략입니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;면접Tips&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세션과 JWT 방식 중 어떤 것을 선택해야 할까요? 서비스의 규모와 보안 요구사항에 따라 다릅니다. 서버 부하가 적고 즉각적인 세션 통제가 필요하다면 세션 방식이 적합합니다. 반면, 대규모 트래픽이 발생하거나 마이크로서비스(MSA) 환경처럼 분산된 서버 아키텍처를 사용한다면 JWT가 유리합니다. 최근에는 JWT의 단점인 탈취 시 대응 불가 문제를 해결하기 위해 Access Token과 Refresh Token을 분리하여 발급하는 전략을 실무에서 가장 많이 채택하고 있습니다.&lt;/p&gt;</description>
      <category>1일 1CS(Computer Science)</category>
      <category>CS</category>
      <category>jwt</category>
      <category>Session</category>
      <category>Token</category>
      <category>면접질문</category>
      <author>표자</author>
      <guid isPermaLink="true">https://pyoja.tistory.com/667</guid>
      <comments>https://pyoja.tistory.com/entry/1%EC%9D%BC-1CS-%EC%84%B8%EC%85%98-vs-JWT-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EB%AC%B4%EC%97%87%EC%9D%84-%EC%84%A0%ED%83%9D%ED%95%A0%EA%B9%8C-Access-Token%EA%B3%BC-Refresh-Token#entry667comment</comments>
      <pubDate>Fri, 31 Jul 2026 12:53:30 +0900</pubDate>
    </item>
    <item>
      <title>[1일 1CS] 알바생 한 명으로 부족할 때 분신술 쓰기: Node.js 클러스터링 완벽 이해</title>
      <link>https://pyoja.tistory.com/entry/1%EC%9D%BC-1CS-%EC%95%8C%EB%B0%94%EC%83%9D-%ED%95%9C-%EB%AA%85%EC%9C%BC%EB%A1%9C-%EB%B6%80%EC%A1%B1%ED%95%A0-%EB%95%8C-%EB%B6%84%EC%8B%A0%EC%88%A0-%EC%93%B0%EA%B8%B0-Nodejs-%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0%EB%A7%81-%EC%99%84%EB%B2%BD-%EC%9D%B4%ED%95%B4</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 앞서 Node.js가 단 한 명의 알바생(싱글 스레드)만으로도 엄청난 효율을 낸다는 것을 배웠습니다. 오래 걸리는 일은 뒷방 매니저에게 맡기고(논블로킹), 자신은 카운터에서 주문만 빠르게 쳐내기 때문이었죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 아무리 일을 효율적으로 해도 물리적인 한계는 찾아옵니다. 만약 카페가 전국구 맛집이 되어서 1초에 손님이 1만 명씩 몰려온다면 어떨까요? 알바생이 아무리 손이 빨라도 카운터 한 곳에서는 도저히 감당할 수가 없습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 컴퓨터의 숨겨진 잠재력을 100% 끌어올려 알바생을 복제하는 기술, 바로 '클러스터링(Clustering)'이 등장합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 클러스터링이란 무엇인가요? (잠자는 코어 깨우기)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요즘 우리가 쓰는 컴퓨터나 서버는 대부분 '멀티 코어'입니다. 뇌(CPU)가 4개, 8개씩 달려있다는 뜻이죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 Node.js는 기본적으로 싱글 스레드이기 때문에, 아무리 좋은 8코어 컴퓨터에 올려놓아도 뇌를 1개밖에 쓰지 못합니다. 나머지 7개의 뇌는 아무 일도 하지 않고 놀고 있게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클러스터링은 이 놀고 있는 나머지 뇌(코어)들을 깨워서, 카운터를 여러 개로 늘리고 알바생을 코어 개수만큼 '복제(분신술)'하는 기술을 말합니다. 8코어 컴퓨터라면 똑같은 알바생을 8명으로 늘려서 동시에 8명의 손님을 응대할 수 있게 만드는 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. 매니저와 알바생들의 철저한 분업&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클러스터링을 적용하면, 그동안 혼자 일하던 카페의 조직도가 둘로 나뉘게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 번째는&lt;b&gt; '마스터(Master) 프로세스'&lt;/b&gt;입니다. 마스터는 복제된 알바생들의 총괄 매니저 역할을 합니다. 커피를 직접 만들거나 손님을 응대하는 진짜 작업은 절대 하지 않습니다. 오직 카페 문 앞(포트)에 서서 들어오는 손님들을 맞이하고, &quot;이번 손님은 1번 알바생한테 가세요&quot;, &quot;다음 손님은 2번 알바생한테 가세요&quot;라며 주문을 골고루 나눠주는(라운드 로빈 방식) 역할만 담당합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 번째는 &lt;b&gt;'워커(Worker) 프로세스'&lt;/b&gt;입니다. 실제로 카운터에서 손님의 주문을 받고 코드를 실행하는 복제된 알바생들입니다. 마스터 매니저가 손님을 배정해 주면, 각자 자신만의 이벤트 루프를 돌리며 독립적으로 커피(비동기 작업)를 만들어냅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. 분신술의 치명적인 단점: 기억 상실증&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클러스터링을 통해 엄청난 처리 속도를 얻게 되지만, 개발자가 반드시 주의해야 할 치명적인 함정이 하나 있습니다. 복제된 알바생(워커 프로세스)들은 &lt;b&gt;서로 기억을 공유하지 않는다는 점&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 손님이 1번 알바생에게 &quot;저 단골손님 김철수입니다, 로그인할게요&quot;라고 말했습니다. 1번 알바생은 철수 님의 얼굴을 기억했습니다. 그런데 5분 뒤 철수 님이 다시 와서 &quot;아까 로그인했죠? 아이스 아메리카노 주세요&quot;라고 했는데, 이번엔 마스터 매니저가 이 손님을 2번 알바생에게 안내했습니다. 2번 알바생은 철수 님을 본 적이 없기 때문에 &quot;누구신데 반말이시죠? 로그인부터 다시 하세요&quot;라고 응대해버립니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컴퓨터 공학 용어로는 이를 &lt;b&gt;'프로세스 간 메모리 격리'&lt;/b&gt;라고 부릅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제를 해결하기 위해, 알바생들이 각자 기억력에 의존하게 놔두지 않고 카운터 뒤에 모두가 볼 수 있는&lt;b&gt; '공용 장부(Redis 같은 외부 메모리 저장소)'&lt;/b&gt;를 하나 두어야 합니다. 손님이 오면 장부에 이름을 적고, 어떤 알바생을 만나든 장부부터 확인하게 만들어서 기억 상실증을 해결하는 것이 실무 아키텍처의 핵심입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;요약&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;개념: 멀티 코어 CPU를 100% 활용하기 위해, 싱글 스레드인 Node.js 프로세스를 코어 개수만큼 여러 개로 복제하여 병렬로 실행하는 기술입니다.&lt;/li&gt;
&lt;li&gt;마스터 프로세스: 외부에서 들어오는 요청을 직접 처리하지 않고, 복제된 워커 프로세스들에게 골고루 분배해 주는 역할을 합니다.&lt;/li&gt;
&lt;li&gt;워커 프로세스: 마스터로부터 요청을 전달받아 실제 비즈니스 로직(코드)을 실행하는 독립적인 주체입니다.&lt;/li&gt;
&lt;li&gt;주의점: 각 프로세스는 독립된 메모리 영역을 가지므로 데이터(세션 등)가 공유되지 않습니다. 따라서 Redis와 같은 별도의 인메모리 저장소를 활용하여 상태를 공유해야 합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;면접Tips&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Node.js 클러스터링은 싱글 스레드의 한계를 극복하고 멀티 코어 CPU를 100% 활용하기 위해 여러 개의 워커(Worker) 프로세스를 생성하는 기술입니다. 마스터(Master) 프로세스가 포트를 점유하고 들어오는 요청을 각 워커에게 분배(라운드 로빈)하여 트래픽 부하를 분산시킵니다. 단, 프로세스 간에 메모리가 공유되지 않으므로 세션 데이터 등은 외부 저장소(Redis 등)를 이용해 관리해야 한다는 점을 유의해야 합니다.&lt;/p&gt;</description>
      <category>1일 1CS(Computer Science)</category>
      <category>CS</category>
      <category>면접질문</category>
      <category>클러스터링</category>
      <author>표자</author>
      <guid isPermaLink="true">https://pyoja.tistory.com/666</guid>
      <comments>https://pyoja.tistory.com/entry/1%EC%9D%BC-1CS-%EC%95%8C%EB%B0%94%EC%83%9D-%ED%95%9C-%EB%AA%85%EC%9C%BC%EB%A1%9C-%EB%B6%80%EC%A1%B1%ED%95%A0-%EB%95%8C-%EB%B6%84%EC%8B%A0%EC%88%A0-%EC%93%B0%EA%B8%B0-Nodejs-%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0%EB%A7%81-%EC%99%84%EB%B2%BD-%EC%9D%B4%ED%95%B4#entry666comment</comments>
      <pubDate>Fri, 31 Jul 2026 12:49:15 +0900</pubDate>
    </item>
    <item>
      <title>[1일 1CS] 자바스크립트 파일은 어떻게 소통할까? CommonJS와 ESM의 차이</title>
      <link>https://pyoja.tistory.com/entry/1%EC%9D%BC-1CS-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%ED%8C%8C%EC%9D%BC%EC%9D%80-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%86%8C%ED%86%B5%ED%95%A0%EA%B9%8C-CommonJS%EC%99%80-ESM%EC%9D%98-%EC%B0%A8%EC%9D%B4</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;과거의 자바스크립트는 웹페이지에 생동감을 주기 위한 아주 작은 스크립트에 불과했습니다. 하지만 자바스크립트로 거대한 서버(Node.js)도 만들고 복잡한 웹 애플리케이션도 만들게 되면서, 코드를 여러 개의 파일로 쪼개고 서로 불러와서(모듈화) 써야 할 필요성이 생겼습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 파일과 파일이 서로 코드를 주고받는 '규칙'이 필요해졌는데, 이 규칙을 모듈 시스템이라고 부릅니다. 자바스크립트 생태계에는 두 가지 거대한 모듈 시스템이 존재합니다. 전통의 강자인 CommonJS와 현대의 표준인 ESM(ECMAScript Modules)입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드 예시 없이, 요리를 준비하는 과정에 비유해서 이 둘의 결정적인 차이를 아주 쉽게 알아보겠습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. CommonJS (CJS): 요리 중에 필요할 때마다 심부름 보내기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CommonJS는 Node.js 환경에서 오랫동안 표준으로 사용되어 온 방식입니다. 우리가 흔히 아는 &lt;b&gt;'require'&lt;/b&gt;라는 키워드를 사용해 다른 파일의 코드를 불러옵니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CommonJS의 가장 큰 특징은 동기적(Synchronous)이고 동적(Dynamic)이라는 점입니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 요리에 비유하면, 요리를 한참 하다가 &quot;어? 간장이 없네?&quot; 하는 순간에 심부름꾼을 슈퍼에 보내는 것과 같습니다. 심부름꾼이 간장을 사서 주방으로 돌아올 때까지 요리사(자바스크립트 엔진)는 요리를 멈추고 꼼짝 않고 기다려야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대신 유연성은 아주 좋습니다. 요리사가 기분에 따라 &quot;오늘 비가 오니까 파전을 구워야지. 밀가루 사 와!&quot;라고 요리 도중에 마음대로 판단해서 필요한 재료를 그때그때 불러올 수 있습니다. (조건문 안에서 모듈을 불러올 수 있다는 뜻입니다.)&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. ESM (ECMAScript Modules): 요리 시작 전 완벽한 재료 세팅&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ESM은 자바스크립트의 공식 표준(ES6)으로 등장한 최신 모듈 시스템입니다. &lt;b&gt;'import'와 'export'&lt;/b&gt;라는 키워드를 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ESM의 가장 큰 특징은 정적(Static)이고 비동기(Asynchronous) 환경에 최적화되어 있다는 점입니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ESM 방식의 요리사는 요리를 시작하기 전에 레시피(코드)를 처음부터 끝까지 쭉 훑어봅니다. 그리고 요리에 필요한 모든 재료(import)를 파악한 뒤, 요리 시작 전에 주방 조리대 위에 완벽하게 싹 다 세팅해 둡니다. 재료 준비가 모두 끝나야만 비로소 진짜 요리(코드 실행)를 시작합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무조건 요리 시작 전에 재료를 다 꺼내둬야 하기 때문에, 요리 중간에 갑자기 변덕을 부려 새로운 재료를 요구할 수 없습니다. (모듈을 불러오는 코드는 무조건 파일의 맨 꼭대기에 있어야 합니다.)&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. 왜 세상은 ESM으로 넘어가고 있을까? (트리쉐이킹)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유연하고 편리한 CommonJS를 두고 왜 요즘 최신 프론트엔드 프로젝트들은 전부 ESM 방식을 강제하고 있을까요? 바로 최적화 때문입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ESM은 코드를 실행하기도 전에 어떤 파일이 어떤 파일을 필요로 하는지 100% 완벽하게 파악할 수 있습니다(정적 분석). 이 특징 덕분에&lt;b&gt; '트리쉐이킹(Tree-shaking)'&lt;/b&gt;이라는 엄청난 마법이 가능해집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;트리쉐이킹이란 나무를 흔들어 썩은 잎을 떨어뜨리듯, 우리가 가져온 외부 코드 중에서 '실제로 쓰지 않는 불필요한 코드'를 싹 솎아내어 버리는 기술입니다. 요리 전 레시피를 분석해 보니 A 마트에서 파는 100가지 식재료 패키지를 통째로 사 왔지만 실제로는 소금 딱 하나만 쓴다는 걸 엔진이 미리 눈치채고, 완성된 요리 상자에는 소금만 쏙 빼서 담아주는 격입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반면 CommonJS는 요리가 끝날 때까지 언제 어디서 어떤 재료를 찾을지 알 수 없기 때문에, 이런 최적화를 하기가 매우 까다롭습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;요약&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;모듈 시스템: 자바스크립트 파일끼리 서로 코드를 불러오고 내보내는 규칙을 말합니다.&lt;/li&gt;
&lt;li&gt;CommonJS (CJS): Node.js의 전통적인 방식으로, 코드가 실행되는 런타임 중에 동기적으로 모듈을 불러옵니다. 유연하지만 최적화가 어렵습니다.&lt;/li&gt;
&lt;li&gt;ESM: 최신 자바스크립트 표준 방식으로, 코드 실행 전에 비동기적으로 모듈의 의존성을 정적으로 분석하여 불러옵니다.&lt;/li&gt;
&lt;li&gt;트리쉐이킹: ESM의 정적 분석 덕분에 실제로 사용하지 않는 코드를 제거하여 최종 결과물의 용량을 극적으로 줄일 수 있습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;면접Tips&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CommonJS는 런타임에 동기적으로 모듈을 불러오는 Node.js의 전통적인 방식이고, ESM은 컴파일 타임에 정적으로 모듈의 의존성을 파악하는 자바스크립트의 최신 표준 방식입니다. ESM은 구조가 정적이라는 특징 덕분에 사용하지 않는 코드를 제거하는 '트리쉐이킹' 최적화가 가능하여, 파일 용량이 중요한 현대 프론트엔드 환경에서 필수적인 표준으로 자리 잡고 있습니다.&lt;/p&gt;</description>
      <category>1일 1CS(Computer Science)</category>
      <category>CommonJS</category>
      <category>CS</category>
      <category>ESM</category>
      <category>면접질문</category>
      <author>표자</author>
      <guid isPermaLink="true">https://pyoja.tistory.com/665</guid>
      <comments>https://pyoja.tistory.com/entry/1%EC%9D%BC-1CS-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%ED%8C%8C%EC%9D%BC%EC%9D%80-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%86%8C%ED%86%B5%ED%95%A0%EA%B9%8C-CommonJS%EC%99%80-ESM%EC%9D%98-%EC%B0%A8%EC%9D%B4#entry665comment</comments>
      <pubDate>Fri, 31 Jul 2026 11:02:57 +0900</pubDate>
    </item>
    <item>
      <title>﻿[1일 1CS] 콜백 &amp;rarr; Promise &amp;rarr; async/await, 왜 이렇게 진화했나요?</title>
      <link>https://pyoja.tistory.com/entry/1%EC%9D%BC-1CS-%EC%BD%9C%EB%B0%B1-%E2%86%92-Promise-%E2%86%92-asyncawait-%EC%99%9C-%EC%9D%B4%EB%A0%87%EA%B2%8C-%EC%A7%84%ED%99%94%ED%96%88%EB%82%98%EC%9A%94</link>
      <description>&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;자바스크립트의 역사를 살펴보면, 개발자들이 비동기 처리(오래 걸리는 작업을 백그라운드에 맡기는 것)를 다루는 방식이 크게 세 번의 진화를 거쳤습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;2&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;2&quot; data-ke-size=&quot;size16&quot;&gt;왜 굳이 새로운 문법이 계속 등장했을까요? 정답은 아주 단순합니다. 개발자들도 사람인지라 '복잡하고 읽기 힘든 것'을 끔찍하게 싫어했기 때문입니다. 오늘도 어김없이 카페 알바생의 비유를 통해 이 세 가지 방식이 어떻게 우리의 삶을 편하게 만들어주었는지 알아보겠습니다.&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;4&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-path-to-node=&quot;4&quot; data-ke-size=&quot;size26&quot;&gt;1. 콜백 (Callback): 꼬리에 꼬리를 무는 주문 (콜백 지옥)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;가장 초창기에 쓰던 방식입니다. 알바생에게 일을 시킬 때, &quot;이 일이 끝나면 다음엔 이렇게 해주세요&quot;라는 행동 지침(콜백 함수)을 함께 쥐여주는 것입니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;카페에 가서 주문을 한다고 상상해 봅시다. &quot;알바생님, 아메리카노 하나 만들어주시고요. 다 만들어지면 1번 테이블로 가져다주세요. 아, 가져다주실 때 제 친구한테 무슨 케이크 먹을지 물어봐 주시고요. 친구가 치즈케이크를 고르면 그걸 또 만들어서 가져다주시고요. 만약 케이크가 품절이면...&quot;&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;주문이 한두 개일 때는 괜찮습니다. 하지만 작업이 연속적으로 이어지면, 알바생에게 전달해야 할 지침이 끝없이 안으로 파고들어 갑니다. 나중에는 누가 누구에게 지시를 내렸는지, 에러가 나면 어디서부터 수습해야 할지 도무지 알 수 없게 되어버립니다. 개발자들은 이 끔찍한 구조를 &lt;b&gt;'콜백 지옥(Callback Hell)'&lt;/b&gt;라고 불렀습니다.&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;8&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-path-to-node=&quot;8&quot; data-ke-size=&quot;size26&quot;&gt;2. Promise: 진동벨의 등장&lt;/h2&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;콜백 지옥에 지친 개발자들은 새로운 해결책을 만들어냈습니다. 바로 'Promise(프로미스)'라는 개념입니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;Promise는 현실 세계의 '카페 진동벨'과 완벽하게 똑같습니다. 이제 알바생에게 복잡한 지시를 구구절절 늘어놓지 않습니다. 알바생은 주문을 받자마자 우리에게 진동벨(Promise)을 딱 하나 쥐여줍니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;이 진동벨은 세 가지 상태를 가집니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;12&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;대기 중 (Pending): 아직 커피를 만들고 있는 상태&lt;/li&gt;
&lt;li&gt;완료됨 (Fulfilled): 커피가 무사히 완성되어 진동벨이 울리는 상태&lt;/li&gt;
&lt;li&gt;거절됨 (Rejected): 원두가 떨어져서 주문이 취소되었다고 알려주는 상태&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;우리는 진동벨을 들고 자리에 앉아서 느긋하게 기다리다가, 진동벨이 울리면(성공하면) 그때 가서 &quot;그다음엔(then) 케이크를 주세요&quot;라고 요청하면 됩니다. 만약 에러가 났다고 알려오면 &quot;그럼 에러를 수습(catch)해 주세요&quot;라고 대처하면 되죠.&lt;/p&gt;
&lt;p data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;지시사항이 안으로 계속 파고들던 콜백 지옥과 달리, Promise를 사용하면 지시사항을 밑으로 차례대로 줄 세울 수 있게 되어 코드가 훨씬 깔끔해졌습니다.&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;15&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-path-to-node=&quot;15&quot; data-ke-size=&quot;size26&quot;&gt;3. async/await: 마침내 찾은 평화 (동기적인 척하기)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;Promise 덕분에 살 만해졌지만, 사람의 욕심은 끝이 없습니다. &quot;진동벨(Promise)을 받아서, 성공하면 그다음(then)을 하고...&quot; 이런 규칙 자체도 길고 번거롭게 느껴진 것입니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;17&quot; data-ke-size=&quot;size16&quot;&gt;개발자들은 &quot;오래 걸리는 작업도 그냥 위에서 아래로 물 흐르듯 순서대로 읽히게 쓸 수는 없을까?&quot;라는 고민을 했고, 그 결과물이 최신 문법인 async/await입니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;18&quot; data-ke-size=&quot;size16&quot;&gt;사용법은 마법처럼 간단합니다. 함수 앞에 &quot;이 작업은 비동기가 포함되어 있어(async)&quot;라고 간판을 달아주고, 오래 걸리는 작업 앞에 &quot;여기서 잠깐 기다려(await)&quot;라고 써주기만 하면 됩니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;알바생의 입장에서 보면, 손님이 커피를 시켜놓고 카운터 앞에서 눈을 감고 잠깐 기다리는(await) 것과 같습니다. 커피가 나오면 손님은 눈을 뜨고 곧바로 케이크를 시킵니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;겉으로 보기에는 커피가 나올 때까지 다른 손님을 못 받는 멍청한 방식(동기적 방식)처럼 보이지만, 뒤에서는 자바스크립트 엔진이 알아서 똑똑하게 논블로킹으로 처리해 줍니다. 개발자는 그저 사람의 말하듯 코드를 위에서 아래로 자연스럽게 읽어내려갈 수 있게 된 것입니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;22&quot; data-ke-size=&quot;size26&quot;&gt;요약&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;23&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,0,0&quot;&gt;콜백(Callback):&lt;/b&gt; 작업이 끝난 후 실행할 행동을 넘겨주는 초창기 방식. 꼬리에 꼬리를 무는 '콜백 지옥'과 에러 처리의 어려움이 있었습니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,1,0&quot;&gt;Promise:&lt;/b&gt; 작업의 결과(진동벨)를 객체로 반환받는 방식. 성공(then)과 실패(catch)를 명확히 분리하고 코드를 평평하게 펴주었습니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,2,0&quot;&gt;async/await:&lt;/b&gt; Promise를 기반으로 하되, 비동기 코드를 마치 일반적인 동기 코드처럼 위에서 아래로 쉽게 읽고 쓸 수 있게 만든 최신 문법입니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-path-to-node=&quot;25&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-path-to-node=&quot;25&quot; data-ke-size=&quot;size26&quot;&gt;면접Tips&lt;/h2&gt;
&lt;p data-path-to-node=&quot;26&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26&quot;&gt;콜백 &amp;rarr; Promise &amp;rarr; async/await, 왜 이렇게 진화했나요?&lt;/b&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;26&quot; data-ke-size=&quot;size16&quot;&gt;비동기 처리 코드의 복잡도를 낮추고 가독성을 높이기 위해 진화했습니다. 초기 콜백 방식은 중첩이 깊어지는 '콜백 지옥' 문제가 있었고, 이를 해결하기 위해 비동기 작업의 상태와 결과를 객체로 다루는 Promise가 등장했습니다. 이후 Promise 기반의 코드를 마치 동기적인 흐름처럼 직관적이고 읽기 쉽게 작성할 수 있도록 async/await 문법이 도입되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>1일 1CS(Computer Science)</category>
      <category>async</category>
      <category>await</category>
      <category>CS</category>
      <category>promise</category>
      <category>면접</category>
      <category>콜백</category>
      <author>표자</author>
      <guid isPermaLink="true">https://pyoja.tistory.com/664</guid>
      <comments>https://pyoja.tistory.com/entry/1%EC%9D%BC-1CS-%EC%BD%9C%EB%B0%B1-%E2%86%92-Promise-%E2%86%92-asyncawait-%EC%99%9C-%EC%9D%B4%EB%A0%87%EA%B2%8C-%EC%A7%84%ED%99%94%ED%96%88%EB%82%98%EC%9A%94#entry664comment</comments>
      <pubDate>Thu, 30 Jul 2026 11:39:53 +0900</pubDate>
    </item>
    <item>
      <title>[1일 1CS] 자바스크립트는 싱글스레드인데 어떻게 동시성을 처리할까?</title>
      <link>https://pyoja.tistory.com/entry/1%EC%9D%BC-1CS-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%8A%94-%EC%8B%B1%EA%B8%80%EC%8A%A4%EB%A0%88%EB%93%9C%EC%9D%B8%EB%8D%B0-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%8F%99%EC%8B%9C%EC%84%B1%EC%9D%84-%EC%B2%98%EB%A6%AC%ED%95%A0%EA%B9%8C</link>
      <description>&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&quot;자바스크립트는 싱글스레드인데 어떻게 동시성을 처리하나요?&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;2&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;2&quot; data-ke-size=&quot;size16&quot;&gt;몸이 하나(싱글스레드)인데 어떻게 여러 가지 일을 동시에(동시성) 할 수 있냐는 뜻이죠. 이 모순을 완벽하게 이해하기 위해서는 먼저 컴퓨터 공학에서 말하는 '동시에 일한다'는 말의 진짜 의미를 파악해야 합니다.&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;3&quot; data-ke-size=&quot;size26&quot;&gt;1. 병렬성 vs 동시성: 진짜 동시와 가짜 동시&lt;/h2&gt;
&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;두 가지 '동시'의 차이를 다시 한번 카페에 비유해 보겠습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5&quot;&gt;병렬성(Parallelism)&lt;/b&gt; 알바생 4명이 출근해서 각자 자기 커피 머신을 잡고, 4잔의 커피를 '물리적으로 똑같은 시간'에 1초의 오차도 없이 동시에 만드는 것입니다. 컴퓨터로 치면 멀티 코어, 멀티 스레드의 작업 방식입니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6&quot;&gt;동시성(Concurrency)&lt;/b&gt; 알바생은 1명뿐입니다. 하지만 이 알바생이 1번 손님 주문을 받고 커피 머신 버튼을 누른 뒤, 기계가 돌아가는 동안 가만히 기다리지 않고 곧바로 2번 손님 주문을 받습니다. 그 직후 3번 손님 주문도 받죠. 손님들 입장에서는 1, 2, 3번 주문이 '동시에' 처리되고 있는 것처럼 느낍니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;자바스크립트가 여러 작업을 처리하는 방식은 바로 후자인 '동시성'입니다. 물리적으로 한 번에 두 가지 일을 하는 게 아니라, 일을 번갈아 가며 엄청나게 빠르게 넘나들어서 마치 동시에 하는 것처럼 보이게 만드는 마술입니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;8&quot; data-ke-size=&quot;size26&quot;&gt;2. 동시성의 핵심 비결: 논블로킹(Non-blocking)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;알바생 한 명이 이렇게 동시성을 뽐낼 수 있는 가장 큰 무기는 바로 &lt;b&gt;'논블로킹(Non-blocking)'&lt;/b&gt;이라는 업무 방식입니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;블로킹(Blocking) 방식으로 일하는 초보 알바생은 1번 손님이 주문한 커피가 다 내려질 때까지 커피 머신 앞을 멍하니 지키고 서 있습니다. 뒤에 100명이 줄을 서 있어도 절대 다음 주문을 받지 않죠. 흐름이 꽉 막혀버리는(Block) 것입니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;하지만 자바스크립트 알바생은 철저하게 논블로킹으로 일합니다. 시간이 오래 걸리는 작업(파일 다운로드, 인터넷 통신 등)이 들어오면, 본인이 직접 안고 끙끙대는 것이 아니라 앞서 배운 백오피스 매니저(libuv)나 외부 기계(Web APIs)에게 툭 던져버립니다. 그리고 자신은 1밀리초의 지체도 없이 곧바로 카운터로 돌아와 다음 줄 서 있는 코드를 실행합니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;12&quot; data-ke-size=&quot;size26&quot;&gt;3. 완벽한 생태계가 만드는 환상의 하모니&lt;/h2&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;결국 &quot;자바스크립트가 싱글스레드임에도 동시성을 가질 수 있는 이유&quot;는 앞서 우리가 하나씩 살펴본 개념들이 한데 뭉쳐서 완벽한 팀워크를 발휘하기 때문입니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;14&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;카운터의 알바생(싱글스레드)은 계산이나 함수 호출 같은 가장 빠르고 단순한 일만 쉴 틈 없이 쳐냅니다.&lt;/li&gt;
&lt;li&gt;무겁고 오래 걸리는 일은 백오피스 매니저(libuv)와 외부 환경이 백그라운드에서 알아서 처리합니다. (논블로킹 I/O)&lt;/li&gt;
&lt;li&gt;뒷방에서 일을 끝낸 결과물들이 픽업대(태스크 큐)에 차곡차곡 쌓이면,&lt;/li&gt;
&lt;li&gt;알바생의 철저한 확인 습관(이벤트 루프) 덕분에 카운터가 비는 찰나의 순간마다 결과물이 사용자에게 빠짐없이 전달됩니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;이 기가 막힌 분업 시스템 덕분에, 자바스크립트는 단 하나의 스레드만으로도 수많은 사용자의 요청을 버벅거림 없이 '동시에' 처리해 내는 엄청난 퍼포먼스를 낼 수 있는 것입니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;16&quot; data-ke-size=&quot;size26&quot;&gt;요약&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;17&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;동시성&lt;/b&gt;(Concurrency)의 진짜 의미: 물리적으로 똑같은 시간에 일하는 것(병렬성)이 아니라, 하나의 스레드가 여러 작업을 멈춤 없이 빠르게 번갈아 가며 처리해 동시에 일어나는 것처럼 보이게 하는 개념입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;논블로킹&lt;/b&gt;(Non-blocking): 오래 걸리는 작업이 메인 스레드의 발목을 잡지 않도록, 외부 시스템에 작업을 위임해버리고 곧바로 다음 코드를 실행하여 흐름이 막히지 않게 합니다.&lt;/li&gt;
&lt;li&gt;아키텍처의 승리: 싱글스레드(콜 스택)의 빠른 연산 능력, 백그라운드 환경(libuv)의 지원, 그리고 이 둘을 이어주는 이벤트 루프의 조합이 자바스크립트 동시성의 핵심 비결입니다.&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>1일 1CS(Computer Science)</category>
      <category>CS</category>
      <category>논블로킹</category>
      <category>동시성</category>
      <author>표자</author>
      <guid isPermaLink="true">https://pyoja.tistory.com/663</guid>
      <comments>https://pyoja.tistory.com/entry/1%EC%9D%BC-1CS-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%8A%94-%EC%8B%B1%EA%B8%80%EC%8A%A4%EB%A0%88%EB%93%9C%EC%9D%B8%EB%8D%B0-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%8F%99%EC%8B%9C%EC%84%B1%EC%9D%84-%EC%B2%98%EB%A6%AC%ED%95%A0%EA%B9%8C#entry663comment</comments>
      <pubDate>Thu, 30 Jul 2026 11:34:05 +0900</pubDate>
    </item>
    <item>
      <title>[1일 1CS] 자바스크립트 이벤트 루프 쉽게 이해하기</title>
      <link>https://pyoja.tistory.com/entry/1%EC%9D%BC-1CS-%EC%95%8C%EB%B0%94%EC%83%9D-%ED%95%9C-%EB%AA%85%EC%9D%B4-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%86%90%EB%8B%98-100%EB%AA%85%EC%9D%84-%EB%8F%99%EC%8B%9C%EC%97%90-%EB%B0%9B%EC%9D%84%EA%B9%8C-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EB%A3%A8%ED%94%84Event-Loop</link>
      <description>&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;자바스크립트를 공부하다 보면 &quot;싱글 스레드(Single Thread)&quot;라는 말을 자주 듣게 됩니다. 이 말을 우리 일상으로 번역하면 &quot;우리 가게에는 알바생이 딱 한 명뿐입니다&quot;라는 뜻입니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;2&quot; data-ke-size=&quot;size16&quot;&gt;알바생이 한 명뿐이라면, 손님이 한 명 올 때마다 주문을 받고, 커피를 내리고, 서빙을 마친 뒤에야 다음 손님의 주문을 받을 수 있겠죠. 그런데 이상합니다. 우리가 사용하는 웹사이트(자바스크립트)는 주문을 받으면서 동시에 화면도 움직이고, 뒤에서는 데이터를 다운로드하고 있습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;알바생 한 명이 어떻게 이 모든 걸 동시에 해내는 걸까요? 그 마법 같은 업무 처리 비결이 바로 '이벤트 루프(Event Loop)'입니다. 코드는 하나도 없이, 동네 카페 알바생의 하루를 통해 이 개념을 아주 쉽게 파헤쳐 보겠습니다.&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;5&quot; data-ke-size=&quot;size26&quot;&gt;1. 카페의 3가지 구역 (자바스크립트의 구조)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;혼자 일하는 알바생이 효율적으로 일하기 위해 카페를 세 구역으로 나누었습니다. 이 세 구역만 기억하시면 됩니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7&quot;&gt;첫 번째 구역: 카운터 (콜 스택, Call Stack)&lt;/b&gt; 알바생이 직접 손님과 마주 보고 일하는 유일한 공간입니다. 알바생은 몸이 하나라 한 번에 한 명의 손님(작업)만 응대할 수 있습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8&quot;&gt;두 번째 구역: 자동 커피 머신과 진동벨 (Web APIs)&lt;/b&gt; 알바생이 직접 하기 오래 걸리는 일(예: 3초 동안 타이머 재기, 인터넷에서 데이터 가져오기 등)을 대신해 주는 기계들입니다. 알바생은 기계의 버튼을 누르고 바로 카운터로 돌아와 다음 손님을 받습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9&quot;&gt;세 번째 구역: 픽업대 (태스크 큐, Task Queue)&lt;/b&gt; 기계가 커피를 다 완성하면, 완성된 커피(결과물)를 올려두는 대기 공간입니다. 먼저 완성된 커피가 픽업대의 가장 앞줄에 놓입니다.&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;11&quot; data-ke-size=&quot;size26&quot;&gt;2. 이벤트 루프란 무엇인가요?&lt;/h2&gt;
&lt;p data-path-to-node=&quot;12&quot; data-ke-size=&quot;size16&quot;&gt;'이벤트 루프'는 거창한 기술이 아니라, 이 알바생이 가진 &quot;아주 철저한 업무 습관&quot;을 부르는 말입니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;알바생의 업무 습관(이벤트 루프)은 딱 두 가지 규칙으로 돌아갑니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;14&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14,0,0&quot;&gt;&quot;카운터에 손님이 있으면, 절대 픽업대를 쳐다보지 않는다.&quot;&lt;/b&gt; (현재 하는 일에 집중)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14,1,0&quot;&gt;&quot;카운터에 손님이 없어서 텅 비는 순간, 0.1초의 망설임도 없이 픽업대를 확인하고 완성된 커피를 손님에게 전달한다.&quot;&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;이벤트 루프는 알바생이 쉴 틈 없이 '카운터가 비었나? -&amp;gt; 픽업대에 커피가 있나? -&amp;gt; 카운터가 비었나? -&amp;gt; 픽업대에 커피가 있나?'를 무한히 반복하며 확인하는 과정 그 자체입니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;이 습관 덕분에 알바생은 커피 머신이 돌아가는 동안 카운터에서 계속 밀린 주문을 받을 수 있고, 손님이 끊기는 찰나의 순간마다 완성된 커피를 내어줄 수 있는 것입니다. 겉보기엔 모든 게 동시에 일어나는 것처럼 보이죠.&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;18&quot; data-ke-size=&quot;size26&quot;&gt;3. 픽업대에도 등급이 있다: VIP 줄과 일반 줄&lt;/h2&gt;
&lt;p data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;여기서 조금 더 들어가 보겠습니다. 사실 픽업대(대기실)는 하나가 아니라 두 줄로 나뉘어 있습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20&quot;&gt;VIP 픽업대 (마이크로태스크 큐)&lt;/b&gt; 여기에는 주로 '프로미스(Promise)'라고 불리는 아주 중요한 작업들이 놓입니다. 알바생이 가장 최우선으로 챙겨야 하는 결과물들입니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;21&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21&quot;&gt;일반 픽업대 (매크로태스크 큐)&lt;/b&gt; 여기에는 '타이머(setTimeout)' 같이 상대적으로 덜 급한 일반 작업들이 놓입니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;22&quot; data-ke-size=&quot;size16&quot;&gt;알바생의 규칙은 아주 단호합니다. 카운터가 비었을 때, &lt;b data-index-in-node=&quot;31&quot; data-path-to-node=&quot;22&quot;&gt;반드시 VIP 픽업대를 먼저 확인합니다.&lt;/b&gt; VIP 줄에 10개의 커피가 밀려있다면, 10개를 다 처리해서 VIP 줄이 완벽하게 텅 빌 때까지 일반 픽업대는 쳐다보지도 않습니다. VIP 줄이 완전히 비워진 것을 확인한 후에야 일반 픽업대에서 대기 중인 작업을 하나 가져옵니다.&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;24&quot; data-ke-size=&quot;size26&quot;&gt;4. 초보 개발자가 흔히 하는 실수 (카운터 마비 사태)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;이 원리를 이해하면 우리가 코드를 짤 때 절대 해서는 안 되는 행동을 알게 됩니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;26&quot; data-ke-size=&quot;size16&quot;&gt;만약 카운터에 온 손님이 알바생에게 &quot;1부터 10억까지 숫자를 소리 내서 세어주세요&quot;라고 부탁했다고 가정해 봅시다. (아주 복잡하고 무거운 계산 작업)&lt;/p&gt;
&lt;p data-path-to-node=&quot;27&quot; data-ke-size=&quot;size16&quot;&gt;알바생은 카운터(콜 스택)에서 이 작업을 하느라 꼼짝도 할 수 없게 됩니다. 그동안 커피 머신에서 커피가 완성되어 픽업대에 계속 쌓이고 진동벨이 울리지만, 알바생의 첫 번째 규칙 기억하시나요? &lt;b data-index-in-node=&quot;108&quot; data-path-to-node=&quot;27&quot;&gt;&quot;카운터에 일이 있으면 픽업대를 쳐다보지 않는다.&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;28&quot; data-ke-size=&quot;size16&quot;&gt;결국 화면이 멈추고, 사용자가 아무리 버튼을 눌러도 웹사이트가 반응하지 않는 이른바 '프리징(Freezing)' 현상이 발생합니다. 이벤트 루프가 멈춰버린 것입니다.&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;30&quot; data-ke-size=&quot;size26&quot;&gt;요약&lt;/h2&gt;
&lt;p data-path-to-node=&quot;31&quot; data-ke-size=&quot;size16&quot;&gt;어려운 전문 용어들을 걷어내고 나니 생각보다 단순하죠?&lt;/p&gt;
&lt;p data-path-to-node=&quot;32&quot; data-ke-size=&quot;size16&quot;&gt;자바스크립트의 이벤트 루프는 결국 &quot;오래 걸리는 일은 기계(Web API)에 맡기고, 알바생(싱글 스레드)은 카운터(콜 스택)와 픽업대(태스크 큐)를 끊임없이 번갈아 확인하며 일을 쳐내는 시스템&quot;입니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;33&quot; data-ke-size=&quot;size16&quot;&gt;앞으로 개발을 하시면서 코드가 예상과 다르게 동작하거나 타이머가 제시간에 울리지 않는다면, 오늘 만난 카페 알바생의 규칙과 VIP 픽업대를 꼭 떠올려 보시기 바랍니다!&lt;/p&gt;</description>
      <category>1일 1CS(Computer Science)</category>
      <category>CS</category>
      <category>이벤트루프</category>
      <author>표자</author>
      <guid isPermaLink="true">https://pyoja.tistory.com/662</guid>
      <comments>https://pyoja.tistory.com/entry/1%EC%9D%BC-1CS-%EC%95%8C%EB%B0%94%EC%83%9D-%ED%95%9C-%EB%AA%85%EC%9D%B4-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%86%90%EB%8B%98-100%EB%AA%85%EC%9D%84-%EB%8F%99%EC%8B%9C%EC%97%90-%EB%B0%9B%EC%9D%84%EA%B9%8C-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EB%A3%A8%ED%94%84Event-Loop#entry662comment</comments>
      <pubDate>Wed, 29 Jul 2026 15:50:06 +0900</pubDate>
    </item>
    <item>
      <title>[책 리뷰] 장비도 배우도 없이 영상 한 편 뚝딱, 『7가지 생성 AI로 영상 제작 &amp;amp; 편집하기』</title>
      <link>https://pyoja.tistory.com/entry/%EC%B1%85-%EB%A6%AC%EB%B7%B0-%EC%9E%A5%EB%B9%84%EB%8F%84-%EB%B0%B0%EC%9A%B0%EB%8F%84-%EC%97%86%EC%9D%B4-%EC%98%81%EC%83%81-%ED%95%9C-%ED%8E%B8-%EB%9A%9D%EB%94%B1-%E3%80%8E7%EA%B0%80%EC%A7%80-%EC%83%9D%EC%84%B1-AI%EB%A1%9C-%EC%98%81%EC%83%81-%EC%A0%9C%EC%9E%91-%ED%8E%B8%EC%A7%91%ED%95%98%EA%B8%B0%E3%80%8F</link>
      <description>&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&quot;한빛미디어&amp;nbsp;서평단&amp;nbsp;&amp;lt;나는리뷰어다&amp;gt;&amp;nbsp;활동을&amp;nbsp;위해서&amp;nbsp;책을&amp;nbsp;협찬&amp;nbsp;받아&amp;nbsp;작성된&amp;nbsp;서평입니다.&quot;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요즘 유튜브 쇼츠나 인스타그램 릴스를 보다 보면 &quot;이거 사람이 찍은 거 맞나&quot; 싶은 영상들이 꽤 있다. 카메라도 배우도 없이 텍스트 몇 줄로 영상을 뽑아내는 시대라니, 궁금증 반 의심 반으로 이 책을 집어 들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;무슨 내용을 다루나&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 책은 영상 한 편이 완성되기까지의 전 과정을 6부로 나눠서 다룬다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;AI가 바꾼 영상 제작의 패러다임 소개&lt;/li&gt;
&lt;li&gt;챗GPT&amp;middot;클로드&amp;middot;퍼플렉시티로 시나리오와 대본 쓰기&lt;/li&gt;
&lt;li&gt;DALL-E와 미드저니로 이미지 만들기&lt;/li&gt;
&lt;li&gt;Suno, 일레븐랩스, 타입캐스트로 배경음악과 AI 성우 만들기&lt;/li&gt;
&lt;li&gt;런웨이 Gen-3, 루마 드림머신, 클링 AI로 영상 생성하고 캡컷&amp;middot;브루로 편집하기&lt;/li&gt;
&lt;li&gt;실전 프로젝트로 전체 과정 복습 + AI 저작권 챕터&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;말 그대로 &quot;기획-이미지-사운드-영상-편집&quot;이라는 영상 제작 파이프라인 하나하나에 지금 시점에서 쓸 만한 AI 도구를 꽂아넣은 구성이다. 목차만 봐도 이 책 한 권을 따라가면 최소한 결과물 하나는 완성할 수 있겠다는 감이 온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;읽으면서 좋았던 점&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;과정이 끊기지 않는다.&lt;/b&gt; 유튜브에는 &quot;미드저니로 이미지 만들기&quot;, &quot;런웨이 사용법&quot; 같은 단편적인 튜토리얼은 많지만, 시나리오부터 최종 편집까지 하나의 흐름으로 이어서 보여주는 자료는 의외로 찾기 어렵다. 이 책은 그 빈틈을 정확히 채워준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프롬프트 팁이 실전적이다.&lt;/b&gt; 카메라 샷과 앵글 용어, 특정 버전에서 더 잘 먹히는 프롬프트 작성법처럼 실제로 영상 업계에서 쓰는 용어들을 정리해 준 부분이 인상 깊었다. 이런 용어는 현업자가 아니면 검색해도 잘 안 나오는 내용이라 프롬프트를 쓸 때 바로바로 도움이 됐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;실무자 인터뷰가 곁들여져 있다.&lt;/b&gt; 각 파트 끝에 AI 영화감독, 프로듀서 등 실제로 AI 영상을 업으로 삼는 사람들의 인터뷰가 실려 있어서, 단순 툴 사용법을 넘어 &quot;이걸로 진짜 돈을 벌고 있는 사람은 어떻게 쓰는가&quot;를 엿볼 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;저작권 챕터를 따로 뒀다.&lt;/b&gt; AI 생성물의 저작권, 상업적 이용 범위, 무료 폰트&amp;middot;소스 활용법까지 마지막 장에서 짚어준 점이 실용적이었다. 결과물을 실제로 돈 받고 쓰려는 사람이라면 꼭 챙겨봐야 할 부분이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;아쉬웠던 점&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 이런 종류의 책이 늘 그렇듯, AI 툴 자체의 발전 속도를 책이 따라가기는 쉽지 않다. 출간된 지 얼마 안 돼 미드저니나 이미지 생성 모델 쪽에 새 버전이 나오는 식이라, 세부 화면이나 특정 기능은 이미 달라졌을 수 있다. 그래서 이 책은 &quot;도구 이름과 화면&quot;을 외우는 책이라기보다, &quot;기획-생성-편집이라는 워크플로 자체&quot;를 익히는 책으로 보는 게 맞다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또 초반 1부는 AI 영상 산업의 흐름을 짚어주는 개론적인 내용이라, 곧바로 실습하고 싶은 독자라면 2부부터 읽어도 무방하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;이런 사람에게 맞는 책&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;홍보 영상이나 제품 소개 영상을 직접 만들어야 하는 자영업자, 마케터&lt;/li&gt;
&lt;li&gt;숏폼 콘텐츠를 꾸준히 올리고 싶은데 촬영 장비나 인력이 없는 크리에이터&lt;/li&gt;
&lt;li&gt;생성 AI로 뭘 할 수 있는지 감이 안 잡히는 입문자&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반대로 이미 특정 툴(예를 들어 런웨이나 캡컷)을 능숙하게 쓰고 있는 사람에게는 새로운 정보가 적을 수 있다. 이 책의 강점은 &quot;전체 파이프라인을 한 번에 훑어준다&quot;는 데 있지, 한 도구를 깊게 파고드는 데 있지 않다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;총평&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;왕초보도 자신감을 얻을 수 있는 책&quot;이라는 평이 여러 곳에서 반복됐다. 실제로 읽어보니 그 말에 동의한다. 화려한 이론서가 아니라 &quot;일단 손에 쥐여주는&quot; 실용서에 가깝다. 영상 제작이 낯설어서 시작을 못 하고 있었다면, 이 책 한 권으로 최소한 &quot;완성&quot;이라는 경험은 해볼 수 있다. 다만 책에 나온 화면 그대로 따라 하기보다는, 책이 짚어주는 프로세스와 프롬프트 감각을 자기 것으로 만드는 방식으로 읽기를 추천한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp;도서링크:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://www.hanbit.co.kr/store/books/look.php?p_code=B5503963056&quot;&gt;https://www.hanbit.co.kr/store/books/look.php?p_code=B5503963056&lt;/a&gt;&lt;/p&gt;</description>
      <category>1달 1독후감/한빛미디어 - 나는리뷰어다</category>
      <category>나는리뷰어다</category>
      <category>영상제작</category>
      <category>책리뷰</category>
      <category>한빛미디어</category>
      <author>표자</author>
      <guid isPermaLink="true">https://pyoja.tistory.com/661</guid>
      <comments>https://pyoja.tistory.com/entry/%EC%B1%85-%EB%A6%AC%EB%B7%B0-%EC%9E%A5%EB%B9%84%EB%8F%84-%EB%B0%B0%EC%9A%B0%EB%8F%84-%EC%97%86%EC%9D%B4-%EC%98%81%EC%83%81-%ED%95%9C-%ED%8E%B8-%EB%9A%9D%EB%94%B1-%E3%80%8E7%EA%B0%80%EC%A7%80-%EC%83%9D%EC%84%B1-AI%EB%A1%9C-%EC%98%81%EC%83%81-%EC%A0%9C%EC%9E%91-%ED%8E%B8%EC%A7%91%ED%95%98%EA%B8%B0%E3%80%8F#entry661comment</comments>
      <pubDate>Sun, 26 Jul 2026 10:48:52 +0900</pubDate>
    </item>
    <item>
      <title>[독후감] 너무 시끄러운 고독</title>
      <link>https://pyoja.tistory.com/entry/%EB%8F%85%ED%9B%84%EA%B0%90-%EB%84%88%EB%AC%B4-%EC%8B%9C%EB%81%84%EB%9F%AC%EC%9A%B4-%EA%B3%A0%EB%8F%85</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;350&quot; data-origin-height=&quot;520&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FcWeB/dJMcag65FrN/y5L5hE2uKQR1JtB9ydQh5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FcWeB/dJMcag65FrN/y5L5hE2uKQR1JtB9ydQh5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FcWeB/dJMcag65FrN/y5L5hE2uKQR1JtB9ydQh5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFcWeB%2FdJMcag65FrN%2Fy5L5hE2uKQR1JtB9ydQh5K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;350&quot; height=&quot;520&quot; data-origin-width=&quot;350&quot; data-origin-height=&quot;520&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;나만의 감상문&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내용은 짧지만 어려운 단어와 다양한 미사어구, 함축적인 의미를 담은 문장들이 많아서 읽기 어려웠다. 가볍게 읽자니 너무 가볍고, 깊게 읽자니 해석해야 할 내용이 많았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한탸는 처음에는 정말 본능에 충실한, 현재만 바라보고 살아가는 인물인가 라는 생각을 했다. 만차를 위해 돈을 남김없이 쓰고, 소장에 잔소리에도 자신만의 속도로 일하는 모습을 보니 마이페이스를 가진 사람같았다. 그리고 한탸가 처한 상황은 너무나 암울하고, 희망도 없고, 고독한 세계라는 생각이 들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최근 '슬기로운 깜빵생활'을 다시 봤는데 전혀 다른 배경이지만 '시끄러운 고독'이 떠올랐다. 정말 힘들게 꿈을 이루워냈지만 '운' 나쁘게도 깜빵에 들어가고, 그안에서도 계속 문제에 휘말리고 고민하고 역경을 이겨내간다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;인생은 필연보다 우연에 좌우되었고 세상은 생각보다 불합리하고 우스꽝스러운 곳이었다. 산다는 건 슬픈 일이지만, 사소한 즐거움을 잃지 않는 한 인생은 무너지지 않는다.&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;정신과 전문의로 15만명을 진료한 이근후 교수님의 말처럼 한탸도, 슬깜의 주인공도 우연에 의해 불합리함을 당하면서도 사소한 즐거움을 놓치지 않으려고 발버둥치는 이야기로 들렸다. 다만 결말은 서로 반대로 다가간 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;슬깜은 계속 사소한 즐거움과 주변 사람들과의 따뜻한 관계 속에서 치유되고 문제를 해결해나가면서 해피엔딩으로 나아간다. 한탸는 맥주와 함께 활자를 흡수하면서 자신만의 세상을 살아가고, 집시 여자들의 체온으로 온정을 느끼지만 변화하는 세상에 적응하지 못한다. 압축기에 들어가는 모습을 '저항'이라고 표현하지만 나는 공감되지 않았다. 그저 자신만의 세상을 버리지 못하고, 적응하지 못하고, 현실이 아닌 꿈속에서 살아가길 원하는 한 사람이 아니었을까.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한탸의 생애를 긍정하지도 비난하고 싶지도 않다. 그저 불운한 상황을 묵묵히 견뎌온 한탸의 생애가 오늘따라 더욱 연민스럽게 느껴졌다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(1장) &lt;br /&gt;삼십오년째&amp;nbsp;폐지&amp;nbsp;더미&amp;nbsp;속에서&amp;nbsp;일하는&amp;nbsp;주인공 &lt;br /&gt;수&amp;nbsp;많은&amp;nbsp;지식을&amp;nbsp;흡수하고,&amp;nbsp;맥주도&amp;nbsp;엄청&amp;nbsp;마신다. &lt;br /&gt;맥주는&amp;nbsp;사고의&amp;nbsp;흐름을&amp;nbsp;돕기&amp;nbsp;위해&amp;nbsp;마신다. &lt;br /&gt;오년&amp;nbsp;뒤&amp;nbsp;은퇴할때&amp;nbsp;같이&amp;nbsp;일해온&amp;nbsp;압축기를&amp;nbsp;구매할&amp;nbsp;예정. &lt;br /&gt;압축되고&amp;nbsp;파괴되는&amp;nbsp;과정을&amp;nbsp;사랑하며&amp;nbsp;나중에&amp;nbsp;전시할&amp;nbsp;생각으로&amp;nbsp;가득함. &lt;br /&gt;'내가&amp;nbsp;혼자인&amp;nbsp;건&amp;nbsp;오로지&amp;nbsp;생각들로&amp;nbsp;조밀하게&amp;nbsp;채워진&amp;nbsp;고독&amp;nbsp;속에&amp;nbsp;살기&amp;nbsp;위해서다.' &lt;br /&gt;보통&amp;nbsp;사람들은&amp;nbsp;고독을&amp;nbsp;싫어하지만&amp;nbsp;자발적으로&amp;nbsp;고독&amp;nbsp;속에서&amp;nbsp;살아간다.&amp;nbsp;끔찍히도&amp;nbsp;책을&amp;nbsp;사랑하고&amp;nbsp;남김&amp;nbsp;없이&amp;nbsp;흡수하려한다. &lt;br /&gt;&lt;br /&gt;장면별&amp;nbsp;해석 &lt;br /&gt;그가&amp;nbsp;폐지&amp;nbsp;더미에서&amp;nbsp;건져&amp;nbsp;올려&amp;nbsp;읽어낸&amp;nbsp;칸트,&amp;nbsp;헤겔,&amp;nbsp;괴테&amp;nbsp;같은&amp;nbsp;위대한&amp;nbsp;철학자들의&amp;nbsp;사상과&amp;nbsp;목소리가&amp;nbsp;그의&amp;nbsp;머릿속에서&amp;nbsp;폭포수처럼&amp;nbsp;쏟아지며&amp;nbsp;쉴&amp;nbsp;새&amp;nbsp;없이&amp;nbsp;떠들고&amp;nbsp;있기&amp;nbsp;때문입니다. &lt;br /&gt;즉,&amp;nbsp;세상에서&amp;nbsp;가장&amp;nbsp;고립된&amp;nbsp;지하실이&amp;nbsp;역설적으로&amp;nbsp;인류의&amp;nbsp;가장&amp;nbsp;위대한&amp;nbsp;지성들이&amp;nbsp;대화를&amp;nbsp;나누는&amp;nbsp;'시끄러운'&amp;nbsp;공간 &lt;br /&gt;그가&amp;nbsp;은퇴할&amp;nbsp;때&amp;nbsp;이&amp;nbsp;기계를&amp;nbsp;집으로&amp;nbsp;가져가려&amp;nbsp;하는&amp;nbsp;것은,&amp;nbsp;이&amp;nbsp;'파괴를&amp;nbsp;통한&amp;nbsp;지식의&amp;nbsp;흡수'라는&amp;nbsp;기괴한&amp;nbsp;예술&amp;nbsp;행위와&amp;nbsp;자신을&amp;nbsp;완전히&amp;nbsp;동일시하고&amp;nbsp;있음 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(2장) &lt;br /&gt;왕실&amp;nbsp;서적,&amp;nbsp;부르주아의&amp;nbsp;서재의&amp;nbsp;책들이&amp;nbsp;무자비하게&amp;nbsp;버려지는&amp;nbsp;광경을&amp;nbsp;보고&amp;nbsp;슬퍼할때도&amp;nbsp;있었다. &lt;br /&gt;하지만&amp;nbsp;시간이&amp;nbsp;지나고&amp;nbsp;사고가&amp;nbsp;몸에&amp;nbsp;자리&amp;nbsp;잡음으로써&amp;nbsp;끔찍한&amp;nbsp;환경을&amp;nbsp;보고도&amp;nbsp;웃을&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;되었다.&amp;nbsp;어머니가&amp;nbsp;돌아가셨다. &lt;br /&gt;아주&amp;nbsp;가벼워진&amp;nbsp;재가&amp;nbsp;되어&amp;nbsp;외삼촌의&amp;nbsp;무밭에&amp;nbsp;뿌려&amp;nbsp;수확하고&amp;nbsp;먹었다.&amp;nbsp;외면하고&amp;nbsp;싶은&amp;nbsp;현실&amp;nbsp;앞에서도&amp;nbsp;초연하고&amp;nbsp;파괴와&amp;nbsp;상실이&amp;nbsp;지닌&amp;nbsp;아름다움을&amp;nbsp;사랑하게&amp;nbsp;된&amp;nbsp;것&amp;nbsp;같다. &lt;br /&gt;책들에게&amp;nbsp;악행을&amp;nbsp;쌓아서&amp;nbsp;잘때마다&amp;nbsp;수&amp;nbsp;많은&amp;nbsp;책이&amp;nbsp;주위를&amp;nbsp;둘러&amp;nbsp;싸고&amp;nbsp;있고&amp;nbsp;그&amp;nbsp;책에&amp;nbsp;파묻혀&amp;nbsp;죽는게&amp;nbsp;아닐까&amp;nbsp;두려워한다. &lt;br /&gt;수년간&amp;nbsp;몸은&amp;nbsp;계속&amp;nbsp;압축되어간다.&amp;nbsp;책을&amp;nbsp;사랑하면서&amp;nbsp;두려워하는&amp;nbsp;존재이고,&amp;nbsp;자신이&amp;nbsp;압축해온&amp;nbsp;책들처럼&amp;nbsp;자신도&amp;nbsp;압축되어가는&amp;nbsp;모습이&amp;nbsp;기괴하면서&amp;nbsp;신기했다. &lt;br /&gt;사랑하면&amp;nbsp;닮아간다는&amp;nbsp;말도&amp;nbsp;이&amp;nbsp;상황에&amp;nbsp;적용된걸까?&amp;nbsp;잠시&amp;nbsp;책을&amp;nbsp;덮고&amp;nbsp;책&amp;nbsp;뒷편을&amp;nbsp;보니&amp;nbsp;'폐지&amp;nbsp;압축하느라&amp;nbsp;찌든&amp;nbsp;나는&amp;nbsp;내&amp;nbsp;손으로&amp;nbsp;압축한&amp;nbsp;책들과&amp;nbsp;흡사한&amp;nbsp;모습이&amp;nbsp;되어버렸다'라고&amp;nbsp;적혀&amp;nbsp;있는걸&amp;nbsp;보니&amp;nbsp;이&amp;nbsp;책의&amp;nbsp;핵심적인&amp;nbsp;부분&amp;nbsp;중&amp;nbsp;하나가&amp;nbsp;아닐까&amp;nbsp;생각된다. &lt;br /&gt;&lt;br /&gt;장면별&amp;nbsp;해석 &lt;br /&gt;1.&amp;nbsp;어머니의&amp;nbsp;뼛가루와&amp;nbsp;무밭&amp;nbsp;(초연함의&amp;nbsp;기원) &lt;br /&gt;어머니의&amp;nbsp;유골을&amp;nbsp;뿌린&amp;nbsp;밭에서&amp;nbsp;자란&amp;nbsp;무를&amp;nbsp;먹는다는&amp;nbsp;설정은&amp;nbsp;언뜻&amp;nbsp;엽기적으로&amp;nbsp;보이지만,&amp;nbsp;이는&amp;nbsp;'파괴와&amp;nbsp;죽음이&amp;nbsp;곧&amp;nbsp;새로운&amp;nbsp;생명과&amp;nbsp;창조로&amp;nbsp;이어진다'는&amp;nbsp;우주의&amp;nbsp;거대한&amp;nbsp;순환을&amp;nbsp;상징합니다. &lt;br /&gt;2.&amp;nbsp;책들의&amp;nbsp;복수와&amp;nbsp;압축되어&amp;nbsp;가는&amp;nbsp;자아 &lt;br /&gt;자다가&amp;nbsp;책&amp;nbsp;더미에&amp;nbsp;깔려&amp;nbsp;죽을지도&amp;nbsp;모른다는&amp;nbsp;공포는&amp;nbsp;단순히&amp;nbsp;물리적인&amp;nbsp;두려움이&amp;nbsp;아니라,&amp;nbsp;자신이&amp;nbsp;평생토록&amp;nbsp;짊어지고&amp;nbsp;온&amp;nbsp;인류&amp;nbsp;지성(활자)의&amp;nbsp;거대한&amp;nbsp;무게에&amp;nbsp;짓눌리는&amp;nbsp;인간의&amp;nbsp;모습을&amp;nbsp;형상화 &lt;br /&gt;괴테의&amp;nbsp;명언&amp;nbsp;&quot;태양만이&amp;nbsp;흑점을&amp;nbsp;지닐&amp;nbsp;권리가&amp;nbsp;있다&quot;라는&amp;nbsp;말처럼,&amp;nbsp;한탸의&amp;nbsp;지하실(오점,&amp;nbsp;똥물,&amp;nbsp;쓰레기)은&amp;nbsp;지식과&amp;nbsp;사색(태양,&amp;nbsp;위대함)이&amp;nbsp;탄생하는&amp;nbsp;성스러운&amp;nbsp;공간인&amp;nbsp;셈 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(3장) &lt;br /&gt;지금은&amp;nbsp;폐기물과&amp;nbsp;똥물이&amp;nbsp;흐르는&amp;nbsp;지하에서&amp;nbsp;일하고,&amp;nbsp;씻는것도&amp;nbsp;무지&amp;nbsp;싫어한다.&amp;nbsp;젊은&amp;nbsp;적에는&amp;nbsp;옷을&amp;nbsp;깔끔히&amp;nbsp;다리고&amp;nbsp;무도회장에&amp;nbsp;갔었다. &lt;br /&gt;만차라는&amp;nbsp;여자와&amp;nbsp;춤을&amp;nbsp;추고&amp;nbsp;사랑한다&amp;nbsp;말하고&amp;nbsp;만차도&amp;nbsp;사랑한다고&amp;nbsp;말해주었다.&amp;nbsp;그런데&amp;nbsp;나중에&amp;nbsp;회장&amp;nbsp;분위기가&amp;nbsp;이상해지더니,&amp;nbsp;알보고니&amp;nbsp;그녀가&amp;nbsp;변소에서&amp;nbsp;리본에&amp;nbsp;똥물을&amp;nbsp;묻혀서&amp;nbsp;춤&amp;nbsp;출때&amp;nbsp;사방에&amp;nbsp;흐트렸다고&amp;nbsp;한다. &lt;br /&gt;&lt;br /&gt;그렇게&amp;nbsp;자신의&amp;nbsp;실수&amp;nbsp;또는&amp;nbsp;천재지변으로&amp;nbsp;치욕을&amp;nbsp;겪었는데&amp;nbsp;주인공이&amp;nbsp;찾아가서&amp;nbsp;사과를&amp;nbsp;한다.&amp;nbsp;이해가&amp;nbsp;안되는&amp;nbsp;대목이다.&amp;nbsp;그녀에게&amp;nbsp;용서받고&amp;nbsp;계좌에&amp;nbsp;있는&amp;nbsp;돈을&amp;nbsp;털어&amp;nbsp;호텔에서&amp;nbsp;사치스럽게&amp;nbsp;보내고&amp;nbsp;그녀는&amp;nbsp;스키를&amp;nbsp;탔는데&amp;nbsp;스키&amp;nbsp;뒷&amp;nbsp;부분에&amp;nbsp;산속에&amp;nbsp;있던&amp;nbsp;똥이&amp;nbsp;묻어있었다.&amp;nbsp;다시&amp;nbsp;반복된&amp;nbsp;똥과의&amp;nbsp;악연으로&amp;nbsp;그녀는&amp;nbsp;치욕을&amp;nbsp;겪었고,&amp;nbsp;주인공과&amp;nbsp;멀어진&amp;nbsp;것&amp;nbsp;같다.&amp;nbsp;이해가&amp;nbsp;안되는&amp;nbsp;대목이지만,&amp;nbsp;결국&amp;nbsp;주인공과&amp;nbsp;있으면&amp;nbsp;그런&amp;nbsp;치욕을&amp;nbsp;겪는다고&amp;nbsp;생각하고&amp;nbsp;멀리하게&amp;nbsp;된걸까? &lt;br /&gt;&lt;br /&gt;'가장&amp;nbsp;성스럽고&amp;nbsp;아름다운&amp;nbsp;것'과&amp;nbsp;'가장&amp;nbsp;더럽고&amp;nbsp;추악한&amp;nbsp;것'이&amp;nbsp;언제나&amp;nbsp;한&amp;nbsp;끗&amp;nbsp;차이로&amp;nbsp;공존하는&amp;nbsp;인간의&amp;nbsp;삶' &lt;br /&gt;&lt;br /&gt;장면별&amp;nbsp;해석 &lt;br /&gt;&quot;당신같이&amp;nbsp;아름다운&amp;nbsp;존재가&amp;nbsp;이런&amp;nbsp;끔찍한&amp;nbsp;수치를&amp;nbsp;겪게&amp;nbsp;된&amp;nbsp;이&amp;nbsp;세상의&amp;nbsp;잔인함에&amp;nbsp;대해,&amp;nbsp;그리고&amp;nbsp;내가&amp;nbsp;그&amp;nbsp;치욕의&amp;nbsp;순간을&amp;nbsp;두&amp;nbsp;눈으로&amp;nbsp;똑똑히&amp;nbsp;보았다는&amp;nbsp;사실에&amp;nbsp;대해&amp;nbsp;온&amp;nbsp;마음을&amp;nbsp;다해&amp;nbsp;용서를&amp;nbsp;구한다&quot; &lt;br /&gt;만차&amp;nbsp;입장에서는&amp;nbsp;한탸의&amp;nbsp;얼굴을&amp;nbsp;볼&amp;nbsp;때마다&amp;nbsp;자신이&amp;nbsp;똥물을&amp;nbsp;뒤집어쓰고&amp;nbsp;비웃음을&amp;nbsp;사던&amp;nbsp;그&amp;nbsp;치욕스러운&amp;nbsp;순간이&amp;nbsp;반사되어&amp;nbsp;떠오를&amp;nbsp;수밖에&amp;nbsp;없었을&amp;nbsp;것 &lt;br /&gt;무도회의&amp;nbsp;아름다운&amp;nbsp;춤,&amp;nbsp;사랑의&amp;nbsp;고백,&amp;nbsp;하얀&amp;nbsp;눈밭에서의&amp;nbsp;스키...&amp;nbsp;이&amp;nbsp;모든&amp;nbsp;것은&amp;nbsp;낭만적이고&amp;nbsp;고상한&amp;nbsp;환상입니다.&amp;nbsp;하지만&amp;nbsp;작가는&amp;nbsp;그&amp;nbsp;환상&amp;nbsp;한가운데에&amp;nbsp;가장&amp;nbsp;냄새나고&amp;nbsp;피할&amp;nbsp;수&amp;nbsp;없는&amp;nbsp;현실(똥)을&amp;nbsp;툭&amp;nbsp;던져&amp;nbsp;넣습니다. &lt;br /&gt;아무리&amp;nbsp;고상한&amp;nbsp;척하는&amp;nbsp;인간도&amp;nbsp;결국&amp;nbsp;배설하는&amp;nbsp;육체를&amp;nbsp;가진&amp;nbsp;존재이며,&amp;nbsp;삶은&amp;nbsp;지독한&amp;nbsp;오물&amp;nbsp;속에서도&amp;nbsp;계속된다는&amp;nbsp;것을&amp;nbsp;보여주기&amp;nbsp;위함입니다.&amp;nbsp;한탸가&amp;nbsp;똥물이&amp;nbsp;흐르는&amp;nbsp;지하실에서&amp;nbsp;괴테와&amp;nbsp;칸트의&amp;nbsp;책을&amp;nbsp;읽으며&amp;nbsp;구원을&amp;nbsp;얻는&amp;nbsp;것과&amp;nbsp;같은&amp;nbsp;맥락 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(4장) &lt;br /&gt;소장&amp;nbsp;(가혹한&amp;nbsp;현실):&amp;nbsp;소장은&amp;nbsp;매일&amp;nbsp;술에&amp;nbsp;취해&amp;nbsp;일은&amp;nbsp;뒷전이고&amp;nbsp;사색에&amp;nbsp;빠져&amp;nbsp;있는&amp;nbsp;한탸를&amp;nbsp;경멸합니다.&amp;nbsp;그는&amp;nbsp;끊임없이&amp;nbsp;한탸를&amp;nbsp;윽박지르고&amp;nbsp;해고하겠다고&amp;nbsp;협박하며,&amp;nbsp;기계적인&amp;nbsp;속도와&amp;nbsp;능률만을&amp;nbsp;강요합니다. &lt;br /&gt;철학&amp;nbsp;교수&amp;nbsp;(내면의&amp;nbsp;지성):&amp;nbsp;소장의&amp;nbsp;구박&amp;nbsp;속에서도&amp;nbsp;기묘한&amp;nbsp;철학&amp;nbsp;교수가&amp;nbsp;등장합니다.&amp;nbsp;그는&amp;nbsp;한탸에게&amp;nbsp;10코루나를&amp;nbsp;쥐여주며&amp;nbsp;&quot;영감(늙은&amp;nbsp;육체)이&amp;nbsp;그&amp;nbsp;젊은이(늙지&amp;nbsp;않는&amp;nbsp;지성)에게&amp;nbsp;모질게&amp;nbsp;굴지&amp;nbsp;말라&quot;고&amp;nbsp;당부합니다. &lt;br /&gt;그는&amp;nbsp;한탸의&amp;nbsp;지하실을&amp;nbsp;쓰레기장이&amp;nbsp;아닌&amp;nbsp;지식의&amp;nbsp;공간으로&amp;nbsp;대우하는&amp;nbsp;인물(혹은&amp;nbsp;환상)입니다. &lt;br /&gt;집시&amp;nbsp;소녀&amp;nbsp;(말&amp;nbsp;없는&amp;nbsp;동반자):&amp;nbsp;냄새나는&amp;nbsp;지하실에&amp;nbsp;이름&amp;nbsp;모를&amp;nbsp;집시&amp;nbsp;소녀가&amp;nbsp;찾아옵니다.&amp;nbsp;그녀는&amp;nbsp;소장처럼&amp;nbsp;한탸를&amp;nbsp;비난하지도,&amp;nbsp;책들처럼&amp;nbsp;위대한&amp;nbsp;사상을&amp;nbsp;떠들지도&amp;nbsp;않습니다.&amp;nbsp;그저&amp;nbsp;난로&amp;nbsp;불을&amp;nbsp;쬐고&amp;nbsp;고기를&amp;nbsp;나눠&amp;nbsp;먹으며&amp;nbsp;완벽한&amp;nbsp;침묵&amp;nbsp;속에서&amp;nbsp;한탸의&amp;nbsp;곁을&amp;nbsp;조용히&amp;nbsp;지킵니다. &lt;br /&gt;&lt;br /&gt;장면별&amp;nbsp;해석 &lt;br /&gt;1.&amp;nbsp;소장의&amp;nbsp;분노와&amp;nbsp;한탸의&amp;nbsp;'시차' &lt;br /&gt;소장은&amp;nbsp;한탸를&amp;nbsp;끊임없이&amp;nbsp;윽박지르고&amp;nbsp;해고하겠다고&amp;nbsp;협박합니다.&amp;nbsp;겉으로&amp;nbsp;보기엔&amp;nbsp;게으르고&amp;nbsp;매일&amp;nbsp;술만&amp;nbsp;마시며&amp;nbsp;실적을&amp;nbsp;채우지&amp;nbsp;못하는&amp;nbsp;한탸를&amp;nbsp;향한&amp;nbsp;고용주의&amp;nbsp;흔한&amp;nbsp;짜증&amp;nbsp;같지만, &lt;br /&gt;사실&amp;nbsp;소장이&amp;nbsp;폭발하는&amp;nbsp;근본적인&amp;nbsp;이유는&amp;nbsp;한탸가&amp;nbsp;'현실&amp;nbsp;세계의&amp;nbsp;속도'를&amp;nbsp;따라가지&amp;nbsp;않고&amp;nbsp;자신만의&amp;nbsp;시간&amp;nbsp;속에&amp;nbsp;갇혀&amp;nbsp;있기&amp;nbsp;때문입니다. &lt;br /&gt;소장의&amp;nbsp;세계:&amp;nbsp;자본주의적이고&amp;nbsp;기계적인&amp;nbsp;효율성의&amp;nbsp;세계.&amp;nbsp;(빨리,&amp;nbsp;많이&amp;nbsp;압축해야&amp;nbsp;돈을&amp;nbsp;버는&amp;nbsp;곳) &lt;br /&gt;한탸의&amp;nbsp;세계:&amp;nbsp;철학적이고&amp;nbsp;사색적인&amp;nbsp;세계.&amp;nbsp;(한&amp;nbsp;권의&amp;nbsp;책을&amp;nbsp;압축하기&amp;nbsp;전에&amp;nbsp;그&amp;nbsp;의미를&amp;nbsp;되새기고&amp;nbsp;이별을&amp;nbsp;고하는&amp;nbsp;느린&amp;nbsp;시간) &lt;br /&gt;소장은&amp;nbsp;효율성을&amp;nbsp;방해하는&amp;nbsp;한탸를&amp;nbsp;경멸하지만,&amp;nbsp;한탸는&amp;nbsp;그&amp;nbsp;모욕을&amp;nbsp;그저&amp;nbsp;담담히&amp;nbsp;(때로는&amp;nbsp;비굴할&amp;nbsp;정도로&amp;nbsp;쉽게)&amp;nbsp;용서하고&amp;nbsp;받아넘깁니다.&amp;nbsp;한탸에게&amp;nbsp;진짜&amp;nbsp;중요한&amp;nbsp;것은&amp;nbsp;소장의&amp;nbsp;인정이&amp;nbsp;아니라&amp;nbsp;내면의&amp;nbsp;책들이기&amp;nbsp;때문입니다. &lt;br /&gt;&lt;br /&gt;2.&amp;nbsp;지식의&amp;nbsp;한계와&amp;nbsp;'침묵'이라는&amp;nbsp;구원&amp;nbsp;(집시&amp;nbsp;소녀) &lt;br /&gt;한탸는&amp;nbsp;평생&amp;nbsp;칸트와&amp;nbsp;헤겔&amp;nbsp;같은&amp;nbsp;위대한&amp;nbsp;사상가들의&amp;nbsp;책을&amp;nbsp;읽으며&amp;nbsp;진리를&amp;nbsp;찾으려&amp;nbsp;했고,&amp;nbsp;그&amp;nbsp;활자들은&amp;nbsp;그의&amp;nbsp;머릿속에서&amp;nbsp;쉴&amp;nbsp;새&amp;nbsp;없이&amp;nbsp;떠들었습니다(시끄러운&amp;nbsp;고독). &lt;br /&gt;하지만&amp;nbsp;정작&amp;nbsp;그가&amp;nbsp;살면서&amp;nbsp;가장&amp;nbsp;깊은&amp;nbsp;평온을&amp;nbsp;느낀&amp;nbsp;순간은&amp;nbsp;글을&amp;nbsp;읽을&amp;nbsp;줄도&amp;nbsp;모르는&amp;nbsp;집시&amp;nbsp;소녀가&amp;nbsp;곁에&amp;nbsp;있을&amp;nbsp;때였습니다. &lt;br /&gt;소녀의&amp;nbsp;'침묵'은&amp;nbsp;소장의&amp;nbsp;잔소리나&amp;nbsp;책들의&amp;nbsp;복잡한&amp;nbsp;철학과는&amp;nbsp;전혀&amp;nbsp;다른&amp;nbsp;차원의&amp;nbsp;위안이었습니다.&amp;nbsp;그녀&amp;nbsp;앞에서는&amp;nbsp;똑똑할&amp;nbsp;필요도,&amp;nbsp;유능할&amp;nbsp;필요도&amp;nbsp;없이&amp;nbsp;그저&amp;nbsp;한&amp;nbsp;명의&amp;nbsp;생명체로서&amp;nbsp;온기를&amp;nbsp;나눌&amp;nbsp;수&amp;nbsp;있었습니다. &lt;br /&gt;작가는&amp;nbsp;이를&amp;nbsp;통해&amp;nbsp;인간을&amp;nbsp;진정으로&amp;nbsp;살아가게&amp;nbsp;하고&amp;nbsp;치유하는&amp;nbsp;것은&amp;nbsp;복잡한&amp;nbsp;지식이나&amp;nbsp;언어가&amp;nbsp;아니라,&amp;nbsp;아무&amp;nbsp;조건&amp;nbsp;없이&amp;nbsp;곁을&amp;nbsp;내어주는&amp;nbsp;순수한&amp;nbsp;인간적&amp;nbsp;온기임을&amp;nbsp;말하고&amp;nbsp;있습니다. &lt;br /&gt;&lt;br /&gt;3.&amp;nbsp;현실에&amp;nbsp;적응하지&amp;nbsp;못하는&amp;nbsp;자의&amp;nbsp;안식처 &lt;br /&gt;소장의&amp;nbsp;고함&amp;nbsp;소리로&amp;nbsp;대변되는&amp;nbsp;바깥세상은&amp;nbsp;한탸에게&amp;nbsp;너무나&amp;nbsp;폭력적이고&amp;nbsp;피곤한&amp;nbsp;곳입니다.&amp;nbsp;한탸가&amp;nbsp;지하실에서&amp;nbsp;폐지와&amp;nbsp;맥주,&amp;nbsp;환영&amp;nbsp;같은&amp;nbsp;철학&amp;nbsp;교수,&amp;nbsp;그리고&amp;nbsp;말&amp;nbsp;없는&amp;nbsp;집시&amp;nbsp;소녀에게&amp;nbsp;기대는&amp;nbsp;것은&amp;nbsp;현실의&amp;nbsp;폭력으로부터&amp;nbsp;자신의&amp;nbsp;영혼을&amp;nbsp;지키기&amp;nbsp;위한&amp;nbsp;처절한&amp;nbsp;방어벽입니다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(5장) &lt;br /&gt;①&amp;nbsp;자기&amp;nbsp;일이&amp;nbsp;&quot;고전&amp;nbsp;교양과&amp;nbsp;신학&amp;nbsp;학위&quot;가&amp;nbsp;필요하다고&amp;nbsp;너스레를&amp;nbsp;떨고 &lt;br /&gt;②&amp;nbsp;정원에&amp;nbsp;신호탑&amp;middot;기차&amp;nbsp;세트를&amp;nbsp;꾸미던&amp;nbsp;삼촌의&amp;nbsp;죽음과&amp;nbsp;장례를&amp;nbsp;회상해요. &lt;br /&gt;삼촌은&amp;nbsp;뇌졸중으로&amp;nbsp;2주간&amp;nbsp;방치돼&amp;nbsp;부패했고,&amp;nbsp;한탸는&amp;nbsp;유해를&amp;nbsp;모아&amp;nbsp;삼촌의&amp;nbsp;고철&amp;nbsp;수집품과&amp;nbsp;칸트&amp;nbsp;책&amp;nbsp;한&amp;nbsp;권을&amp;nbsp;함께&amp;nbsp;관에&amp;nbsp;넣습니다. &lt;br /&gt;③&amp;nbsp;지하실에선&amp;nbsp;칸트의&amp;nbsp;『천체&amp;nbsp;이론』을&amp;nbsp;읽으며&amp;nbsp;일하고, &lt;br /&gt;④&amp;nbsp;반&amp;nbsp;고흐&amp;nbsp;「해바라기」&amp;nbsp;복제화를&amp;nbsp;압축하고, &lt;br /&gt;⑤&amp;nbsp;마지막에&amp;nbsp;전쟁&amp;nbsp;때&amp;nbsp;함께&amp;nbsp;살다&amp;nbsp;게슈타포에&amp;nbsp;끌려간&amp;nbsp;집시&amp;nbsp;여자를&amp;nbsp;떠올리죠. &lt;br /&gt;&lt;br /&gt;장면별&amp;nbsp;해석 &lt;br /&gt;1.&amp;nbsp;삼촌을&amp;nbsp;칸트와&amp;nbsp;함께&amp;nbsp;묻는&amp;nbsp;장면 &lt;br /&gt;삼촌의&amp;nbsp;죽음과&amp;nbsp;칸트&amp;nbsp;책을&amp;nbsp;관에&amp;nbsp;넣는&amp;nbsp;장례는&amp;nbsp;개인적&amp;nbsp;상실과&amp;nbsp;한탸의&amp;nbsp;지적&amp;nbsp;추구가&amp;nbsp;하나로&amp;nbsp;합쳐지는&amp;nbsp;것을&amp;nbsp;의미한다고&amp;nbsp;읽힙니다. &lt;br /&gt;즉&amp;nbsp;한탸에게&amp;nbsp;책은&amp;nbsp;곧&amp;nbsp;사람을&amp;nbsp;기리는&amp;nbsp;방식이라는&amp;nbsp;거죠.&amp;nbsp;폐지&amp;nbsp;압축이라는&amp;nbsp;천한&amp;nbsp;노동이&amp;nbsp;사실은&amp;nbsp;장례&amp;nbsp;의식처럼&amp;nbsp;신성하다는&amp;nbsp;해석으로&amp;nbsp;이어져요. &lt;br /&gt;&lt;br /&gt;2.&amp;nbsp;빨강&amp;middot;초록&amp;nbsp;버튼&amp;nbsp;=&amp;nbsp;전진과&amp;nbsp;후퇴 &lt;br /&gt;압축기의&amp;nbsp;두&amp;nbsp;버튼이&amp;nbsp;곧&amp;nbsp;한탸의&amp;nbsp;세계관이에요.&amp;nbsp;그는&amp;nbsp;일&amp;nbsp;속에서&amp;nbsp;진보와&amp;nbsp;퇴행을&amp;nbsp;동시에&amp;nbsp;경험하며,&amp;nbsp;이는&amp;nbsp;근원으로의&amp;nbsp;회귀와&amp;nbsp;진보&amp;nbsp;사이의&amp;nbsp;균형으로&amp;nbsp;나타난다고&amp;nbsp;분석됩니다. &lt;br /&gt;&lt;br /&gt;3.&amp;nbsp;해바라기를&amp;nbsp;압축하는&amp;nbsp;장면 &lt;br /&gt;가장&amp;nbsp;어둡고&amp;nbsp;더러운&amp;nbsp;지하실에서&amp;nbsp;고흐의&amp;nbsp;해바라기가&amp;nbsp;잠깐&amp;nbsp;빛을&amp;nbsp;냅니다.&amp;nbsp;압축기의&amp;nbsp;반복적&amp;nbsp;움직임과&amp;nbsp;해바라기의&amp;nbsp;존재가&amp;nbsp;그에게&amp;nbsp;덧없는&amp;nbsp;아름다움과&amp;nbsp;질서의&amp;nbsp;감각을&amp;nbsp;준다는&amp;nbsp;해석이에요. &lt;br /&gt;파괴(압축)와&amp;nbsp;아름다움(보존)이&amp;nbsp;한&amp;nbsp;공간에&amp;nbsp;공존하는,&amp;nbsp;이&amp;nbsp;작품&amp;nbsp;특유의&amp;nbsp;역설을&amp;nbsp;압축한&amp;nbsp;장면으로&amp;nbsp;봅니다. &lt;br /&gt;&lt;br /&gt;4.&amp;nbsp;집시&amp;nbsp;여자의&amp;nbsp;기억 &lt;br /&gt;이건&amp;nbsp;큰&amp;nbsp;주제로&amp;nbsp;끌어올려져요.&amp;nbsp;어머니&amp;middot;삼촌&amp;middot;만차&amp;middot;집시&amp;nbsp;여자에&amp;nbsp;대한&amp;nbsp;기억이&amp;nbsp;5~6장&amp;nbsp;성찰의&amp;nbsp;중심이며,&amp;nbsp;기억과&amp;nbsp;상실이&amp;nbsp;한탸를&amp;nbsp;끝없이&amp;nbsp;따라다닌다고&amp;nbsp;봅니다. &lt;br /&gt;연날리기&amp;nbsp;같은&amp;nbsp;소박한&amp;nbsp;기쁨만&amp;nbsp;원했던&amp;nbsp;그녀가&amp;nbsp;게슈타포에&amp;nbsp;끌려간&amp;nbsp;건,&amp;nbsp;역사의&amp;nbsp;폭력에&amp;nbsp;짓밟힌&amp;nbsp;순수의&amp;nbsp;상징으로&amp;nbsp;읽혀요. &lt;br /&gt;&lt;br /&gt;5.&amp;nbsp;나치&amp;nbsp;책을&amp;nbsp;압축하며&amp;nbsp;느낀&amp;nbsp;위안 &lt;br /&gt;한탸의&amp;nbsp;끊임없는&amp;nbsp;저항&amp;nbsp;행위가&amp;nbsp;그보다&amp;nbsp;훨씬&amp;nbsp;거대한&amp;nbsp;억압&amp;nbsp;체제를&amp;nbsp;이기지&amp;nbsp;못할&amp;nbsp;수도&amp;nbsp;있음을&amp;nbsp;깨닫게&amp;nbsp;한다.&amp;nbsp;그럼에도&amp;nbsp;그의&amp;nbsp;투쟁은&amp;nbsp;도덕적이고&amp;nbsp;개인적이다. &lt;br /&gt;즉&amp;nbsp;폐지&amp;nbsp;압축이라는&amp;nbsp;우스꽝스러운&amp;nbsp;노동&amp;nbsp;자체가&amp;nbsp;권위주의에&amp;nbsp;굴복하지&amp;nbsp;않으려는&amp;nbsp;조용한&amp;nbsp;저항이라는&amp;nbsp;해석입니다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(6장) &lt;br /&gt;거대한&amp;nbsp;현대식&amp;nbsp;폐지&amp;nbsp;압축&amp;nbsp;공장(부브니)을&amp;nbsp;방문하게&amp;nbsp;된&amp;nbsp;주인공&amp;nbsp;한탸는&amp;nbsp;자신의&amp;nbsp;작고&amp;nbsp;낡은&amp;nbsp;지하실과는&amp;nbsp;전혀&amp;nbsp;다른,&amp;nbsp;차갑고&amp;nbsp;압도적인&amp;nbsp;기계적&amp;nbsp;공정을&amp;nbsp;목격합니다. &lt;br /&gt;그곳의&amp;nbsp;젊은&amp;nbsp;노동자들은&amp;nbsp;맥주&amp;nbsp;대신&amp;nbsp;우유를&amp;nbsp;마시며,&amp;nbsp;책을&amp;nbsp;펼쳐보거나&amp;nbsp;사유하는&amp;nbsp;일&amp;nbsp;없이&amp;nbsp;오직&amp;nbsp;엄청난&amp;nbsp;속도로&amp;nbsp;폐지와&amp;nbsp;책들을&amp;nbsp;짓이기고&amp;nbsp;압축합니다. &lt;br /&gt;그들은&amp;nbsp;휴가나&amp;nbsp;소비재&amp;nbsp;같은&amp;nbsp;현실적이고&amp;nbsp;세속적인&amp;nbsp;쾌락에만&amp;nbsp;관심이&amp;nbsp;있을&amp;nbsp;뿐,&amp;nbsp;책&amp;nbsp;속에&amp;nbsp;담긴&amp;nbsp;위대한&amp;nbsp;지성이나&amp;nbsp;파괴가&amp;nbsp;품은&amp;nbsp;역설적&amp;nbsp;아름다움에는&amp;nbsp;철저히&amp;nbsp;무관심합니다. &lt;br /&gt;이&amp;nbsp;압도적인&amp;nbsp;효율의&amp;nbsp;세계&amp;nbsp;앞에서&amp;nbsp;한탸는&amp;nbsp;자신이&amp;nbsp;평생을&amp;nbsp;바쳐온&amp;nbsp;'사랑을&amp;nbsp;담은&amp;nbsp;파괴'의&amp;nbsp;의식이&amp;nbsp;더&amp;nbsp;이상&amp;nbsp;설&amp;nbsp;자리가&amp;nbsp;없음을&amp;nbsp;깨닫고,&amp;nbsp;시대에&amp;nbsp;뒤처진&amp;nbsp;자신의&amp;nbsp;존재와&amp;nbsp;무너진&amp;nbsp;꿈에&amp;nbsp;깊은&amp;nbsp;절망과&amp;nbsp;상실감을&amp;nbsp;느낍니다. &lt;br /&gt;&lt;br /&gt;장면별&amp;nbsp;해석 &lt;br /&gt;1.&amp;nbsp;부브니&amp;nbsp;공장과&amp;nbsp;젊은&amp;nbsp;노동자들&amp;nbsp;(효율성이라는&amp;nbsp;폭력) &lt;br /&gt;새로운&amp;nbsp;공장의&amp;nbsp;노동자들은&amp;nbsp;한탸와&amp;nbsp;완벽한&amp;nbsp;대척점에&amp;nbsp;서&amp;nbsp;있습니다.&amp;nbsp;한탸에게&amp;nbsp;폐지&amp;nbsp;압축이&amp;nbsp;지식을&amp;nbsp;흡수하고&amp;nbsp;책과&amp;nbsp;영적인&amp;nbsp;교감을&amp;nbsp;나누는&amp;nbsp;신성한&amp;nbsp;의식이었다면, &lt;br /&gt;새로운&amp;nbsp;세대에게&amp;nbsp;이는&amp;nbsp;그저&amp;nbsp;할당량을&amp;nbsp;채우고&amp;nbsp;돈을&amp;nbsp;벌기&amp;nbsp;위한&amp;nbsp;기계적인&amp;nbsp;노동일&amp;nbsp;뿐입니다. &lt;br /&gt;작가는&amp;nbsp;이를&amp;nbsp;통해&amp;nbsp;깊은&amp;nbsp;사유와&amp;nbsp;낭만이&amp;nbsp;거세되고,&amp;nbsp;오직&amp;nbsp;속도와&amp;nbsp;능률만이&amp;nbsp;미덕이&amp;nbsp;된&amp;nbsp;현대&amp;nbsp;사회의&amp;nbsp;비극을&amp;nbsp;선명하게&amp;nbsp;보여줍니다. &lt;br /&gt;&lt;br /&gt;2.&amp;nbsp;우유와&amp;nbsp;맥주의&amp;nbsp;대비&amp;nbsp;(사유의&amp;nbsp;상실) &lt;br /&gt;한탸가&amp;nbsp;쉴&amp;nbsp;새&amp;nbsp;없이&amp;nbsp;마시는&amp;nbsp;맥주는&amp;nbsp;고독&amp;nbsp;속에서&amp;nbsp;철학적&amp;nbsp;사유의&amp;nbsp;흐름을&amp;nbsp;돕고&amp;nbsp;내면의&amp;nbsp;세계로&amp;nbsp;침잠하게&amp;nbsp;만드는&amp;nbsp;영적인&amp;nbsp;촉매제였습니다. &lt;br /&gt;반면,&amp;nbsp;젊은&amp;nbsp;노동자들이&amp;nbsp;마시는&amp;nbsp;우유는&amp;nbsp;건강을&amp;nbsp;유지하고&amp;nbsp;기계&amp;nbsp;부품처럼&amp;nbsp;흠결&amp;nbsp;없이&amp;nbsp;일하기&amp;nbsp;위한&amp;nbsp;육체적&amp;nbsp;연료에&amp;nbsp;불과합니다.&amp;nbsp;이는&amp;nbsp;취기가&amp;nbsp;가져다주는&amp;nbsp;환상과&amp;nbsp;철학이&amp;nbsp;사라진,&amp;nbsp;철저히&amp;nbsp;건조하고&amp;nbsp;규격화된&amp;nbsp;현대성을&amp;nbsp;상징합니다. &lt;br /&gt;&lt;br /&gt;3.&amp;nbsp;무너진&amp;nbsp;은퇴의&amp;nbsp;꿈과&amp;nbsp;구시대의&amp;nbsp;종말 &lt;br /&gt;오랫동안&amp;nbsp;함께해&amp;nbsp;온&amp;nbsp;낡은&amp;nbsp;압축기를&amp;nbsp;은퇴&amp;nbsp;후&amp;nbsp;집으로&amp;nbsp;가져가려던&amp;nbsp;한탸의&amp;nbsp;낭만적인&amp;nbsp;꿈은,&amp;nbsp;위대한&amp;nbsp;사상들을&amp;nbsp;무자비하게&amp;nbsp;삼켜버리는&amp;nbsp;거대한&amp;nbsp;최신식&amp;nbsp;기계&amp;nbsp;앞에서&amp;nbsp;산산조각&amp;nbsp;납니다. &lt;br /&gt;이는&amp;nbsp;그가&amp;nbsp;평생을&amp;nbsp;바쳐&amp;nbsp;구축해&amp;nbsp;온&amp;nbsp;'시끄러운&amp;nbsp;고독'의&amp;nbsp;세계가&amp;nbsp;더&amp;nbsp;이상&amp;nbsp;현실에&amp;nbsp;존재할&amp;nbsp;자리가&amp;nbsp;없음을&amp;nbsp;깨닫는&amp;nbsp;순간입니다. &lt;br /&gt;이&amp;nbsp;비참한&amp;nbsp;각성은&amp;nbsp;한탸로&amp;nbsp;하여금&amp;nbsp;거대한&amp;nbsp;시대의&amp;nbsp;변화와&amp;nbsp;단절감을&amp;nbsp;느끼게&amp;nbsp;하며,&amp;nbsp;훗날&amp;nbsp;자신이&amp;nbsp;직접&amp;nbsp;압축기&amp;nbsp;속으로&amp;nbsp;들어가는&amp;nbsp;비극적인&amp;nbsp;결말을&amp;nbsp;향한&amp;nbsp;치명적인&amp;nbsp;전환점이&amp;nbsp;됩니다. &lt;br /&gt;&lt;br /&gt;(7장)&lt;/p&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;한탸의 낡고 냄새나는 지하실에 '사회주의 노동단' 소속의 젊은 인부 두 명이 파견 나옵니다. 그들은 한탸와 달리 장갑을 끼고 아주 위생적이고 기계적인 태도로 폐지를 다룹니다. 책을 펼쳐보는 일 따위는 전혀 없이, 오직 할당량을 채우기 위해 엄청난 속도로 폐지를 압축합니다. 그들의 철저하고 차가운 작업 방식을 보며 한탸는 자신의 지하실이 마치 '미생물 연구소'나 수술실로 변해버린 것 같다고 느낍니다. 맥주 대신 우유를 마시며, 일말의 사유나 감상 없이 책을 그저 '물리적인 쓰레기'로만 취급하는 그들에게 한탸의 작업장은 완전히 점령당합니다. 결국 한탸는 자신이 평생을 바친 압축기와 지하실을 이 젊은 세대에게 빼앗기고, 글씨가 전혀 없는 깨끗한 백지를 포장하는 부서(멜란트리흐)로 쫓겨날 것이라는 통보를 받으며 깊은 절망과 환멸에 빠집니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;6&quot; data-ke-size=&quot;size23&quot;&gt;장면별 해석&lt;/h3&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7&quot;&gt;1. '미생물 연구소'의 비유 (멸균된 사유의 세계)&lt;/b&gt; 젊은 노동자들이 장갑을 끼고 흠결 없이 일하는 모습을 한탸가 '미생물 연구소' 같다고 표현한 것은 매우 핵심적인 비유입니다. 한탸에게 책이란 먼지, 피, 땀, 오물과 섞여 있는 생생한 유기체이자 사상의 온상이었습니다. 하지만 새로운 세대에게 책은 그저 위생적으로 치워야 할 폐기물에 불과합니다. '미생물 연구소'처럼 멸균된 공간이라는 것은, 곧 책이 품고 있는 위험하고도 매혹적인 사상(세균)이 완벽하게 박멸된 현대 사회의 차가움을 상징합니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8&quot;&gt;2. 성소의 상실과 세대 교체&lt;/b&gt; 이 장에서 한탸는 물리적인 일터뿐만 아니라 자신의 영혼이 머물던 우주를 빼앗깁니다. 능률과 속도만을 숭배하는 젊은 노동자들의 모습은 6장(부브니 공장)에서 엿보았던 폭력적인 시대의 변화가 마침내 한탸의 가장 내밀한 공간까지 침투했음을 보여줍니다. 책과 대화를 나누며 느리게 일하던 늙은 장인은 효율성이라는 이름 아래 철저히 무기력해집니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9&quot;&gt;3. 백지 포장 부서로의 전출 (무(無)의 선고)&lt;/b&gt; 이전까지 한탸는 세상의 온갖 더러운 폐지 속에서 위대한 문장들을 건져 올리며 존재 의미를 찾았습니다. 그러나 그에게 새로 주어진 일은 '백지'를 포장하는 것입니다. 글자(사상)가 없는 깨끗한 종이는 한탸에게 아무런 의미도 창출할 수 없는 끔찍한 공백이자 영적인 사형 선고와도 같습니다. 이는 8장에서 그가 텅 빈 세상에 편입되는 대신, 활자가 가득한 압축기 속으로 스스로 걸어 들어가게 만드는 결정적인 도화선이 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;(8장) &lt;br /&gt;한탸는&amp;nbsp;백지&amp;nbsp;포장&amp;nbsp;부서로&amp;nbsp;출근하는&amp;nbsp;대신,&amp;nbsp;자신이&amp;nbsp;35년&amp;nbsp;동안&amp;nbsp;머물렀던&amp;nbsp;냄새나고&amp;nbsp;익숙한&amp;nbsp;지하실로&amp;nbsp;돌아옵니다.&amp;nbsp;그는&amp;nbsp;마지막으로&amp;nbsp;맥주를&amp;nbsp;마시며&amp;nbsp;지난&amp;nbsp;삶과&amp;nbsp;자신이&amp;nbsp;사랑했던&amp;nbsp;사람들의&amp;nbsp;환영,&amp;nbsp;그리고&amp;nbsp;위대한&amp;nbsp;사상가들의&amp;nbsp;가르침을&amp;nbsp;조용히&amp;nbsp;관조합니다. &lt;br /&gt;그는&amp;nbsp;자신이&amp;nbsp;평생토록&amp;nbsp;묶어왔던&amp;nbsp;아름다운&amp;nbsp;폐지&amp;nbsp;꾸러미처럼&amp;nbsp;스스로를&amp;nbsp;완성하기로&amp;nbsp;마음먹습니다.&amp;nbsp;가장&amp;nbsp;사랑하는&amp;nbsp;노발리스의&amp;nbsp;책&amp;nbsp;한&amp;nbsp;권을&amp;nbsp;가슴에&amp;nbsp;꼭&amp;nbsp;품은&amp;nbsp;채,&amp;nbsp;책과&amp;nbsp;폐지가&amp;nbsp;가득한&amp;nbsp;압축기&amp;nbsp;통&amp;nbsp;속으로&amp;nbsp;웅크리고&amp;nbsp;들어갑니다. &lt;br /&gt;그리고&amp;nbsp;자신이&amp;nbsp;수만&amp;nbsp;번은&amp;nbsp;눌렀을&amp;nbsp;그&amp;nbsp;초록색&amp;nbsp;버튼(전진)을&amp;nbsp;누릅니다.&amp;nbsp;압축기의&amp;nbsp;벽이&amp;nbsp;서서히&amp;nbsp;자신을&amp;nbsp;향해&amp;nbsp;좁혀오고&amp;nbsp;갈비뼈가&amp;nbsp;부서질&amp;nbsp;듯한&amp;nbsp;압박이&amp;nbsp;시작되는&amp;nbsp;순간,&amp;nbsp;한탸는&amp;nbsp;공포&amp;nbsp;대신&amp;nbsp;미소를&amp;nbsp;지으며&amp;nbsp;마침내&amp;nbsp;진정한&amp;nbsp;'시끄러운&amp;nbsp;고독'의&amp;nbsp;절정에&amp;nbsp;도달했음을&amp;nbsp;느낍니다. &lt;br /&gt;&lt;br /&gt;장면별&amp;nbsp;해석 &lt;br /&gt;1.&amp;nbsp;노발리스의&amp;nbsp;책과&amp;nbsp;낭만주의적&amp;nbsp;합일 &lt;br /&gt;한탸가&amp;nbsp;마지막&amp;nbsp;순간&amp;nbsp;가슴에&amp;nbsp;품은&amp;nbsp;책이&amp;nbsp;'노발리스'라는&amp;nbsp;점은&amp;nbsp;깊은&amp;nbsp;의미를&amp;nbsp;가집니다.&amp;nbsp;독일&amp;nbsp;낭만주의&amp;nbsp;철학자&amp;nbsp;노발리스는&amp;nbsp;&quot;사랑하는&amp;nbsp;대상과의&amp;nbsp;완전한&amp;nbsp;합일&quot;과&amp;nbsp;&quot;죽음을&amp;nbsp;통한&amp;nbsp;영원으로의&amp;nbsp;귀환&quot;을&amp;nbsp;노래한&amp;nbsp;인물입니다. &lt;br /&gt;한탸는&amp;nbsp;단순히&amp;nbsp;죽음을&amp;nbsp;택한&amp;nbsp;것이&amp;nbsp;아니라,&amp;nbsp;노발리스의&amp;nbsp;철학처럼&amp;nbsp;자신이&amp;nbsp;평생&amp;nbsp;사랑하고&amp;nbsp;읽어온&amp;nbsp;'활자(지식)'라는&amp;nbsp;대상과&amp;nbsp;육체적으로&amp;nbsp;완벽하게&amp;nbsp;하나가&amp;nbsp;되는&amp;nbsp;낭만적이고&amp;nbsp;숭고한&amp;nbsp;결합을&amp;nbsp;이룬&amp;nbsp;것입니다. &lt;br /&gt;&lt;br /&gt;2.&amp;nbsp;백지(공허)에&amp;nbsp;대한&amp;nbsp;거부와&amp;nbsp;저항 &lt;br /&gt;8장은&amp;nbsp;한탸가&amp;nbsp;왜&amp;nbsp;그토록&amp;nbsp;극단적인&amp;nbsp;선택을&amp;nbsp;했는지를&amp;nbsp;명확히&amp;nbsp;보여줍니다.&amp;nbsp;그에게&amp;nbsp;백지를&amp;nbsp;포장하는&amp;nbsp;새로운&amp;nbsp;직장은&amp;nbsp;의미도,&amp;nbsp;사유도,&amp;nbsp;역사도&amp;nbsp;없는&amp;nbsp;끔찍한&amp;nbsp;공허(무,&amp;nbsp;無)입니다. &lt;br /&gt;그는&amp;nbsp;자본주의와&amp;nbsp;능률이&amp;nbsp;지배하는&amp;nbsp;'아무것도&amp;nbsp;쓰이지&amp;nbsp;않은&amp;nbsp;무의미한&amp;nbsp;세상'에서&amp;nbsp;기계처럼&amp;nbsp;사느니,&amp;nbsp;'위대한&amp;nbsp;사상들이&amp;nbsp;시끄럽게&amp;nbsp;떠드는&amp;nbsp;폐지&amp;nbsp;더미'&amp;nbsp;속에서&amp;nbsp;스스로&amp;nbsp;하나의&amp;nbsp;텍스트가&amp;nbsp;되어&amp;nbsp;소멸하는&amp;nbsp;쪽을&amp;nbsp;택합니다. &lt;br /&gt;이는&amp;nbsp;효율성만을&amp;nbsp;좇는&amp;nbsp;폭력적인&amp;nbsp;현대&amp;nbsp;세계에&amp;nbsp;대한&amp;nbsp;그만의&amp;nbsp;가장&amp;nbsp;철학적이고&amp;nbsp;미학적인&amp;nbsp;저항입니다. &lt;br /&gt;&lt;br /&gt;3.&amp;nbsp;고통을&amp;nbsp;넘어선&amp;nbsp;'시끄러운&amp;nbsp;고독'의&amp;nbsp;완성 &lt;br /&gt;압축기가&amp;nbsp;작동하고&amp;nbsp;공간이&amp;nbsp;좁아지는&amp;nbsp;끔찍한&amp;nbsp;순간에도,&amp;nbsp;한탸의&amp;nbsp;내면&amp;nbsp;묘사는&amp;nbsp;놀랍도록&amp;nbsp;고요하고&amp;nbsp;평화롭습니다. &lt;br /&gt;이는&amp;nbsp;그가&amp;nbsp;육체적&amp;nbsp;고통을&amp;nbsp;초월하여&amp;nbsp;영적인&amp;nbsp;해탈의&amp;nbsp;경지에&amp;nbsp;이르렀음을&amp;nbsp;암시합니다.&amp;nbsp;35년&amp;nbsp;동안&amp;nbsp;타인의&amp;nbsp;사상을&amp;nbsp;읽고&amp;nbsp;남의&amp;nbsp;책을&amp;nbsp;묶어왔던&amp;nbsp;그가, &lt;br /&gt;비로소&amp;nbsp;자기&amp;nbsp;자신의&amp;nbsp;삶&amp;nbsp;자체를&amp;nbsp;하나의&amp;nbsp;아름다운&amp;nbsp;'꾸러미(작품)'로&amp;nbsp;완성해&amp;nbsp;내며&amp;nbsp;영원한&amp;nbsp;안식처인&amp;nbsp;'시끄러운&amp;nbsp;고독'&amp;nbsp;속에&amp;nbsp;온전히&amp;nbsp;안착하게&amp;nbsp;된&amp;nbsp;것입니다. &lt;br /&gt;&lt;br /&gt;4.&amp;nbsp;파괴와&amp;nbsp;창조의&amp;nbsp;거대한&amp;nbsp;순환의&amp;nbsp;끝 &lt;br /&gt;2장에서&amp;nbsp;어머니의&amp;nbsp;유골이&amp;nbsp;밭의&amp;nbsp;거름이&amp;nbsp;되고&amp;nbsp;그것을&amp;nbsp;다시&amp;nbsp;먹었던&amp;nbsp;엽기적이면서도&amp;nbsp;신성한&amp;nbsp;순환의&amp;nbsp;상징이&amp;nbsp;8장에서&amp;nbsp;한탸&amp;nbsp;본인에게&amp;nbsp;적용됩니다.&amp;nbsp;그가&amp;nbsp;압축기에서&amp;nbsp;짓이겨져&amp;nbsp;종이&amp;nbsp;더미와&amp;nbsp;섞이는&amp;nbsp;것은&amp;nbsp;끝이&amp;nbsp;아닙니다. &lt;br /&gt;그의&amp;nbsp;피와&amp;nbsp;살이&amp;nbsp;위대한&amp;nbsp;책들과&amp;nbsp;섞여&amp;nbsp;새로운&amp;nbsp;폐지&amp;nbsp;꾸러미(또&amp;nbsp;다른&amp;nbsp;탄생)로&amp;nbsp;거듭나는&amp;nbsp;것,&amp;nbsp;즉&amp;nbsp;'파괴를&amp;nbsp;통한&amp;nbsp;새로운&amp;nbsp;창조'라는&amp;nbsp;작품&amp;nbsp;전체를&amp;nbsp;관통하는&amp;nbsp;거대한&amp;nbsp;우주적&amp;nbsp;순환의&amp;nbsp;섭리를&amp;nbsp;주인공&amp;nbsp;스스로&amp;nbsp;증명해&amp;nbsp;내는&amp;nbsp;결말입니다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(전체) &lt;br /&gt;주인공&amp;nbsp;한탸는&amp;nbsp;프라하의&amp;nbsp;어느&amp;nbsp;어둡고&amp;nbsp;냄새나는&amp;nbsp;지하실에서&amp;nbsp;35년째&amp;nbsp;폐지와&amp;nbsp;책을&amp;nbsp;압축하는&amp;nbsp;일을&amp;nbsp;하고&amp;nbsp;있습니다.&amp;nbsp;겉보기엔&amp;nbsp;시대의&amp;nbsp;낙오자이자&amp;nbsp;쓸모없는&amp;nbsp;폐기물을&amp;nbsp;치우는&amp;nbsp;늙은&amp;nbsp;노동자지만,&amp;nbsp;그는&amp;nbsp;버려진&amp;nbsp;책들&amp;nbsp;속에서&amp;nbsp;칸트,&amp;nbsp;니체,&amp;nbsp;헤겔&amp;nbsp;등&amp;nbsp;위대한&amp;nbsp;지성들의&amp;nbsp;문장을&amp;nbsp;읽고&amp;nbsp;외우며&amp;nbsp;자신만의&amp;nbsp;거대한&amp;nbsp;정신세계를&amp;nbsp;구축해&amp;nbsp;온&amp;nbsp;철학자입니다.&amp;nbsp;그는&amp;nbsp;기계적으로&amp;nbsp;폐지를&amp;nbsp;압축하는&amp;nbsp;대신,&amp;nbsp;책의&amp;nbsp;내용과&amp;nbsp;의미에&amp;nbsp;맞추어&amp;nbsp;명화의&amp;nbsp;복제품을&amp;nbsp;덧대고&amp;nbsp;정성스럽게&amp;nbsp;아름다운&amp;nbsp;'꾸러미'를&amp;nbsp;만드는&amp;nbsp;예술적&amp;nbsp;의식을&amp;nbsp;치르며&amp;nbsp;살아갑니다. &lt;br /&gt;&lt;br /&gt;그는&amp;nbsp;은퇴&amp;nbsp;후&amp;nbsp;자신이&amp;nbsp;평생&amp;nbsp;다뤄온&amp;nbsp;압축기를&amp;nbsp;사서&amp;nbsp;집으로&amp;nbsp;가져가겠다는&amp;nbsp;소박하고&amp;nbsp;낭만적인&amp;nbsp;꿈을&amp;nbsp;품고&amp;nbsp;있습니다.&amp;nbsp;똥물이&amp;nbsp;흐르는&amp;nbsp;지하실에서&amp;nbsp;일하며,&amp;nbsp;과거의&amp;nbsp;연인&amp;nbsp;만차와의&amp;nbsp;엇갈린&amp;nbsp;인연,&amp;nbsp;순수했던&amp;nbsp;집시&amp;nbsp;소녀와의&amp;nbsp;추억,&amp;nbsp;그리고&amp;nbsp;죽은&amp;nbsp;외삼촌의&amp;nbsp;장례&amp;nbsp;등&amp;nbsp;인간사의&amp;nbsp;기괴함과&amp;nbsp;아름다움을&amp;nbsp;관조하며&amp;nbsp;묵묵히&amp;nbsp;살아갑니다. &lt;br /&gt;&lt;br /&gt;하지만&amp;nbsp;세상은&amp;nbsp;변합니다.&amp;nbsp;거대한&amp;nbsp;최신식&amp;nbsp;압축&amp;nbsp;공장(부브니)을&amp;nbsp;방문한&amp;nbsp;한탸는,&amp;nbsp;책을&amp;nbsp;단&amp;nbsp;한&amp;nbsp;줄도&amp;nbsp;읽지&amp;nbsp;않고&amp;nbsp;오직&amp;nbsp;'효율과&amp;nbsp;속도'만을&amp;nbsp;위해&amp;nbsp;책을&amp;nbsp;무자비하게&amp;nbsp;짓이기며&amp;nbsp;우유를&amp;nbsp;마시는&amp;nbsp;젊은&amp;nbsp;노동자들을&amp;nbsp;목격합니다.&amp;nbsp;사유와&amp;nbsp;낭만이&amp;nbsp;완전히&amp;nbsp;거세된&amp;nbsp;시대의&amp;nbsp;변화&amp;nbsp;앞에서&amp;nbsp;한탸의&amp;nbsp;낡은&amp;nbsp;방식은&amp;nbsp;폐기&amp;nbsp;처분될&amp;nbsp;위기에&amp;nbsp;처합니다. &lt;br /&gt;&lt;br /&gt;결국&amp;nbsp;한탸는&amp;nbsp;글자가&amp;nbsp;하나도&amp;nbsp;적히지&amp;nbsp;않은&amp;nbsp;'백지'를&amp;nbsp;포장하는&amp;nbsp;부서로&amp;nbsp;발령받게&amp;nbsp;됩니다.&amp;nbsp;사상이&amp;nbsp;존재하지&amp;nbsp;않는&amp;nbsp;텅&amp;nbsp;빈&amp;nbsp;백지의&amp;nbsp;세계,&amp;nbsp;즉&amp;nbsp;철저한&amp;nbsp;무(無)의&amp;nbsp;세계를&amp;nbsp;견딜&amp;nbsp;수&amp;nbsp;없었던&amp;nbsp;그는&amp;nbsp;자신이&amp;nbsp;평생&amp;nbsp;머물렀던&amp;nbsp;지하실로&amp;nbsp;돌아옵니다.&amp;nbsp;가장&amp;nbsp;사랑하는&amp;nbsp;노발리스의&amp;nbsp;책을&amp;nbsp;품에&amp;nbsp;안고&amp;nbsp;직접&amp;nbsp;압축기&amp;nbsp;안으로&amp;nbsp;들어간&amp;nbsp;그는,&amp;nbsp;스스로&amp;nbsp;초록색&amp;nbsp;버튼(전진)을&amp;nbsp;눌러&amp;nbsp;자신이&amp;nbsp;평생&amp;nbsp;사랑했던&amp;nbsp;책들과&amp;nbsp;함께&amp;nbsp;짓이겨지며&amp;nbsp;영원한&amp;nbsp;활자로&amp;nbsp;남는&amp;nbsp;길을&amp;nbsp;선택합니다. &lt;br /&gt;&lt;br /&gt;전체&amp;nbsp;핵심&amp;nbsp;해석 &lt;br /&gt;작품을&amp;nbsp;관통하는&amp;nbsp;가장&amp;nbsp;중요한&amp;nbsp;철학적,&amp;nbsp;문학적&amp;nbsp;메시지는&amp;nbsp;크게&amp;nbsp;네&amp;nbsp;가지로&amp;nbsp;압축할&amp;nbsp;수&amp;nbsp;있습니다. &lt;br /&gt;&lt;br /&gt;1.&amp;nbsp;파괴와&amp;nbsp;창조,&amp;nbsp;추악함과&amp;nbsp;숭고함의&amp;nbsp;공존 &lt;br /&gt;이&amp;nbsp;소설의&amp;nbsp;가장&amp;nbsp;큰&amp;nbsp;특징은&amp;nbsp;가장&amp;nbsp;더러운&amp;nbsp;곳에서&amp;nbsp;가장&amp;nbsp;거룩한&amp;nbsp;것이&amp;nbsp;피어난다는&amp;nbsp;역설입니다.&amp;nbsp;한탸의&amp;nbsp;작업장은&amp;nbsp;파리가&amp;nbsp;들끓고&amp;nbsp;쥐가&amp;nbsp;돌아다니며&amp;nbsp;오물이&amp;nbsp;흐르는&amp;nbsp;지하실입니다.&amp;nbsp;하지만&amp;nbsp;그곳은&amp;nbsp;인류의&amp;nbsp;가장&amp;nbsp;위대한&amp;nbsp;사상이&amp;nbsp;숨&amp;nbsp;쉬는&amp;nbsp;성소입니다.&amp;nbsp;책을&amp;nbsp;'파괴'하는&amp;nbsp;압축&amp;nbsp;과정은&amp;nbsp;역설적으로&amp;nbsp;지식을&amp;nbsp;한탸의&amp;nbsp;머릿속에&amp;nbsp;'창조'하고&amp;nbsp;각인시키는&amp;nbsp;과정이&amp;nbsp;됩니다.&amp;nbsp;무도회의&amp;nbsp;아름다움&amp;nbsp;뒤에&amp;nbsp;똥물이&amp;nbsp;있고,&amp;nbsp;어머니의&amp;nbsp;뼛가루가&amp;nbsp;무밭의&amp;nbsp;거름이&amp;nbsp;되어&amp;nbsp;다시&amp;nbsp;생명으로&amp;nbsp;돌아오듯,&amp;nbsp;삶의&amp;nbsp;추악함과&amp;nbsp;죽음이&amp;nbsp;결코&amp;nbsp;아름다움과&amp;nbsp;분리되어&amp;nbsp;있지&amp;nbsp;않다는&amp;nbsp;우주적&amp;nbsp;순환을&amp;nbsp;보여줍니다. &lt;br /&gt;&lt;br /&gt;2.&amp;nbsp;기계적&amp;nbsp;현대&amp;nbsp;사회에&amp;nbsp;대한&amp;nbsp;비판&amp;nbsp;(효율성&amp;nbsp;vs&amp;nbsp;인간성) &lt;br /&gt;작품&amp;nbsp;후반부에&amp;nbsp;등장하는&amp;nbsp;'부브니&amp;nbsp;공장'과&amp;nbsp;'백지'는&amp;nbsp;자본주의와&amp;nbsp;근대화가&amp;nbsp;가져온&amp;nbsp;비인간성을&amp;nbsp;상징합니다. &lt;br /&gt;&lt;br /&gt;한탸의&amp;nbsp;세계:&amp;nbsp;느림,&amp;nbsp;사색,&amp;nbsp;맥주(환상과&amp;nbsp;영감),&amp;nbsp;낭만,&amp;nbsp;의미의&amp;nbsp;탐구 &lt;br /&gt;현대의&amp;nbsp;세계:&amp;nbsp;빠름,&amp;nbsp;능률,&amp;nbsp;우유(기계적&amp;nbsp;육체&amp;nbsp;유지),&amp;nbsp;백지(사유의&amp;nbsp;공백) &lt;br /&gt;&lt;br /&gt;한탸가&amp;nbsp;쫓겨나는&amp;nbsp;과정은&amp;nbsp;단순히&amp;nbsp;늙은&amp;nbsp;노동자의&amp;nbsp;해고가&amp;nbsp;아니라,&amp;nbsp;문학과&amp;nbsp;철학,&amp;nbsp;깊은&amp;nbsp;사유가&amp;nbsp;속도전과&amp;nbsp;물질만능주의에&amp;nbsp;밀려나&amp;nbsp;폐기되는&amp;nbsp;현대&amp;nbsp;문명의&amp;nbsp;비극을&amp;nbsp;은유합니다. &lt;br /&gt;&lt;br /&gt;3.&amp;nbsp;'시끄러운&amp;nbsp;고독'의&amp;nbsp;진정한&amp;nbsp;의미 &lt;br /&gt;제목인&amp;nbsp;'너무&amp;nbsp;시끄러운&amp;nbsp;고독'은&amp;nbsp;작품의&amp;nbsp;정체성&amp;nbsp;그&amp;nbsp;자체입니다.&amp;nbsp;한탸는&amp;nbsp;물리적으로는&amp;nbsp;철저히&amp;nbsp;혼자(고독)이지만,&amp;nbsp;그의&amp;nbsp;머릿속은&amp;nbsp;수천&amp;nbsp;년&amp;nbsp;역사를&amp;nbsp;관통하는&amp;nbsp;천재들의&amp;nbsp;목소리와&amp;nbsp;철학적&amp;nbsp;질문들로&amp;nbsp;끊임없이&amp;nbsp;대화가&amp;nbsp;오가는&amp;nbsp;가장&amp;nbsp;번잡하고&amp;nbsp;'시끄러운'&amp;nbsp;상태입니다.&amp;nbsp;보통&amp;nbsp;사람들에게&amp;nbsp;고독은&amp;nbsp;끔찍한&amp;nbsp;외로움이지만,&amp;nbsp;한탸에게&amp;nbsp;고독은&amp;nbsp;세속의&amp;nbsp;잣대에서&amp;nbsp;벗어나&amp;nbsp;진리와&amp;nbsp;독대할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;가장&amp;nbsp;풍요롭고&amp;nbsp;자유로운&amp;nbsp;영혼의&amp;nbsp;상태를&amp;nbsp;의미합니다. &lt;br /&gt;&lt;br /&gt;4.&amp;nbsp;죽음으로&amp;nbsp;완성한&amp;nbsp;예술적&amp;nbsp;저항 &lt;br /&gt;결말부의&amp;nbsp;자살은&amp;nbsp;세상에&amp;nbsp;패배한&amp;nbsp;자의&amp;nbsp;도피가&amp;nbsp;아닙니다.&amp;nbsp;그것은&amp;nbsp;사유를&amp;nbsp;금지하는&amp;nbsp;세상(백지의&amp;nbsp;세계)에&amp;nbsp;동화되기를&amp;nbsp;거부한&amp;nbsp;가장&amp;nbsp;주체적이고&amp;nbsp;미학적인&amp;nbsp;저항입니다. &lt;br /&gt;그는&amp;nbsp;평생&amp;nbsp;버려진&amp;nbsp;종이들을&amp;nbsp;모아&amp;nbsp;아름다운&amp;nbsp;꾸러미를&amp;nbsp;만들며&amp;nbsp;세상의&amp;nbsp;폭력에&amp;nbsp;조용히&amp;nbsp;맞서&amp;nbsp;왔습니다.&amp;nbsp;시대가&amp;nbsp;그&amp;nbsp;의식마저&amp;nbsp;빼앗으려&amp;nbsp;하자,&amp;nbsp;그는&amp;nbsp;자기&amp;nbsp;자신의&amp;nbsp;육체를&amp;nbsp;기꺼이&amp;nbsp;마지막&amp;nbsp;폐지&amp;nbsp;꾸러미로&amp;nbsp;내어놓습니다.&amp;nbsp;압축기의&amp;nbsp;'초록색&amp;nbsp;버튼'을&amp;nbsp;직접&amp;nbsp;눌렀다는&amp;nbsp;것은,&amp;nbsp;타인이나&amp;nbsp;시대에&amp;nbsp;의해&amp;nbsp;버려지는&amp;nbsp;것이&amp;nbsp;아니라&amp;nbsp;스스로&amp;nbsp;삶의&amp;nbsp;결말을&amp;nbsp;결정짓고&amp;nbsp;자신이&amp;nbsp;사랑한&amp;nbsp;지식의&amp;nbsp;세계와&amp;nbsp;영원히&amp;nbsp;합일(合一)하겠다는&amp;nbsp;숭고한&amp;nbsp;선언입니다.&lt;/p&gt;</description>
      <category>1달 1독후감</category>
      <category>너무시끄러운고독</category>
      <category>독후감</category>
      <author>표자</author>
      <guid isPermaLink="true">https://pyoja.tistory.com/660</guid>
      <comments>https://pyoja.tistory.com/entry/%EB%8F%85%ED%9B%84%EA%B0%90-%EB%84%88%EB%AC%B4-%EC%8B%9C%EB%81%84%EB%9F%AC%EC%9A%B4-%EA%B3%A0%EB%8F%85#entry660comment</comments>
      <pubDate>Mon, 29 Jun 2026 16:32:24 +0900</pubDate>
    </item>
    <item>
      <title>⚡ [1일 1CS] 주식 호가창은 어떻게 실시간으로 바뀔까? 웹소켓(WebSocket)과 WebRTC</title>
      <link>https://pyoja.tistory.com/entry/%E2%9A%A1-1%EC%9D%BC-1CS-%EC%A3%BC%EC%8B%9D-%ED%98%B8%EA%B0%80%EC%B0%BD%EC%9D%80-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%8B%A4%EC%8B%9C%EA%B0%84%EC%9C%BC%EB%A1%9C-%EB%B0%94%EB%80%94%EA%B9%8C-%EC%9B%B9%EC%86%8C%EC%BC%93WebSocket%EA%B3%BC-WebRTC</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. HTTP의 한계: &quot;내가 묻기 전엔 대답하지 마&quot;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹의 기본 통신 방식인 &lt;b&gt;HTTP&lt;/b&gt;는 아주 차갑고 단호한 규칙을 가집니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;단방향:&lt;/b&gt; 무조건 클라이언트(브라우저)가 먼저 요청(Request)해야만 서버가 응답(Response)합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;비연결성(Stateless):&lt;/b&gt; 응답을 주고 나면 매몰차게 전화를 끊어버립니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버에 새로운 주식 가격이 업데이트되어도, 클라이언트가 &quot;새 가격 있어?&quot;라고 묻기 전까지는 서버가 먼저 알려줄 방법이 없습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. 과거의 꼼수들: 폴링(Polling)과 롱 폴링(Long Polling)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹소켓이 없던 시절, 개발자들은 어떻게든 실시간처럼 보이게 하려고 꼼수를 썼습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;폴링 (Polling): &quot;도착했어?&quot;&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1초마다 클라이언트가 서버에 &quot;새 메시지 있어?&quot;라고 묻습니다.&lt;/li&gt;
&lt;li&gt;문제점: 99%의 요청은 &quot;아니, 없어&quot;라는 의미 없는 대답으로 돌아옵니다. 서버가 트래픽 폭탄을 맞고 터집니다. (어린아이가 뒷좌석에서 &quot;언제 도착해?&quot;를 1초마다 묻는 것과 같습니다.)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;롱 폴링 (Long Polling): &quot;대답할 때까지 안 끊어&quot;&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트가 요청을 보내면, 서버는 새 데이터가 생길 때까지 대답을 안 하고 통화(Connection)를 쥐고 버팁니다. 데이터가 생기면 그때 응답하고 끊습니다.&lt;/li&gt;
&lt;li&gt;문제점: 데이터가 자주 바뀌는 주식 호가창 같은 곳에서는 어차피 계속 끊고 다시 연결해야 하므로 성능이 매우 떨어집니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. 웹소켓 (WebSocket): &quot;우리, 전화 끊지 말고 계속 얘기하자&quot;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 비효율을 참다못해 HTML5에서 등장한 혁명이 바로 웹소켓(WebSocket)입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;동작 원리:&lt;/b&gt; 처음에만 HTTP로 인사를 나눈 뒤, 프로토콜을 ws:// 또는 wss://로 업그레이드합니다. 그 후에는 클라이언트와 서버 사이에 &lt;b&gt;항상 열려있는 양방향 8차선 고속도로&lt;/b&gt;가 뚫립니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;장점:&lt;/b&gt; 서버가 원할 때 언제든 클라이언트에게 데이터를 쏠 수 있습니다. (Server Push) 매번 요청 헤더를 보낼 필요가 없어 네트워크 낭비가 극적으로 줄어듭니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;언제 쓰나요?&lt;/b&gt; 카카오톡 같은 &lt;b&gt;채팅 앱&lt;/b&gt;, 주식 &lt;b&gt;호가창&lt;/b&gt;, 실시간 &lt;b&gt;멀티플레이 게임&lt;/b&gt;, 구글 문서 동시 편집 등 &quot;데이터가 자주, 양방향으로 오가는 곳&quot;에 씁니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. WebRTC: &quot;서버는 빠져! 우리끼리 직접 주고받을게&quot;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹소켓이 완벽해 보이지만, '화상 회의(Zoom, Google Meet)'를 웹소켓으로 만들면 큰일이 납니다. 영상 데이터는 용량이 너무 커서, 모든 참가자의 영상이 중앙 서버를 거쳐 가면 서버 비용이 감당할 수 없을 정도로 폭발하기 때문입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 등장하는 구원투수가 WebRTC (Web Real-Time Communication)입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;동작 원리:&lt;/b&gt; &lt;b&gt;P2P(Peer-to-Peer) 방식&lt;/b&gt;입니다. 중앙 서버는 처음에 A와 B가 서로의 IP 주소를 교환할 수 있게 소개팅(Signaling)만 시켜주고 빠집니다. 그 후에는 A와 B가 서버를 거치지 않고 직접 영상 데이터를 주고받습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;프로토콜:&lt;/b&gt; 웹소켓은 꼼꼼한 TCP를 쓰지만, WebRTC는 빠르고 쿨한 &lt;b&gt;UDP&lt;/b&gt;를 씁니다. (화상 회의 중에 픽셀 하나가 깨져도 무시하고 다음 프레임을 넘겨야 속도가 유지되기 때문입니다.)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;언제 쓰나요?&lt;/b&gt; &lt;b&gt;화상 회의, 실시간 라이브 스트리밍, P2P 파일 공유&lt;/b&gt; 등 &quot;대용량 미디어 데이터를 극도의 짧은 지연 시간(Low Latency)으로 보내야 할 때&quot; 씁니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  요약&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;과거의 방식 (Polling):&lt;/b&gt; 클라이언트가 서버에 계속 질문하는 방식. 매우 비효율적.&lt;br /&gt;&lt;b&gt;웹소켓 (WebSocket):&lt;/b&gt; 서버와 클라이언트가 연결을 유지하며 양방향으로 데이터를 주고받는 방식. (채팅, 주식에 적합 / 중앙 서버 부하 있음)&lt;br /&gt;&lt;b&gt;WebRTC:&lt;/b&gt; 서버를 거치지 않고 유저끼리 직접(P2P) 데이터를 주고받는 방식. (화상 통화에 적합 / 서버 부하 적음, UDP 사용)&lt;/p&gt;
&lt;/blockquote&gt;</description>
      <category>1일 1CS(Computer Science)</category>
      <category>CS</category>
      <category>polling</category>
      <category>webrtc</category>
      <category>웹소켓</category>
      <author>표자</author>
      <guid isPermaLink="true">https://pyoja.tistory.com/659</guid>
      <comments>https://pyoja.tistory.com/entry/%E2%9A%A1-1%EC%9D%BC-1CS-%EC%A3%BC%EC%8B%9D-%ED%98%B8%EA%B0%80%EC%B0%BD%EC%9D%80-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%8B%A4%EC%8B%9C%EA%B0%84%EC%9C%BC%EB%A1%9C-%EB%B0%94%EB%80%94%EA%B9%8C-%EC%9B%B9%EC%86%8C%EC%BC%93WebSocket%EA%B3%BC-WebRTC#entry659comment</comments>
      <pubDate>Mon, 8 Jun 2026 13:42:46 +0900</pubDate>
    </item>
  </channel>
</rss>