<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Slowly but Surely</title>
    <link>https://withseungryu.tistory.com/</link>
    <description>모두가 들어와서 유용한 이슈들 및 IT, 컴퓨터과학, 개발 정보들을 얻어갈 수 있는 블로그입니다.</description>
    <language>ko</language>
    <pubDate>Mon, 20 Jul 2026 12:44:44 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>WithSeungRyu</managingEditor>
    <image>
      <title>Slowly but Surely</title>
      <url>https://tistory1.daumcdn.net/tistory/2915270/attach/86c466cca6f7439b9d60fd504e744d9a</url>
      <link>https://withseungryu.tistory.com</link>
    </image>
    <item>
      <title>[세상 모든 이슈] 메타 2025 Q3 실적 발표</title>
      <link>https://withseungryu.tistory.com/163</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qDEAP/dJMcaa4D1g1/eeqwj1DesMRlFFkMZMfHkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qDEAP/dJMcaa4D1g1/eeqwj1DesMRlFFkMZMfHkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qDEAP/dJMcaa4D1g1/eeqwj1DesMRlFFkMZMfHkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqDEAP%2FdJMcaa4D1g1%2Feeqwj1DesMRlFFkMZMfHkk%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;539&quot; height=&quot;359&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-end=&quot;129&quot; data-start=&quot;107&quot; data-ke-size=&quot;size23&quot;&gt;1. 실적 요약 &amp;amp; 주요 수치&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;765&quot; data-start=&quot;130&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;236&quot; data-start=&quot;130&quot;&gt;2025년 9월 30일 마감 3분기의 매출은 &lt;b&gt;미국 51.24 십억 달러&lt;/b&gt;로 전년 대비 약 26% 증가했습니다.&lt;/li&gt;
&lt;li data-end=&quot;401&quot; data-start=&quot;237&quot;&gt;순이익(회계기준, GAAP)은 &lt;b&gt;미국 2.71 십억 달러&lt;/b&gt;, 주당순이익(EPS)은 &lt;b&gt;US$1.05&lt;/b&gt;로 대폭 하락했습니다. 이는 약 &lt;b&gt;US$15.93 십억 달러의 일-회성 세금 충당금&lt;/b&gt;이 반영되었기 때문입니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;519&quot; data-start=&quot;402&quot;&gt;세금 충당금을 제외한 비-GAAP 기준 순이익은 &lt;b&gt;US$18.64 십억 달러&lt;/b&gt;, 조정 EPS는 &lt;b&gt;US$7.25&lt;/b&gt;로 발표됐습니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;629&quot; data-start=&quot;520&quot;&gt;광고 관련 수익이 강세를 보였습니다. 광고 게재수가 전년 대비 약 14% 증가했고, 광고 단가도 약 10% 상승했습니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;765&quot; data-start=&quot;630&quot;&gt;비용 및 지출 측면에서, 연구개발 및 일반관리비 등이 크게 증가했으며, 2025년 연간 자본지출(Capex)은 &lt;b&gt;US$70-72 십억 달러&lt;/b&gt;로 상향 조정되었습니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;770&quot; data-start=&quot;767&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;800&quot; data-start=&quot;772&quot; data-ke-size=&quot;size23&quot;&gt;2. 시장 반응 &amp;amp; 애널리스트 의견 변화&lt;/h3&gt;
&lt;h4 data-end=&quot;816&quot; data-start=&quot;801&quot; data-ke-size=&quot;size20&quot;&gt;  주가 반응&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1026&quot; data-start=&quot;817&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;928&quot; data-start=&quot;817&quot;&gt;실적 발표 직후 META 주가는 &lt;b&gt;약 11% 이상 폭락&lt;/b&gt;했으며, 이는 미국 기업 역사상 단일 일 낙폭 상위권에 속했습니다. &lt;span data-state=&quot;closed&quot;&gt;&lt;span data-testid=&quot;webpage-citation-pill&quot;&gt;&lt;a href=&quot;https://www.marketwatch.com/story/metas-stock-slides-toward-its-worst-day-in-years-as-wall-street-pans-runaway-ai-spending-3c563d6f?utm_source=chatgpt.com&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;마켓워치&lt;/span&gt;&lt;span&gt;+1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1026&quot; data-start=&quot;929&quot;&gt;특히, 이번 주가 급락에는 &amp;ldquo;막대한 AI 인프라 투자에 대한 시장의 우려&amp;rdquo;가 큰 영향을 미쳤습니다. &lt;span data-state=&quot;closed&quot;&gt;&lt;span data-testid=&quot;webpage-citation-pill&quot;&gt;&lt;a href=&quot;https://www.reuters.com/business/TSVY4EWA2NJ6FH3FS6KFBUYQFU-2025-10-30/?utm_source=chatgpt.com&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Reuters&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;1049&quot; data-start=&quot;1028&quot; data-ke-size=&quot;size20&quot;&gt;  애널리스트 의견 변화&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1324&quot; data-start=&quot;1050&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1234&quot; data-start=&quot;1050&quot;&gt;일부 애널리스트들은 META에 대해 투자의견을 하향 조정했습니다. 예컨대 Oppenheimer &amp;amp; Co.는 &amp;lsquo;Outperform&amp;rsquo;에서 &amp;lsquo;Perform&amp;rsquo;으로 낮췄고, 과도한 자본지출(Capex) 및 AI 사업의 수익화 불확실성을 주된 이유로 들었습니다. &lt;span data-state=&quot;closed&quot;&gt;&lt;span data-testid=&quot;webpage-citation-pill&quot;&gt;&lt;a href=&quot;https://m.economictimes.com/news/international/us/meta-stock-today-is-collapsing-why-is-meta-crashing-after-reporting-earnings-is-the-bubble-finally-bursting/articleshow/124955628.cms?utm_source=chatgpt.com&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;The Economic Times&lt;/span&gt;&lt;span&gt;+1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1324&quot; data-start=&quot;1235&quot;&gt;반면, 장기 관점에서 META의 구조적 성장 가능성을 긍정하는 의견도 존재합니다. &lt;span data-state=&quot;closed&quot;&gt;&lt;span data-testid=&quot;webpage-citation-pill&quot;&gt;&lt;a href=&quot;https://seekingalpha.com/article/4835059-meta-q3-selloff-looks-like-a-gift-for-long-term-investors-upgrade?utm_source=chatgpt.com&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Seeking Alpha&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;1338&quot; data-start=&quot;1326&quot; data-ke-size=&quot;size20&quot;&gt;  요약&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;번호팩터시장/애널리스트 반응
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1514&quot; data-start=&quot;1339&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;1514&quot; data-start=&quot;1393&quot;&gt;
&lt;tr data-end=&quot;1421&quot; data-start=&quot;1393&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1395&quot; data-start=&quot;1393&quot;&gt;1&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1403&quot; data-start=&quot;1395&quot;&gt;매출 성장&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1421&quot; data-start=&quot;1403&quot;&gt;긍정적 (광고 수익 증가)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1457&quot; data-start=&quot;1422&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1424&quot; data-start=&quot;1422&quot;&gt;2&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1433&quot; data-start=&quot;1424&quot;&gt;순이익 급감&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1457&quot; data-start=&quot;1433&quot;&gt;부정적 (세금 충당금 + 비용 증가)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1480&quot; data-start=&quot;1458&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1460&quot; data-start=&quot;1458&quot;&gt;3&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1470&quot; data-start=&quot;1460&quot;&gt;자본지출 확대&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1480&quot; data-start=&quot;1470&quot;&gt;우려 스파크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1514&quot; data-start=&quot;1481&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1483&quot; data-start=&quot;1481&quot;&gt;4&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1494&quot; data-start=&quot;1483&quot;&gt;애널리스트 의견&lt;/td&gt;
&lt;td data-end=&quot;1514&quot; data-start=&quot;1494&quot; data-col-size=&quot;sm&quot;&gt;일부 하향 &amp;rarr; 장기 긍정 유지&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;1519&quot; data-start=&quot;1516&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1543&quot; data-start=&quot;1521&quot; data-ke-size=&quot;size23&quot;&gt;3. 향후 전략 &amp;amp; 기술 흐름&lt;/h3&gt;
&lt;h4 data-end=&quot;1565&quot; data-start=&quot;1544&quot; data-ke-size=&quot;size20&quot;&gt;  기술 전략 하이라이트&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2020&quot; data-start=&quot;1566&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1732&quot; data-start=&quot;1566&quot;&gt;META는 AI 인프라 강화, 슈퍼컴퓨터 구축, AI 모델 개발 등에 강력히 집중하고 있으며, CEO Mark Zuckerberg는 &amp;ldquo;Meta Superintelligence Labs&amp;rdquo;라는 구체적인 이름을 언급했습니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1878&quot; data-start=&quot;1733&quot;&gt;AI 추천 알고리즘 개선을 통해 플랫폼 내 사용자 참여 시간이 증가하고 있는 점이 특징입니다. 예컨대 Threads에서 참여시간이 전년 대비 약 10% 증가했다는 발표가 나왔습니다.&lt;/li&gt;
&lt;li data-end=&quot;2020&quot; data-start=&quot;1879&quot;&gt;가상현실(VR) 및 증강현실(AR) 사업을 담당하는 &amp;lsquo;Reality Labs&amp;rsquo; 부문은 여전히 적자를 지속하고 있지만, META는 이 영역을 미래 핵심 사업으로 보고 있습니다.&lt;span data-state=&quot;closed&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;2040&quot; data-start=&quot;2022&quot; data-ke-size=&quot;size20&quot;&gt;  향후 흐름 전망&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2440&quot; data-start=&quot;2041&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2159&quot; data-start=&quot;2041&quot;&gt;META는 2025년 4분기 매출을 &lt;b&gt;US$56-59 십억 달러&lt;/b&gt;로 안내했으며, 광고 수익 증가가 주요 성장 동력으로 예상됩니다.&lt;/li&gt;
&lt;li data-end=&quot;2273&quot; data-start=&quot;2160&quot;&gt;그러나 2026년에는 &lt;b&gt;Capex가 더욱 증가&lt;/b&gt;할 가능성이 높으며, 이에 따른 수익화 시점에 대한 불확실성도 존재합니다.&amp;nbsp;&lt;span data-state=&quot;closed&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;2352&quot; data-start=&quot;2274&quot;&gt;따라서 투자자는 META를 &amp;lsquo;단기 실적 트리거&amp;rsquo;보다는 &amp;lsquo;중장기 구조적 변화의 주체&amp;rsquo;로 접근하는 것이 보다 적합하다고 볼 수 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;2440&quot; data-start=&quot;2353&quot;&gt;또한 AIㆍ광고 플랫폼ㆍAR/VR 등 사업 다각화가 진행 중이므로, 이와 연관된 생태계 기업(반도체, 데이터센터, 클라우드 등)에도 관심을 둘 만합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;2445&quot; data-start=&quot;2442&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;2471&quot; data-start=&quot;2447&quot; data-ke-size=&quot;size23&quot;&gt;4. 주식 투자자 관점에서의 생각&lt;/h3&gt;
&lt;p data-end=&quot;2518&quot; data-start=&quot;2472&quot; data-ke-size=&quot;size16&quot;&gt;저는 IT와 주식 투자를 좋아하는 사람으로서 다음과 같은 관점을 갖고 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2936&quot; data-start=&quot;2519&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2582&quot; data-start=&quot;2519&quot;&gt;META는 &lt;b&gt;매출 성장이 여전히 견조&lt;/b&gt;하고 AI 기반 광고 효율이 개선되고 있다는 점에서 긍정적입니다.&lt;/li&gt;
&lt;li data-end=&quot;2683&quot; data-start=&quot;2583&quot;&gt;반면, 이번 실적 발표에서 드러난 &lt;b&gt;순이익 급감 + 대규모 자본지출 확대&lt;/b&gt;는 경계해야 할 요소입니다. 특히, 시장은 &amp;lsquo;투자 대비 수익화&amp;rsquo; 시점을 중요하게 보고 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;2865&quot; data-start=&quot;2684&quot;&gt;따라서 투자 전략으로는 다음과 같이 접근할 수 있다고 생각합니다:
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2865&quot; data-start=&quot;2727&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2768&quot; data-start=&quot;2727&quot;&gt;중장기 관점에서 META의 AI 사업이 본격화될 가능성에 베팅하되,&lt;/li&gt;
&lt;li data-end=&quot;2818&quot; data-start=&quot;2771&quot;&gt;단기적으로는 자본지출 증가가 실적에 어떤 영향을 주는지를 면밀히 모니터링하고,&lt;/li&gt;
&lt;li data-end=&quot;2865&quot; data-start=&quot;2821&quot;&gt;투자 비중을 조절하며 리스크 관리(예: 일부 청산, 손절선 설정) 병행.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2936&quot; data-start=&quot;2866&quot;&gt;또한, META 단독보다는 META 생태계(광고&amp;middot;AI칩&amp;middot;데이터센터 등) 포지션을 함께 보는 것이 더 전략적일 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;2941&quot; data-start=&quot;2938&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;2955&quot; data-start=&quot;2943&quot; data-ke-size=&quot;size23&quot;&gt;✍️ 마무리&lt;/h3&gt;
&lt;p data-end=&quot;3251&quot; data-start=&quot;2956&quot; data-ke-size=&quot;size16&quot;&gt;META의 이번 3분기 실적은 &lt;b&gt;표면적으로는 매출&amp;middot;사용자 수 증가라는 긍정적인 흐름&lt;/b&gt;을 보여주었으나, &lt;b&gt;수익성 악화와 투자 확대라는 그림자&lt;/b&gt;도 분명히 있었습니다.&lt;br /&gt;IT/AI 시대의 중심에 서 있는 기업인 만큼 장기적으로는 매력적이지만, &amp;lsquo;투자 대비 수익 실현&amp;rsquo;이라는 확인이 이루어지기 전까지는 &lt;b&gt;신중한 접근이 필요&lt;/b&gt;하다고 생각합니다.&lt;br /&gt;지금은 META가 &lt;b&gt;도약을 준비하는 시점&lt;/b&gt;이며, 투자자 입장에서는 &amp;ldquo;미래에 대한 베팅&amp;rdquo;을 고려하되 &amp;ldquo;지금의 비용 구조와 리스크&amp;rdquo;를 간과하지 않아야 할 때라고 봅니다.&lt;/p&gt;</description>
      <category>세상 모든 이슈</category>
      <category>meta</category>
      <category>뉴스</category>
      <category>메타</category>
      <category>인스타그램</category>
      <category>재테크</category>
      <category>주식</category>
      <category>주커버그</category>
      <category>투자</category>
      <category>페이스북</category>
      <author>WithSeungRyu</author>
      <guid isPermaLink="true">https://withseungryu.tistory.com/163</guid>
      <comments>https://withseungryu.tistory.com/163#entry163comment</comments>
      <pubDate>Fri, 31 Oct 2025 10:20:55 +0900</pubDate>
    </item>
    <item>
      <title>[세상 모든 이슈] 젠슨 황&amp;middot;이재용&amp;middot;정의선 회동</title>
      <link>https://withseungryu.tistory.com/162</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cCMKoQ/dJMcajN3aI9/jWKeYtrD9VGhFMzaeJkEBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cCMKoQ/dJMcajN3aI9/jWKeYtrD9VGhFMzaeJkEBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cCMKoQ/dJMcajN3aI9/jWKeYtrD9VGhFMzaeJkEBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcCMKoQ%2FdJMcajN3aI9%2FjWKeYtrD9VGhFMzaeJkEBK%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;642&quot; height=&quot;428&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-end=&quot;515&quot; data-start=&quot;491&quot; data-ke-size=&quot;size26&quot;&gt;  깐부치킨에서 벌어진 &amp;lsquo;치맥 회동&amp;rsquo;&lt;/h2&gt;
&lt;p data-end=&quot;954&quot; data-start=&quot;767&quot; data-ke-size=&quot;size16&quot;&gt;10월 30일 저녁 7시 30분경,&lt;br /&gt;서울 강남 &lt;b&gt;삼성동 깐부치킨 매장&lt;/b&gt;에는 세 명의 글로벌 톱 리더가 등장했습니다.&lt;br /&gt;젠슨 황 CEO는 이재용, 정의선 회장을 만나며 직접 &lt;b&gt;선물 상자&lt;/b&gt;를 전달했는데,&lt;br /&gt;그 안에는 &lt;b&gt;일본산 위스키 &amp;lsquo;하쿠슈&amp;rsquo;&lt;/b&gt;, 그리고 &lt;b&gt;AI 슈퍼컴퓨터 관련 장비&lt;/b&gt;가 포함된 것으로 전해졌습니다.&lt;/p&gt;
&lt;p data-end=&quot;1069&quot; data-start=&quot;956&quot; data-ke-size=&quot;size16&quot;&gt;세 사람은 편안한 평상복 차림으로 등장해&lt;br /&gt;치킨과 맥주, 소주를 곁들이며 격식 없이 대화를 나눴고,&lt;br /&gt;현장에서는 젠슨 황이 &lt;b&gt;직접 라이브 방송을 진행&lt;/b&gt;하며 즐거운 분위기를 연출하기도 했습니다.&lt;/p&gt;
&lt;blockquote data-end=&quot;1129&quot; data-start=&quot;1071&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;p data-end=&quot;1129&quot; data-start=&quot;1073&quot; data-ke-size=&quot;size16&quot;&gt;  출처: 더벨, 뉴데일리, 뉴스스페이스 등 국내 주요 경제지 보도 (2025.10.31 기준)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;1134&quot; data-start=&quot;1131&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1155&quot; data-start=&quot;1136&quot; data-ke-size=&quot;size26&quot;&gt;  단순한 식사 이상의 의미&lt;/h2&gt;
&lt;h3 data-end=&quot;1185&quot; data-start=&quot;1157&quot; data-ke-size=&quot;size23&quot;&gt;1️⃣ 반도체 + AI = 삼성 &amp;times; 엔비디아&lt;/h3&gt;
&lt;p data-end=&quot;1408&quot; data-start=&quot;1288&quot; data-ke-size=&quot;size16&quot;&gt;엔비디아는 세계 AI 반도체 시장을 주도하는 기업으로,&lt;br /&gt;현재 삼성전자와 &lt;b&gt;HBM(고대역폭 메모리)&lt;/b&gt;, &lt;b&gt;2nm 이하 첨단 공정&lt;/b&gt;,&lt;br /&gt;&lt;b&gt;고성능 패키징&lt;/b&gt; 관련 협력 가능성이 꾸준히 제기되고 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;1507&quot; data-start=&quot;1410&quot; data-ke-size=&quot;size16&quot;&gt;이번 만남은 &lt;b&gt;AI 칩 생산 및 패키징 협업&lt;/b&gt;에 대한 신호로 해석되며,&lt;br /&gt;삼성전자가 글로벌 AI 공급망의 &amp;lsquo;핵심 허리&amp;rsquo;로 자리 잡을 수 있는 계기가 될 수 있습니다.&lt;/p&gt;
&lt;hr data-end=&quot;1512&quot; data-start=&quot;1509&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1544&quot; data-start=&quot;1514&quot; data-ke-size=&quot;size23&quot;&gt;2️⃣ 자율주행 + 로봇 = 현대차 &amp;times; 엔비디아&lt;/h3&gt;
&lt;p data-end=&quot;1697&quot; data-start=&quot;1620&quot; data-ke-size=&quot;size16&quot;&gt;현대자동차그룹은 최근 &lt;b&gt;자율주행, 로보틱스, UAM(도심항공모빌리티)&lt;/b&gt; 등&lt;br /&gt;AI 기반의 미래 모빌리티 사업에 집중하고 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;1804&quot; data-start=&quot;1699&quot; data-ke-size=&quot;size16&quot;&gt;엔비디아의 AI 컴퓨팅 플랫폼과 현대차의 차량 기술이 결합된다면,&lt;br /&gt;&lt;b&gt;&amp;lsquo;AI 중심 차량(SDV: Software Defined Vehicle)&amp;rsquo; 시대의 본격 개막&lt;/b&gt;이 가능해집니다.&lt;/p&gt;
&lt;p data-end=&quot;1880&quot; data-start=&quot;1806&quot; data-ke-size=&quot;size16&quot;&gt;이번 회동은 단순한 식사가 아닌,&lt;br /&gt;&amp;ldquo;&lt;b&gt;자동차 &amp;times; AI &amp;times; 반도체&lt;/b&gt;&amp;rdquo;라는 미래 산업 삼각동맹의 출발점이 될 것으로 보입니다.&lt;/p&gt;
&lt;hr data-end=&quot;1885&quot; data-start=&quot;1882&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1911&quot; data-start=&quot;1887&quot; data-ke-size=&quot;size23&quot;&gt;3️⃣ 한국의 AI 산업 생태계 도약&lt;/h3&gt;
&lt;p data-end=&quot;2022&quot; data-start=&quot;1913&quot; data-ke-size=&quot;size16&quot;&gt;한국은 반도체 제조 강국으로서 이미 글로벌 시장에서 중요한 역할을 하고 있지만,&lt;br /&gt;이번 회동을 계기로 &lt;b&gt;&amp;lsquo;AI 기술&amp;middot;생산&amp;middot;응용&amp;rsquo;까지 아우르는 AI 허브국가&lt;/b&gt;로 성장할 가능성이 커졌습니다.&lt;/p&gt;
&lt;p data-end=&quot;2111&quot; data-start=&quot;2024&quot; data-ke-size=&quot;size16&quot;&gt;삼성의 반도체, 현대차의 모빌리티, 엔비디아의 AI가 결합한다면&lt;br /&gt;한국은 &lt;b&gt;미국&amp;middot;중국 중심의 AI 패권 경쟁 속 새로운 균형축&lt;/b&gt;이 될 수 있습니다.&lt;/p&gt;
&lt;hr data-end=&quot;2116&quot; data-start=&quot;2113&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2129&quot; data-start=&quot;2118&quot; data-ke-size=&quot;size26&quot;&gt;  핵심 요약&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;구분핵심 내용
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;2346&quot; data-start=&quot;2131&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;2346&quot; data-start=&quot;2168&quot;&gt;
&lt;tr data-end=&quot;2190&quot; data-start=&quot;2168&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2176&quot; data-start=&quot;2168&quot;&gt;  장소&lt;/td&gt;
&lt;td data-end=&quot;2190&quot; data-start=&quot;2176&quot; data-col-size=&quot;sm&quot;&gt;서울 강남 깐부치킨&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2219&quot; data-start=&quot;2191&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2199&quot; data-start=&quot;2191&quot;&gt;  시점&lt;/td&gt;
&lt;td data-end=&quot;2219&quot; data-start=&quot;2199&quot; data-col-size=&quot;sm&quot;&gt;2025년 10월 30일 저녁&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2266&quot; data-start=&quot;2220&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2229&quot; data-start=&quot;2220&quot;&gt;  참석자&lt;/td&gt;
&lt;td data-end=&quot;2266&quot; data-start=&quot;2229&quot; data-col-size=&quot;sm&quot;&gt;젠슨 황(엔비디아), 이재용(삼성전자), 정의선(현대자동차)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2309&quot; data-start=&quot;2267&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2278&quot; data-start=&quot;2267&quot;&gt;  주요 화두&lt;/td&gt;
&lt;td data-end=&quot;2309&quot; data-start=&quot;2278&quot; data-col-size=&quot;sm&quot;&gt;반도체 협력, AI 칩, 자율주행, 미래 모빌리티&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2346&quot; data-start=&quot;2310&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2318&quot; data-start=&quot;2310&quot;&gt;  의미&lt;/td&gt;
&lt;td data-end=&quot;2346&quot; data-start=&quot;2318&quot; data-col-size=&quot;sm&quot;&gt;한국의 AI&amp;middot;반도체&amp;middot;자동차 삼각 동맹 시그널&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;2351&quot; data-start=&quot;2348&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2380&quot; data-start=&quot;2353&quot; data-ke-size=&quot;size26&quot;&gt;  IT&amp;middot;주식 투자 관점에서 본 이번 회동&lt;/h2&gt;
&lt;p data-end=&quot;2467&quot; data-start=&quot;2382&quot; data-ke-size=&quot;size16&quot;&gt;IT와 주식투자를 함께 보는 관점에서 이번 만남은 단순한 이벤트가 아닙니다.&lt;br /&gt;&lt;b&gt;산업 구조 재편의 시그널&lt;/b&gt;로서 몇 가지 포인트를 짚을 수 있습니다.&lt;/p&gt;
&lt;h3 data-end=&quot;2501&quot; data-start=&quot;2469&quot; data-ke-size=&quot;size23&quot;&gt;  1. 삼성전자 &amp;ndash; 반도체 패키징 수혜 기대&lt;/h3&gt;
&lt;p data-end=&quot;2578&quot; data-start=&quot;2502&quot; data-ke-size=&quot;size16&quot;&gt;HBM 및 AI 반도체 생산 확대에 따른 직접적 수혜.&lt;br /&gt;특히 엔비디아와의 협업이 현실화될 경우, 파운드리 수익성이 강화될 가능성.&lt;/p&gt;
&lt;h3 data-end=&quot;2614&quot; data-start=&quot;2580&quot; data-ke-size=&quot;size23&quot;&gt;  2. 현대자동차 &amp;ndash; AI 차량 시대의 선두주자&lt;/h3&gt;
&lt;p data-end=&quot;2698&quot; data-start=&quot;2615&quot; data-ke-size=&quot;size16&quot;&gt;엔비디아와 협력 시, SDV(소프트웨어 정의 차량) 전환 속도 가속.&lt;br /&gt;향후 자율주행칩&amp;middot;AI 모빌리티 플랫폼 분야에서 글로벌 경쟁력 확보 기대.&lt;/p&gt;
&lt;h3 data-end=&quot;2732&quot; data-start=&quot;2700&quot; data-ke-size=&quot;size23&quot;&gt;  3. 엔비디아 &amp;ndash; 한국 협력 네트워크 강화&lt;/h3&gt;
&lt;p data-end=&quot;2816&quot; data-start=&quot;2733&quot; data-ke-size=&quot;size16&quot;&gt;삼성, 현대와의 연합을 통해 아시아 시장 공급망을 강화하고&lt;br /&gt;미&amp;middot;중 기술 패권 갈등 속 **&amp;lsquo;한국을 전략적 파트너&amp;rsquo;**로 삼으려는 행보로 분석.&lt;/p&gt;
&lt;h3 data-end=&quot;2840&quot; data-start=&quot;2818&quot; data-ke-size=&quot;size23&quot;&gt;  4. 장기적으로 본다면&amp;hellip;&lt;/h3&gt;
&lt;p data-end=&quot;2951&quot; data-start=&quot;2841&quot; data-ke-size=&quot;size16&quot;&gt;이번 회동은 &amp;ldquo;한국이 단순 제조기지에서 AI 중심국으로 성장하는 변곡점&amp;rdquo;이 될 수 있습니다.&lt;br /&gt;중장기적으로는 &lt;b&gt;AI 반도체, 패키징, 차량용 칩&lt;/b&gt; 분야의 국내 상장기업들에 주목할 만합니다.&lt;/p&gt;
&lt;hr data-end=&quot;2956&quot; data-start=&quot;2953&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2988&quot; data-start=&quot;2958&quot; data-ke-size=&quot;size26&quot;&gt;  마무리 &amp;ndash; 기술과 투자, 그리고 한국의 위치&lt;/h2&gt;
&lt;p data-end=&quot;3053&quot; data-start=&quot;2990&quot; data-ke-size=&quot;size16&quot;&gt;이번 &amp;lsquo;치맥 회동&amp;rsquo;은 가벼운 자리처럼 보이지만,&lt;br /&gt;그 속엔 &lt;b&gt;한국 산업의 미래 방향성&lt;/b&gt;이 담겨 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;3189&quot; data-start=&quot;3055&quot; data-ke-size=&quot;size16&quot;&gt;AI 시대의 핵심은 &lt;b&gt;반도체와 데이터, 그리고 모빌리티(Mobility)&lt;/b&gt; 입니다.&lt;br /&gt;삼성&amp;middot;현대&amp;middot;엔비디아가 이 세 축을 함께 논의했다는 사실만으로도&lt;br /&gt;한국이 앞으로 &lt;b&gt;AI 기술 허브로 도약할 발판&lt;/b&gt;을 마련했다는 의미가 있습니다.&lt;/p&gt;
&lt;blockquote data-end=&quot;3302&quot; data-start=&quot;3191&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;p data-end=&quot;3302&quot; data-start=&quot;3193&quot; data-ke-size=&quot;size16&quot;&gt;  개인적으로 이번 만남은 &amp;ldquo;산업의 경계가 사라지는 시대&amp;rdquo;를 상징한다고 봅니다.&lt;br /&gt;기술 중심의 협력, 그리고 데이터 기반 비즈니스가 향후 한국 시장의 새로운 투자 포인트가 될 것입니다.&lt;/p&gt;
&lt;/blockquote&gt;</description>
      <category>세상 모든 이슈</category>
      <category>Ai</category>
      <category>GPU</category>
      <category>깐부치킨</category>
      <category>삼성</category>
      <category>삼성전자</category>
      <category>엔비디아</category>
      <category>치킨</category>
      <category>현대자동차</category>
      <author>WithSeungRyu</author>
      <guid isPermaLink="true">https://withseungryu.tistory.com/162</guid>
      <comments>https://withseungryu.tistory.com/162#entry162comment</comments>
      <pubDate>Fri, 31 Oct 2025 10:08:02 +0900</pubDate>
    </item>
    <item>
      <title>[세상 모든 이슈] 트럼프와 시진핑 악수</title>
      <link>https://withseungryu.tistory.com/161</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NX1Ut/dJMcagRj0Yx/32NbDNPEKHHksk01kNUxPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NX1Ut/dJMcagRj0Yx/32NbDNPEKHHksk01kNUxPk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NX1Ut/dJMcagRj0Yx/32NbDNPEKHHksk01kNUxPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNX1Ut%2FdJMcagRj0Yx%2F32NbDNPEKHHksk01kNUxPk%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;654&quot; height=&quot;436&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h1 data-end=&quot;151&quot; data-start=&quot;115&quot;&gt;  APEC 2025 &amp;mdash; 트럼프와 시진핑, 다시 손을 맞잡다&lt;/h1&gt;
&lt;h2 data-end=&quot;226&quot; data-start=&quot;214&quot; data-ke-size=&quot;size26&quot;&gt;  회담의 배경&lt;/h2&gt;
&lt;p data-end=&quot;316&quot; data-start=&quot;228&quot; data-ke-size=&quot;size16&quot;&gt;2025년 &lt;b&gt;APEC(아시아태평양경제협력체)&lt;/b&gt; 정상회의에서&lt;br /&gt;미국의 &lt;b&gt;트럼프 대통령&lt;/b&gt;과 중국의 &lt;b&gt;시진핑 주석&lt;/b&gt;이 오랜만에 마주 앉았습니다.&lt;/p&gt;
&lt;p data-end=&quot;394&quot; data-start=&quot;318&quot; data-ke-size=&quot;size16&quot;&gt;이번 악수는 단순한 인사가 아닌,&lt;br /&gt;&lt;b&gt;글로벌 경제와 기술 패권 경쟁의 흐름을 바꿀 수 있는 상징적 장면&lt;/b&gt;으로 평가받고 있습니다.&lt;/p&gt;
&lt;h2 data-end=&quot;417&quot; data-start=&quot;401&quot; data-ke-size=&quot;size26&quot;&gt; ️ 회담의 주요 논의&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;주요 안건내용 요약
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;757&quot; data-start=&quot;419&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;757&quot; data-start=&quot;465&quot;&gt;
&lt;tr data-end=&quot;520&quot; data-start=&quot;465&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;480&quot; data-start=&quot;465&quot;&gt;&lt;b&gt;무역 관세 완화&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;520&quot; data-start=&quot;480&quot; data-col-size=&quot;sm&quot;&gt;미국이 중국 수입품에 대한 관세율 인하 발표&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;569&quot; data-start=&quot;521&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;537&quot; data-start=&quot;521&quot;&gt;&lt;b&gt;희토류 수출 협의&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;569&quot; data-start=&quot;537&quot; data-col-size=&quot;sm&quot;&gt;중국, 희토류 수출 통제를 완화하고 협력 방안 논의&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;615&quot; data-start=&quot;570&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;593&quot; data-start=&quot;570&quot;&gt;&lt;b&gt;AI 반도체 규제 완화 가능성&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;615&quot; data-start=&quot;593&quot; data-col-size=&quot;sm&quot;&gt;미국의 기술 통제 일부 완화 논의&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;661&quot; data-start=&quot;616&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;635&quot; data-start=&quot;616&quot;&gt;&lt;b&gt;펜타닐 수출 규제 강화&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;661&quot; data-start=&quot;635&quot; data-col-size=&quot;sm&quot;&gt;미국의 요구로 중국 측이 통제 강화 약속&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;706&quot; data-start=&quot;662&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;682&quot; data-start=&quot;662&quot;&gt;&lt;b&gt;우크라이나 및 국제 현안&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;706&quot; data-start=&quot;682&quot; data-col-size=&quot;sm&quot;&gt;지정학적 긴장 완화를 위한 협력 논의&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;757&quot; data-start=&quot;707&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;722&quot; data-start=&quot;707&quot;&gt;&lt;b&gt;상호 방문 약속&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;757&quot; data-start=&quot;722&quot; data-col-size=&quot;sm&quot;&gt;트럼프의 2026년 중국 방문, 시진핑의 미국 방문 검토&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote data-end=&quot;812&quot; data-start=&quot;759&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;p data-end=&quot;812&quot; data-start=&quot;761&quot; data-ke-size=&quot;size16&quot;&gt;이번 회담에서는 &amp;ldquo;대만 문제&amp;rdquo;가 공식 의제로 다뤄지지 않았다는 점이 특히 주목받고 있습니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 data-end=&quot;834&quot; data-start=&quot;819&quot; data-ke-size=&quot;size26&quot;&gt;  앞으로의 시나리오&lt;/h2&gt;
&lt;h3 data-end=&quot;865&quot; data-start=&quot;836&quot; data-ke-size=&quot;size23&quot;&gt;시나리오 A: &lt;b&gt;관계 완화 &amp;amp; 시장 안정&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;922&quot; data-start=&quot;866&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;922&quot; data-start=&quot;866&quot;&gt;관세 완화와 수출 규제가 실제로 이행되면&lt;br /&gt;글로벌 공급망과 투자 심리가 회복될 가능성이 큼.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;950&quot; data-start=&quot;924&quot; data-ke-size=&quot;size23&quot;&gt;시나리오 B: &lt;b&gt;기술 경쟁의 고도화&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1025&quot; data-start=&quot;951&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;985&quot; data-start=&quot;951&quot;&gt;반도체&amp;middot;AI&amp;middot;희토류 분야의 경쟁은 여전히 이어질 전망.&lt;/li&gt;
&lt;li data-end=&quot;1025&quot; data-start=&quot;986&quot;&gt;기술 동맹 및 핵심 소재 확보 경쟁이 장기적으로는 심화될 수 있음.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1053&quot; data-start=&quot;1027&quot; data-ke-size=&quot;size23&quot;&gt;시나리오 C: &lt;b&gt;외교적 영향력 확장&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1107&quot; data-start=&quot;1054&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1107&quot; data-start=&quot;1054&quot;&gt;중국은 아시아&amp;middot;남미 외교를 강화하고,&lt;br /&gt;미국은 동맹국들과의 협력을 통해 대응할 가능성.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1133&quot; data-start=&quot;1109&quot; data-ke-size=&quot;size23&quot;&gt;시나리오 D: &lt;b&gt;불확실성의 지속&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1196&quot; data-start=&quot;1134&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1162&quot; data-start=&quot;1134&quot;&gt;정책 이행이 지연되거나 번복될 가능성 존재.&lt;/li&gt;
&lt;li data-end=&quot;1196&quot; data-start=&quot;1163&quot;&gt;대만, 남중국해, 중동 등의 외교 리스크가 여전히 변수.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-end=&quot;1214&quot; data-start=&quot;1203&quot; data-ke-size=&quot;size26&quot;&gt;  종합 정리&lt;/h2&gt;
&lt;p data-end=&quot;1287&quot; data-start=&quot;1216&quot; data-ke-size=&quot;size16&quot;&gt;트럼프와 시진핑의 악수는&lt;br /&gt;표면적으로는 &lt;b&gt;화해의 제스처&lt;/b&gt;,&lt;br /&gt;그러나 실제로는 &lt;b&gt;전략적 계산의 한 수&lt;/b&gt;로 보입니다.&lt;/p&gt;
&lt;p data-end=&quot;1343&quot; data-start=&quot;1289&quot; data-ke-size=&quot;size16&quot;&gt;이 만남은 &amp;ldquo;긴장 완화&amp;rdquo;의 서막일 수도,&lt;br /&gt;새로운 &lt;b&gt;전략 경쟁의 리셋&lt;/b&gt;일 수도 있습니다.&lt;/p&gt;
&lt;blockquote data-end=&quot;1381&quot; data-start=&quot;1345&quot; data-ke-style=&quot;style3&quot;&gt;
&lt;p data-end=&quot;1381&quot; data-start=&quot;1347&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;외형적 화해 뒤에서도, 패권 경쟁의 본질은 변하지 않는다.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 data-end=&quot;1408&quot; data-start=&quot;1388&quot; data-ke-size=&quot;size26&quot;&gt;  기술 &amp;amp; 투자 인사이트&lt;/h2&gt;
&lt;h3 data-end=&quot;1467&quot; data-start=&quot;1442&quot; data-ke-size=&quot;size23&quot;&gt;  IT&amp;middot;AI 기술 관점에서 본 의미&lt;/h3&gt;
&lt;p data-end=&quot;1519&quot; data-start=&quot;1469&quot; data-ke-size=&quot;size16&quot;&gt;이번 APEC 회담은 &lt;b&gt;AI&amp;middot;반도체 패권 경쟁 완화의 신호탄&lt;/b&gt;으로 볼 수 있습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1840&quot; data-start=&quot;1521&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1634&quot; data-start=&quot;1521&quot;&gt;&lt;b&gt;AI 반도체 공급망 안정화&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1634&quot; data-start=&quot;1548&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1598&quot; data-start=&quot;1548&quot;&gt;수출 규제 완화 시, 엔비디아(NVIDIA)&amp;middot;AMD 등 주요 기업 실적 개선 기대.&lt;/li&gt;
&lt;li data-end=&quot;1634&quot; data-start=&quot;1602&quot;&gt;중국 내 AI 스타트업 생태계도 점진적 회복 가능.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1748&quot; data-start=&quot;1636&quot;&gt;&lt;b&gt;데이터 협력 및 윤리 논의 확대&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1748&quot; data-start=&quot;1666&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1748&quot; data-start=&quot;1666&quot;&gt;미&amp;middot;중 간 데이터 표준 및 윤리 프레임워크 협의 시&lt;br /&gt;클라우드&amp;middot;AI 산업의 상호운용성(interoperability) 강화 가능.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1840&quot; data-start=&quot;1750&quot;&gt;&lt;b&gt;보호주의 완화 &amp;rarr; 기술 리커플링(Re-coupling)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1840&quot; data-start=&quot;1793&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1840&quot; data-start=&quot;1793&quot;&gt;분리(Decoupling)에서 협력(Cooperation)으로의 전환 가능성.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-end=&quot;1869&quot; data-start=&quot;1847&quot; data-ke-size=&quot;size23&quot;&gt;  주식&amp;middot;투자 관점에서 본 변화&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2050&quot; data-start=&quot;1871&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1935&quot; data-start=&quot;1871&quot;&gt;&lt;b&gt;미국 시장:&lt;/b&gt; 반도체&amp;middot;AI&amp;middot;클라우드 관련 종목 (NVDA, MSFT, AMZN) 등 &lt;b&gt;심리적 호재&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1994&quot; data-start=&quot;1936&quot;&gt;&lt;b&gt;중국 시장:&lt;/b&gt; BAT(바이두&amp;middot;알리바바&amp;middot;텐센트) 등 테크 대형주 중심 &lt;b&gt;단기 반등 가능성&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;2050&quot; data-start=&quot;1995&quot;&gt;&lt;b&gt;한국 등 아시아 시장:&lt;/b&gt; 공급망 안정화로 인한 &lt;b&gt;반도체&amp;middot;디스플레이 업종 수혜 기대&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-end=&quot;2122&quot; data-start=&quot;2052&quot; data-ke-style=&quot;style3&quot;&gt;
&lt;p data-end=&quot;2122&quot; data-start=&quot;2054&quot; data-ke-size=&quot;size16&quot;&gt;다만, 정책 실현 여부와 미 대선 이후의 변수로 인해&lt;br /&gt;단기 이벤트성 랠리보다는 중장기 분산투자 전략이 유효.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 data-end=&quot;2150&quot; data-start=&quot;2129&quot; data-ke-size=&quot;size23&quot;&gt;  한줄 총평&lt;/h3&gt;
&lt;blockquote data-end=&quot;2247&quot; data-start=&quot;2151&quot; data-ke-style=&quot;style3&quot;&gt;
&lt;p data-end=&quot;2247&quot; data-start=&quot;2153&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;이번 트럼프&amp;ndash;시진핑의 악수는&lt;br /&gt;AI 시대의 새로운 &amp;lsquo;협력 경쟁(coopetition)&amp;rsquo;의 시작점이다.&lt;br /&gt;기술은 이제 정치보다 빠르게 움직이고 있다.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 data-end=&quot;2265&quot; data-start=&quot;2254&quot; data-ke-size=&quot;size26&quot;&gt;  참고 링크&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2696&quot; data-start=&quot;2266&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2402&quot; data-start=&quot;2266&quot;&gt;&lt;a href=&quot;https://apnews.com/article/4c19a752c97828246c08f60f0dc54c79?utm_source=chatgpt.com&quot; data-end=&quot;2400&quot; data-start=&quot;2268&quot;&gt;Trump cuts tariffs on China after meeting Xi in South Korea &amp;ndash; AP News&lt;span aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li data-end=&quot;2587&quot; data-start=&quot;2403&quot;&gt;&lt;a href=&quot;https://www.theguardian.com/us-news/2025/oct/30/trump-and-xi-meet-in-south-korea-for-crunch-talks-on-trade?utm_source=chatgpt.com&quot; data-end=&quot;2585&quot; data-start=&quot;2405&quot;&gt;Trump&amp;ndash;Xi meeting: Rare earths deal and tariff reduction &amp;ndash; The Guardian&lt;span aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li data-end=&quot;2696&quot; data-start=&quot;2588&quot;&gt;&lt;a href=&quot;https://time.com/7329210/trump-xi-gyeongju-us-china-trade?utm_source=chatgpt.com&quot; data-end=&quot;2696&quot; data-start=&quot;2590&quot;&gt;Why the Trump&amp;ndash;Xi Summit May Disappoint &amp;ndash; TIME&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>세상 모든 이슈</category>
      <category>APEC</category>
      <category>it</category>
      <category>미국</category>
      <category>시진핑</category>
      <category>엔비디아</category>
      <category>정상회담</category>
      <category>주식</category>
      <category>중국</category>
      <category>투자</category>
      <category>트럼프</category>
      <author>WithSeungRyu</author>
      <guid isPermaLink="true">https://withseungryu.tistory.com/161</guid>
      <comments>https://withseungryu.tistory.com/161#entry161comment</comments>
      <pubDate>Thu, 30 Oct 2025 15:59:02 +0900</pubDate>
    </item>
    <item>
      <title>[JPA] native query 사용 시 enum을 변수로 하기 ( SpEL expression )</title>
      <link>https://withseungryu.tistory.com/160</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;706&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baUIJD/btryex6WnyB/CuulS4sOjfmBzh3bykEkbk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baUIJD/btryex6WnyB/CuulS4sOjfmBzh3bykEkbk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baUIJD/btryex6WnyB/CuulS4sOjfmBzh3bykEkbk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaUIJD%2Fbtryex6WnyB%2FCuulS4sOjfmBzh3bykEkbk%2Fimg.jpg&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;300&quot; height=&quot;165&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;706&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;  Native Query 란?&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;JPQL을 사용해서 쿼리 메소드를 사용하는 것이 아닌 MySQL과 비슷한 형식으로 쿼리를 만들어 적용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;그러나, JPQL에서는 표준 SQL의 대부분의 기능을 지원하지만, 지원하지 못하는 문법들도 존재한다. ( ex. sub query )&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이때 &lt;b&gt;Native Query&lt;/b&gt;를 사용하면 JPQL에서 지원하지 못하는 문법들을 사용할 수 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;  Native Query 를 사용하는 방법&lt;/p&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;//-- JPQL
@Query(value=&quot;SELECT M from Member M&quot; )

//-- Native Query
@Query(value=&quot;SELECT * from Member m&quot;, nativeQuery= true )&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;  Native Query에서 @Param에 Enum을 넣는 방법?&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;JPQL을 사용하면, Java에 Enum 타입을 아래와 같이 쿼리 변수로 넣을 수 있다.&lt;/p&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;@Query(value=&quot;SELECT M FROM MEMBER M WHERE TYPE = (:type) )
fun getMemberByType(@Param type MemberType) 

enum class MemberType(
    MASTER,
    NORMAL,
)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;그러나 NativeQuery에서 Enum타입을 사용해서 위와 같이 변수로 넣으면,,, 에러가 난다. ( String으로 넣어야 하도록.. )&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;어떻게 하면 String으로 변경해야하는 번거로움을 해소시키기 위해, 그대로 Enum을 사용할 수 있을까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;해결책을 &lt;b&gt;SpEL expression&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;  SpEL (Spring Expression Language)이란?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;- 스프링 프로젝트에서 런타임에 쿼리를 지원하여 객체를 조작할 수 있는 표현식&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;( 참고 : &lt;a href=&quot;https://atoz-develop.tistory.com/entry/Spring-SpEL-Spring-Expression-Language&quot;&gt;https://atoz-develop.tistory.com/entry/Spring-SpEL-Spring-Expression-Language&lt;/a&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;  SpEL을 사용해서 Native Query에서 Enum 타입 사용하기&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;- Enum의 한 변수만 사용하기&lt;br /&gt;&lt;code&gt;#{#변수.name()}&lt;/code&gt;&lt;/p&gt;
&lt;pre class=&quot;crystal&quot;&gt;&lt;code&gt;@Query(value=&quot;SELECT * FROM member m WHERE m.type = #{#type.name()} )
fun getMemberByType(@Param(&quot;type&quot;) type MemberType) 

enum class MemberType(
    MASTER,
    NORMAL,
)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Enum을 Collection(List, Set으로 사용하기&lt;br /&gt;&lt;code&gt;#{#변수.![name()]}&lt;/code&gt;&lt;/p&gt;
&lt;pre class=&quot;crystal&quot;&gt;&lt;code&gt;@Query(value=&quot;SELECT * FROM member m WHERE m.type in #{#types.![name()]} )
fun getMemberInTypes(@Param(&quot;types&quot;) types Set&amp;lt;MemberType&amp;gt;) 

enum class MemberType(
    MASTER,
    NORMAL,
)&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Back-end/JPA</category>
      <category>java</category>
      <category>JPA</category>
      <category>JPQL</category>
      <category>kotlin</category>
      <category>NativeQuery</category>
      <category>Spring</category>
      <category>spring boot</category>
      <author>WithSeungRyu</author>
      <guid isPermaLink="true">https://withseungryu.tistory.com/160</guid>
      <comments>https://withseungryu.tistory.com/160#entry160comment</comments>
      <pubDate>Sun, 3 Apr 2022 13:37:59 +0900</pubDate>
    </item>
    <item>
      <title>[JPA] JPA native query 사용시 dto mapping</title>
      <link>https://withseungryu.tistory.com/159</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;706&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNYLz7/btryf1sU1z1/Fb0eMjQvKDgM1KnRHY6n1K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNYLz7/btryf1sU1z1/Fb0eMjQvKDgM1KnRHY6n1K/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNYLz7/btryf1sU1z1/Fb0eMjQvKDgM1KnRHY6n1K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNYLz7%2Fbtryf1sU1z1%2FFb0eMjQvKDgM1KnRHY6n1K%2Fimg.jpg&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;300&quot; height=&quot;165&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;706&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보통 조인을 많이 사용하게 될 상황이 생기면 JPA Native query를 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 때, 조인되어지는 테이블들의 column 값을 사용해야하는 상황에는 Entity에 맵핑을 시켜줄 수 없는 문제가 있다.&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;이럴 때에는 바로 원하는 변수가 있는 DTO에 맵핑을 시켜주어야 하는데,,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 방법들이 있을까?&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;face&quot; data-emoticon-name=&quot;003&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/face/large/003.png&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/face/large/003.png&quot; width=&quot;80&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1.&amp;nbsp; Entity에서의 `@SqlResultSetMapping` 사용&amp;nbsp;&lt;/h4&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;@Entity
@NamedNativeQuery(
    name = &quot;find_books',
    query =
        &quot;SELECT &quot; + 
        &quot;  생략.... &quot;,
    resultSetMapping = &quot;book_dto&quot;
)
@SqlResultSetMapping(
    name = &quot;book_dto&quot;,
    classes = @ConstructorResult(
        targetClass = BookDto.class,
        columns = {
            @ColumnResult(name = &quot;bookId&quot;, type = Long.class),
            @ColumnResult(name = &quot;writerName&quot;, type = String.class),
            @ColumnResult(name = &quot;launguage&quot;, type = String.class)
        }
    )
)&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1644126814857&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Repository
public interface BookRepository extends JpaRepository&amp;lt;Book, Long&amp;gt;, {

   @Query(name = &quot;find_books_dto&quot;, nativeQuery = true)
   List&amp;lt;BookDto&amp;gt; findAllBook(...생략);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. Interface 로 선언한 Dto에 맵핑 - getter를 선언해줘야 한다.&lt;/h4&gt;
&lt;pre id=&quot;code_1644126891781&quot; class=&quot;routeros&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public interface BookDto {
	getTitle();
    getWriterName();
    getLanguage();
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1644126965382&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Repository
public interface BookRepository extends JpaRepository&amp;lt;Book, Long&amp;gt;, {

   @Query(value = &quot;SELECT * FROM ... 생략&quot;, nativeQuery = true)
   List&amp;lt;BookDto&amp;gt; findAllBook(...생략);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 DTO를 그대로 클라이언트에게 주어줘도 상관이 없다면 interface ( with getter) 를 사용하여 맵핑을 시켜주어도 상관 없을 듯 하고, 만약 DTO의 변화가 필요하다면 1 번의 방식을 사용해서 맵핑을 시켜주면 될 것 같다.&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;</description>
      <category>Back-end/JPA</category>
      <category>dto</category>
      <category>Entity</category>
      <category>java</category>
      <category>JPA</category>
      <category>kotlin</category>
      <category>Repository</category>
      <category>spring boot</category>
      <category>맵핑</category>
      <author>WithSeungRyu</author>
      <guid isPermaLink="true">https://withseungryu.tistory.com/159</guid>
      <comments>https://withseungryu.tistory.com/159#entry159comment</comments>
      <pubDate>Sun, 6 Feb 2022 14:58:23 +0900</pubDate>
    </item>
    <item>
      <title>[F.Y.R] Jitter? ( Retry의 전략 )</title>
      <link>https://withseungryu.tistory.com/158</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;800&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Nr5dj/btrszmu0wxP/kjfoD9dqPRleWe7PvwKdMk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Nr5dj/btrszmu0wxP/kjfoD9dqPRleWe7PvwKdMk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Nr5dj/btrszmu0wxP/kjfoD9dqPRleWe7PvwKdMk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNr5dj%2Fbtrszmu0wxP%2FkjfoD9dqPRleWe7PvwKdMk%2Fimg.jpg&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;300&quot; height=&quot;300&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;800&quot;/&gt;&lt;/span&gt;&lt;/figure&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;통신을 하는 서버에서 동시성 이슈로 재시도를 원하는 에러코드가 내려왔고, 이에 잠깐의 sleep을 한 후에 재시도하는 것을 볼 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Retry?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;MSA구조에서는 서로 다른 서버와 통신을 할 일이 많다.&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;그렇기 때문에 서로 다른 서버와 통신할 때 실패율을 줄이는 것이 중요하며, 호출 재시도를 하며 실패율을 줄일 수 있다.&lt;/i&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;보통 Sleep을 해주는 이유는 동시에 요청이 왔을 때, 바로 재시도를 하게 된다면 동시성 이슈에 있어서 성공률은 떨어지기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 보통은 Exponential Backoff Algorithm ( 백오프 ) 를 사용해야하는 걸로 알고 있었다.&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번째 재시도 : 1초 -&amp;gt; 2번째 재시도 : 2초 -&amp;gt; 3번째 재시도 : 4초 -&amp;gt; 8초.... 16초...32초&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 내가 보던 코드에서는 0.1~0.4초의 범위에 랜덤한 값을 Sleep하며 재시도를 하고 있었다.&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;왜,,, Exponential Backoff한 Retry가 아닌 랜덤한 값을 주고 있었던 걸까?..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 이유가 &lt;b&gt;Jitter&lt;/b&gt;라는 것을 동료 개발자에게 들을 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Jitter란?&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Random한 시간으로 Retry 사이의 시간을 설정해주는 방법&lt;/p&gt;
&lt;pre id=&quot;code_1642314917545&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sleep = radom_between(0, min(xxx))&lt;/code&gt;&lt;/pre&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;a href=&quot;https://aws.amazon.com/ko/blogs/architecture/exponential-backoff-and-jitter/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://aws.amazon.com/ko/blogs/architecture/exponential-backoff-and-jitter/&lt;/a&gt; )&lt;/p&gt;
&lt;figure id=&quot;og_1642314615143&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Exponential Backoff And Jitter | Amazon Web Services&quot; data-og-description=&quot;Introducing OCC Optimistic concurrency control (OCC) is a time-honored way for multiple writers to safely modify a single object without losing writes. OCC has three nice properties: it will always make progress as long as the underlying store is available&quot; data-og-host=&quot;aws.amazon.com&quot; data-og-source-url=&quot;https://aws.amazon.com/ko/blogs/architecture/exponential-backoff-and-jitter/&quot; data-og-url=&quot;https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bwU2qr/hyM6MGolEP/6MiKgNcdfI84MlaAxp3QX1/img.png?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/FBvaM/hyM6CqeC24/SxjXOoqXk2REq6uEk7YfeK/img.png?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cHKVQr/hyM6KaIsZj/Hey6spvRh18jh4JnP4Owq0/img.png?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aws.amazon.com/ko/blogs/architecture/exponential-backoff-and-jitter/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aws.amazon.com/ko/blogs/architecture/exponential-backoff-and-jitter/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bwU2qr/hyM6MGolEP/6MiKgNcdfI84MlaAxp3QX1/img.png?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/FBvaM/hyM6CqeC24/SxjXOoqXk2REq6uEk7YfeK/img.png?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cHKVQr/hyM6KaIsZj/Hey6spvRh18jh4JnP4Owq0/img.png?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Exponential Backoff And Jitter | Amazon Web Services&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Introducing OCC Optimistic concurrency control (OCC) is a time-honored way for multiple writers to safely modify a single object without losing writes. OCC has three nice properties: it will always make progress as long as the underlying store is available&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aws.amazon.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&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;Exponential Backoff를 사용해서 재시도를 한다해도 만약 같은 시간에서의 첫 시도에 호출된 수가 많게 되면,&amp;nbsp; 재시도하는 시간이 증가하더라도 대기하는 시간이 계속 같기 때문에 효과가 없을 수 있는 문제가 발생할 수 있다.&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;이러한 문제를 방지하기 위해서 같은 시간에 첫 호출이 발생해도 Random 한 값을 주어 해결할 수 있도록 하면, 위 글의 그래프에서 볼 수 있 듯이 높은 효율성과 낮은 Competing Clients를 얻을 수 있다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;궁금하신 것이 있으시면 언제든지 댓글 달아주세요!&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot; data-url=&quot;https://blog.kakaocdn.net/dn/bzBwPj/btqGyvNuqbS/2qSgLaHJGFKDfFDBHg8gHk/img.jpg&quot; data-lightbox=&quot;lightbox&quot; data-alt=&quot;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;5.jpg&quot; data-origin-width=&quot;236&quot; data-origin-height=&quot;220&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ygkBU/btrqRSorYIS/A1Ecj2o6xK1HC8KozQp0Lk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ygkBU/btrqRSorYIS/A1Ecj2o6xK1HC8KozQp0Lk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ygkBU/btrqRSorYIS/A1Ecj2o6xK1HC8KozQp0Lk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FygkBU%2FbtrqRSorYIS%2FA1Ecj2o6xK1HC8KozQp0Lk%2Fimg.jpg&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;236&quot; height=&quot;220&quot; data-filename=&quot;5.jpg&quot; data-origin-width=&quot;236&quot; data-origin-height=&quot;220&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>F.Y.R</category>
      <category>java</category>
      <category>Jitter</category>
      <category>retry</category>
      <category>Spring</category>
      <category>Spring retry</category>
      <category>자바</category>
      <category>지터</category>
      <author>WithSeungRyu</author>
      <guid isPermaLink="true">https://withseungryu.tistory.com/158</guid>
      <comments>https://withseungryu.tistory.com/158#entry158comment</comments>
      <pubDate>Sun, 16 Jan 2022 15:38:55 +0900</pubDate>
    </item>
    <item>
      <title>[Error] org.hibernate.LazyInitializationException: could not initialize proxy</title>
      <link>https://withseungryu.tistory.com/156</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt; &amp;nbsp; 원인 파악&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드를 열심히 작성해서 리뷰를 받고, 즐거운 마음으로 라이브 배포를 했다..&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 몇 분이 지나지 않고 error alert이 나오기 시작했고,,, 정말 어처구니 없는 실수를 했다는 것을 깨달았다.&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;에러 내용은 JPA에서 나온 오류였다..&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #1a1d21; color: #d1d2d3;&quot;&gt;org.hibernate.LazyInitializationException: could not initialize proxy&amp;nbsp;&lt;br /&gt;&lt;/span&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;Entity 객체를 DTO 객체로 변경하기 위해 BeanUtils copyProperties로 간편하게 하려고 했던 부분해서 문제가 있다는 것을 발견할 수 있었다.. (괜히 빠르게 하려다가..)&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;BeanUtils copyProperties란?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스프링에서 제공해주는 BeaUtils 클래스의 메소드인데, 같은 이름은 getter와 setter만 잘 구현되어 있다면 손쉽게 객체를 복사시킬 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;( 참고 :&amp;nbsp;&lt;a href=&quot;https://zzang9ha.tistory.com/304&quot;&gt;https://zzang9ha.tistory.com/304&lt;/a&gt;&amp;nbsp;)&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;이 메소드를 사용하며 간과한 부분이 한 객체를 다대일 관계로 구성했고 이를 LAZY 페치를 하도록 설정해두었었다. 그렇기 때문에 해당 객체는 프록시 객체로 저장이 되어 있는 상태였고, 그래서 위 메소드를 실행시 원본 객체가 아닌 프록시 객체를 복사하려고 시도했기 때문에 위와 같은 오류가 발생한 것이 었다......!&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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt; &amp;nbsp; 해결 방법&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뭐... Lazy 를 Eager로 변경하면 좋겠지만.. 그렇게 좋은 해결책은 아닌 것 같다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 set 함수로 하나 하나 아래와 같이 넣어주는 방법이 있을 수 있다. ( 가장 원초적인 해결책 )&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;또한 copyProperties 중 하나의 overloading한 메소드로 프록시 객체를 가진 변수를 객체 복사에서 제외시켜줄 수 있는데,&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;876&quot; data-origin-height=&quot;319&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdWOFN/btrnBXgtkjt/CocjIDo2zqHoUWhvIbR2aK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdWOFN/btrnBXgtkjt/CocjIDo2zqHoUWhvIbR2aK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdWOFN/btrnBXgtkjt/CocjIDo2zqHoUWhvIbR2aK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdWOFN%2FbtrnBXgtkjt%2FCocjIDo2zqHoUWhvIbR2aK%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;876&quot; height=&quot;319&quot; data-origin-width=&quot;876&quot; data-origin-height=&quot;319&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;위에 나온 것과 같이 3번째 인자로 제외하고 싶은 변수의 이름을 넣어주면 제외시켜줄 수 있다.&amp;nbsp;&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;pre id=&quot;code_1639292924740&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Entity
public class Team {
	@Id
    private Long id;
    
    @ManyToOne(fetch = FetchType.LAZY)
    private Member member;
}

public class Member {
	@Id
    private Long id;
}

//As-is 
public TeamDto toDto(Team team) {
	TeamDto teamDto = new TeamDto();
    BeanUtil.copyProperties(team, teamDto);
    return teamDto;  
}

//to-be
public TeamDto toDto(Team team) {
	TeamDto teamDto = new TeamDto();
    BeanUtil.copyProperties(team, teamDto, &quot;member&quot;);
    // MemberDto 만들기
    MemberDto memberDto = new MemberDto();
    memberDto.setId(team.getMember().getid());
    teamDto.setMemberDto(memberDto)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 하면 Lazy로 가져온 프록시 객체 문제도 해결할 수 있어 같은 오류를 만나지 않을 수 있을 것이다&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;</description>
      <category>F.Y.R</category>
      <category>BeanUtil</category>
      <category>copyProperties</category>
      <category>java</category>
      <category>JPA</category>
      <category>kotlin</category>
      <author>WithSeungRyu</author>
      <guid isPermaLink="true">https://withseungryu.tistory.com/156</guid>
      <comments>https://withseungryu.tistory.com/156#entry156comment</comments>
      <pubDate>Sun, 12 Dec 2021 16:10:28 +0900</pubDate>
    </item>
    <item>
      <title>주석..주석에 대한 개인적인 고찰</title>
      <link>https://withseungryu.tistory.com/155</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;395&quot; data-origin-height=&quot;302&quot; width=&quot;300&quot; height=&quot;229&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mrh5U/btrkelp868i/SznoFTmVKaPHqNpY188eA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mrh5U/btrkelp868i/SznoFTmVKaPHqNpY188eA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mrh5U/btrkelp868i/SznoFTmVKaPHqNpY188eA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fmrh5U%2Fbtrkelp868i%2FSznoFTmVKaPHqNpY188eA1%2Fimg.png&quot; data-origin-width=&quot;395&quot; data-origin-height=&quot;302&quot; width=&quot;300&quot; height=&quot;229&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt; &amp;nbsp; 좋은 주석&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;의미를 명료하게 밝히는 주석&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과를 경고하는 주석&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TODO 주석&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;h4 data-ke-size=&quot;size20&quot;&gt; &amp;nbsp; 나쁜 주석&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;오해할 여지가 있는 주석&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;무서운 잡음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;함수나 변수로 표현할 수 있다면 주석 X&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;그리고 깨달은 것은 코드로 작성자의 의도를 파악할 수 있도록 '이야기를 하는 것과 같은 코드'를 최대한 짜는 것이 중요하다는 것이다...&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;</description>
      <category>CLEAN CODE</category>
      <category>개인적인 견해</category>
      <category>주석</category>
      <category>코드</category>
      <category>클린코드</category>
      <category>피드백 환영</category>
      <author>WithSeungRyu</author>
      <guid isPermaLink="true">https://withseungryu.tistory.com/155</guid>
      <comments>https://withseungryu.tistory.com/155#entry155comment</comments>
      <pubDate>Sun, 7 Nov 2021 21:40:50 +0900</pubDate>
    </item>
    <item>
      <title>[Error] Cause: java.lang.ExceptionInInitializerError</title>
      <link>https://withseungryu.tistory.com/154</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;매번 GIT으로 레포지토리를 클론하고 새 환경에서....!&lt;br&gt;Project를 실행하거나 빌드할 때, &quot;java.lang.ExceptionInInitializerError&quot; 에러를 자주 만나곤 한다.&lt;br&gt;구글링을 해보니 거의 80%는 JUnit, Gradle 등 버전 문제라고 한다.&lt;br&gt; &lt;br&gt;Java 8로 동작하는지, Junit의 버전은 무엇인지 체크를 잘 하면 되고,&lt;br&gt;보통은 IDE에서 15로 설정된 JVM를 8/1.8 로 설정을 해주면 잘 실행된다.&lt;br&gt; &lt;br&gt;Intellij IDEA&lt;br&gt;=&amp;gt; Preferences -&amp;gt; build -&amp;gt; Gradle -&amp;gt; Gradle JVM 버전 잘 설정하자....! &lt;/p&gt;</description>
      <category>F.Y.R</category>
      <author>WithSeungRyu</author>
      <guid isPermaLink="true">https://withseungryu.tistory.com/154</guid>
      <comments>https://withseungryu.tistory.com/154#entry154comment</comments>
      <pubDate>Sat, 30 Oct 2021 20:44:44 +0900</pubDate>
    </item>
    <item>
      <title>음성 채팅 어플리케이션 - TOVE ON</title>
      <link>https://withseungryu.tistory.com/152</link>
      <description>&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;294&quot; data-origin-height=&quot;324&quot; width=&quot;211&quot; height=&quot;233&quot; data-image-src=&quot;https://k.kakaocdn.net/dn/obQUh/btq8KbUIRFv/N4lY7bjlGF02u4xwKGXNGK/img.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/obQUh/btq8KbUIRFv/N4lY7bjlGF02u4xwKGXNGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/obQUh/btq8KbUIRFv/N4lY7bjlGF02u4xwKGXNGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/obQUh/btq8KbUIRFv/N4lY7bjlGF02u4xwKGXNGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FobQUh%2Fbtq8KbUIRFv%2FN4lY7bjlGF02u4xwKGXNGK%2Fimg.png&quot; data-origin-width=&quot;294&quot; data-origin-height=&quot;324&quot; width=&quot;211&quot; height=&quot;233&quot; data-image-src=&quot;https://k.kakaocdn.net/dn/obQUh/btq8KbUIRFv/N4lY7bjlGF02u4xwKGXNGK/img.png&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h2 data-ke-size=&quot;size26&quot;&gt;  개요&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스마일게이트 스토브에서 DEV CAMP 인턴 활동을 진행하며 만든 프로젝트이다.&lt;br&gt;음성 채팅, 텍스트 채팅을 내장한 어플리케이션이며 웹과 앱으로 사용가능하도록 웹 버전, 모바일 버전으로 개발했다.&lt;br&gt; &lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;기술 스택&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Front-end&lt;/b&gt; : VueJS(Web), Android(Mobile), WebRTC(음성 피어 연결)&lt;br&gt;&lt;b&gt;Back-end&lt;/b&gt; : Spring boot, Spring WebSocket (STOMP Pub/Sub), Spring Security, Redis, MariaDB, CoTRUN&lt;br&gt;&lt;b&gt;Infra&lt;/b&gt; : Aws S3, Aws RDS, Aws Elastic LoadBalance, Nginx&lt;br&gt;&lt;b&gt;협업&lt;/b&gt; : GIT, GitLab, Zira&lt;br&gt; &lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;역할&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;시그널링 서버 구축&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
 &lt;li&gt;WebRTC 전송 정보 중계 로직 구현 ( 참고 : &lt;a href=&quot;https://withseungryu.tistory.com/category/WebRTC&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;https://withseungryu.tistory.com/category/WebRTC&lt;/span&gt;&lt;/a&gt; )&lt;/li&gt;
 &lt;li&gt;음성 채팅 방 입장 및 퇴장 로직 구현&lt;/li&gt;
 &lt;li&gt;다중 인스턴스 환경 구축 ( 참고 : &lt;a href=&quot;https://withseungryu.tistory.com/139?category=931345&quot; target=&quot;_self&quot;&gt;&lt;span&gt;https://withseungryu.tistory.com/139?category=931345&lt;/span&gt;&lt;/a&gt; )&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;텍스트 채팅 서버 구축&lt;/b&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;/li&gt;
 &lt;li&gt;메세지 DB &amp;amp; FILE 로깅&lt;/li&gt;
 &lt;li&gt;RabbitMQ STOMP Broker 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; &lt;br&gt;&lt;b&gt;웹 프론트 구현&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
 &lt;li&gt;음성 채팅 기능 및 UI 구현&lt;/li&gt;
 &lt;li&gt;음성 컨트롤 기능 구현&lt;/li&gt;
 &lt;li&gt;비동기 처리&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; &lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;전체 아키텍처&lt;/h3&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1217&quot; data-origin-height=&quot;567&quot; data-image-src=&quot;https://k.kakaocdn.net/dn/dwlhMj/btq8KbNZWsT/bS0PwD7dNkYD8xlQxgCmAK/img.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dwlhMj/btq8KbNZWsT/bS0PwD7dNkYD8xlQxgCmAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dwlhMj/btq8KbNZWsT/bS0PwD7dNkYD8xlQxgCmAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dwlhMj/btq8KbNZWsT/bS0PwD7dNkYD8xlQxgCmAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdwlhMj%2Fbtq8KbNZWsT%2FbS0PwD7dNkYD8xlQxgCmAK%2Fimg.png&quot; data-origin-width=&quot;1217&quot; data-origin-height=&quot;567&quot; data-image-src=&quot;https://k.kakaocdn.net/dn/dwlhMj/btq8KbNZWsT/bS0PwD7dNkYD8xlQxgCmAK/img.png&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 data-ke-size=&quot;size23&quot;&gt;인증 채널 아키텍처&lt;/h3&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1095&quot; data-origin-height=&quot;617&quot; data-image-src=&quot;https://k.kakaocdn.net/dn/cagTx2/btq8KWPOgaI/D0S55lyWogWluvgRAT6pjk/img.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cagTx2/btq8KWPOgaI/D0S55lyWogWluvgRAT6pjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cagTx2/btq8KWPOgaI/D0S55lyWogWluvgRAT6pjk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cagTx2/btq8KWPOgaI/D0S55lyWogWluvgRAT6pjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcagTx2%2Fbtq8KWPOgaI%2FD0S55lyWogWluvgRAT6pjk%2Fimg.png&quot; data-origin-width=&quot;1095&quot; data-origin-height=&quot;617&quot; data-image-src=&quot;https://k.kakaocdn.net/dn/cagTx2/btq8KWPOgaI/D0S55lyWogWluvgRAT6pjk/img.png&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt; &lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;텍스트 채팅 아키텍처&lt;/h3&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1101&quot; data-origin-height=&quot;509&quot; data-image-src=&quot;https://k.kakaocdn.net/dn/bbQ5P0/btq8H5Uf2QU/vV9FF7zNan29OoXiVDOCT0/img.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbQ5P0/btq8H5Uf2QU/vV9FF7zNan29OoXiVDOCT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbQ5P0/btq8H5Uf2QU/vV9FF7zNan29OoXiVDOCT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbQ5P0/btq8H5Uf2QU/vV9FF7zNan29OoXiVDOCT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbQ5P0%2Fbtq8H5Uf2QU%2FvV9FF7zNan29OoXiVDOCT0%2Fimg.png&quot; data-origin-width=&quot;1101&quot; data-origin-height=&quot;509&quot; data-image-src=&quot;https://k.kakaocdn.net/dn/bbQ5P0/btq8H5Uf2QU/vV9FF7zNan29OoXiVDOCT0/img.png&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt; &lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;음성 채팅 아키텍처&lt;/h3&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;861&quot; data-origin-height=&quot;639&quot; data-image-src=&quot;https://k.kakaocdn.net/dn/n5TIO/btq8HdFifwX/JCqkcrigVwd6RbwOqeVZTk/img.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n5TIO/btq8HdFifwX/JCqkcrigVwd6RbwOqeVZTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n5TIO/btq8HdFifwX/JCqkcrigVwd6RbwOqeVZTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n5TIO/btq8HdFifwX/JCqkcrigVwd6RbwOqeVZTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn5TIO%2Fbtq8HdFifwX%2FJCqkcrigVwd6RbwOqeVZTk%2Fimg.png&quot; data-origin-width=&quot;861&quot; data-origin-height=&quot;639&quot; data-image-src=&quot;https://k.kakaocdn.net/dn/n5TIO/btq8HdFifwX/JCqkcrigVwd6RbwOqeVZTk/img.png&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1225&quot; data-origin-height=&quot;587&quot; data-image-src=&quot;https://k.kakaocdn.net/dn/AIgUn/btq8KXgSscn/V43o9BVRZXj8S5BNeCos30/img.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AIgUn/btq8KXgSscn/V43o9BVRZXj8S5BNeCos30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AIgUn/btq8KXgSscn/V43o9BVRZXj8S5BNeCos30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AIgUn/btq8KXgSscn/V43o9BVRZXj8S5BNeCos30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAIgUn%2Fbtq8KXgSscn%2FV43o9BVRZXj8S5BNeCos30%2Fimg.png&quot; data-origin-width=&quot;1225&quot; data-origin-height=&quot;587&quot; data-image-src=&quot;https://k.kakaocdn.net/dn/AIgUn/btq8KXgSscn/V43o9BVRZXj8S5BNeCos30/img.png&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;음성 통신 기능을 구현을 위한 Peer 연결로 &lt;b&gt;Full Mesh&lt;/b&gt; 구조를 사용했는데,&lt;br&gt;&lt;b&gt;Full Mesh&lt;/b&gt;를 사용한 이유는 해당 어플리케이션을 설계할 때 최대 인원을 8인 이하로 설정해두었고,&lt;br&gt;영상데이터가 아닌 음성데이터만을 지원하기 때문에 Full Mesh 구조를 선택했다.&lt;br&gt; &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;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
 &lt;li&gt;WebRTC를 위한 사용자의 네트워크 정보 교환 ( ICE candidate ), 미디어 정보 교환, 세션 컨트롤 수행&lt;/li&gt;
 &lt;li&gt;보안을 위한 세션 연결 전 JWT를 사용해 AUTH 서버로 인증&lt;/li&gt;
 &lt;li&gt;다중 인스턴스 환경 관리를 위해 각 인스턴스에 연결된 세션 수를 Redis에 캐싱&lt;/li&gt;
 &lt;li&gt;방화벽에 의한 Symmetric NAT 환경에 대비한 릴레이 통신을 지원해주는 TURN 서버 구축&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고 : &lt;a href=&quot;https://withseungryu.tistory.com/138?category=917456&quot; target=&quot;_self&quot;&gt;&lt;span&gt;https://withseungryu.tistory.com/138?category=917456&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;
&lt;figure data-ke-type=&quot;opengraph&quot; data-og-title=&quot;[WebRTC] TURN 서버의 필요성&quot; data-ke-align=&quot;alignCenter&quot; data-og-description=&quot;WebRTC 기술을 사용해 음성 애플리케이션을 만들어 테스트하는 중 P2P 연결이 잘 안 되는 문제가 있었다. 원인을 찾아보려고 코드를 계속 수정했지만 실행이 되지 않았다. 그러던 중 LTE를 사용하고&quot; data-og-host=&quot;withseungryu.tistory.com&quot; data-og-source-url=&quot;https://withseungryu.tistory.com/138?category=917456&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/FmSZs/hyKMHfWWMf/keL7K8qo6QxIZkkpUc0YW1/img.jpg?width=300&amp;amp;height=235&amp;amp;face=0_0_300_235,https://scrap.kakaocdn.net/dn/mFhnH/hyKMQxaLSW/znAK9qQzPr9j0BrFEndC7k/img.jpg?width=300&amp;amp;height=235&amp;amp;face=0_0_300_235,https://scrap.kakaocdn.net/dn/wuLCv/hyKMKKu8bF/1acEMXaDpRtPdPKGM0KiZk/img.jpg?width=819&amp;amp;height=720&amp;amp;face=0_0_819_720&quot; data-og-url=&quot;https://withseungryu.tistory.com/138&quot;&gt;
 &lt;a href=&quot;https://withseungryu.tistory.com/138&quot; target=&quot;_blank&quot; data-source-url=&quot;https://withseungryu.tistory.com/138?category=917456&quot;&gt;
  &lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/FmSZs/hyKMHfWWMf/keL7K8qo6QxIZkkpUc0YW1/img.jpg?width=300&amp;amp;height=235&amp;amp;face=0_0_300_235,https://scrap.kakaocdn.net/dn/mFhnH/hyKMQxaLSW/znAK9qQzPr9j0BrFEndC7k/img.jpg?width=300&amp;amp;height=235&amp;amp;face=0_0_300_235,https://scrap.kakaocdn.net/dn/wuLCv/hyKMKKu8bF/1acEMXaDpRtPdPKGM0KiZk/img.jpg?width=819&amp;amp;height=720&amp;amp;face=0_0_819_720')&quot;&gt; 
  &lt;/div&gt;
  &lt;div class=&quot;og-text&quot;&gt;
   &lt;p class=&quot;og-title&quot;&gt;[WebRTC] TURN 서버의 필요성&lt;/p&gt;
   &lt;p class=&quot;og-desc&quot;&gt;WebRTC 기술을 사용해 음성 애플리케이션을 만들어 테스트하는 중 P2P 연결이 잘 안 되는 문제가 있었다. 원인을 찾아보려고 코드를 계속 수정했지만 실행이 되지 않았다. 그러던 중 LTE를 사용하고&lt;/p&gt;
   &lt;p class=&quot;og-host&quot;&gt;withseungryu.tistory.com&lt;/p&gt;
  &lt;/div&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; &lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;943&quot; data-origin-height=&quot;253&quot; data-image-src=&quot;https://k.kakaocdn.net/dn/b1l7Df/btq8L66q7b9/NwBkT6jUsFc3Y8BVG1VWqk/img.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1l7Df/btq8L66q7b9/NwBkT6jUsFc3Y8BVG1VWqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1l7Df/btq8L66q7b9/NwBkT6jUsFc3Y8BVG1VWqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1l7Df/btq8L66q7b9/NwBkT6jUsFc3Y8BVG1VWqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1l7Df%2Fbtq8L66q7b9%2FNwBkT6jUsFc3Y8BVG1VWqk%2Fimg.png&quot; data-origin-width=&quot;943&quot; data-origin-height=&quot;253&quot; data-image-src=&quot;https://k.kakaocdn.net/dn/b1l7Df/btq8L66q7b9/NwBkT6jUsFc3Y8BVG1VWqk/img.png&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;593&quot; data-origin-height=&quot;227&quot; data-image-src=&quot;https://k.kakaocdn.net/dn/rg2yh/btq8KQv4wlX/0JxRISOYfU2aUcIovFimv1/img.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rg2yh/btq8KQv4wlX/0JxRISOYfU2aUcIovFimv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rg2yh/btq8KQv4wlX/0JxRISOYfU2aUcIovFimv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rg2yh/btq8KQv4wlX/0JxRISOYfU2aUcIovFimv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Frg2yh%2Fbtq8KQv4wlX%2F0JxRISOYfU2aUcIovFimv1%2Fimg.png&quot; data-origin-width=&quot;593&quot; data-origin-height=&quot;227&quot; data-image-src=&quot;https://k.kakaocdn.net/dn/rg2yh/btq8KQv4wlX/0JxRISOYfU2aUcIovFimv1/img.png&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;텍스트채팅&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
 &lt;li&gt;메시지의 효율적인 전송을 위한 STOMP 프로토콜 사용&lt;/li&gt;
 &lt;li&gt;보안을 위한 세션 연결 전 JWT를 사용해 AUTH 서버로 인증과 메시지 로깅&lt;/li&gt;
 &lt;li&gt;확장성, 결함 허용성, 간편한 모니터링을 위한 External Broker로 RabbitMQ STOMP 브로커 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; &lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;193&quot; data-origin-height=&quot;170&quot; data-image-src=&quot;https://k.kakaocdn.net/dn/QIwEz/btq8OjD0JDQ/vgYPpMkeMg7xcqi3uj5eQk/img.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QIwEz/btq8OjD0JDQ/vgYPpMkeMg7xcqi3uj5eQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QIwEz/btq8OjD0JDQ/vgYPpMkeMg7xcqi3uj5eQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QIwEz/btq8OjD0JDQ/vgYPpMkeMg7xcqi3uj5eQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQIwEz%2Fbtq8OjD0JDQ%2FvgYPpMkeMg7xcqi3uj5eQk%2Fimg.png&quot; data-origin-width=&quot;193&quot; data-origin-height=&quot;170&quot; data-image-src=&quot;https://k.kakaocdn.net/dn/QIwEz/btq8OjD0JDQ/vgYPpMkeMg7xcqi3uj5eQk/img.png&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt; &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;/p&gt;

            &lt;figure class=&quot;unsupported component-kakaotv&quot; contenteditable=&quot;false&quot; style=&quot;background:#000;margin:16px 0;min-height:72px;padding:10px 16px;display:flex;align-items:center;justify-content:center;text-align:center;box-sizing:border-box;width:100%;max-width:100%;&quot;&gt;
                &lt;p contenteditable=&quot;false&quot; style=&quot;margin:0;color:#8a8a8a;font-size:13px;line-height:1.6;user-select:none;pointer-events:none;&quot;&gt;동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.&lt;/p&gt;
            &lt;/figure&gt;
        
&lt;p data-ke-size=&quot;size16&quot;&gt; &lt;/p&gt;</description>
      <category>Project</category>
      <category>DEVCAMP</category>
      <category>WebRTC</category>
      <category>스마게</category>
      <category>스토브</category>
      <category>앱</category>
      <category>완벽</category>
      <category>음성채팅</category>
      <category>인턴</category>
      <category>한</category>
      <author>WithSeungRyu</author>
      <guid isPermaLink="true">https://withseungryu.tistory.com/152</guid>
      <comments>https://withseungryu.tistory.com/152#entry152comment</comments>
      <pubDate>Sun, 4 Jul 2021 22:08:58 +0900</pubDate>
    </item>
  </channel>
</rss>