<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Mr.Lee의 하루</title>
    <link>https://lee-mandu.tistory.com/</link>
    <description>안녕하세요.</description>
    <language>ko</language>
    <pubDate>Mon, 8 Jun 2026 15:38:34 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>Mr.Lee 하루</managingEditor>
    <image>
      <title>Mr.Lee의 하루</title>
      <url>https://tistory1.daumcdn.net/tistory/2049555/attach/db01446edb0742a89c2b333ce73f1e41</url>
      <link>https://lee-mandu.tistory.com</link>
    </image>
    <item>
      <title>PKIX Path Building Failed 오류란 무엇인가? Java 개발자가 가장 많이 만나는 SSL 오류 완전정복</title>
      <link>https://lee-mandu.tistory.com/749</link>
      <description>&lt;h1&gt;PKIX Path Building Failed 오류란 무엇인가? Java 개발자가 가장 많이 만나는 SSL 오류 완전정복&lt;/h1&gt;
&lt;p&gt;Java 개발을 하다 보면 언젠가는 반드시 만나게 되는 오류가 있습니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;PKIX path building failed&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;처음 보는 개발자는 당황합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;PKIX?
Path?
Building?&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;도대체 무슨 뜻인지 알기 어렵습니다.&lt;/p&gt;
&lt;p&gt;하지만 SSL/TLS의 원리를 이해하면 생각보다 어렵지 않습니다.&lt;/p&gt;
&lt;p&gt;오늘은 Java 개발자가 가장 많이 만나는 SSL 오류인 PKIX Path Building Failed에 대해 쉽게 설명해보겠습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;실제 오류 메시지&lt;/h1&gt;
&lt;p&gt;보통 아래와 같은 형태로 나타납니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException:
PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;처음 보면 상당히 무섭게 느껴집니다.&lt;/p&gt;
&lt;p&gt;하지만 사실 의미는 매우 단순합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;한 줄로 설명하면?&lt;/h1&gt;
&lt;p&gt;이 오류는&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&amp;quot;상대방 서버의 인증서를 믿을 수 없어서 HTTPS 연결을 거부했다&amp;quot;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;라는 뜻입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;실생활로 이해하기&lt;/h1&gt;
&lt;p&gt;여러분이 은행 창구에 갔다고 생각해보겠습니다.&lt;/p&gt;
&lt;p&gt;직원이 말합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;제가 은행 직원입니다.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;그럼 여러분은 무엇을 확인할까요?&lt;/p&gt;
&lt;p&gt;아마도 직원증을 확인할 것입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;직원이 직원증을 보여줍니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;이 직원증은 우리 은행이 발급했습니다.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;그런데 직원증이&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;동네 문구점&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;에서 발급한 것이라면?&lt;/p&gt;
&lt;p&gt;당연히 믿지 않을 것입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Java도 똑같습니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Java
 ↓
상대 서버 인증서 확인
 ↓
누가 발급했는지 검증
 ↓
신뢰 가능?
 ↓
연결 허용 또는 거부&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h1&gt;PKIX란 무엇인가?&lt;/h1&gt;
&lt;p&gt;PKIX는&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Public Key Infrastructure X.509&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;의 약자입니다.&lt;/p&gt;
&lt;p&gt;쉽게 말하면&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;인증서 신뢰 체계&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;라고 생각하면 됩니다.&lt;/p&gt;
&lt;p&gt;우리가 SSL 인증서를 신뢰할 수 있는 이유는&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;인증기관(CA)
 ↓
중간 인증기관
 ↓
서버 인증서&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;라는 체계가 있기 때문입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;인증서 체인이란?&lt;/h1&gt;
&lt;p&gt;이 개념이 가장 중요합니다.&lt;/p&gt;
&lt;p&gt;예를 들어&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;example.com&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;의 인증서가 있다고 가정해봅시다.&lt;/p&gt;
&lt;p&gt;실제로는 아래처럼 연결되어 있습니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Root CA
 ↓
Intermediate CA
 ↓
example.com 인증서&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이를 인증서 체인(Certificate Chain)이라고 부릅니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;Java는 무엇을 검증할까?&lt;/h1&gt;
&lt;p&gt;Java는 서버에 접속하면 다음을 확인합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;서버 인증서
 ↓
중간 인증기관
 ↓
루트 인증기관&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이 경로가 정상적으로 연결되는지 검사합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;예시&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;서버 인증서
 ↓
DigiCert Intermediate
 ↓
DigiCert Root&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Java가&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;DigiCert Root&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;를 신뢰하고 있으면&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;HTTPS 연결 성공&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;그런데 왜 오류가 발생할까?&lt;/h1&gt;
&lt;p&gt;대표적인 원인은&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;인증서 체인을 끝까지 만들 수 없음&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;입니다.&lt;/p&gt;
&lt;p&gt;그래서&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;PKIX path building failed&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;가 발생합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;가장 흔한 원인 1&lt;/h1&gt;
&lt;h2&gt;인증서가 신뢰 저장소에 없음&lt;/h2&gt;
&lt;p&gt;Java는 자체 신뢰 목록을 가지고 있습니다.&lt;/p&gt;
&lt;p&gt;이를&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;cacerts&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;라고 합니다.&lt;/p&gt;
&lt;p&gt;만약 서버 인증서가&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;사설 인증서&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이거나&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;회사 내부 인증서&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;라면&lt;/p&gt;
&lt;p&gt;Java는 처음 보는 인증서라서 거부합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;가장 흔한 원인 2&lt;/h1&gt;
&lt;h2&gt;Java 버전이 너무 오래됨&lt;/h2&gt;
&lt;p&gt;오래된 Java는&lt;/p&gt;
&lt;p&gt;새로운 인증기관을 모를 수 있습니다.&lt;/p&gt;
&lt;p&gt;예를 들어&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Java 7&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;같은 구버전에서는&lt;/p&gt;
&lt;p&gt;최신 인증서를 신뢰하지 못하는 경우가 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;가장 흔한 원인 3&lt;/h1&gt;
&lt;h2&gt;중간 인증서 누락&lt;/h2&gt;
&lt;p&gt;서버가&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;서버 인증서&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;만 보내고&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Intermediate CA&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;를 보내지 않는 경우입니다.&lt;/p&gt;
&lt;p&gt;그러면 Java는&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;누가 발급했는지 모르겠는데?&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;라고 판단합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;가장 흔한 원인 4&lt;/h1&gt;
&lt;h2&gt;프록시 또는 SSL 장비&lt;/h2&gt;
&lt;p&gt;회사 내부망에서는&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;내 PC
 ↓
보안장비
 ↓
인터넷&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;구조인 경우가 많습니다.&lt;/p&gt;
&lt;p&gt;보안장비가 SSL을 해독하기 위해&lt;/p&gt;
&lt;p&gt;새로운 인증서를 생성하기도 합니다.&lt;/p&gt;
&lt;p&gt;하지만 Java는&lt;/p&gt;
&lt;p&gt;그 인증서를 신뢰하지 않습니다.&lt;/p&gt;
&lt;p&gt;그래서 PKIX 오류가 발생합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;실제 업무에서 자주 보는 사례&lt;/h1&gt;
&lt;h2&gt;사례 1&lt;/h2&gt;
&lt;p&gt;개발 서버에서는 정상&lt;/p&gt;
&lt;p&gt;운영 서버에서만 실패&lt;/p&gt;
&lt;p&gt;원인&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;운영 서버의 cacerts가 오래됨&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;사례 2&lt;/h2&gt;
&lt;p&gt;브라우저는 정상&lt;/p&gt;
&lt;p&gt;Java만 실패&lt;/p&gt;
&lt;p&gt;원인&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;브라우저 신뢰 저장소와
Java 신뢰 저장소가 다름&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;사례 3&lt;/h2&gt;
&lt;p&gt;외부 API 연동 실패&lt;/p&gt;
&lt;p&gt;원인&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;상대방 서버 인증서 변경&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h1&gt;어떻게 확인할까?&lt;/h1&gt;
&lt;p&gt;가장 많이 사용하는 명령어&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;openssl s_client -connect example.com:443&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;p&gt;출력 예시&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Certificate chain
0 s:/CN=example.com
1 s:/CN=Intermediate CA
2 s:/CN=Root CA&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;체인이 정상인지 확인할 수 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;Java에서 신뢰 저장소 확인&lt;/h1&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;keytool -list \
-keystore $JAVA_HOME/lib/security/cacerts&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;기본 비밀번호&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;changeit&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;임시 해결 방법&lt;/h1&gt;
&lt;p&gt;인증서를 추출한 후&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;keytool -importcert&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;로 cacerts에 등록할 수 있습니다.&lt;/p&gt;
&lt;p&gt;예시&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;keytool -importcert \
-file server.crt \
-keystore cacerts \
-alias myserver&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h1&gt;하지만 주의&lt;/h1&gt;
&lt;p&gt;실무에서는&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;인증서 검증 무시
TrustAll
HostnameVerifier 무력화&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;를 사용하는 경우가 있습니다.&lt;/p&gt;
&lt;p&gt;예를 들면&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;TrustManager[] trustAll&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;코드입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;이 방법은 개발 테스트에서는 사용할 수 있지만&lt;/p&gt;
&lt;p&gt;운영에서는 절대 권장되지 않습니다.&lt;/p&gt;
&lt;p&gt;왜냐하면&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;가짜 서버
중간자 공격
위조 인증서&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;를 구분할 수 없게 되기 때문입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;정리&lt;/h1&gt;
&lt;p&gt;PKIX Path Building Failed는&lt;/p&gt;
&lt;p&gt;복잡해 보이지만 사실 한 문장으로 설명할 수 있습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;Java가 상대 서버의 인증서를 신뢰하지 못해서 HTTPS 연결을 거부한 상태&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;대부분의 원인은 다음 네 가지입니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;1. 신뢰 저장소(cacerts)에 인증서 없음
2. Java 버전이 너무 오래됨
3. 인증서 체인 누락
4. 프록시 또는 SSL 보안장비 개입&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;SSL/TLS 문제를 분석할 때는 단순히 에러 메시지만 보지 말고&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;인증서
인증서 체인
Java 버전
cacerts
프록시 환경&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;을 함께 확인하는 습관이 중요합니다.&lt;/p&gt;
&lt;p&gt;PKIX 오류를 이해하는 순간, 대부분의 HTTPS 인증서 문제를 스스로 분석할 수 있게 됩니다.&lt;/p&gt;</description>
      <category>개발/네트워크</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/749</guid>
      <comments>https://lee-mandu.tistory.com/749#entry749comment</comments>
      <pubDate>Sun, 7 Jun 2026 12:07:56 +0900</pubDate>
    </item>
    <item>
      <title>2026-06-06 KBO 승부 예측 AI &amp;mdash; SSG 랜더스 vs KT 위즈 외 오늘 경기</title>
      <link>https://lee-mandu.tistory.com/757</link>
      <description>&lt;h1&gt;2026-06-06 KBO 승부 예측 AI — SSG 랜더스 vs KT 위즈 외 오늘 경기&lt;/h1&gt;
&lt;p&gt;AI 예측 모델이 오늘의 KBO 경기를 수치로 전망합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;오늘의 경기 예측 요약 — 6월 6일(토)&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;경기&lt;/th&gt;
&lt;th&gt;예측 승자&lt;/th&gt;
&lt;th&gt;홈 승률&lt;/th&gt;
&lt;th&gt;원정 승률&lt;/th&gt;
&lt;th&gt;신뢰도&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;NC 다이노스 vs LG 트윈스&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;LG 트윈스&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;43.0%&lt;/td&gt;
&lt;td&gt;57.0%&lt;/td&gt;
&lt;td&gt;보통&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;롯데 자이언츠 vs 한화 이글스&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;한화 이글스&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;45.7%&lt;/td&gt;
&lt;td&gt;54.3%&lt;/td&gt;
&lt;td&gt;보통&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KIA 타이거즈 vs 삼성 라이온즈&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;KIA 타이거즈&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;52.3%&lt;/td&gt;
&lt;td&gt;47.7%&lt;/td&gt;
&lt;td&gt;보통&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;두산 베어스 vs 키움 히어로즈&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;두산 베어스&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;51.4%&lt;/td&gt;
&lt;td&gt;48.6%&lt;/td&gt;
&lt;td&gt;보통&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SSG 랜더스 vs KT 위즈&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;SSG 랜더스&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;51.3%&lt;/td&gt;
&lt;td&gt;48.7%&lt;/td&gt;
&lt;td&gt;보통&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;예측 확률은 AI 통계 모델 기반이며 실제 결과를 보장하지 않습니다.&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h2&gt;경기별 상세 분석&lt;/h2&gt;
&lt;h3&gt;NC 다이노스 vs LG 트윈스&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;경기 정보&lt;/strong&gt; : 2026-06-06 17:00 / 창원NC파크&lt;/p&gt;
&lt;h4&gt;선발 투수&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;구분&lt;/th&gt;
&lt;th&gt;투수&lt;/th&gt;
&lt;th&gt;ERA&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;홈 (NC 다이노스)&lt;/td&gt;
&lt;td&gt;테일러&lt;/td&gt;
&lt;td&gt;5.44&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;원정 (LG 트윈스)&lt;/td&gt;
&lt;td&gt;톨허스트&lt;/td&gt;
&lt;td&gt;3.24&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h4&gt;최근 흐름&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;팀&lt;/th&gt;
&lt;th&gt;최근 5경기&lt;/th&gt;
&lt;th&gt;요약&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;NC 다이노스&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;WLWWL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;3승 2패&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;LG 트윈스&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;WWLWW&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;4승 1패 / 강세&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h4&gt;AI 핵심 요인&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;ELO 레이팅 -29 (원정 우위)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;선발 투수 지표 LG 우위 (0.575 vs 0.354)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;최근 5경기 NC 3승 / LG 4승&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;구장(창원NC파크) — 투수 친화 (0.97)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;NC 불펜 소진 (12.3이닝/3일)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;예측 결과&lt;/h4&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;LG 트윈스&lt;/strong&gt; 승리 예측 — &lt;strong&gt;57.0%&lt;/strong&gt; (미세 우세)&lt;/p&gt;
&lt;p&gt;데이터 완전성: 95.0% / 신뢰도: &lt;strong&gt;보통&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h3&gt;롯데 자이언츠 vs 한화 이글스&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;경기 정보&lt;/strong&gt; : 2026-06-06 17:00 / 부산사직야구장&lt;/p&gt;
&lt;h4&gt;선발 투수&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;구분&lt;/th&gt;
&lt;th&gt;투수&lt;/th&gt;
&lt;th&gt;ERA&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;홈 (롯데 자이언츠)&lt;/td&gt;
&lt;td&gt;이민석&lt;/td&gt;
&lt;td&gt;8.78&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;원정 (한화 이글스)&lt;/td&gt;
&lt;td&gt;에르난데스&lt;/td&gt;
&lt;td&gt;4.47&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h4&gt;최근 흐름&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;팀&lt;/th&gt;
&lt;th&gt;최근 5경기&lt;/th&gt;
&lt;th&gt;요약&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;롯데 자이언츠&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;LLWLL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;1승 4패 / 부진&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;한화 이글스&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;WLLLW&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;2승 3패&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h4&gt;AI 핵심 요인&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;선발 투수 지표 한화 우위 (0.475 vs 0.351)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;최근 5경기 롯데 1승 / 한화 2승&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;구장(부산사직야구장) — 타자 친화 (1.03)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;롯데 불펜 소진 (10.3이닝/3일)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;한화 불펜 소진 (11.0이닝/3일)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;예측 결과&lt;/h4&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;한화 이글스&lt;/strong&gt; 승리 예측 — &lt;strong&gt;54.3%&lt;/strong&gt; (팽팽한 대결)&lt;/p&gt;
&lt;p&gt;데이터 완전성: 95.0% / 신뢰도: &lt;strong&gt;보통&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h3&gt;KIA 타이거즈 vs 삼성 라이온즈&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;경기 정보&lt;/strong&gt; : 2026-06-06 17:00 / 광주기아챔피언스필드&lt;/p&gt;
&lt;h4&gt;선발 투수&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;구분&lt;/th&gt;
&lt;th&gt;투수&lt;/th&gt;
&lt;th&gt;ERA&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;홈 (KIA 타이거즈)&lt;/td&gt;
&lt;td&gt;양현종&lt;/td&gt;
&lt;td&gt;4.84&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;원정 (삼성 라이온즈)&lt;/td&gt;
&lt;td&gt;장찬희&lt;/td&gt;
&lt;td&gt;4.0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h4&gt;최근 흐름&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;팀&lt;/th&gt;
&lt;th&gt;최근 5경기&lt;/th&gt;
&lt;th&gt;요약&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;KIA 타이거즈&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;LWLWW&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;3승 2패&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;삼성 라이온즈&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;WWLLL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;2승 3패 / 3연패 중&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h4&gt;AI 핵심 요인&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;ELO 레이팅 +29 (홈 우위)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;선발 투수 지표 삼성 우위 (0.394 vs 0.367)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;최근 5경기 KIA 3승 / 삼성 2승&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;구장(광주기아챔피언스필드) — 타자 친화 (1.01)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;날씨: 더위(26°C) 소폭 타자 유리&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;예측 결과&lt;/h4&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;KIA 타이거즈&lt;/strong&gt; 승리 예측 — &lt;strong&gt;52.3%&lt;/strong&gt; (예측 불허)&lt;/p&gt;
&lt;p&gt;데이터 완전성: 95.0% / 신뢰도: &lt;strong&gt;보통&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h3&gt;두산 베어스 vs 키움 히어로즈&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;경기 정보&lt;/strong&gt; : 2026-06-06 17:00 / 잠실야구장&lt;/p&gt;
&lt;h4&gt;선발 투수&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;구분&lt;/th&gt;
&lt;th&gt;투수&lt;/th&gt;
&lt;th&gt;ERA&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;홈 (두산 베어스)&lt;/td&gt;
&lt;td&gt;최민석&lt;/td&gt;
&lt;td&gt;3.29&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;원정 (키움 히어로즈)&lt;/td&gt;
&lt;td&gt;안우진&lt;/td&gt;
&lt;td&gt;2.25&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h4&gt;최근 흐름&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;팀&lt;/th&gt;
&lt;th&gt;최근 5경기&lt;/th&gt;
&lt;th&gt;요약&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;두산 베어스&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;LWLWW&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;3승 2패&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;키움 히어로즈&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;LWLLL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;1승 4패 / 3연패 중&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h4&gt;AI 핵심 요인&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;ELO 레이팅 +39 (홈 우위)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;선발 투수 지표 키움 우위 (0.676 vs 0.453)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;최근 5경기 두산 3승 / 키움 1승&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;구장(잠실야구장) — 타자 친화 (1.05)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;두산 불펜 소진 (15.3이닝/3일)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;예측 결과&lt;/h4&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;두산 베어스&lt;/strong&gt; 승리 예측 — &lt;strong&gt;51.4%&lt;/strong&gt; (혼전 양상)&lt;/p&gt;
&lt;p&gt;데이터 완전성: 95.0% / 신뢰도: &lt;strong&gt;보통&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h3&gt;SSG 랜더스 vs KT 위즈&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;경기 정보&lt;/strong&gt; : 2026-06-06 14:00 / 인천SSG랜더스필드&lt;/p&gt;
&lt;h4&gt;선발 투수&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;구분&lt;/th&gt;
&lt;th&gt;투수&lt;/th&gt;
&lt;th&gt;ERA&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;홈 (SSG 랜더스)&lt;/td&gt;
&lt;td&gt;타케다&lt;/td&gt;
&lt;td&gt;8.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;원정 (KT 위즈)&lt;/td&gt;
&lt;td&gt;배제성&lt;/td&gt;
&lt;td&gt;7.71&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h4&gt;최근 흐름&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;팀&lt;/th&gt;
&lt;th&gt;최근 5경기&lt;/th&gt;
&lt;th&gt;요약&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SSG 랜더스&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;LLWWW&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;3승 2패 / 3연승 중&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;KT 위즈&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;WLWLL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;2승 3패&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h4&gt;AI 핵심 요인&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;ELO 레이팅 +29 (홈 우위)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;선발 투수 지표 KT 우위 (0.251 vs 0.226)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;최근 5경기 SSG 3승 / KT 2승&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;구장(인천SSG랜더스필드) — 투수 친화 (0.98)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SSG 불펜 소진 (17.7이닝/3일)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;예측 결과&lt;/h4&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;SSG 랜더스&lt;/strong&gt; 승리 예측 — &lt;strong&gt;51.3%&lt;/strong&gt; (혼전 양상)&lt;/p&gt;
&lt;p&gt;데이터 완전성: 95.0% / 신뢰도: &lt;strong&gt;보통&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h2&gt;AI 예측 모델 안내&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;요소&lt;/th&gt;
&lt;th&gt;가중치&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;ELO 전력 레이팅&lt;/td&gt;
&lt;td&gt;40%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;선발 투수 지표&lt;/td&gt;
&lt;td&gt;28%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;최근 10경기 흐름&lt;/td&gt;
&lt;td&gt;14%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;홈 이점&lt;/td&gt;
&lt;td&gt;8%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;파크팩터·날씨·불펜&lt;/td&gt;
&lt;td&gt;10%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;선발 투수 미확정 경기는 ELO 기반 초안 예측입니다. 라인업 확정 후 자동 업데이트됩니다.&lt;/p&gt;
&lt;h2&gt;이번 달 모델 적중률&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;적중: &lt;strong&gt;12경기&lt;/strong&gt; / 전체: &lt;strong&gt;19경기&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;적중률: &lt;strong&gt;63.2%&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;예측이 맞든 틀리든, 오늘의 경기 자체를 즐겨보세요.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;KBO AI 예측 시스템&lt;/h2&gt;
&lt;p&gt;더 자세한 경기 분석과 실시간 예측은 아래에서 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;  &lt;a href=&quot;https://lee-kbo-web.onrender.com/&quot;&gt;KBO Predictor — AI 경기 예측&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;면책 고지&lt;/strong&gt;: 본 예측은 통계 모델 기반 참고 정보이며, 실제 경기 결과와 다를 수 있습니다. 스포츠 베팅 등 금전적 결정의 근거로 사용하지 마십시오.&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;</description>
      <category>스포츠 분석</category>
      <category>AI분석</category>
      <category>KBO</category>
      <category>KBO예측</category>
      <category>승리예측</category>
      <category>야구</category>
      <category>오늘경기</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/757</guid>
      <comments>https://lee-mandu.tistory.com/757#entry757comment</comments>
      <pubDate>Sat, 6 Jun 2026 16:08:34 +0900</pubDate>
    </item>
    <item>
      <title>SSL 인증서란 무엇인가? 개발자와 일반인 모두 이해하는 쉬운 설명</title>
      <link>https://lee-mandu.tistory.com/748</link>
      <description>&lt;h1&gt;SSL 인증서란 무엇인가? 개발자와 일반인 모두 이해하는 쉬운 설명&lt;/h1&gt;
&lt;p&gt;인터넷을 사용하다 보면 주소창에서 자물쇠 모양을 본 적이 있을 것입니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;https://
 &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;대부분은 그냥 지나치지만 사실 이 자물쇠 하나가 여러분의 개인정보와 금융정보를 보호하고 있습니다.&lt;/p&gt;
&lt;p&gt;오늘은 SSL 인증서가 무엇인지, 왜 필요한지, 그리고 개발자는 왜 SSL 인증서를 이해해야 하는지 쉽게 설명해 보겠습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;SSL 인증서란?&lt;/h1&gt;
&lt;p&gt;한 줄로 설명하면&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;인터넷에서 &amp;quot;이 서버는 진짜 서버입니다&amp;quot;라고 증명해주는 전자 신분증&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;입니다.&lt;/p&gt;
&lt;p&gt;사람에게 주민등록증이 있듯이&lt;/p&gt;
&lt;p&gt;웹사이트에게는 SSL 인증서가 있습니다.&lt;/p&gt;
&lt;p&gt;예를 들어 여러분이 은행 사이트에 접속했다고 가정해 봅시다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;https://bank.example.com&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;그런데 여러분은 정말 은행 서버에 접속한 걸까요?&lt;/p&gt;
&lt;p&gt;아니면 해커가 만든 가짜 서버에 접속한 걸까요?&lt;/p&gt;
&lt;p&gt;화면만 똑같이 만들면 일반 사용자는 구분할 수 없습니다.&lt;/p&gt;
&lt;p&gt;그래서 서버는 SSL 인증서를 보여주며 말합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;제가 진짜 bank.example.com 입니다.
공인 인증기관이 증명해 줍니다.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;브라우저는 이 인증서를 검증한 뒤에만 연결을 허용합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;왜 SSL 인증서가 필요할까?&lt;/h1&gt;
&lt;p&gt;인터넷을 우체국이라고 생각해 보겠습니다.&lt;/p&gt;
&lt;p&gt;만약 편지봉투 없이 엽서를 보낸다면&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;아이디
비밀번호
주민번호
카드번호&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;를 누구나 읽을 수 있습니다.&lt;/p&gt;
&lt;p&gt;SSL 인증서는 이 정보를 봉투에 넣고 자물쇠를 채우는 역할을 합니다.&lt;/p&gt;
&lt;p&gt;즉&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;사용자
 ↓
암호화
 ↓
웹 서버&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;형태로 안전하게 전송됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;SSL 인증서가 없다면?&lt;/h1&gt;
&lt;p&gt;생각보다 위험합니다.&lt;/p&gt;
&lt;p&gt;예를 들어 카페 와이파이를 사용한다고 가정해 봅시다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;사용자
 ↓
공용 와이파이
 ↓
인터넷
 ↓
웹 서버&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;SSL이 없다면&lt;/p&gt;
&lt;p&gt;중간에서 패킷을 가로채&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;아이디
비밀번호
이메일
전화번호&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;를 그대로 볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;이를 스니핑(Sniffing)이라고 합니다.&lt;/p&gt;
&lt;p&gt;SSL 인증서는 이런 공격을 방지합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;SSL 인증서는 누가 발급할까?&lt;/h1&gt;
&lt;p&gt;아무나 발급할 수 있다면 의미가 없습니다.&lt;/p&gt;
&lt;p&gt;그래서 공인된 기관이 발급합니다.&lt;/p&gt;
&lt;p&gt;대표적으로&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DigiCert&lt;/li&gt;
&lt;li&gt;Sectigo&lt;/li&gt;
&lt;li&gt;GlobalSign&lt;/li&gt;
&lt;li&gt;Let&amp;#39;s Encrypt&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;등이 있습니다.&lt;/p&gt;
&lt;p&gt;이 기관들을 CA(Certificate Authority)라고 부릅니다.&lt;/p&gt;
&lt;p&gt;우리말로는 인증기관입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;실제 생활로 이해하기&lt;/h1&gt;
&lt;p&gt;은행 창구에 갔다고 생각해 봅시다.&lt;/p&gt;
&lt;p&gt;직원이 말합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;제가 은행 직원입니다.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;그 말을 바로 믿을 수 있을까요?&lt;/p&gt;
&lt;p&gt;아마도 신분증을 보여달라고 할 것입니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;은행 직원증&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;을 보여주면 신뢰하게 됩니다.&lt;/p&gt;
&lt;p&gt;SSL 인증서도 똑같습니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;웹 서버
 ↓
SSL 인증서 제시
 ↓
브라우저 검증
 ↓
신뢰
 ↓
연결&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h1&gt;SSL 인증서 안에는 무엇이 들어 있을까?&lt;/h1&gt;
&lt;p&gt;인증서에는 다양한 정보가 저장됩니다.&lt;/p&gt;
&lt;p&gt;대표적으로&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;도메인명
발급기관
유효기간
공개키(Public Key)
발급일
만료일&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;등이 포함됩니다.&lt;/p&gt;
&lt;p&gt;예를 들어&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;도메인
example.com

발급기관
Let&amp;#39;s Encrypt

만료일
2027-05-31&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;과 같은 정보가 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;SSL 인증서와 HTTPS의 관계&lt;/h1&gt;
&lt;p&gt;많은 사람들이 헷갈리는 부분입니다.&lt;/p&gt;
&lt;p&gt;SSL 인증서 자체가 HTTPS는 아닙니다.&lt;/p&gt;
&lt;p&gt;관계는 다음과 같습니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;SSL 인증서
 +
TLS 암호화
 =
HTTPS&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;즉 SSL 인증서는 HTTPS를 구성하는 중요한 요소 중 하나입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;SSL 인증서 검증은 어떻게 할까?&lt;/h1&gt;
&lt;p&gt;브라우저는 접속 시 다음을 확인합니다.&lt;/p&gt;
&lt;h3&gt;1. 인증서가 위조되지 않았는가?&lt;/h3&gt;
&lt;hr&gt;
&lt;h3&gt;2. 인증서가 만료되지 않았는가?&lt;/h3&gt;
&lt;p&gt;예를 들어&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;2024.01.01 ~ 2025.01.01&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;기간인데&lt;/p&gt;
&lt;p&gt;현재가 2026년이면 오류가 발생합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;3. 도메인이 일치하는가?&lt;/h3&gt;
&lt;p&gt;인증서는&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;example.com&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;용인데&lt;/p&gt;
&lt;p&gt;실제로는&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;fake-example.com&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이라면 경고가 발생합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;4. 신뢰할 수 있는 기관이 발급했는가?&lt;/h3&gt;
&lt;p&gt;브라우저는 내부적으로 신뢰 목록을 가지고 있습니다.&lt;/p&gt;
&lt;p&gt;목록에 없는 기관이 발급한 인증서는 신뢰하지 않습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;개발자가 자주 만나는 SSL 오류&lt;/h1&gt;
&lt;h2&gt;인증서 만료&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;CertificateExpiredException&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;가장 흔한 문제입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;인증서 체인 오류&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;PKIX path building failed&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Java 개발자가 가장 많이 보는 오류 중 하나입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;도메인 불일치&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;hostname verification failed&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;발급받은 도메인과 실제 접속 도메인이 다를 때 발생합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;신뢰할 수 없는 인증서&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;unable to find valid certification path&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;주로 개발 서버에서 발생합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;SSL 인증서를 무료로 사용할 수 있을까?&lt;/h1&gt;
&lt;p&gt;가능합니다.&lt;/p&gt;
&lt;p&gt;현재 가장 유명한 무료 인증기관은&lt;/p&gt;
&lt;p&gt;Let&amp;#39;s Encrypt 입니다.&lt;/p&gt;
&lt;p&gt;많은 기업과 개인 블로그, 쇼핑몰이 사용하고 있습니다.&lt;/p&gt;
&lt;p&gt;갱신도 자동화할 수 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;개발자가 반드시 이해해야 하는 이유&lt;/h1&gt;
&lt;p&gt;요즘 대부분의 서비스는 HTTPS를 사용합니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;로그인&lt;/li&gt;
&lt;li&gt;결제&lt;/li&gt;
&lt;li&gt;API 연동&lt;/li&gt;
&lt;li&gt;본인 인증&lt;/li&gt;
&lt;li&gt;모바일 앱&lt;/li&gt;
&lt;li&gt;클라우드 서비스&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;모두 SSL/TLS 위에서 동작합니다.&lt;/p&gt;
&lt;p&gt;따라서 개발자는&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;SSL 인증서
TLS Handshake
HTTPS
인증서 검증
PKIX 오류&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;를 이해해야 실제 운영 환경에서 발생하는 문제를 해결할 수 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;정리&lt;/h1&gt;
&lt;p&gt;SSL 인증서는 단순한 파일이 아닙니다.&lt;/p&gt;
&lt;p&gt;인터넷에서 서버의 신원을 증명하고 데이터를 안전하게 보호하는 전자 신분증입니다.&lt;/p&gt;
&lt;p&gt;우리가 주소창에서 보는 자물쇠 하나 뒤에는&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;서버 인증
암호화
무결성 검증
보안 연결&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이라는 복잡한 기술이 숨어 있습니다.&lt;/p&gt;
&lt;p&gt;HTTPS가 일상이 된 지금, SSL 인증서를 이해하는 것은 개발자뿐만 아니라 인터넷을 사용하는 모든 사람에게 중요한 보안 상식이라고 할 수 있습니다.&lt;/p&gt;</description>
      <category>개발/네트워크</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/748</guid>
      <comments>https://lee-mandu.tistory.com/748#entry748comment</comments>
      <pubDate>Sat, 6 Jun 2026 08:02:50 +0900</pubDate>
    </item>
    <item>
      <title>2026년 6월 5일 AI 분석 기반 오늘의 관찰 종목 TOP5</title>
      <link>https://lee-mandu.tistory.com/756</link>
      <description>&lt;p&gt;안녕하세요. 오늘의 글 입니다.&lt;/p&gt;
&lt;h1&gt;2026년 6월 5일 AI 분석 기반 오늘의 관찰 종목 TOP5&lt;/h1&gt;
&lt;p&gt;오늘 AI가 주목한 종목들입니다. 점수는 참고용이며 투자 판단은 본인이 하셔야 합니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;시스템 상태: &lt;strong&gt;PILOT&lt;/strong&gt; | 모델 검증: &lt;strong&gt;REJECTED&lt;/strong&gt;&lt;br&gt;현재 시스템은 관찰 모드입니다. 아래 종목은 매수 추천이 아닌 AI 관찰 리스트입니다.&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h2&gt;오늘의 시장 국면: 중립&lt;/h2&gt;
&lt;p&gt;오늘 시장은 &amp;#39;중립&amp;#39;으로 분류됐다. 뚜렷한 방향성보다 종목별 차별화가 나타나는 국면이다. 세부 지표로는 상승 종목 비율 약 28%, 최근 20일 수익률 +10.5% 수준이며, 변동성 주의 신호가 켜져 있습니다. 이런 국면에서는 개별 종목의 점수만 보기보다 전체 흐름과 함께 해석하는 편이 안전하다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;AI 관찰 종목 TOP5&lt;/h2&gt;
&lt;p&gt;점수는 43개 피처를 분석한 AI 모델의 종합 평가값(0~100)입니다.&lt;/p&gt;
&lt;h3&gt;점수 읽는 법&lt;/h3&gt;
&lt;p&gt;점수는 43개 피처를 분석한 AI 모델의 종합 평가값(0~100)입니다. 70점 이상은 상위권, 60점대는 중상위권으로 분류됩니다.&lt;br&gt;모델 예상 수익률은 60일 기준 통계적 추정치이며 실제 수익을 보장하지 않습니다.&lt;/p&gt;
&lt;h3&gt;종목별 분석&lt;/h3&gt;
&lt;h4&gt;1. 비에이치아이 (KOSDAQ)&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;값&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;업종/테마&lt;/td&gt;
&lt;td&gt;에너지장비및서비스 / 전력설비&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI 종합점수&lt;/td&gt;
&lt;td&gt;74.6점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;신뢰점수&lt;/td&gt;
&lt;td&gt;80.4점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;모델 예상 60일 수익&lt;/td&gt;
&lt;td&gt;64.6%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;예상 낙폭&lt;/td&gt;
&lt;td&gt;-20.8%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RSI&lt;/td&gt;
&lt;td&gt;30.8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;상태&lt;/td&gt;
&lt;td&gt;WATCH&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;비에이치아이는 AI 종합점수 74.6점으로 상위권에 자리한다. RSI는 30.8로 약세 구간이며, 모델은 60일 기준 약 64.6%의 수익과 -20.8%의 낙폭을 예상한다. 기대 수익률이 높은 만큼 예상 낙폭도 커, 변동성이 큰 구간으로 해석할 수 있다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;긍정 요인&lt;/strong&gt;: 높은 수익 신호 / 상위권 진입 확률 우수 / 신뢰 점수 보통&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;주의 요인&lt;/strong&gt;: 모델 검증 진행 중 / 예상 낙폭 주의&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;2. 에스티팜 (KOSDAQ)&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;값&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;업종/테마&lt;/td&gt;
&lt;td&gt;제약 / 바이오&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI 종합점수&lt;/td&gt;
&lt;td&gt;66.5점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;신뢰점수&lt;/td&gt;
&lt;td&gt;81.4점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;모델 예상 60일 수익&lt;/td&gt;
&lt;td&gt;33.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;예상 낙폭&lt;/td&gt;
&lt;td&gt;-18.1%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RSI&lt;/td&gt;
&lt;td&gt;34.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;상태&lt;/td&gt;
&lt;td&gt;WATCH&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;에스티팜은 기술적으로 RSI 34.2의 약세 흐름 속에서 AI 종합점수 66.5점(중상위권)을 기록했다. 모델이 보는 60일 그림은 수익 33.2%, 낙폭 -18.1%다. 기대 수익률 신호가 살아 있는 편이라 흐름을 지켜볼 만하다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;긍정 요인&lt;/strong&gt;: 높은 수익 신호 / 상위권 진입 확률 우수 / 신뢰 점수 보통&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;주의 요인&lt;/strong&gt;: 모델 검증 진행 중 / 상위권 확률 보통&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;3. 리노공업 (KOSDAQ)&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;값&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;업종/테마&lt;/td&gt;
&lt;td&gt;반도체와반도체장비&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI 종합점수&lt;/td&gt;
&lt;td&gt;64.7점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;신뢰점수&lt;/td&gt;
&lt;td&gt;76.9점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;모델 예상 60일 수익&lt;/td&gt;
&lt;td&gt;19.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;예상 낙폭&lt;/td&gt;
&lt;td&gt;-22.3%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RSI&lt;/td&gt;
&lt;td&gt;40.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;상태&lt;/td&gt;
&lt;td&gt;WATCH&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;점수 64.7점(중상위권)을 받은 리노공업은 현재 RSI 40.5, 즉 약세 흐름이다. 모델 추정으로는 60일간 19.2% 수익, -22.3% 낙폭이 전망된다. 기대 수익률과 낙폭이 모두 제한적이라 보수적으로 관찰하는 편이 낫다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;긍정 요인&lt;/strong&gt;: 상위권 진입 확률 우수 / 신뢰 점수 보통&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;주의 요인&lt;/strong&gt;: 모델 검증 진행 중 / 예상 낙폭 주의&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;4. GS (KOSPI)&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;값&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;업종/테마&lt;/td&gt;
&lt;td&gt;석유와가스&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI 종합점수&lt;/td&gt;
&lt;td&gt;60.2점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;신뢰점수&lt;/td&gt;
&lt;td&gt;85.5점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;모델 예상 60일 수익&lt;/td&gt;
&lt;td&gt;30.9%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;예상 낙폭&lt;/td&gt;
&lt;td&gt;-22.5%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RSI&lt;/td&gt;
&lt;td&gt;49.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;상태&lt;/td&gt;
&lt;td&gt;WATCH&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;GS는 기술적으로 RSI 49.0의 중립 흐름 속에서 AI 종합점수 60.2점(중상위권)을 기록했다. 모델이 보는 60일 그림은 수익 30.9%, 낙폭 -22.5%다. 기대 수익률이 높은 만큼 예상 낙폭도 커, 변동성이 큰 구간으로 해석할 수 있다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;긍정 요인&lt;/strong&gt;: 높은 수익 신호 / 신뢰 점수 보통&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;주의 요인&lt;/strong&gt;: 모델 검증 진행 중 / 상위권 확률 보통 / 예상 낙폭 주의&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;5. 카카오 (KOSPI)&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;값&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;업종/테마&lt;/td&gt;
&lt;td&gt;양방향미디어와서비스 / Digital Platform Ecosystem&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI 종합점수&lt;/td&gt;
&lt;td&gt;60.2점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;신뢰점수&lt;/td&gt;
&lt;td&gt;80.1점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;모델 예상 60일 수익&lt;/td&gt;
&lt;td&gt;34.4%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;예상 낙폭&lt;/td&gt;
&lt;td&gt;-20.1%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RSI&lt;/td&gt;
&lt;td&gt;37.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;상태&lt;/td&gt;
&lt;td&gt;WATCH&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;중상위권 점수(60.2점)를 받은 카카오는, 60일 기준 수익 34.4%·낙폭 -20.1%가 전망된다. RSI 37.1로 약세 국면이다. 기대 수익률이 높은 만큼 예상 낙폭도 커, 변동성이 큰 구간으로 해석할 수 있다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;긍정 요인&lt;/strong&gt;: 높은 수익 신호 / 신뢰 점수 양호&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;주의 요인&lt;/strong&gt;: 모델 검증 진행 중 / 상위권 확률 보통 / 예상 낙폭 주의&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;추가로 살펴볼 것들&lt;/h2&gt;
&lt;p&gt;시장 국면(레짐)은 자동 분류된 것으로, 실제 시장과 차이가 있을 수 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;꾸준한 데이터 축적이 좋은 판단의 기반이 됩니다. 내일도 확인해보세요.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;▶ AI 자동매매 시스템 실시간 현황: &lt;a href=&quot;https://www.leetrader.kr/app&quot;&gt;LeeTrader&lt;/a&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;본 글은 투자 참고용 정보이며 투자 판단과 책임은 투자자 본인에게 있습니다.&lt;br&gt;AI 모델의 예측 수익률은 과거 데이터 기반 통계적 추정치로, 실제 수익을 보장하지 않습니다.&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;</description>
      <category>주식 추천 시스템 개발</category>
      <category>AI주식</category>
      <category>자동매매</category>
      <category>종목분석</category>
      <category>코스닥</category>
      <category>코스피</category>
      <category>한국주식</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/756</guid>
      <comments>https://lee-mandu.tistory.com/756#entry756comment</comments>
      <pubDate>Fri, 5 Jun 2026 21:44:44 +0900</pubDate>
    </item>
    <item>
      <title>2026-06-05 KBO 오늘의 한판 &amp;mdash; AI 전력 분석</title>
      <link>https://lee-mandu.tistory.com/755</link>
      <description>&lt;h1&gt;2026-06-05 KBO 오늘의 한판 — AI 전력 분석&lt;/h1&gt;
&lt;p&gt;순위 경쟁이 치열한 시즌, 오늘 경기 하나하나가 중요합니다. AI 분석입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;오늘의 경기 예측 요약 — 6월 5일(금)&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;경기&lt;/th&gt;
&lt;th&gt;예측 승자&lt;/th&gt;
&lt;th&gt;홈 승률&lt;/th&gt;
&lt;th&gt;원정 승률&lt;/th&gt;
&lt;th&gt;신뢰도&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;두산 베어스 vs 키움 히어로즈&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;두산 베어스&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;58.0%&lt;/td&gt;
&lt;td&gt;42.0%&lt;/td&gt;
&lt;td&gt;보통&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;롯데 자이언츠 vs 한화 이글스&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;한화 이글스&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;39.2%&lt;/td&gt;
&lt;td&gt;60.8%&lt;/td&gt;
&lt;td&gt;보통&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SSG 랜더스 vs KT 위즈&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;KT 위즈&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;47.5%&lt;/td&gt;
&lt;td&gt;52.5%&lt;/td&gt;
&lt;td&gt;낮음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KIA 타이거즈 vs 삼성 라이온즈&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;KIA 타이거즈&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;54.3%&lt;/td&gt;
&lt;td&gt;45.7%&lt;/td&gt;
&lt;td&gt;높음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NC 다이노스 vs LG 트윈스&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;LG 트윈스&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;45.7%&lt;/td&gt;
&lt;td&gt;54.3%&lt;/td&gt;
&lt;td&gt;보통&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;예측 확률은 AI 통계 모델 기반이며 실제 결과를 보장하지 않습니다.&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h2&gt;경기별 상세 분석&lt;/h2&gt;
&lt;h3&gt;두산 베어스 vs 키움 히어로즈&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;경기 정보&lt;/strong&gt; : 2026-06-05 18:30 / 잠실야구장&lt;/p&gt;
&lt;h4&gt;선발 투수&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;구분&lt;/th&gt;
&lt;th&gt;투수&lt;/th&gt;
&lt;th&gt;ERA&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;홈 (두산 베어스)&lt;/td&gt;
&lt;td&gt;최승용&lt;/td&gt;
&lt;td&gt;5.61&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;원정 (키움 히어로즈)&lt;/td&gt;
&lt;td&gt;하영민&lt;/td&gt;
&lt;td&gt;4.89&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h4&gt;최근 흐름&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;팀&lt;/th&gt;
&lt;th&gt;최근 5경기&lt;/th&gt;
&lt;th&gt;요약&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;두산 베어스&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;WLWLW&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;3승 2패&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;키움 히어로즈&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;LLWLL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;1승 4패 / 부진&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h4&gt;AI 핵심 요인&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;ELO 레이팅 +145 (홈 우위)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;선발 투수 지표 키움 우위 (0.380 vs 0.306)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;최근 5경기 두산 3승 / 키움 1승&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;구장(잠실야구장) — 타자 친화 (1.05)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;두산 불펜 소진 (15.7이닝/3일)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;예측 결과&lt;/h4&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;두산 베어스&lt;/strong&gt; 승리 예측 — &lt;strong&gt;58.0%&lt;/strong&gt; (조금 더 유리)&lt;/p&gt;
&lt;p&gt;데이터 완전성: 95.0% / 신뢰도: &lt;strong&gt;보통&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h3&gt;롯데 자이언츠 vs 한화 이글스&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;경기 정보&lt;/strong&gt; : 2026-06-05 18:30 / 부산사직야구장&lt;/p&gt;
&lt;h4&gt;선발 투수&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;구분&lt;/th&gt;
&lt;th&gt;투수&lt;/th&gt;
&lt;th&gt;ERA&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;홈 (롯데 자이언츠)&lt;/td&gt;
&lt;td&gt;로드리게스&lt;/td&gt;
&lt;td&gt;5.12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;원정 (한화 이글스)&lt;/td&gt;
&lt;td&gt;류현진&lt;/td&gt;
&lt;td&gt;3.28&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h4&gt;최근 흐름&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;팀&lt;/th&gt;
&lt;th&gt;최근 5경기&lt;/th&gt;
&lt;th&gt;요약&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;롯데 자이언츠&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;LLLWL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;1승 4패 / 부진&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;한화 이글스&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;WWLLL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;2승 3패 / 3연패 중&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h4&gt;AI 핵심 요인&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;ELO 레이팅 -123 (원정 우위)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;선발 투수 지표 한화 우위 (0.584 vs 0.346)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;최근 5경기 롯데 1승 / 한화 2승&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;구장(부산사직야구장) — 타자 친화 (1.03)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;날씨: 더위(28°C) 소폭 타자 유리&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;예측 결과&lt;/h4&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;한화 이글스&lt;/strong&gt; 승리 예측 — &lt;strong&gt;60.8%&lt;/strong&gt; (유력)&lt;/p&gt;
&lt;p&gt;데이터 완전성: 90.0% / 신뢰도: &lt;strong&gt;보통&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h3&gt;SSG 랜더스 vs KT 위즈&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;경기 정보&lt;/strong&gt; : 2026-06-05 18:30 / 인천SSG랜더스필드&lt;/p&gt;
&lt;h4&gt;선발 투수&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;구분&lt;/th&gt;
&lt;th&gt;투수&lt;/th&gt;
&lt;th&gt;ERA&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;홈 (SSG 랜더스)&lt;/td&gt;
&lt;td&gt;김건우&lt;/td&gt;
&lt;td&gt;4.7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;원정 (KT 위즈)&lt;/td&gt;
&lt;td&gt;문용익&lt;/td&gt;
&lt;td&gt;16.88&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h4&gt;최근 흐름&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;팀&lt;/th&gt;
&lt;th&gt;최근 5경기&lt;/th&gt;
&lt;th&gt;요약&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SSG 랜더스&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;LLLWW&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;2승 3패&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;KT 위즈&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;WWLWL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;3승 2패&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h4&gt;AI 핵심 요인&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;ELO 레이팅 -106 (원정 우위)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;선발 투수 지표 SSG 우위 (0.355 vs 0.110)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;최근 5경기 SSG 2승 / KT 3승&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;구장(인천SSG랜더스필드) — 투수 친화 (0.98)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SSG 불펜 소진 (16.3이닝/3일)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;예측 결과&lt;/h4&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;KT 위즈&lt;/strong&gt; 승리 예측 — &lt;strong&gt;52.5%&lt;/strong&gt; (예측 불허)&lt;/p&gt;
&lt;p&gt;데이터 완전성: 95.0% / 신뢰도: &lt;strong&gt;낮음&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h3&gt;KIA 타이거즈 vs 삼성 라이온즈&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;경기 정보&lt;/strong&gt; : 2026-06-05 18:30 / 광주기아챔피언스필드&lt;/p&gt;
&lt;h4&gt;선발 투수&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;구분&lt;/th&gt;
&lt;th&gt;투수&lt;/th&gt;
&lt;th&gt;ERA&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;홈 (KIA 타이거즈)&lt;/td&gt;
&lt;td&gt;올러&lt;/td&gt;
&lt;td&gt;2.63&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;원정 (삼성 라이온즈)&lt;/td&gt;
&lt;td&gt;오러클린&lt;/td&gt;
&lt;td&gt;3.99&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h4&gt;최근 흐름&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;팀&lt;/th&gt;
&lt;th&gt;최근 5경기&lt;/th&gt;
&lt;th&gt;요약&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;KIA 타이거즈&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;LLWLW&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;2승 3패&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;삼성 라이온즈&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;LWWLL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;2승 3패&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h4&gt;AI 핵심 요인&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;ELO 레이팅 +22 (홈 우위)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;선발 투수 지표 KIA 우위 (0.619 vs 0.496)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;최근 5경기 KIA 2승 / 삼성 2승&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;구장(광주기아챔피언스필드) — 타자 친화 (1.01)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;KIA 불펜 소진 (13.0이닝/3일)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;예측 결과&lt;/h4&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;KIA 타이거즈&lt;/strong&gt; 승리 예측 — &lt;strong&gt;54.3%&lt;/strong&gt; (팽팽한 대결)&lt;/p&gt;
&lt;p&gt;데이터 완전성: 95.0% / 신뢰도: &lt;strong&gt;높음&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h3&gt;NC 다이노스 vs LG 트윈스&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;경기 정보&lt;/strong&gt; : 2026-06-05 18:30 / 창원NC파크&lt;/p&gt;
&lt;h4&gt;선발 투수&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;구분&lt;/th&gt;
&lt;th&gt;투수&lt;/th&gt;
&lt;th&gt;ERA&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;홈 (NC 다이노스)&lt;/td&gt;
&lt;td&gt;라일리&lt;/td&gt;
&lt;td&gt;3.33&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;원정 (LG 트윈스)&lt;/td&gt;
&lt;td&gt;김윤식&lt;/td&gt;
&lt;td&gt;2.63&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h4&gt;최근 흐름&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;팀&lt;/th&gt;
&lt;th&gt;최근 5경기&lt;/th&gt;
&lt;th&gt;요약&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;NC 다이노스&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;WWLWW&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;4승 1패 / 강세&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;LG 트윈스&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;WWWLW&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;4승 1패 / 강세&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h4&gt;AI 핵심 요인&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;ELO 레이팅 -51 (원정 우위)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;선발 투수 지표 NC 우위 (0.557 vs 0.532)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;최근 5경기 NC 4승 / LG 4승&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;구장(창원NC파크) — 투수 친화 (0.97)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;날씨: 더위(26°C) 소폭 타자 유리&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;예측 결과&lt;/h4&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;LG 트윈스&lt;/strong&gt; 승리 예측 — &lt;strong&gt;54.3%&lt;/strong&gt; (팽팽한 대결)&lt;/p&gt;
&lt;p&gt;데이터 완전성: 95.0% / 신뢰도: &lt;strong&gt;보통&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h2&gt;AI 예측 모델 안내&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;요소&lt;/th&gt;
&lt;th&gt;가중치&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;ELO 전력 레이팅&lt;/td&gt;
&lt;td&gt;40%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;선발 투수 지표&lt;/td&gt;
&lt;td&gt;28%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;최근 10경기 흐름&lt;/td&gt;
&lt;td&gt;14%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;홈 이점&lt;/td&gt;
&lt;td&gt;8%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;파크팩터·날씨·불펜&lt;/td&gt;
&lt;td&gt;10%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;선발 투수 미확정 경기는 ELO 기반 초안 예측입니다. 라인업 확정 후 자동 업데이트됩니다.&lt;/p&gt;
&lt;h2&gt;이번 달 모델 적중률&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;적중: &lt;strong&gt;7경기&lt;/strong&gt; / 전체: &lt;strong&gt;14경기&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;적중률: &lt;strong&gt;50.0%&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;통계는 참고 지표입니다. 실제 경기에서 어떤 결과가 나올지 함께 확인해봅시다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;KBO AI 예측 시스템&lt;/h2&gt;
&lt;p&gt;더 자세한 경기 분석과 실시간 예측은 아래에서 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;  &lt;a href=&quot;https://lee-kbo-web.onrender.com/&quot;&gt;KBO Predictor — AI 경기 예측&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;면책 고지&lt;/strong&gt;: 본 예측은 통계 모델 기반 참고 정보이며, 실제 경기 결과와 다를 수 있습니다. 스포츠 베팅 등 금전적 결정의 근거로 사용하지 마십시오.&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;상세페이지로 들어갈때 약간의 시간이 소요됩니다.&lt;/p&gt;</description>
      <category>스포츠 분석</category>
      <category>AI분석</category>
      <category>KBO</category>
      <category>KBO예측</category>
      <category>승리예측</category>
      <category>야구</category>
      <category>오늘경기</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/755</guid>
      <comments>https://lee-mandu.tistory.com/755#entry755comment</comments>
      <pubDate>Fri, 5 Jun 2026 15:47:46 +0900</pubDate>
    </item>
    <item>
      <title>2026년 6월 4일 오늘의 AI 관찰 리스트 &amp;mdash; 상위 5종목 분석</title>
      <link>https://lee-mandu.tistory.com/754</link>
      <description>&lt;h1&gt;2026년 6월 4일 오늘의 AI 관찰 리스트 — 상위 5종목 분석&lt;/h1&gt;
&lt;p&gt;204개 종목을 매일 AI가 점수화합니다. 오늘 상위에 오른 종목들의 지표를 함께 살펴봅니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;시스템 상태: &lt;strong&gt;PILOT&lt;/strong&gt; | 모델 검증: &lt;strong&gt;REJECTED&lt;/strong&gt;&lt;br&gt;현재 시스템은 관찰 모드입니다. 아래 종목은 매수 추천이 아닌 AI 관찰 리스트입니다.&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h2&gt;오늘의 시장 국면: 상승&lt;/h2&gt;
&lt;p&gt;오늘 시장은 &amp;#39;상승&amp;#39;으로 분류됐다. 전반적으로 매수 우위가 읽히는 국면이다. 세부 지표로는 상승 종목 비율 약 31%, 최근 20일 수익률 +24.5% 수준입니다. 이런 국면에서는 개별 종목의 점수만 보기보다 전체 흐름과 함께 해석하는 편이 안전하다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;AI 관찰 종목 TOP5&lt;/h2&gt;
&lt;p&gt;AI 종합점수는 수익률·확률·기술·품질·수급 5가지 축의 가중 합산입니다.&lt;/p&gt;
&lt;h3&gt;종목별 분석&lt;/h3&gt;
&lt;h4&gt;1. 리노공업 (KOSDAQ)&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;값&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;업종/테마&lt;/td&gt;
&lt;td&gt;반도체와반도체장비&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI 종합점수&lt;/td&gt;
&lt;td&gt;76.8점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;신뢰점수&lt;/td&gt;
&lt;td&gt;84.2점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;모델 예상 60일 수익&lt;/td&gt;
&lt;td&gt;41.9%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;예상 낙폭&lt;/td&gt;
&lt;td&gt;-23.3%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RSI&lt;/td&gt;
&lt;td&gt;44.7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;상태&lt;/td&gt;
&lt;td&gt;WATCH&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;리노공업은 AI 종합점수 76.8점으로 최상위권에 자리한다. RSI는 44.7로 약세 구간이며, 모델은 60일 기준 약 41.9%의 수익과 -23.3%의 낙폭을 예상한다. 기대 수익률이 높은 만큼 예상 낙폭도 커, 변동성이 큰 구간으로 해석할 수 있다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;긍정 요인&lt;/strong&gt;: 높은 수익 신호 / 상위권 진입 확률 우수 / 신뢰 점수 양호&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;주의 요인&lt;/strong&gt;: 모델 검증 진행 중 / 예상 낙폭 주의&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;2. 비에이치아이 (KOSDAQ)&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;값&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;업종/테마&lt;/td&gt;
&lt;td&gt;에너지장비및서비스 / 전력설비&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI 종합점수&lt;/td&gt;
&lt;td&gt;74.6점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;신뢰점수&lt;/td&gt;
&lt;td&gt;80.5점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;모델 예상 60일 수익&lt;/td&gt;
&lt;td&gt;67.7%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;예상 낙폭&lt;/td&gt;
&lt;td&gt;-22.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RSI&lt;/td&gt;
&lt;td&gt;33.6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;상태&lt;/td&gt;
&lt;td&gt;WATCH&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;비에이치아이는 AI 종합점수 74.6점으로 상위권에 자리한다. RSI는 33.6로 약세 구간이며, 모델은 60일 기준 약 67.7%의 수익과 -22.2%의 낙폭을 예상한다. 기대 수익률이 높은 만큼 예상 낙폭도 커, 변동성이 큰 구간으로 해석할 수 있다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;긍정 요인&lt;/strong&gt;: 높은 수익 신호 / 상위권 진입 확률 우수 / 신뢰 점수 양호&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;주의 요인&lt;/strong&gt;: 모델 검증 진행 중 / 예상 낙폭 주의&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;3. GS (KOSPI)&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;값&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;업종/테마&lt;/td&gt;
&lt;td&gt;석유와가스&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI 종합점수&lt;/td&gt;
&lt;td&gt;69.2점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;신뢰점수&lt;/td&gt;
&lt;td&gt;86.5점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;모델 예상 60일 수익&lt;/td&gt;
&lt;td&gt;39.4%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;예상 낙폭&lt;/td&gt;
&lt;td&gt;-22.0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RSI&lt;/td&gt;
&lt;td&gt;53.9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;상태&lt;/td&gt;
&lt;td&gt;WATCH&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;GS는 AI 종합점수 69.2점으로 중상위권에 자리한다. RSI는 53.9로 중립 구간이며, 모델은 60일 기준 약 39.4%의 수익과 -22.0%의 낙폭을 예상한다. 기대 수익률이 높은 만큼 예상 낙폭도 커, 변동성이 큰 구간으로 해석할 수 있다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;긍정 요인&lt;/strong&gt;: 높은 수익 신호 / 신뢰 점수 보통&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;주의 요인&lt;/strong&gt;: 모델 검증 진행 중 / 상위권 확률 보통 / 예상 낙폭 주의&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;4. S-Oil (KOSPI)&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;값&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;업종/테마&lt;/td&gt;
&lt;td&gt;석유와가스&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI 종합점수&lt;/td&gt;
&lt;td&gt;66.1점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;신뢰점수&lt;/td&gt;
&lt;td&gt;80.0점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;모델 예상 60일 수익&lt;/td&gt;
&lt;td&gt;24.3%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;예상 낙폭&lt;/td&gt;
&lt;td&gt;-20.3%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RSI&lt;/td&gt;
&lt;td&gt;52.9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;상태&lt;/td&gt;
&lt;td&gt;WATCH&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;S-Oil의 AI 점수는 66.1점으로 중상위권 수준이다. 기술적으로는 RSI 52.9의 중립 국면이다. 모델은 60일 수익 24.3%·낙폭 -20.3%를 제시한다. 기대 수익률은 양호하지만 예상 낙폭이 작지 않아 균형 있게 볼 필요가 있다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;긍정 요인&lt;/strong&gt;: 상위권 진입 확률 우수 / 신뢰 점수 보통&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;주의 요인&lt;/strong&gt;: 모델 검증 진행 중 / 상위권 확률 보통 / 예상 낙폭 주의&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;5. 한화시스템 (KOSPI)&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;값&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;업종/테마&lt;/td&gt;
&lt;td&gt;우주항공과국방 / 방산&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI 종합점수&lt;/td&gt;
&lt;td&gt;62.4점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;신뢰점수&lt;/td&gt;
&lt;td&gt;83.3점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;모델 예상 60일 수익&lt;/td&gt;
&lt;td&gt;44.4%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;예상 낙폭&lt;/td&gt;
&lt;td&gt;-20.4%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RSI&lt;/td&gt;
&lt;td&gt;33.8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;상태&lt;/td&gt;
&lt;td&gt;WATCH&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;한화시스템의 AI 점수는 62.4점으로 중상위권 수준이다. 기술적으로는 RSI 33.8의 약세 국면이다. 모델은 60일 수익 44.4%·낙폭 -20.4%를 제시한다. 기대 수익률이 높은 만큼 예상 낙폭도 커, 변동성이 큰 구간으로 해석할 수 있다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;긍정 요인&lt;/strong&gt;: 높은 수익 신호 / 상위권 진입 확률 우수 / 신뢰 점수 양호&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;주의 요인&lt;/strong&gt;: 모델 검증 진행 중 / 상위권 확률 보통 / 예상 낙폭 주의&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;점수 읽는 법&lt;/h3&gt;
&lt;p&gt;AI 종합점수는 수익률·확률·기술·품질·수급 5가지 축의 가중 합산입니다. 70점 이상은 상위권, 60점대는 중상위권으로 분류됩니다.&lt;br&gt;모델 예상 수익률은 60일 기준 통계적 추정치이며 실제 수익을 보장하지 않습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;추가로 살펴볼 것들&lt;/h2&gt;
&lt;p&gt;오늘의 관찰 종목은 AI 알고리즘의 점수 기준이며, 개인의 투자 목적·성향과 다를 수 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;오늘도 데이터 기반 분석으로 찾아뵙겠습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;▶ AI 종목 분석 전체 보기: &lt;a href=&quot;https://www.leetrader.kr/app&quot;&gt;LeeTrader&lt;/a&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;본 내용은 AI 분석 결과를 공유하는 참고 자료입니다. 투자 결정은 반드시 본인의 판단으로 하시기 바랍니다.&lt;br&gt;과거 모델 성과가 미래 수익률을 보장하지 않습니다.&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;</description>
      <category>주식 추천 시스템 개발</category>
      <category>AI주식</category>
      <category>자동매매</category>
      <category>종목분석</category>
      <category>코스닥</category>
      <category>코스피</category>
      <category>한국주식</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/754</guid>
      <comments>https://lee-mandu.tistory.com/754#entry754comment</comments>
      <pubDate>Thu, 4 Jun 2026 22:11:00 +0900</pubDate>
    </item>
    <item>
      <title>SSL/TLS란 무엇인가? 개발자가 꼭 알아야 할 HTTPS 통신 원리</title>
      <link>https://lee-mandu.tistory.com/747</link>
      <description>&lt;h1&gt;TLS Handshake란 무엇인가? 개발자도 쉽게 이해하는 HTTPS 연결 과정&lt;/h1&gt;
&lt;p&gt;HTTPS 통신을 공부하다 보면 다음과 같은 용어를 자주 만나게 됩니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SSL Handshake&lt;/li&gt;
&lt;li&gt;TLS Handshake&lt;/li&gt;
&lt;li&gt;Handshake Failure&lt;/li&gt;
&lt;li&gt;SSLHandshakeException&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;그런데 정작 Handshake가 무엇인지 정확히 설명할 수 있는 사람은 많지 않습니다.&lt;/p&gt;
&lt;p&gt;이번 글에서는 TLS Handshake의 개념을 초보자도 이해할 수 있도록 쉽게 설명해보겠습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;Handshake란?&lt;/h1&gt;
&lt;p&gt;Handshake를 우리말로 번역하면 &amp;quot;악수&amp;quot;입니다.&lt;/p&gt;
&lt;p&gt;사람과 사람이 처음 만났을 때를 생각해 보겠습니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;A : 안녕하세요.
B : 안녕하세요.
A : 저는 누구입니다.
B : 저도 누구입니다.
A : 서로 믿을 수 있겠네요.
B : 네, 이제 이야기합시다.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;처음 만난 사람과 바로 중요한 이야기를 하지 않습니다.&lt;/p&gt;
&lt;p&gt;먼저 서로를 확인하고 신뢰를 쌓은 뒤 대화를 시작합니다.&lt;/p&gt;
&lt;p&gt;컴퓨터도 마찬가지입니다.&lt;/p&gt;
&lt;p&gt;웹 브라우저와 서버가 처음 연결될 때 바로 데이터를 주고받지 않습니다.&lt;/p&gt;
&lt;p&gt;먼저&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;상대방 확인&lt;/li&gt;
&lt;li&gt;암호화 방식 결정&lt;/li&gt;
&lt;li&gt;보안 검증&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;을 수행합니다.&lt;/p&gt;
&lt;p&gt;이 과정을 TLS Handshake라고 합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;왜 Handshake가 필요한가?&lt;/h1&gt;
&lt;p&gt;예를 들어 인터넷 뱅킹 사이트에 접속했다고 가정해 보겠습니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;내 PC
 ↓
인터넷
 ↓
은행 서버&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;은행 서버라고 생각하고 접속했는데 사실은 해커 서버라면 어떻게 될까요?&lt;/p&gt;
&lt;p&gt;아이디와 비밀번호를 모두 빼앗길 수 있습니다.&lt;/p&gt;
&lt;p&gt;그래서 데이터를 주고받기 전에&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;너 진짜 은행 서버 맞아?&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;를 먼저 확인해야 합니다.&lt;/p&gt;
&lt;p&gt;또한&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;앞으로 어떤 방식으로 암호화할까?&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;도 결정해야 합니다.&lt;/p&gt;
&lt;p&gt;이 과정을 Handshake에서 수행합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;Handshake를 일상생활로 이해하기&lt;/h1&gt;
&lt;p&gt;친구와 비밀 대화를 한다고 생각해 보겠습니다.&lt;/p&gt;
&lt;h3&gt;1단계&lt;/h3&gt;
&lt;p&gt;친구에게 전화를 겁니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;나 : 여보세요?&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;2단계&lt;/h3&gt;
&lt;p&gt;상대방이 응답합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;친구 : 응, 나야.&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;3단계&lt;/h3&gt;
&lt;p&gt;정말 친구가 맞는지 확인합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;나 : 우리 어제 뭐 먹었지?

친구 : 치킨 먹었잖아.&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;4단계&lt;/h3&gt;
&lt;p&gt;암호를 정합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;나 : 앞으로 &amp;quot;사과&amp;quot;는 100만원이란 뜻으로 하자.

친구 : 좋아.&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;5단계&lt;/h3&gt;
&lt;p&gt;이제 비밀 대화를 시작합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;사과를 보내줘.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;실제로는&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;100만원 보내줘.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;라는 의미입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;TLS Handshake 실제 과정&lt;/h1&gt;
&lt;p&gt;컴퓨터는 아래 순서로 동작합니다.&lt;/p&gt;
&lt;h2&gt;Client Hello&lt;/h2&gt;
&lt;p&gt;브라우저가 서버에게 말합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;안녕하세요.

저는 TLS 1.2, TLS 1.3을 지원합니다.

이런 암호화 방식을 사용할 수 있습니다.&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;Server Hello&lt;/h2&gt;
&lt;p&gt;서버가 응답합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;좋습니다.

TLS 1.3을 사용하겠습니다.

AES256 암호화를 사용하겠습니다.&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;인증서 전달&lt;/h2&gt;
&lt;p&gt;서버가 자신의 신분증을 보여줍니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;제가 진짜 이 서버입니다.&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;인증서 검증&lt;/h2&gt;
&lt;p&gt;브라우저가 신분증을 확인합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;이 인증서가 진짜인가?

위조된 것은 아닌가?

만료되지는 않았는가?&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;암호화 키 생성&lt;/h2&gt;
&lt;p&gt;양쪽이 비밀 암호를 만듭니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;앞으로 이 암호를 사용합시다.&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;통신 시작&lt;/h2&gt;
&lt;p&gt;이제 비로소 HTTPS 통신이 시작됩니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;로그인
회원가입
결제
API 호출&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;등의 데이터가 암호화되어 전송됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;Handshake 실패란?&lt;/h1&gt;
&lt;p&gt;Handshake 도중 문제가 생기면 실제 데이터 전송이 시작되지도 못합니다.&lt;/p&gt;
&lt;p&gt;대표적인 예시는 다음과 같습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;TLS 버전 불일치&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;클라이언트 : TLS 1.0 지원

서버 : TLS 1.2 이상만 허용&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;결과&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Handshake Failure&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;인증서 문제&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;인증서 만료
인증서 위조
신뢰할 수 없는 인증서&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;결과&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;PKIX path building failed&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;암호화 방식 불일치&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;서버 : AES256 사용

클라이언트 : AES256 미지원&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;결과&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;SSLHandshakeException&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h1&gt;Handshake는 언제 발생할까?&lt;/h1&gt;
&lt;p&gt;많은 사람들이 모든 요청마다 Handshake가 발생한다고 생각합니다.&lt;/p&gt;
&lt;p&gt;실제로는 그렇지 않습니다.&lt;/p&gt;
&lt;p&gt;최초 연결 시에만 발생합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;브라우저
 ↓
Handshake 수행
 ↓
HTTPS 연결 생성
 ↓
API 요청 100번 수행&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이미 연결이 유지되는 동안에는 Handshake를 다시 하지 않습니다.&lt;/p&gt;
&lt;p&gt;그래서 첫 연결이 조금 느리고 이후 요청은 빠르게 처리됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;개발자가 기억해야 할 핵심&lt;/h1&gt;
&lt;p&gt;TLS Handshake는 단순히 연결하는 과정이 아닙니다.&lt;/p&gt;
&lt;p&gt;서버와 클라이언트가 서로를 확인하고 안전한 통신 방법을 결정하는 과정입니다.&lt;/p&gt;
&lt;p&gt;즉,&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Handshake
 ↓
신뢰 확인
 ↓
암호화 방식 결정
 ↓
보안 연결 생성
 ↓
데이터 전송 시작&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;순서로 진행됩니다.&lt;/p&gt;
&lt;p&gt;HTTPS 통신 오류가 발생했다면 실제 API 로직보다 먼저 TLS Handshake 단계에서 문제가 발생한 것은 아닌지 확인하는 것이 중요합니다.&lt;/p&gt;</description>
      <category>개발/네트워크</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/747</guid>
      <comments>https://lee-mandu.tistory.com/747#entry747comment</comments>
      <pubDate>Thu, 4 Jun 2026 08:52:43 +0900</pubDate>
    </item>
    <item>
      <title>2026년 6월 2일 오늘의 시장 국면 진단 &amp;mdash; AI 분석</title>
      <link>https://lee-mandu.tistory.com/753</link>
      <description>&lt;h1&gt;2026년 6월 2일 오늘의 시장 국면 진단 — AI 분석&lt;/h1&gt;
&lt;p&gt;오늘의 시장 지표를 살펴보고 AI 모델의 국면 판단을 확인합니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;기준일: &lt;strong&gt;2026년 6월 2일&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h2&gt;오늘의 시장 국면: 상승&lt;/h2&gt;
&lt;p&gt;코스피는 8,801.49로 20일 이동평균선(7,814.05) 위에 있다. 이동평균선과의 이격은 약 +12.6%이다. 단기 흐름은 우호적인 편이다. 5일 변동성은 약 1.9%로 보통 수준이다. 최근 5일 외국인은 순매수(35,354) 흐름이다. 종합하면 오늘은 &amp;#39;상승&amp;#39; 국면으로 해석된다.&lt;/p&gt;
&lt;p&gt;상승 국면이라도 개별 종목 리스크는 항상 점검하는 것이 좋습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;주요 시장 지표&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;지표&lt;/th&gt;
&lt;th&gt;값&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;코스피 종가&lt;/td&gt;
&lt;td&gt;8,801.49&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;20일 이동평균&lt;/td&gt;
&lt;td&gt;7,814.05&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5일 변동성&lt;/td&gt;
&lt;td&gt;1.9%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;외국인 순매수(5일)&lt;/td&gt;
&lt;td&gt;35,354억 원&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2&gt;AI 시장 분류 기준&lt;/h2&gt;
&lt;p&gt;AI 모델은 5가지 조건을 기준으로 시장을 자동 분류합니다.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;조건&lt;/th&gt;
&lt;th&gt;의미&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;코스피 &amp;gt; 20일 이동평균&lt;/td&gt;
&lt;td&gt;단기 상승 흐름&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;20일 이동평균 &amp;gt; 60일 이동평균&lt;/td&gt;
&lt;td&gt;중기 상승 흐름&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;최근 20일 수익률 &amp;gt; 3%&lt;/td&gt;
&lt;td&gt;모멘텀 양호&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;상승 종목 비율 &amp;gt; 55%&lt;/td&gt;
&lt;td&gt;시장 확산&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;변동성 위험 없음&lt;/td&gt;
&lt;td&gt;안전 수준&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;4&lt;del&gt;5개 충족 → 상승(Bull) / 2&lt;/del&gt;3개 → 중립(Neutral) / 0~1개 → 방어(Defensive)&lt;/p&gt;
&lt;h3&gt;Q&amp;amp;A&lt;/h3&gt;
&lt;p&gt;Q. 코스피 20일 이동평균선이 중요한 이유는?&lt;br&gt;A. 단기 추세의 기준선 역할을 합니다. 종가가 MA20 위에 있으면 단기 상승 흐름, 아래이면 조정 흐름으로 해석합니다.&lt;/p&gt;
&lt;p&gt;Q. 변동성 지표는 어떻게 해석하나요?&lt;br&gt;A. 5일 일간 수익률의 표준편차입니다. 높을수록 시장 변동이 크다는 의미로, 방어적 접근이 유리할 수 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;오늘의 시장 국면은 참고용입니다. 실제 투자는 신중하게 결정하세요.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;▶ 전체 종목 AI 점수 및 랭킹 확인: &lt;a href=&quot;https://www.leetrader.kr/app&quot;&gt;LeeTrader&lt;/a&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;면책 고지&lt;/strong&gt;: 본 글은 투자 참고용 정보이며 투자 판단과 책임은 투자자 본인에게 있습니다. AI 시장 분석은 과거 데이터 기반 통계적 판단으로, 실제 시장 방향을 보장하지 않습니다.&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;제 시스템은 종가 기준으로 하기때문에 장마감되고 19:00 정도에 분석 결과가 나옵니다.&lt;/p&gt;
&lt;p&gt;감사합니다.&lt;/p&gt;</description>
      <category>주식 추천 시스템 개발</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/753</guid>
      <comments>https://lee-mandu.tistory.com/753#entry753comment</comments>
      <pubDate>Wed, 3 Jun 2026 09:34:52 +0900</pubDate>
    </item>
    <item>
      <title>2026년 6월 2일 AI 모델이 눈여겨본 종목 5개</title>
      <link>https://lee-mandu.tistory.com/752</link>
      <description>&lt;h1&gt;2026년 6월 2일 AI 모델이 눈여겨본 종목 5개&lt;/h1&gt;
&lt;p&gt;AI 모델이 수익률·확률·기술·품질·수급을 종합해 오늘의 관찰 리스트를 만들었습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;시스템 상태: &lt;strong&gt;WATCH&lt;/strong&gt; | 모델 검증: &lt;strong&gt;REJECTED&lt;/strong&gt;&lt;br&gt;현재 시스템은 관찰 모드입니다. 아래 종목은 매수 추천이 아닌 AI 관찰 리스트입니다.&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h2&gt;오늘의 시장 국면: 상승&lt;/h2&gt;
&lt;p&gt;오늘 시장은 &amp;#39;상승&amp;#39;으로 분류됐다. 전반적으로 매수 우위가 읽히는 국면이다. 세부 지표로는 상승 종목 비율 약 28%, 최근 20일 수익률 +33.4% 수준입니다. 이런 국면에서는 개별 종목의 점수만 보기보다 전체 흐름과 함께 해석하는 편이 안전하다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;AI 관찰 종목 TOP5&lt;/h2&gt;
&lt;p&gt;AI 종합점수는 LightGBM 모델과 5가지 평가 축을 결합한 지표입니다.&lt;/p&gt;
&lt;h3&gt;종목별 분석&lt;/h3&gt;
&lt;h4&gt;1. 비에이치아이 (KOSDAQ)&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;값&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;업종/테마&lt;/td&gt;
&lt;td&gt;에너지장비및서비스 / 전력설비&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI 종합점수&lt;/td&gt;
&lt;td&gt;73.0점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;신뢰점수&lt;/td&gt;
&lt;td&gt;79.6점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;모델 예상 60일 수익&lt;/td&gt;
&lt;td&gt;55.4%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;예상 낙폭&lt;/td&gt;
&lt;td&gt;-18.8%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RSI&lt;/td&gt;
&lt;td&gt;28.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;상태&lt;/td&gt;
&lt;td&gt;WATCH&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;비에이치아이는 AI 종합점수 73.0점으로 상위권에 자리한다. RSI는 28.1로 과매도 구간이며, 모델은 60일 기준 약 55.4%의 수익과 -18.8%의 낙폭을 예상한다. 기대 수익률 신호가 살아 있는 편이라 흐름을 지켜볼 만하다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;긍정 요인&lt;/strong&gt;: 높은 수익 신호 / 상위권 진입 확률 우수 / 신뢰 점수 보통&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;주의 요인&lt;/strong&gt;: 모델 검증 진행 중&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;2. 리노공업 (KOSDAQ)&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;값&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;업종/테마&lt;/td&gt;
&lt;td&gt;반도체와반도체장비&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI 종합점수&lt;/td&gt;
&lt;td&gt;70.0점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;신뢰점수&lt;/td&gt;
&lt;td&gt;81.6점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;모델 예상 60일 수익&lt;/td&gt;
&lt;td&gt;29.8%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;예상 낙폭&lt;/td&gt;
&lt;td&gt;-21.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RSI&lt;/td&gt;
&lt;td&gt;37.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;상태&lt;/td&gt;
&lt;td&gt;WATCH&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;점수 70.0점(상위권)을 받은 리노공업은 현재 RSI 37.1, 즉 약세 흐름이다. 모델 추정으로는 60일간 29.8% 수익, -21.2% 낙폭이 전망된다. 기대 수익률은 양호하지만 예상 낙폭이 작지 않아 균형 있게 볼 필요가 있다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;긍정 요인&lt;/strong&gt;: 상위권 진입 확률 우수 / 신뢰 점수 양호&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;주의 요인&lt;/strong&gt;: 모델 검증 진행 중 / 예상 낙폭 주의&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;3. 한화시스템 (KOSPI)&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;값&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;업종/테마&lt;/td&gt;
&lt;td&gt;우주항공과국방 / 방산&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI 종합점수&lt;/td&gt;
&lt;td&gt;63.1점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;신뢰점수&lt;/td&gt;
&lt;td&gt;84.2점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;모델 예상 60일 수익&lt;/td&gt;
&lt;td&gt;48.1%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;예상 낙폭&lt;/td&gt;
&lt;td&gt;-20.0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RSI&lt;/td&gt;
&lt;td&gt;34.7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;상태&lt;/td&gt;
&lt;td&gt;WATCH&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;중상위권 점수(63.1점)를 받은 한화시스템은, 60일 기준 수익 48.1%·낙폭 -20.0%가 전망된다. RSI 34.7로 약세 국면이다. 기대 수익률이 높은 만큼 예상 낙폭도 커, 변동성이 큰 구간으로 해석할 수 있다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;긍정 요인&lt;/strong&gt;: 높은 수익 신호 / 상위권 진입 확률 우수 / 신뢰 점수 양호&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;주의 요인&lt;/strong&gt;: 모델 검증 진행 중 / 상위권 확률 보통&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;4. GS (KOSPI)&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;값&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;업종/테마&lt;/td&gt;
&lt;td&gt;석유와가스&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI 종합점수&lt;/td&gt;
&lt;td&gt;62.2점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;신뢰점수&lt;/td&gt;
&lt;td&gt;81.9점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;모델 예상 60일 수익&lt;/td&gt;
&lt;td&gt;30.6%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;예상 낙폭&lt;/td&gt;
&lt;td&gt;-20.5%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RSI&lt;/td&gt;
&lt;td&gt;45.4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;상태&lt;/td&gt;
&lt;td&gt;WATCH&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;GS의 AI 점수는 62.2점으로 중상위권 수준이다. 기술적으로는 RSI 45.4의 중립 국면이다. 모델은 60일 수익 30.6%·낙폭 -20.5%를 제시한다. 기대 수익률이 높은 만큼 예상 낙폭도 커, 변동성이 큰 구간으로 해석할 수 있다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;긍정 요인&lt;/strong&gt;: 신뢰 점수 보통&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;주의 요인&lt;/strong&gt;: 모델 검증 진행 중 / 상위권 확률 보통 / 예상 낙폭 주의&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;5. 한국타이어앤테크놀로지 (KOSPI)&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;값&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;업종/테마&lt;/td&gt;
&lt;td&gt;자동차부품&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI 종합점수&lt;/td&gt;
&lt;td&gt;61.7점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;신뢰점수&lt;/td&gt;
&lt;td&gt;76.0점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;모델 예상 60일 수익&lt;/td&gt;
&lt;td&gt;26.8%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;예상 낙폭&lt;/td&gt;
&lt;td&gt;-23.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RSI&lt;/td&gt;
&lt;td&gt;67.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;상태&lt;/td&gt;
&lt;td&gt;WATCH&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;한국타이어앤테크놀로지의 AI 점수는 61.7점으로 중상위권 수준이다. 기술적으로는 RSI 67.1의 강세 국면이다. 모델은 60일 수익 26.8%·낙폭 -23.2%를 제시한다. 기대 수익률은 양호하지만 예상 낙폭이 작지 않아 균형 있게 볼 필요가 있다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;긍정 요인&lt;/strong&gt;: 신뢰 점수 보통&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;주의 요인&lt;/strong&gt;: 모델 검증 진행 중 / 상위권 확률 보통 / 예상 낙폭 주의&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;점수 읽는 법&lt;/h3&gt;
&lt;p&gt;AI 점수는 0~100점 척도입니다. 70점 이상은 상위권, 60점대는 중상위권으로 분류됩니다.&lt;br&gt;모델 예상 수익률은 60일 기준 통계적 추정치이며 실제 수익을 보장하지 않습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;관찰 포인트&lt;/h2&gt;
&lt;p&gt;AI 점수는 과거 데이터 기반 모델 예측입니다. 시장 상황은 언제든 달라질 수 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;내일도 종가 데이터를 바탕으로 업데이트됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;▶ 전체 종목 AI 점수 및 랭킹 확인: &lt;a href=&quot;https://www.leetrader.kr/app&quot;&gt;LeeTrader&lt;/a&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;면책 고지&lt;/strong&gt;: 본 글은 투자 참고용 정보이며 투자 판단과 책임은 투자자 본인에게 있습니다. AI 모델의 예측 수익률은 과거 데이터 기반 통계적 추정치로, 실제 수익을 보장하지 않습니다.&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;</description>
      <category>주식 추천 시스템 개발</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/752</guid>
      <comments>https://lee-mandu.tistory.com/752#entry752comment</comments>
      <pubDate>Tue, 2 Jun 2026 20:01:05 +0900</pubDate>
    </item>
    <item>
      <title>주식 종목을 찾는 시스템을 만들어 봤어요.</title>
      <link>https://lee-mandu.tistory.com/751</link>
      <description>&lt;h1&gt;LeeTrader 소개&lt;/h1&gt;
&lt;p&gt;안녕하세요.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LeeTrader&lt;/strong&gt;는 데이터와 인공지능(AI)을 활용하여 국내 주식 시장을 분석하고, 종목 추천부터 자동매매까지 연구하는 개인 투자 플랫폼입니다.&lt;/p&gt;
&lt;p&gt;서비스 주소 :&lt;/p&gt;
&lt;p&gt;  &lt;a href=&quot;https://www.leetrader.kr/app&quot;&gt;https://www.leetrader.kr/app&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;왜 이 시스템을 만들게 되었을까?&lt;/h1&gt;
&lt;p&gt;주식 투자를 하다 보면 누구나 비슷한 고민을 하게 됩니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;지금 어떤 종목을 사야 할까?&lt;/li&gt;
&lt;li&gt;이 종목은 앞으로 얼마나 오를 가능성이 있을까?&lt;/li&gt;
&lt;li&gt;지금 진입해도 되는 구간일까?&lt;/li&gt;
&lt;li&gt;언제 매도해야 할까?&lt;/li&gt;
&lt;li&gt;감이 아닌 데이터로 판단할 수는 없을까?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;저 역시 수년간 이러한 고민을 반복했습니다.&lt;/p&gt;
&lt;p&gt;차트를 보고,&lt;br&gt;뉴스를 찾아보고,&lt;br&gt;기업 분석을 하고,&lt;br&gt;수급을 확인해도&lt;/p&gt;
&lt;p&gt;결국 마지막에는 사람의 감정이 개입되는 경우가 많았습니다.&lt;/p&gt;
&lt;p&gt;그래서 생각했습니다.&lt;/p&gt;
&lt;p&gt;&amp;quot;매일 반복하는 분석을 시스템이 대신할 수는 없을까?&amp;quot;&lt;/p&gt;
&lt;p&gt;그 결과 탄생한 것이 바로 LeeTrader입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;LeeTrader는 무엇을 하는 서비스인가?&lt;/h1&gt;
&lt;p&gt;LeeTrader는 단순한 종목 추천 사이트가 아닙니다.&lt;/p&gt;
&lt;p&gt;매일 국내 주식 시장 데이터를 수집하고,&lt;/p&gt;
&lt;p&gt;AI 모델을 활용하여 미래 기대수익률을 계산하고,&lt;/p&gt;
&lt;p&gt;수급과 기술적 분석을 종합하여&lt;/p&gt;
&lt;p&gt;현재 시점에서 상대적으로 유리한 종목을 선별합니다.&lt;/p&gt;
&lt;p&gt;그리고 그 결과를 누구나 확인할 수 있도록 공개하고 있습니다.&lt;/p&gt;
&lt;p&gt;서비스 :&lt;/p&gt;
&lt;p&gt;  &lt;a href=&quot;https://www.leetrader.kr/app&quot;&gt;https://www.leetrader.kr/app&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;어떤 데이터를 분석하는가?&lt;/h1&gt;
&lt;p&gt;시스템은 매일 수백 개 종목에 대해 다양한 데이터를 수집합니다.&lt;/p&gt;
&lt;p&gt;대표적으로&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;종가&lt;/li&gt;
&lt;li&gt;시가&lt;/li&gt;
&lt;li&gt;고가&lt;/li&gt;
&lt;li&gt;저가&lt;/li&gt;
&lt;li&gt;거래량&lt;/li&gt;
&lt;li&gt;이동평균선&lt;/li&gt;
&lt;li&gt;RSI&lt;/li&gt;
&lt;li&gt;수익률&lt;/li&gt;
&lt;li&gt;변동성&lt;/li&gt;
&lt;li&gt;외국인 수급&lt;/li&gt;
&lt;li&gt;기관 수급&lt;/li&gt;
&lt;li&gt;재무 데이터&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;등을 분석합니다.&lt;/p&gt;
&lt;p&gt;하나의 지표만 보는 것이 아니라 여러 데이터를 종합적으로 평가합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;AI는 무엇을 예측하는가?&lt;/h1&gt;
&lt;p&gt;많은 투자 서비스는 상승 또는 하락 여부만 표시합니다.&lt;/p&gt;
&lt;p&gt;하지만 투자자 입장에서는&lt;/p&gt;
&lt;p&gt;&amp;quot;얼마나 오를 가능성이 있는가&amp;quot;&lt;/p&gt;
&lt;p&gt;가 더 중요합니다.&lt;/p&gt;
&lt;p&gt;LeeTrader는 머신러닝 모델을 활용하여 종목별 기대수익률을 계산합니다.&lt;/p&gt;
&lt;p&gt;예를 들어&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;종목 A : 기대수익률 15%&lt;/li&gt;
&lt;li&gt;종목 B : 기대수익률 30%&lt;/li&gt;
&lt;li&gt;종목 C : 기대수익률 55%&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;와 같이 미래 가능성을 점수화합니다.&lt;/p&gt;
&lt;p&gt;물론 어떤 AI도 미래를 완벽하게 예측할 수는 없습니다.&lt;/p&gt;
&lt;p&gt;그래서 단순 예측값만 사용하는 것이 아니라&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;신뢰도&lt;/li&gt;
&lt;li&gt;리스크&lt;/li&gt;
&lt;li&gt;품질 점수&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;를 함께 반영하여 최종 순위를 결정합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;종목 점수는 어떻게 계산될까?&lt;/h1&gt;
&lt;p&gt;LeeTrader의 종목 순위는 여러 점수의 조합으로 계산됩니다.&lt;/p&gt;
&lt;h2&gt;기술 점수&lt;/h2&gt;
&lt;p&gt;차트와 추세를 평가합니다.&lt;/p&gt;
&lt;p&gt;예시&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;이동평균선 정배열&lt;/li&gt;
&lt;li&gt;RSI&lt;/li&gt;
&lt;li&gt;추세 강도&lt;/li&gt;
&lt;li&gt;거래량 증가&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;수급 점수&lt;/h2&gt;
&lt;p&gt;외국인과 기관의 자금 흐름을 평가합니다.&lt;/p&gt;
&lt;p&gt;예시&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;최근 5일 순매수&lt;/li&gt;
&lt;li&gt;최근 20일 순매수&lt;/li&gt;
&lt;li&gt;수급 방향성&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;AI 예측 점수&lt;/h2&gt;
&lt;p&gt;머신러닝 모델이 계산한 기대수익률입니다.&lt;/p&gt;
&lt;p&gt;예시&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;60일 기대수익률&lt;/li&gt;
&lt;li&gt;상위권 진입 확률&lt;/li&gt;
&lt;li&gt;과거 패턴 분석&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;품질 점수&lt;/h2&gt;
&lt;p&gt;데이터 신뢰성과 분석 가능성을 평가합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;리스크 점수&lt;/h2&gt;
&lt;p&gt;위험 요소를 감점 방식으로 반영합니다.&lt;/p&gt;
&lt;p&gt;예시&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;변동성&lt;/li&gt;
&lt;li&gt;최대 낙폭(MDD)&lt;/li&gt;
&lt;li&gt;유동성 부족&lt;/li&gt;
&lt;li&gt;급등락 이력&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1&gt;시장 환경도 함께 분석한다&lt;/h1&gt;
&lt;p&gt;좋은 종목이라도 시장이 하락장이라면 성공 확률은 낮아질 수 있습니다.&lt;/p&gt;
&lt;p&gt;그래서 LeeTrader는 종목뿐 아니라 시장 자체도 분석합니다.&lt;/p&gt;
&lt;p&gt;확인 항목&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;KOSPI 추세&lt;/li&gt;
&lt;li&gt;이동평균선 상태&lt;/li&gt;
&lt;li&gt;시장 Breadth&lt;/li&gt;
&lt;li&gt;시장 변동성&lt;/li&gt;
&lt;li&gt;상승 종목 비율&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이를 바탕으로&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;공격 구간&lt;/li&gt;
&lt;li&gt;중립 구간&lt;/li&gt;
&lt;li&gt;방어 구간&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;을 판단합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;종목 상세 분석 제공&lt;/h1&gt;
&lt;p&gt;추천 종목을 클릭하면&lt;/p&gt;
&lt;p&gt;보다 자세한 분석 결과를 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;예를 들어&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;현재 추세 상태&lt;/li&gt;
&lt;li&gt;RSI 분석&lt;/li&gt;
&lt;li&gt;이동평균선 상태&lt;/li&gt;
&lt;li&gt;최근 고점&lt;/li&gt;
&lt;li&gt;최근 저점&lt;/li&gt;
&lt;li&gt;외국인 수급&lt;/li&gt;
&lt;li&gt;기관 수급&lt;/li&gt;
&lt;li&gt;AI 기대수익률&lt;/li&gt;
&lt;li&gt;신뢰도&lt;/li&gt;
&lt;li&gt;리스크&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;등을 한 화면에서 확인할 수 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;랭킹 변화도 추적한다&lt;/h1&gt;
&lt;p&gt;현재 순위보다 중요한 것은&lt;/p&gt;
&lt;p&gt;&amp;quot;순위가 어떻게 변하고 있는가&amp;quot;&lt;/p&gt;
&lt;p&gt;입니다.&lt;/p&gt;
&lt;p&gt;LeeTrader는&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;신규 진입 종목&lt;/li&gt;
&lt;li&gt;급상승 종목&lt;/li&gt;
&lt;li&gt;급하락 종목&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;을 자동으로 추적합니다.&lt;/p&gt;
&lt;p&gt;이를 통해 시장의 자금 흐름 변화를 빠르게 확인할 수 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;AI 자동매매 연구&lt;/h1&gt;
&lt;p&gt;LeeTrader는 종목 추천에만 머물지 않습니다.&lt;/p&gt;
&lt;p&gt;현재 실제 환경에서 AI 자동매매 기능도 연구 및 검증 중입니다.&lt;/p&gt;
&lt;p&gt;자동매매 프로세스는 다음과 같습니다.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;종가 데이터 수집&lt;/li&gt;
&lt;li&gt;AI 예측 수행&lt;/li&gt;
&lt;li&gt;종목 선별&lt;/li&gt;
&lt;li&gt;매수 후보 생성&lt;/li&gt;
&lt;li&gt;리스크 검증&lt;/li&gt;
&lt;li&gt;주문 실행&lt;/li&gt;
&lt;li&gt;보유 종목 관리&lt;/li&gt;
&lt;li&gt;매도 후보 생성&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;모든 과정은 기록되며 지속적으로 개선되고 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;백테스트와 실제 검증&lt;/h1&gt;
&lt;p&gt;좋은 투자 전략은 설명이 아니라 결과로 검증되어야 합니다.&lt;/p&gt;
&lt;p&gt;LeeTrader는&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;추천 이력 저장&lt;/li&gt;
&lt;li&gt;랭킹 변화 기록&lt;/li&gt;
&lt;li&gt;모의투자&lt;/li&gt;
&lt;li&gt;백테스트&lt;/li&gt;
&lt;li&gt;자동매매 결과 추적&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;등을 통해 전략을 검증합니다.&lt;/p&gt;
&lt;p&gt;추천만 하고 끝나는 서비스가 아니라&lt;/p&gt;
&lt;p&gt;추천 이후의 결과까지 추적하는 것이 목표입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;앞으로의 개발 방향&lt;/h1&gt;
&lt;p&gt;현재는 국내 주식 시장 중심으로 운영되고 있습니다.&lt;/p&gt;
&lt;p&gt;향후 계획은 다음과 같습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI 모델 고도화&lt;/li&gt;
&lt;li&gt;자동매매 안정화&lt;/li&gt;
&lt;li&gt;미국 주식 지원&lt;/li&gt;
&lt;li&gt;포트폴리오 최적화&lt;/li&gt;
&lt;li&gt;투자 리포트 자동 생성&lt;/li&gt;
&lt;li&gt;장기 백테스트 확대&lt;/li&gt;
&lt;li&gt;투자 성과 분석 기능 강화&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1&gt;투자에 정답은 없다&lt;/h1&gt;
&lt;p&gt;어떤 전문가도,&lt;br&gt;어떤 AI도,&lt;/p&gt;
&lt;p&gt;미래를 100% 예측할 수는 없습니다.&lt;/p&gt;
&lt;p&gt;하지만 데이터를 기반으로 분석하고,&lt;/p&gt;
&lt;p&gt;감정이 아닌 기준으로 판단하며,&lt;/p&gt;
&lt;p&gt;결과를 지속적으로 검증한다면&lt;/p&gt;
&lt;p&gt;더 나은 투자 의사결정을 할 수 있다고 생각합니다.&lt;/p&gt;
&lt;p&gt;LeeTrader는 바로 그 과정을 연구하고 기록하기 위해 만들어진 프로젝트입니다.&lt;/p&gt;
&lt;p&gt;앞으로도 실제 데이터를 기반으로 지속적으로 검증하고 개선해 나갈 예정입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;LeeTrader 바로가기&lt;/h2&gt;
&lt;p&gt;  AI 종목 추천 서비스&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.leetrader.kr/app&quot;&gt;https://www.leetrader.kr/app&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;  프로젝트 및 운영 기록&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.leetrader.kr&quot;&gt;https://www.leetrader.kr&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;데이터 기반 투자 연구를 통해 더 나은 투자 의사결정을 만들어 가겠습니다.&lt;/p&gt;
&lt;p&gt;감사합니다.&lt;/p&gt;
&lt;h2&gt;시스템 사진 샘플&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;100%&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cmqSMN/dJMcadoCpLX/GkCPFeLmGBLVlYoA1cKIK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cmqSMN/dJMcadoCpLX/GkCPFeLmGBLVlYoA1cKIK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cmqSMN/dJMcadoCpLX/GkCPFeLmGBLVlYoA1cKIK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmqSMN%2FdJMcadoCpLX%2FGkCPFeLmGBLVlYoA1cKIK1%2Fimg.png&quot; width=&quot;100%&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; width=&quot;100%&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EXlEq/dJMcaalaU5L/2qgp0jKXgnJiNEAyR6Os00/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EXlEq/dJMcaalaU5L/2qgp0jKXgnJiNEAyR6Os00/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EXlEq/dJMcaalaU5L/2qgp0jKXgnJiNEAyR6Os00/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEXlEq%2FdJMcaalaU5L%2F2qgp0jKXgnJiNEAyR6Os00%2Fimg.png&quot; width=&quot;100%&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; width=&quot;100%&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3UIPN/dJMcaiXMhWz/ZlKAWwbtlke4AsT2B3J4T1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3UIPN/dJMcaiXMhWz/ZlKAWwbtlke4AsT2B3J4T1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3UIPN/dJMcaiXMhWz/ZlKAWwbtlke4AsT2B3J4T1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3UIPN%2FdJMcaiXMhWz%2FZlKAWwbtlke4AsT2B3J4T1%2Fimg.png&quot; width=&quot;100%&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; width=&quot;100%&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpWoss/dJMcadhWMYO/Wk4o6xblenFO0wK0DnKLOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpWoss/dJMcadhWMYO/Wk4o6xblenFO0wK0DnKLOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpWoss/dJMcadhWMYO/Wk4o6xblenFO0wK0DnKLOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpWoss%2FdJMcadhWMYO%2FWk4o6xblenFO0wK0DnKLOK%2Fimg.png&quot; width=&quot;100%&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; width=&quot;100%&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpWqto/dJMcaalaU5M/pnUWcbKPk2cWqzfEmWzWh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpWqto/dJMcaalaU5M/pnUWcbKPk2cWqzfEmWzWh0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpWqto/dJMcaalaU5M/pnUWcbKPk2cWqzfEmWzWh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpWqto%2FdJMcaalaU5M%2FpnUWcbKPk2cWqzfEmWzWh0%2Fimg.png&quot; width=&quot;100%&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; width=&quot;100%&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LlWX5/dJMcadoCpLY/FbQtWJRZ0ogIzwBmDIe1gk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LlWX5/dJMcadoCpLY/FbQtWJRZ0ogIzwBmDIe1gk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LlWX5/dJMcadoCpLY/FbQtWJRZ0ogIzwBmDIe1gk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLlWX5%2FdJMcadoCpLY%2FFbQtWJRZ0ogIzwBmDIe1gk%2Fimg.png&quot; width=&quot;100%&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; width=&quot;100%&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5sZsN/dJMcaa6BJAv/qFzMkl7uk93TUg6OVexPk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5sZsN/dJMcaa6BJAv/qFzMkl7uk93TUg6OVexPk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5sZsN/dJMcaa6BJAv/qFzMkl7uk93TUg6OVexPk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5sZsN%2FdJMcaa6BJAv%2FqFzMkl7uk93TUg6OVexPk1%2Fimg.png&quot; width=&quot;100%&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;</description>
      <category>주식 추천 시스템 개발</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/751</guid>
      <comments>https://lee-mandu.tistory.com/751#entry751comment</comments>
      <pubDate>Tue, 2 Jun 2026 11:20:58 +0900</pubDate>
    </item>
    <item>
      <title>KBO 경기 승부 예측 시스템 개발기 - AI와 데이터로 야구 승부를 예측하다</title>
      <link>https://lee-mandu.tistory.com/750</link>
      <description>&lt;h1&gt;KBO 경기 승부 예측 시스템 개발기 - AI와 데이터로 야구 승부를 예측하다&lt;/h1&gt;
&lt;h2&gt;프로젝트 개요&lt;/h2&gt;
&lt;p&gt;최근 AI와 데이터 분석 기술이 발전하면서 스포츠 경기 결과를 예측하는 다양한 서비스들이 등장하고 있습니다.&lt;/p&gt;
&lt;p&gt;저 역시 개인 프로젝트로 &lt;strong&gt;KBO 경기 승부 예측 시스템(KBO Predictor)&lt;/strong&gt; 을 개발하게 되었습니다.&lt;/p&gt;
&lt;p&gt;이 시스템은 단순히 팀 순위만 보는 것이 아니라,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;팀 전력&lt;/li&gt;
&lt;li&gt;최근 경기 흐름&lt;/li&gt;
&lt;li&gt;홈/원정 여부&lt;/li&gt;
&lt;li&gt;선발 투수 성적&lt;/li&gt;
&lt;li&gt;ELO 레이팅&lt;/li&gt;
&lt;li&gt;날씨 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;등 다양한 데이터를 종합하여 승부를 예측합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;시스템 목표&lt;/h2&gt;
&lt;p&gt;이 프로젝트의 목표는 크게 3가지입니다.&lt;/p&gt;
&lt;h3&gt;1. 경기 승패 예측&lt;/h3&gt;
&lt;p&gt;오늘 예정된 KBO 경기의 승리 확률 계산&lt;/p&gt;
&lt;p&gt;예시)&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;경기&lt;/th&gt;
&lt;th&gt;승리확률&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;LG vs KIA&lt;/td&gt;
&lt;td&gt;LG 61%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;두산 vs SSG&lt;/td&gt;
&lt;td&gt;SSG 55%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;삼성 vs 롯데&lt;/td&gt;
&lt;td&gt;삼성 68%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h3&gt;2. 데이터 자동 수집&lt;/h3&gt;
&lt;p&gt;매일 수동으로 데이터를 입력하는 것은 현실적으로 불가능합니다.&lt;/p&gt;
&lt;p&gt;따라서 KBO 공식 사이트의 공개 데이터를 활용하여 자동 수집 기능을 구축했습니다.&lt;/p&gt;
&lt;p&gt;수집 데이터&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;경기 일정&lt;/li&gt;
&lt;li&gt;경기 결과&lt;/li&gt;
&lt;li&gt;팀 순위&lt;/li&gt;
&lt;li&gt;투수 성적&lt;/li&gt;
&lt;li&gt;선수 정보&lt;/li&gt;
&lt;li&gt;날씨 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. 장기적인 예측 모델 고도화&lt;/h3&gt;
&lt;p&gt;초기 버전은 규칙 기반 모델로 시작했지만,&lt;/p&gt;
&lt;p&gt;향후에는 머신러닝 모델을 추가하여 예측 정확도를 향상시킬 계획입니다.&lt;/p&gt;
&lt;p&gt;예를 들어&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RandomForest&lt;/li&gt;
&lt;li&gt;XGBoost&lt;/li&gt;
&lt;li&gt;LightGBM&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;등을 활용하여 승률을 계산할 수 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;전체 시스템 구조&lt;/h1&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;KBO 공식 데이터
        │
        ▼
 데이터 수집(Crawler)
        │
        ▼
 PostgreSQL 저장
        │
        ▼
 예측 엔진(ELO)
        │
        ▼
 FastAPI API 서버
        │
        ▼
 Next.js 웹 서비스&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;기술 스택&lt;/h2&gt;
&lt;h3&gt;Backend&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Python 3.11&lt;/li&gt;
&lt;li&gt;FastAPI&lt;/li&gt;
&lt;li&gt;SQLAlchemy&lt;/li&gt;
&lt;li&gt;Alembic&lt;/li&gt;
&lt;li&gt;APScheduler&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Database&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;PostgreSQL&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Cache&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Redis&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Frontend&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Next.js 14&lt;/li&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;TailwindCSS&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Infra&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;Docker Compose&lt;/li&gt;
&lt;li&gt;Render&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1&gt;예측 엔진 핵심&lt;/h1&gt;
&lt;h2&gt;ELO 레이팅&lt;/h2&gt;
&lt;p&gt;체스에서 사용하는 ELO 점수 방식을 응용했습니다.&lt;/p&gt;
&lt;p&gt;경기 결과에 따라 팀 점수가 상승하거나 하락합니다.&lt;/p&gt;
&lt;p&gt;예시&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;LG : 1600
KIA : 1550&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;두 팀이 경기할 경우&lt;/p&gt;
&lt;p&gt;LG의 승리 확률이 더 높게 계산됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;홈 어드밴티지&lt;/h2&gt;
&lt;p&gt;야구는 홈 경기 이점이 존재합니다.&lt;/p&gt;
&lt;p&gt;따라서 단순 전력뿐 아니라&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;홈 경기 여부&lt;/li&gt;
&lt;li&gt;원정 경기 여부&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;를 반영합니다.&lt;/p&gt;
&lt;p&gt;예시&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;LG ELO : 1600
KIA ELO : 1600

홈팀 LG

실제 계산:
LG 53%
KIA 47%&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;최근 경기 흐름&lt;/h2&gt;
&lt;p&gt;시즌 전체 성적만 보면 현재 컨디션을 알 수 없습니다.&lt;/p&gt;
&lt;p&gt;예를 들어&lt;/p&gt;
&lt;p&gt;최근 10경기&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;LG 8승 2패
KIA 3승 7패&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;라면 현재 전력은 상당한 차이가 있다고 볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;따라서 최근 경기 결과도 반영합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;데이터 자동 수집&lt;/h1&gt;
&lt;p&gt;매일 새벽 스케줄러가 실행됩니다.&lt;/p&gt;
&lt;p&gt;자동 작업&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;경기 일정 수집&lt;/li&gt;
&lt;li&gt;경기 결과 수집&lt;/li&gt;
&lt;li&gt;팀 순위 갱신&lt;/li&gt;
&lt;li&gt;투수 성적 갱신&lt;/li&gt;
&lt;li&gt;예측 데이터 생성&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;개발자는 별도 작업 없이 최신 데이터를 유지할 수 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;Docker 기반 운영&lt;/h1&gt;
&lt;p&gt;모든 서비스는 Docker로 구성했습니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker-compose up -d&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;명령어 한 번으로&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PostgreSQL&lt;/li&gt;
&lt;li&gt;Redis&lt;/li&gt;
&lt;li&gt;API 서버&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;를 동시에 실행할 수 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;웹 서비스 기능&lt;/h1&gt;
&lt;p&gt;현재 구현된 주요 기능&lt;/p&gt;
&lt;h3&gt;오늘 경기 조회&lt;/h3&gt;
&lt;p&gt;오늘 예정된 경기 확인&lt;/p&gt;
&lt;h3&gt;승부 예측&lt;/h3&gt;
&lt;p&gt;예측 승률 제공&lt;/p&gt;
&lt;h3&gt;팀 정보&lt;/h3&gt;
&lt;p&gt;팀 순위 조회&lt;/p&gt;
&lt;h3&gt;선수 정보&lt;/h3&gt;
&lt;p&gt;주요 선수 기록 확인&lt;/p&gt;
&lt;h3&gt;관리자 페이지&lt;/h3&gt;
&lt;p&gt;데이터 수집 상태 확인&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;향후 개발 계획&lt;/h1&gt;
&lt;p&gt;현재는 1차 버전입니다.&lt;/p&gt;
&lt;p&gt;앞으로 추가하고 싶은 기능은 다음과 같습니다.&lt;/p&gt;
&lt;h3&gt;선발 투수 반영&lt;/h3&gt;
&lt;p&gt;현재 시즌 성적 기반&lt;/p&gt;
&lt;p&gt;향후&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;선발 맞대결&lt;/li&gt;
&lt;li&gt;상대 전적&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;추가 예정&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;타선 분석&lt;/h3&gt;
&lt;p&gt;예상 라인업 반영&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;타율&lt;/li&gt;
&lt;li&gt;OPS&lt;/li&gt;
&lt;li&gt;최근 타격감&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;분석 예정&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;머신러닝 모델 도입&lt;/h3&gt;
&lt;p&gt;현재 ELO 기반 예측&lt;/p&gt;
&lt;p&gt;향후&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;XGBoost&lt;/li&gt;
&lt;li&gt;LightGBM&lt;/li&gt;
&lt;li&gt;앙상블 모델&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;적용 예정&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;백테스트 기능&lt;/h3&gt;
&lt;p&gt;과거 시즌을 대상으로&lt;/p&gt;
&lt;p&gt;예측 적중률 검증 기능 추가 예정&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;마무리&lt;/h1&gt;
&lt;p&gt;이번 프로젝트는 단순한 야구 정보 사이트가 아니라&lt;/p&gt;
&lt;p&gt;데이터 수집 → 저장 → 분석 → 예측 → 서비스 제공&lt;/p&gt;
&lt;p&gt;전 과정을 경험하기 위해 개발한 시스템입니다.&lt;/p&gt;
&lt;p&gt;FastAPI, PostgreSQL, Docker, Next.js 등을 활용하여 실제 서비스 수준의 구조로 구성하였으며, 향후 AI 기반 예측 모델까지 추가할 계획입니다.&lt;/p&gt;
&lt;p&gt;야구를 좋아하거나 데이터 분석에 관심 있는 개발자라면 스포츠 예측 시스템을 한 번쯤 만들어 보는 것도 좋은 경험이 될 것 같습니다.&lt;/p&gt;
&lt;p&gt;제가 만든 사이트 입니다.&lt;br&gt;&lt;a href=&quot;https://lee-kbo-web.onrender.com/&quot;&gt;https://lee-kbo-web.onrender.com/&lt;/a&gt;&lt;/p&gt;</description>
      <category>스포츠 분석</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/750</guid>
      <comments>https://lee-mandu.tistory.com/750#entry750comment</comments>
      <pubDate>Tue, 2 Jun 2026 10:51:57 +0900</pubDate>
    </item>
    <item>
      <title>SSL/TLS란 무엇인가? HTTPS 통신 원리와 개발자가 알아야 할 오류 해결 방법</title>
      <link>https://lee-mandu.tistory.com/746</link>
      <description>&lt;h1&gt;SSL/TLS란 무엇인가? 개발자가 꼭 알아야 할 HTTPS 통신 원리&lt;/h1&gt;
&lt;p&gt;웹 개발을 하다 보면 다음과 같은 용어를 자주 접하게 됩니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SSL 인증서&lt;/li&gt;
&lt;li&gt;HTTPS&lt;/li&gt;
&lt;li&gt;TLS Handshake&lt;/li&gt;
&lt;li&gt;SSL 오류&lt;/li&gt;
&lt;li&gt;인증서 검증 실패&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;하지만 실제로 SSL/TLS가 무엇인지, 왜 필요한지 정확히 이해하지 못한 채 사용하는 경우가 많습니다.&lt;/p&gt;
&lt;p&gt;이번 글에서는 SSL/TLS의 개념부터 동작 원리, 그리고 개발 시 자주 발생하는 오류까지 쉽게 정리해 보겠습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;SSL/TLS란?&lt;/h2&gt;
&lt;p&gt;SSL/TLS는 인터넷에서 데이터를 안전하게 주고받기 위한 암호화 기술입니다.&lt;/p&gt;
&lt;p&gt;예를 들어 사용자가 로그인할 때 아이디와 비밀번호를 입력한다고 가정해 보겠습니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;사용자
 ↓
인터넷
 ↓
웹 서버&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;암호화가 없다면 중간에서 네트워크 패킷을 가로채는 사람이 로그인 정보를 그대로 볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;이를 방지하기 위해 SSL/TLS를 사용하여 데이터를 암호화합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;사용자
 ↓ (암호화)
인터넷
 ↓ (암호화)
웹 서버&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;중간에서 데이터를 훔쳐보더라도 내용을 해독할 수 없습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;SSL과 TLS의 차이&lt;/h2&gt;
&lt;p&gt;많은 사람들이 SSL과 TLS를 같은 의미로 사용합니다.&lt;/p&gt;
&lt;p&gt;실제로는 다음과 같습니다.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;구분&lt;/th&gt;
&lt;th&gt;설명&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;SSL&lt;/td&gt;
&lt;td&gt;과거에 사용되던 보안 프로토콜&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TLS&lt;/td&gt;
&lt;td&gt;SSL을 개선한 현재 표준 프로토콜&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;현재는 SSL 3.0 이후 TLS로 발전했으며 대부분 TLS를 사용합니다.&lt;/p&gt;
&lt;p&gt;하지만 업계에서는 여전히 아래와 같은 표현을 사용합니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SSL 인증서&lt;/li&gt;
&lt;li&gt;SSL 통신&lt;/li&gt;
&lt;li&gt;SSL 오류&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;실제로는 TLS를 의미하는 경우가 대부분입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;HTTPS와 SSL/TLS의 관계&lt;/h2&gt;
&lt;p&gt;웹 주소를 보면 다음 두 가지 형태가 있습니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;http://example.com&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;https://example.com&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;차이점은 HTTPS입니다.&lt;/p&gt;
&lt;p&gt;HTTPS는 다음과 같습니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;HTTPS = HTTP + TLS&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;즉 HTTP 통신에 TLS 암호화를 적용한 것입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;SSL/TLS는 왜 필요한가?&lt;/h2&gt;
&lt;p&gt;SSL/TLS는 크게 세 가지 목적을 가집니다.&lt;/p&gt;
&lt;h3&gt;1. 데이터 암호화&lt;/h3&gt;
&lt;p&gt;중간에서 패킷을 가로채더라도 내용을 확인할 수 없습니다.&lt;/p&gt;
&lt;h3&gt;2. 서버 인증&lt;/h3&gt;
&lt;p&gt;접속한 서버가 진짜 서버인지 확인합니다.&lt;/p&gt;
&lt;p&gt;예를 들어 피싱 사이트가 아닌 실제 서비스 서버인지 검증합니다.&lt;/p&gt;
&lt;h3&gt;3. 데이터 무결성 보장&lt;/h3&gt;
&lt;p&gt;통신 중 데이터가 변조되지 않았는지 확인합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;SSL/TLS 통신 과정&lt;/h2&gt;
&lt;p&gt;HTTPS 접속 시 내부적으로 다음 과정이 수행됩니다.&lt;/p&gt;
&lt;h3&gt;1단계 : Client Hello&lt;/h3&gt;
&lt;p&gt;클라이언트가 서버에게 자신의 정보를 전달합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;안녕하세요.
TLS 1.2, TLS 1.3 지원합니다.
지원 가능한 암호화 방식은 다음과 같습니다.&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;2단계 : Server Hello&lt;/h3&gt;
&lt;p&gt;서버가 사용할 TLS 버전과 암호화 방식을 선택합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;좋습니다.
TLS 1.3을 사용하겠습니다.
암호화 방식은 AES256을 사용하겠습니다.&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;3단계 : 인증서 전달&lt;/h3&gt;
&lt;p&gt;서버가 자신의 인증서를 전달합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;이 서버가 진짜 서버임을 증명하는 인증서입니다.&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;4단계 : 인증서 검증&lt;/h3&gt;
&lt;p&gt;클라이언트가 인증서를 검증합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;인증서가 유효한가?
신뢰할 수 있는 기관이 발급했는가?
만료되지는 않았는가?&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;5단계 : 세션 키 생성&lt;/h3&gt;
&lt;p&gt;암호화 통신에 사용할 세션 키를 생성합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;6단계 : 암호화 통신 시작&lt;/h3&gt;
&lt;p&gt;이후부터 모든 데이터는 암호화되어 전송됩니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &amp;quot;userId&amp;quot;: &amp;quot;sample&amp;quot;,
  &amp;quot;password&amp;quot;: &amp;quot;******&amp;quot;
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;TLS Handshake란?&lt;/h2&gt;
&lt;p&gt;위 과정을 통틀어 TLS Handshake라고 부릅니다.&lt;/p&gt;
&lt;p&gt;즉 실제 데이터를 전송하기 전에&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;암호화 방식 결정
인증서 검증
세션 키 생성&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;을 수행하는 과정입니다.&lt;/p&gt;
&lt;p&gt;TLS Handshake가 성공해야 HTTPS 통신이 가능합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;개발 시 자주 발생하는 SSL/TLS 오류&lt;/h2&gt;
&lt;h3&gt;1. TLS 버전 불일치&lt;/h3&gt;
&lt;p&gt;예를 들어 서버는 TLS 1.2 이상만 허용하는데&lt;/p&gt;
&lt;p&gt;클라이언트는 TLS 1.0만 지원하는 경우 발생합니다.&lt;/p&gt;
&lt;p&gt;대표 오류&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;handshake_failure&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;2. 인증서 검증 실패&lt;/h3&gt;
&lt;p&gt;클라이언트가 서버 인증서를 신뢰하지 못하는 경우입니다.&lt;/p&gt;
&lt;p&gt;대표 오류&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;PKIX path building failed&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;unable to find valid certification path&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;3. 인증서 만료&lt;/h3&gt;
&lt;p&gt;인증서 유효기간이 종료된 경우입니다.&lt;/p&gt;
&lt;p&gt;대표 오류&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;CertificateExpiredException&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;4. Cipher Suite 불일치&lt;/h3&gt;
&lt;p&gt;서버와 클라이언트가 공통으로 지원하는 암호화 알고리즘이 없는 경우입니다.&lt;/p&gt;
&lt;p&gt;대표 오류&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;SSLHandshakeException&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;5. SNI(Server Name Indication) 문제&lt;/h3&gt;
&lt;p&gt;하나의 서버에서 여러 도메인을 운영하는 경우 사용됩니다.&lt;/p&gt;
&lt;p&gt;클라이언트가 접속하려는 도메인 정보를 함께 전달해야 합니다.&lt;/p&gt;
&lt;p&gt;구형 환경에서는 이 기능을 지원하지 않아 TLS 오류가 발생할 수 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;SSL/TLS 오류 발생 시 확인 순서&lt;/h2&gt;
&lt;h3&gt;1. DNS 확인&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;nslookup example.com&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;2. 포트 연결 확인&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;telnet example.com 443&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;3. 인증서 확인&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;openssl s_client -connect example.com:443&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;4. TLS 버전 확인&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;openssl s_client -tls1_2 -connect example.com:443&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;5. 애플리케이션 로그 확인&lt;/h3&gt;
&lt;p&gt;Java의 경우&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;-Djavax.net.debug=ssl,handshake&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;옵션을 통해 상세 TLS 로그를 확인할 수 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;마무리&lt;/h2&gt;
&lt;p&gt;SSL/TLS는 단순히 HTTPS를 사용하기 위한 기술이 아니라 인터넷 보안의 핵심 요소입니다.&lt;/p&gt;
&lt;p&gt;우리가 매일 사용하는 로그인, 결제, 본인 인증, API 통신 대부분이 SSL/TLS 위에서 동작합니다.&lt;/p&gt;
&lt;p&gt;개발자는 SSL/TLS의 기본 개념과 Handshake 과정, 그리고 대표적인 오류 원인을 이해하고 있어야 실제 운영 환경에서 발생하는 다양한 통신 문제를 빠르게 해결할 수 있습니다.&lt;/p&gt;
&lt;p&gt;특히 HTTPS 통신 오류가 발생한다면 단순히 &amp;quot;서버가 안 된다&amp;quot;라고 판단하기보다 TLS 버전, 인증서, 암호화 방식, 네트워크 환경 등을 단계적으로 점검하는 습관이 중요합니다.&lt;/p&gt;</description>
      <category>개발/네트워크</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/746</guid>
      <comments>https://lee-mandu.tistory.com/746#entry746comment</comments>
      <pubDate>Mon, 1 Jun 2026 08:50:41 +0900</pubDate>
    </item>
    <item>
      <title>한국 주식 데이터는 어디서 어떻게 모으나 &amp;mdash; KRX&amp;middot;OpenDART&amp;middot;증권사 API 비교 (개발 일지 2화)</title>
      <link>https://lee-mandu.tistory.com/744</link>
      <description>&lt;p&gt;지난 1화에서 사이트를 만들기 시작한 이유까지 적었습니다. 오늘은 그다음 단계 — &lt;strong&gt;&amp;quot;한국 주식 데이터는 어디서 어떻게 모으는가&amp;quot;&lt;/strong&gt;에 대한 시행착오를 정리합니다.&lt;/p&gt;
&lt;p&gt;미국 주식이라면 야후 파이낸스나 Alpha Vantage 같은 무료 데이터 소스가 잘 정리되어 있지만, 한국 주식은 데이터가 여러 기관에 분산되어 있고 형식도 모두 다릅니다. 처음 3개월은 분석 로직보다 데이터 정리에 더 많은 시간을 들였습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;한국 주식 데이터의 3대 출처&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;출처&lt;/th&gt;
&lt;th&gt;제공 데이터&lt;/th&gt;
&lt;th&gt;접근 방식&lt;/th&gt;
&lt;th&gt;비용&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;한국거래소 (KRX)&lt;/td&gt;
&lt;td&gt;시세, 거래량, 외국인·기관 수급, 공시 일정&lt;/td&gt;
&lt;td&gt;KRX 정보데이터시스템, Open API&lt;/td&gt;
&lt;td&gt;무료 (일부 제한)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;금융감독원 DART&lt;/td&gt;
&lt;td&gt;재무제표, 사업보고서, 공시 원문&lt;/td&gt;
&lt;td&gt;OpenDART API&lt;/td&gt;
&lt;td&gt;무료&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;증권사 OpenAPI&lt;/td&gt;
&lt;td&gt;실시간 시세, 호가, 잔고, 주문&lt;/td&gt;
&lt;td&gt;키움·KIS API&lt;/td&gt;
&lt;td&gt;무료 (계좌 필요)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;세 가지 출처는 제공 데이터가 겹치는 부분도 있고 다른 부분도 있어서, 어떤 데이터를 어디서 받을지 매핑하는 게 첫 번째 과제였습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;KRX 데이터 — 가장 기본이지만 가장 까다로움&lt;/h3&gt;
&lt;p&gt;KRX는 한국 주식 데이터의 1차 출처입니다. 일일 종가, 거래량, 외국인·기관 순매수가 모두 여기서 시작됩니다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;장점&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;가장 권위 있는 원천 데이터&lt;/li&gt;
&lt;li&gt;일별·종목별 모두 제공&lt;/li&gt;
&lt;li&gt;외국인·기관·개인 수급 분리 데이터 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;시행착오&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;처음에는 KRX 정보데이터시스템(data.krx.co.kr)에서 직접 데이터를 받아 봤습니다. 그런데 다음 문제가 있었습니다.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;API가 공식 문서화되어 있지 않음&lt;/strong&gt; — 사이트 자체의 비공개 엔드포인트를 추적해야 함&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;요청 헤더가 까다로움&lt;/strong&gt; — Referer, User-Agent 같은 헤더가 정확해야 응답 옴&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CSV 다운로드는 가능하지만 자동화에 부적합&lt;/strong&gt; — 매일 수동 다운로드는 비현실적&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;종목 코드 형식이 통일 안 됨&lt;/strong&gt; — 어떤 페이지에서는 6자리 숫자, 어떤 페이지에서는 7자리 (앞에 &amp;#39;A&amp;#39; 붙음)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;결국 KRX 데이터 수집 자동화에만 2주 정도 소요됐습니다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;해결&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;비공식 API 엔드포인트를 분석해 정기 수집 스크립트 작성&lt;/li&gt;
&lt;li&gt;종목 코드는 항상 6자리 숫자로 통일하는 정규화 함수 도입&lt;/li&gt;
&lt;li&gt;요청 실패에 대비한 재시도 로직 (지수 백오프)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;OpenDART — 재무 데이터의 보고&lt;/h3&gt;
&lt;p&gt;금융감독원 전자공시(DART)는 한국 상장사의 재무 데이터, 사업보고서, 공시 원문을 받을 수 있는 곳입니다. OpenDART API로 자동 수집이 가능합니다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;장점&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;공식 API + 공식 문서 존재&lt;/li&gt;
&lt;li&gt;API 키 발급이 간단 (이메일 인증)&lt;/li&gt;
&lt;li&gt;XBRL 형식의 구조화된 재무 데이터 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;시행착오&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;API 호출 한도&lt;/strong&gt; — 일일 1만 회 제한. 종목 2,500개 × 분기 4 × 항목 30개 계산하면 한도 초과 위험&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;공시 시점 vs 실제 결산 시점의 차이&lt;/strong&gt; — 분기보고서는 결산일 후 45일 안에 제출되지만, 데이터 활용 시점은 시장과 시차 있음&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;재무 항목 명칭 불일치&lt;/strong&gt; — 같은 &amp;quot;영업이익&amp;quot;도 회사마다 표기 방식이 미묘하게 다름 (XBRL 태그는 통일되어 있으나 실제 활용에는 추가 정제 필요)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;연결 vs 별도&lt;/strong&gt; — 어떤 기준을 쓸지 사전에 결정 필요&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;해결&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;호출 한도 절약을 위해 종목별 분기마다 1회만 수집, 로컬 캐시 활용&lt;/li&gt;
&lt;li&gt;재무 데이터는 발표 후 5거래일 지난 시점부터만 활용 (시차 반영)&lt;/li&gt;
&lt;li&gt;연결 기준을 기본으로 하되, 별도 기준만 보고하는 종목은 예외 처리&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;증권사 OpenAPI — 실시간 영역&lt;/h3&gt;
&lt;p&gt;KRX·DART는 일별 데이터까지가 한계입니다. 실시간 호가, 분 단위 시세, 실거래 주문이 필요하면 증권사 API를 써야 합니다.&lt;/p&gt;
&lt;p&gt;대표적으로 키움증권 OpenAPI+와 한국투자증권 KIS Developers API가 있습니다.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;키움 OpenAPI+&lt;/th&gt;
&lt;th&gt;KIS Developers&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;접근 방식&lt;/td&gt;
&lt;td&gt;Windows OCX&lt;/td&gt;
&lt;td&gt;REST API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;운영체제 제약&lt;/td&gt;
&lt;td&gt;Windows 전용&lt;/td&gt;
&lt;td&gt;모든 OS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;인증&lt;/td&gt;
&lt;td&gt;HTS 로그인 기반&lt;/td&gt;
&lt;td&gt;OAuth 토큰&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;자동화 친화성&lt;/td&gt;
&lt;td&gt;낮음 (GUI 의존)&lt;/td&gt;
&lt;td&gt;높음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;모의투자 지원&lt;/td&gt;
&lt;td&gt;있음&lt;/td&gt;
&lt;td&gt;있음&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;저는 처음에 키움 OpenAPI+로 시작했지만, Windows 전용에다 OCX 의존성 때문에 자동화가 까다로워 KIS Developers로 갈아탔습니다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;시행착오&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;토큰 갱신&lt;/strong&gt; — KIS API는 24시간마다 토큰 갱신 필요. 자동 갱신 로직 구현 필수&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;호출 빈도 제한&lt;/strong&gt; — TPS 제한이 있어 한 번에 종목 200개를 동시 조회할 수 없음&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;시세 vs 잔고 API의 권한 분리&lt;/strong&gt; — 시세 조회만 쓸 거면 별도 권한 신청 불필요하나, 잔고·주문 API는 추가 동의 필요&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;가장 큰 함정 — 데이터 정합성&lt;/h3&gt;
&lt;p&gt;세 출처에서 같은 종목의 같은 시점 데이터를 받아도 미묘하게 다른 경우가 있습니다.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;함정&lt;/th&gt;
&lt;th&gt;사례&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;종목 코드 표기&lt;/td&gt;
&lt;td&gt;KRX는 6자리, 일부 API는 7자리(A 접두), DART는 회사 고유번호(corp_code)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;종목명 변경 이력&lt;/td&gt;
&lt;td&gt;같은 종목이 사명 변경하면 과거 데이터 매칭이 끊김&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;액면분할·합병&lt;/td&gt;
&lt;td&gt;가격이 갑자기 1/10이 되거나 합쳐짐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;휴장일 처리&lt;/td&gt;
&lt;td&gt;같은 거래일이 출처마다 다르게 표기되는 경우&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;특히 종목 코드 매핑이 가장 큰 문제였습니다. 결국 별도 &amp;quot;코드 매핑 테이블&amp;quot;을 만들어 (KRX 6자리 ↔ DART corp_code ↔ 증권사 API 코드)를 모두 연결하는 마스터 테이블을 운영하게 됐습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;결측치와 이상치 처리&lt;/h3&gt;
&lt;p&gt;데이터를 모은 후 절반의 시간은 정제에 들어갔습니다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;자주 발생하는 결측치&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;거래정지 종목의 일별 시세 (가격 없음)&lt;/li&gt;
&lt;li&gt;신규 상장 종목의 과거 데이터 (날짜 없음)&lt;/li&gt;
&lt;li&gt;외국인 보유율 미공시 종목&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;자주 발생하는 이상치&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;액면분할 직후 가격 급변 (분할 비율 적용 필요)&lt;/li&gt;
&lt;li&gt;무상증자 권리락 (가격 단절)&lt;/li&gt;
&lt;li&gt;비정상 거래 (장중 일시 가격 폭등 후 회복)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이런 케이스마다 처리 규칙을 만들어 두지 않으면 분석 결과가 왜곡됩니다. 예를 들어 액면분할 종목의 60일 수익률을 그대로 계산하면 -90%가 나오는데, 실제로는 가격이 같은 경우가 많습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;정리 — 데이터 인프라가 분석의 절반&lt;/h3&gt;
&lt;p&gt;지금 돌이켜 보면, 분석 모델을 만드는 시간보다 &lt;strong&gt;데이터 인프라를 안정화하는 시간&lt;/strong&gt;이 훨씬 많이 들었습니다. 그리고 이 부분이 데이터 기반 도구의 신뢰성을 결정합니다.&lt;/p&gt;
&lt;p&gt;분석 로직은 언제든 바꿀 수 있지만, 데이터가 잘못되면 분석 결과를 검증할 수도 없습니다. &amp;quot;쓰레기를 넣으면 쓰레기가 나온다&amp;quot;는 말이 가장 자주 떠올랐던 시기입니다.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;단계&lt;/th&gt;
&lt;th&gt;비중 (체감 시간)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;데이터 수집 자동화&lt;/td&gt;
&lt;td&gt;30%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;데이터 정합성 맞추기&lt;/td&gt;
&lt;td&gt;25%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;결측치·이상치 처리&lt;/td&gt;
&lt;td&gt;15%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;분석 모델 설계&lt;/td&gt;
&lt;td&gt;20%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;시각화·UI&lt;/td&gt;
&lt;td&gt;10%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;이 비율이 한국 주식 데이터 분석 도구를 직접 만들어 본 사람의 일반적인 시간 배분이라고 봅니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;다음 화 예고&lt;/h3&gt;
&lt;p&gt;다음 3화에서는 &amp;quot;왜 점수와 신호를 분리하기로 했나&amp;quot;를 다뤄 보려 합니다. 데이터를 모으고 점수를 매기는 데까지 왔지만, 그 점수를 그대로 매수·매도 신호로 쓰지 않기로 결정한 배경 이야기입니다.&lt;/p&gt;
&lt;p&gt;사이트 → &lt;a href=&quot;https://www.leetrader.kr&quot;&gt;https://www.leetrader.kr&lt;/a&gt;&lt;br&gt;블로그 → &lt;a href=&quot;https://www.leetrader.kr/blog&quot;&gt;https://www.leetrader.kr/blog&lt;/a&gt;&lt;br&gt;이전 화 → 개발 일지 1화 (왜 만들기 시작했는가)&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;정리된 데이터가 어떻게 보이는지 확인&lt;/strong&gt;&lt;br&gt;본 글에서 다룬 KRX·DART·증권사 API 데이터가 실제로 어떻게 정리되어 한 화면에 표시되는지 운영 화면에서 직접 보실 수 있습니다.&lt;br&gt;&lt;a href=&quot;https://www.leetrader.kr/app&quot;&gt;https://www.leetrader.kr/app&lt;/a&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;본 글은 Lee Trader Lab 운영자가 직접 작성한 개발 일지입니다.&lt;br&gt;본 시리즈는 시스템 개발 과정에 대한 기록이며, 특정 종목의 매수·매도 권유나 투자 자문이 아닙니다.&lt;br&gt;투자 판단과 손익 책임은 투자자 본인에게 있습니다.&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;</description>
      <category>주식 추천 시스템 개발</category>
      <category>KIS Developers</category>
      <category>KRX API</category>
      <category>Lee Trader Lab 개발기</category>
      <category>OpenDART API</category>
      <category>데이터 정합성</category>
      <category>전자공시</category>
      <category>주식 데이터 수집</category>
      <category>키움 API</category>
      <category>한국 주식 데이터</category>
      <category>한국거래소</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/744</guid>
      <comments>https://lee-mandu.tistory.com/744#entry744comment</comments>
      <pubDate>Sun, 31 May 2026 18:57:52 +0900</pubDate>
    </item>
    <item>
      <title>특허출원에서 청구범위 제출 마감일은 언제일까?</title>
      <link>https://lee-mandu.tistory.com/745</link>
      <description>&lt;h1&gt;특허출원에서 청구범위 제출 마감일은 언제일까?&lt;/h1&gt;
&lt;h2&gt;일반출원, 분할출원, 변경출원, 분리출원까지 정리&lt;/h2&gt;
&lt;p&gt;특허출원을 진행하다 보면 &lt;strong&gt;“청구범위 제출 마감일”&lt;/strong&gt;이라는 개념을 만나게 됩니다.&lt;/p&gt;
&lt;p&gt;특히 특허출원 시 처음부터 청구범위를 작성하지 않고 출원하는 경우가 있는데, 이때는 일정 기간 안에 반드시 청구범위를 제출해야 합니다.&lt;/p&gt;
&lt;p&gt;이번 글에서는 특허출원에서 청구범위 제출 마감일이 언제인지, 그리고 &lt;strong&gt;분할출원·변경출원·분리출원에도 동일하게 적용되는지&lt;/strong&gt; 정리해보겠습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;1. 청구범위란 무엇인가?&lt;/h2&gt;
&lt;p&gt;특허에서 &lt;strong&gt;청구범위&lt;/strong&gt;는 매우 중요한 부분입니다.&lt;/p&gt;
&lt;p&gt;쉽게 말하면,&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“내가 특허로 보호받고 싶은 기술적 범위”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;를 적는 부분입니다.&lt;/p&gt;
&lt;p&gt;명세서에 발명의 설명이 아무리 잘 되어 있어도, 실제 권리범위는 청구범위를 기준으로 판단됩니다.&lt;/p&gt;
&lt;p&gt;따라서 청구범위는 특허권의 핵심이라고 볼 수 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;2. 청구범위 없이 특허출원이 가능한가?&lt;/h2&gt;
&lt;p&gt;네, 가능합니다.&lt;/p&gt;
&lt;p&gt;특허출원 시 처음부터 청구범위를 작성하지 않고도 출원할 수 있습니다.&lt;br&gt;이를 보통 &lt;strong&gt;청구범위 제출유예제도&lt;/strong&gt;라고 이해하면 됩니다.&lt;/p&gt;
&lt;p&gt;즉, 출원 당시에는 발명의 설명 등을 먼저 제출하고, 청구범위는 나중에 제출할 수 있는 제도입니다.&lt;/p&gt;
&lt;p&gt;다만 무기한으로 미룰 수 있는 것은 아닙니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;3. 일반 특허출원의 청구범위 제출 마감일&lt;/h2&gt;
&lt;p&gt;일반적인 특허출원의 경우 청구범위 제출 마감일은 다음과 같습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;출원일 또는 최우선일로부터 1년 2개월 이내&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;즉, 쉽게 말하면 &lt;strong&gt;출원일 기준 14개월 이내&lt;/strong&gt;에 청구범위를 제출해야 합니다.&lt;/p&gt;
&lt;p&gt;예를 들어 보겠습니다.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;구분&lt;/th&gt;
&lt;th&gt;날짜&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;특허출원일&lt;/td&gt;
&lt;td&gt;2026년 5월 29일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;청구범위 제출 마감일&lt;/td&gt;
&lt;td&gt;2026년 7월 29일&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;따라서 청구범위 없이 특허출원을 했다면, 반드시 위 기간 안에 청구범위를 제출해야 합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;4. 심사청구와 청구범위의 관계&lt;/h2&gt;
&lt;p&gt;특허출원을 했다고 해서 자동으로 심사가 진행되는 것은 아닙니다.&lt;br&gt;특허심사를 받으려면 별도로 &lt;strong&gt;심사청구&lt;/strong&gt;를 해야 합니다.&lt;/p&gt;
&lt;p&gt;그런데 청구범위가 없는 상태에서는 심사의 대상이 명확하지 않습니다.&lt;/p&gt;
&lt;p&gt;따라서 실무적으로는 다음 순서가 필요합니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;청구범위 제출 → 심사청구&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;즉, 심사청구를 하려면 먼저 청구범위를 제출해야 한다고 이해하면 됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;5. 제3자가 심사청구를 한 경우&lt;/h2&gt;
&lt;p&gt;주의할 부분이 있습니다.&lt;/p&gt;
&lt;p&gt;출원인이 아닌 &lt;strong&gt;제3자&lt;/strong&gt;가 먼저 심사청구를 하는 경우가 있을 수 있습니다.&lt;/p&gt;
&lt;p&gt;이 경우에는 청구범위 제출 마감일이 앞당겨질 수 있습니다.&lt;/p&gt;
&lt;p&gt;제3자가 심사청구를 한 경우에는 다음 중 &lt;strong&gt;더 빠른 날&lt;/strong&gt;까지 청구범위를 제출해야 합니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;심사청구 취지 통지를 받은 날부터 3개월&lt;/strong&gt;&lt;br&gt;또는&lt;br&gt;&lt;strong&gt;출원일 또는 최우선일로부터 1년 2개월&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;즉, 원래는 출원일로부터 1년 2개월까지 여유가 있더라도, 제3자 심사청구로 인해 더 빨리 청구범위를 제출해야 할 수 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;6. 청구범위 제출기한을 넘기면 어떻게 될까?&lt;/h2&gt;
&lt;p&gt;청구범위 제출기한을 넘기면 매우 큰 문제가 발생합니다.&lt;/p&gt;
&lt;p&gt;기한 내에 청구범위를 제출하지 않으면 해당 특허출원은,&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;그 기한의 다음 날에 취하된 것으로 간주&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;됩니다.&lt;/p&gt;
&lt;p&gt;즉, 출원이 살아있는 상태가 아니라 &lt;strong&gt;취하된 것으로 처리&lt;/strong&gt;될 수 있습니다.&lt;/p&gt;
&lt;p&gt;따라서 청구범위 없이 출원한 경우에는 반드시 마감일을 관리해야 합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;분할출원, 변경출원, 분리출원도 청구범위 제출유예가 가능할까?&lt;/h1&gt;
&lt;p&gt;여기서 중요한 실무 쟁점이 있습니다.&lt;/p&gt;
&lt;p&gt;일반출원뿐만 아니라 &lt;strong&gt;분할출원, 변경출원, 분리출원&lt;/strong&gt;에도 청구범위 제출유예가 적용되는지 여부입니다.&lt;/p&gt;
&lt;p&gt;결론부터 정리하면 다음과 같습니다.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;구분&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;청구범위 없이 출원 가능 여부&lt;/th&gt;
&lt;th&gt;청구범위 제출 마감&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;일반 특허출원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;가능&lt;/td&gt;
&lt;td&gt;출원일 또는 최우선일로부터 1년 2개월&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;분할출원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;가능&lt;/td&gt;
&lt;td&gt;원칙적으로 원출원 기준, 기한 경과 시 분할출원일로부터 30일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;변경출원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;가능&lt;/td&gt;
&lt;td&gt;원칙적으로 기초출원 기준, 기한 경과 시 변경출원일로부터 30일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;분리출원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;불가능&lt;/td&gt;
&lt;td&gt;출원 시 청구범위를 반드시 작성해야 함&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2&gt;7. 분할출원의 청구범위 제출 마감일&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;분할출원&lt;/strong&gt;이란 하나의 특허출원 안에 여러 발명이 포함되어 있을 때, 그중 일부를 별도의 출원으로 나누는 것을 말합니다.&lt;/p&gt;
&lt;p&gt;분할출원도 청구범위 없이 출원할 수 있습니다.&lt;/p&gt;
&lt;p&gt;다만 청구범위 제출 마감일은 단순히 &lt;strong&gt;분할출원일 + 1년 2개월&lt;/strong&gt;로 보면 안 됩니다.&lt;/p&gt;
&lt;p&gt;분할출원은 원출원과의 관계가 있기 때문에 원칙적으로는 &lt;strong&gt;원출원의 출원일 또는 최우선일 기준&lt;/strong&gt;으로 청구범위 제출기한을 판단합니다.&lt;/p&gt;
&lt;p&gt;다만 이미 그 기한이 지난 뒤 분할출원을 한 경우에는 예외적으로,&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;분할출원일로부터 30일 이내&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;청구범위를 제출할 수 있습니다.&lt;/p&gt;
&lt;p&gt;따라서 분할출원의 경우 실무적으로는 다음처럼 판단하면 됩니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;원출원 기준 1년 2개월이 아직 지나지 않았다면 그 기한까지 제출&lt;br&gt;이미 지났다면 분할출원일로부터 30일 이내 제출&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h2&gt;8. 변경출원의 청구범위 제출 마감일&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;변경출원&lt;/strong&gt;은 기존 출원의 출원형태를 바꾸는 절차입니다.&lt;/p&gt;
&lt;p&gt;예를 들어 실용신안등록출원을 특허출원으로 변경하는 경우 등이 있습니다.&lt;/p&gt;
&lt;p&gt;변경출원도 청구범위 없이 출원할 수 있습니다.&lt;/p&gt;
&lt;p&gt;청구범위 제출기한은 원칙적으로 기초가 되는 출원의 출원일 또는 최우선일을 기준으로 판단합니다.&lt;/p&gt;
&lt;p&gt;다만 이미 일반적인 청구범위 제출기한이 지난 경우에는,&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;변경출원일로부터 30일 이내&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;청구범위를 제출할 수 있습니다.&lt;/p&gt;
&lt;p&gt;즉, 변경출원도 분할출원과 유사하게 보면 됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;9. 분리출원은 다르다&lt;/h2&gt;
&lt;p&gt;주의해야 할 부분은 &lt;strong&gt;분리출원&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;p&gt;분리출원은 분할출원이나 변경출원과 달리 청구범위 제출유예가 적용되지 않는 것으로 보아야 합니다.&lt;/p&gt;
&lt;p&gt;즉, 분리출원은 출원할 때부터 명세서에 &lt;strong&gt;청구범위를 반드시 적어야 합니다.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;청구범위 없이 분리출원을 하면 나중에 보정으로 해결하는 구조가 아닙니다.&lt;/p&gt;
&lt;p&gt;정리하면 다음과 같습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;분할출원, 변경출원: 청구범위 없이 출원 가능&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;분리출원: 청구범위 없이 출원 불가&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;이 부분은 실무에서 혼동하기 쉬우므로 반드시 구분해야 합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;최종 정리&lt;/h1&gt;
&lt;p&gt;특허출원에서 청구범위 제출 마감일은 다음과 같이 정리할 수 있습니다.&lt;/p&gt;
&lt;h2&gt;일반 특허출원&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;출원일 또는 최우선일로부터 1년 2개월 이내&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;h2&gt;제3자가 심사청구한 경우&lt;/h2&gt;
&lt;p&gt;다음 중 더 빠른 날까지 제출해야 합니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;심사청구 취지 통지를 받은 날부터 3개월&lt;/strong&gt;&lt;br&gt;또는&lt;br&gt;&lt;strong&gt;출원일 또는 최우선일로부터 1년 2개월&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;h2&gt;분할출원&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;원칙적으로 원출원 기준&lt;br&gt;이미 기한이 지났다면 &lt;strong&gt;분할출원일로부터 30일 이내&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;h2&gt;변경출원&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;원칙적으로 기초출원 기준&lt;br&gt;이미 기한이 지났다면 &lt;strong&gt;변경출원일로부터 30일 이내&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;h2&gt;분리출원&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;청구범위 제출유예 불가&lt;br&gt;&lt;strong&gt;출원 시 청구범위를 반드시 작성해야 함&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h1&gt;마무리&lt;/h1&gt;
&lt;p&gt;특허에서 청구범위는 권리범위를 정하는 핵심 요소입니다.&lt;/p&gt;
&lt;p&gt;청구범위 없이 출원할 수 있는 제도는 출원인에게 시간을 벌어주는 장점이 있지만, 기한을 놓치면 출원이 취하된 것으로 간주될 수 있으므로 매우 주의해야 합니다.&lt;/p&gt;
&lt;p&gt;특히 &lt;strong&gt;분할출원, 변경출원, 분리출원&lt;/strong&gt;은 각각 적용 방식이 다르기 때문에 단순히 같은 기준으로 판단하면 안 됩니다.&lt;/p&gt;
&lt;p&gt;실무적으로는 다음 한 문장으로 기억하면 좋습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;일반출원은 1년 2개월, 분할·변경은 기한 경과 시 30일, 분리출원은 처음부터 청구범위가 필요하다.&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;특허 절차에서는 하루 차이로 권리가 사라질 수도 있으므로, 청구범위 제출기한은 반드시 별도로 관리하는 것이 좋습니다.&lt;/p&gt;</description>
      <category>일상/정보</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/745</guid>
      <comments>https://lee-mandu.tistory.com/745#entry745comment</comments>
      <pubDate>Fri, 29 May 2026 11:38:55 +0900</pubDate>
    </item>
    <item>
      <title>AI 주식 분석 사이트를 직접 만들기 시작한 이유 &amp;mdash; 평범한 개인 투자자의 개발 일지</title>
      <link>https://lee-mandu.tistory.com/743</link>
      <description>&lt;p&gt;오늘은 평소 글과 조금 다른 이야기를 적어 보려고 합니다. 제가 직접 운영하고 있는 무료 주식 분석 사이트 Lee Trader Lab(&lt;a href=&quot;https://www.leetrader.kr)%EC%9D%84&quot;&gt;https://www.leetrader.kr)을&lt;/a&gt; 만들게 된 계기를 정리한 글입니다. 한 편으로 끝나지 않을 것 같아서, &amp;quot;개발 일지&amp;quot; 시리즈로 천천히 풀어 가려 합니다.&lt;/p&gt;
&lt;p&gt;이 시리즈는 코드를 보여주는 글이 아닙니다. &amp;quot;평범한 개인 투자자가 왜 자기 손으로 주식 분석 시스템을 만들기 시작했는지&amp;quot;, 그리고 &amp;quot;그 과정에서 어떤 시행착오를 거쳤는지&amp;quot;를 이야기 식으로 정리한 글입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;시작은 평범한 손실이었습니다&lt;/h3&gt;
&lt;p&gt;처음 시스템을 만들어야겠다고 마음먹은 건 2년 전쯤 어느 평일 저녁이었습니다.&lt;/p&gt;
&lt;p&gt;그날 매수한 종목이 장중 10% 가까이 빠졌습니다. 회사 점심시간에 본 가격이 좋아 보여서 그 자리에서 매수 주문을 넣었던 종목이었어요. 퇴근하고 집에 돌아와 계좌를 확인했을 때, 빨간색이 아니라 짙은 파란색이 떠 있는 걸 보고 한참 멍하게 앉아 있었습니다.&lt;/p&gt;
&lt;p&gt;손실 자체보다 더 답답했던 건, &amp;quot;내가 왜 그 종목을 샀는지 설명할 수 없었다&amp;quot;는 사실이었습니다. 점심시간에 차트 한 번 보고, 외국인이 사고 있다는 코멘트 하나 보고, 그 자리에서 결정했던 거예요. 사후적으로 보니까 그 종목은 이미 단기 과열 구간이었고, 수급도 그날 아침에 막 꺾이고 있던 상황이었습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;매일 2,500개 넘는 종목, 한정된 시간&lt;/h3&gt;
&lt;p&gt;생각해 보니까 저만의 문제가 아니었습니다.&lt;/p&gt;
&lt;p&gt;KOSPI와 KOSDAQ을 합치면 종목 수가 2,500개를 넘습니다. 시가총액 상위 200개만 추려도 하나당 차트, 거래량, 수급, 최근 뉴스를 점검하는 데 5분씩 잡으면 17시간이 걸립니다. 직장인 입장에서는 물리적으로 불가능한 시간입니다.&lt;/p&gt;
&lt;p&gt;그러다 보니 자연스럽게 &amp;quot;오늘 화제가 된 종목&amp;quot;만 보게 됩니다. 뉴스에 나오는 종목, 커뮤니티에서 거론되는 종목, 누군가 추천한 종목. 그런데 그런 종목들은 대부분 이미 가격이 움직인 뒤입니다. 시장에 정보가 다 퍼진 다음에 진입하는 셈이죠.&lt;/p&gt;
&lt;p&gt;저는 IT 쪽 일을 하고 있어서 데이터 다루는 게 익숙한 편입니다. 그날 저녁 컴퓨터 앞에 앉아서 한 가지 생각을 했어요. &amp;quot;사람이 매일 2,500종목을 다 못 본다면, 도구로 후보를 줄이고 시작하는 게 맞지 않나.&amp;quot;&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;기존 도구는 왜 부족했나&lt;/h3&gt;
&lt;p&gt;물론 이미 도구는 많이 있었습니다.&lt;/p&gt;
&lt;p&gt;네이버 증권은 정보가 잘 정리되어 있지만 &amp;quot;오늘 어떤 종목부터 봐야 하는지&amp;quot; 우선순위를 제시해 주지는 않습니다. HTS는 분석 도구라기보다 거래 도구에 가깝고, 화면이 복잡해서 빠른 의사결정에 적합하지 않습니다. 유료 분석 사이트들은 점수만 보여주거나, 매수·매도 신호를 단정적으로 제시하는 경우가 많아 신뢰가 가지 않았습니다.&lt;/p&gt;
&lt;p&gt;특히 마음에 걸렸던 건 마지막 부분이었습니다. 신호를 단정적으로 주는 서비스일수록 의심해야 한다는 직감이 있었어요. 진짜 가치 있는 신호가 무료로 풀린다면 시장에 반영되는 순간 효용은 사라집니다. 결국 사용자에게 진짜 도움이 되는 건 신호가 아니라 &amp;quot;후보를 줄여 주는 필터&amp;quot;라는 결론에 도달했습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;&amp;quot;그럼 내가 만들어 볼까&amp;quot;&lt;/h3&gt;
&lt;p&gt;그때부터 한 달 정도 머릿속에서만 굴렸습니다.&lt;/p&gt;
&lt;p&gt;처음에는 그냥 엑셀 매크로로 수급 데이터를 정리하는 것부터 시작했어요. 외국인·기관 5일 순매수만 한 번에 보고 싶어서요. 그게 잘 작동하는 걸 보고, 다음에는 종가 데이터로 간단한 점수를 만들어 봤습니다. 그것도 그럴듯하게 작동하니까, 그 다음에는 백테스트를 붙여 봤어요.&lt;/p&gt;
&lt;p&gt;이게 6개월쯤 흐른 시점이 되니까 어느새 시스템 형태가 갖춰져 있었습니다. 처음에는 분명히 &amp;quot;내가 쓰려고&amp;quot; 만든 도구였는데, 점점 정리되어 가는 결과를 보면서 &amp;quot;이걸 무료로 공개하는 게 더 의미 있겠다&amp;quot;는 생각이 들었습니다.&lt;/p&gt;
&lt;p&gt;투자 정보는 결국 한 사람이 독점할 때보다 여러 사람이 같은 기준으로 보는 게 시장 전체 노이즈를 줄이는 데 도움이 된다고 믿었기 때문입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;첫 번째 막막함&lt;/h3&gt;
&lt;p&gt;만들기 시작하니까 곧바로 첫 번째 막막함이 왔습니다.&lt;/p&gt;
&lt;p&gt;&amp;quot;한국 주식 데이터는 도대체 어디서 어떻게 모으는가&amp;quot;였습니다.&lt;/p&gt;
&lt;p&gt;미국 주식이라면 야후 파이낸스 같은 무료 데이터 소스가 잘 정리되어 있지만, 한국 주식은 KRX에서 받아야 하는 데이터, 금융감독원 OpenDART에서 받아야 하는 재무 데이터, 증권사 API로 받아야 하는 실시간 데이터가 각각 분산되어 있습니다. 데이터마다 형식도 다르고, 결측치도 많고, 종목 코드 표기 방식도 다 다릅니다.&lt;/p&gt;
&lt;p&gt;이 부분에 가장 많은 시간이 들었어요. 처음 3개월은 분석 로직보다 데이터 정리에 더 많은 시간이 들었던 것 같습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;다음 화 예고&lt;/h3&gt;
&lt;p&gt;이번 1화는 &amp;quot;왜 만들기 시작했는가&amp;quot;였습니다.&lt;/p&gt;
&lt;p&gt;다음 2화는 &amp;quot;처음 부딪힌 문제 — 한국 주식 데이터는 어디서 어떻게 모으는가&amp;quot;를 다뤄 보려 합니다. KRX, OpenDART, 증권사 API 각각의 특성과, 데이터 정합성을 맞추는 과정에서 겪었던 시행착오를 적어 볼 예정입니다.&lt;/p&gt;
&lt;p&gt;이 시리즈가 비슷한 고민을 하고 계신 분, 또는 데이터 기반 투자 도구에 관심 있는 분께 도움이 되기를 바랍니다.&lt;/p&gt;
&lt;p&gt;사이트 → &lt;a href=&quot;https://www.leetrader.kr&quot;&gt;https://www.leetrader.kr&lt;/a&gt;&lt;br&gt;블로그 → &lt;a href=&quot;https://www.leetrader.kr/blog&quot;&gt;https://www.leetrader.kr/blog&lt;/a&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;결과물 화면 보기&lt;/strong&gt;&lt;br&gt;이 시리즈에서 이야기하는 시스템이 실제로 어떤 모양으로 동작하는지 궁금하시면 운영 화면을 직접 확인할 수 있습니다.&lt;br&gt;&lt;a href=&quot;https://www.leetrader.kr/app&quot;&gt;https://www.leetrader.kr/app&lt;/a&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;본 글은 Lee Trader Lab 운영자가 직접 작성한 개발 일지입니다.&lt;br&gt;본 시리즈는 시스템 개발 과정에 대한 기록이며, 특정 종목의 매수·매도 권유나 투자 자문이 아닙니다.&lt;br&gt;투자 판단과 손익 책임은 투자자 본인에게 있습니다.&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;</description>
      <category>주식 추천 시스템 개발</category>
      <category>AI 주식 분석 개발기</category>
      <category>Lee Trader Lab</category>
      <category>개인 투자자 개발 일지</category>
      <category>데이터 기반 투자</category>
      <category>자작 투자 도구</category>
      <category>주식 분석 시스템 개발</category>
      <category>코스닥 분석</category>
      <category>코스피 분석</category>
      <category>한국 주식 데이터</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/743</guid>
      <comments>https://lee-mandu.tistory.com/743#entry743comment</comments>
      <pubDate>Fri, 29 May 2026 08:56:51 +0900</pubDate>
    </item>
    <item>
      <title>AI 주식 추천 점수만 믿으면 안 되는 5가지 이유 &amp;mdash; 그래서 어떻게 활용해야 할까</title>
      <link>https://lee-mandu.tistory.com/742</link>
      <description>&lt;p&gt;최근 1~2년 사이 AI 기반 주식 분석·추천 사이트가 빠르게 늘어났습니다. 무료로 KOSPI·KOSDAQ 종목에 점수를 매겨주고, 상위 종목을 보여주는 서비스도 많습니다. 그런데 점수가 높은 종목을 그대로 매수하면 어떻게 될까요. 결론부터 말씀드리면, AI 점수를 단독 신호로 사용하면 손실 위험이 큽니다.&lt;/p&gt;
&lt;p&gt;이 글은 AI 주식 추천 사이트를 처음 접하는 분들을 위한 가이드입니다. AI 추천을 그대로 따라가면 안 되는 이유 5가지와, 안전하게 활용하기 위한 5단계 체크리스트를 정리합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;AI 추천을 그대로 따라가면 안 되는 5가지 이유&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. 점수는 &amp;quot;오늘 후보군 안에서의 상대 순위&amp;quot;일 뿐이다&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;대부분의 AI 점수는 그날의 후보 종목들 사이에서 매겨지는 상대 평가입니다. 즉 점수 90점이라도 그날 시장 전체가 약세라면 절대적인 매수 매력이 아닐 수 있습니다. 점수의 의미를 &amp;quot;오늘 후보들 중 어디서부터 보면 좋을지&amp;quot; 정도로 좁혀 해석해야 합니다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 대부분의 사이트는 실시간 시세가 아니다&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;무료 사이트는 보통 장 마감 후 데이터를 가공해 다음 날 아침에 결과를 노출합니다. 따라서 장중 급변하는 종목, 갑작스러운 호재·악재가 반영된 종목을 즉시 따라잡기 어렵습니다. 단타·스캘핑에는 부적합합니다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 매수·매도 &amp;quot;신호&amp;quot;를 직접 제공하지 않는 경우가 많다&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;신호를 제공한다고 광고하는 사이트일수록 의심해 봐야 합니다. 정확한 진입·청산 타이밍을 알려주는 정보가 무료로 풀린다면, 그 정보가 시장에 반영되는 순간 효용은 사라집니다. 신호 대신 후보군 압축에만 강한 사이트가 오히려 안전합니다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. 시장 상태(레짐)를 함께 보지 않으면 추격 매수에 빠진다&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;같은 점수 90점 종목도 강세장에서는 매수 우호, 약세장에서는 관찰 우선으로 해석이 달라져야 합니다. 시장 폭(breadth), 변동성, 외국인 자금 흐름을 함께 표시해 주는 사이트인지 먼저 확인하세요.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. 종목 진입 타이밍은 결국 차트로 봐야 한다&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;점수가 높고 시장이 우호적이어도, 그 종목의 일봉이 단기 과열 구간이라면 진입 가격이 불리합니다. AI 추천은 후보 압축까지의 도구일 뿐, 진입 가격·손절 가격·비중은 사용자가 차트와 자금 관리 원칙으로 결정해야 합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;그래서 어떻게 활용해야 할까 — 5단계 체크리스트&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;단계&lt;/th&gt;
&lt;th&gt;점검 항목&lt;/th&gt;
&lt;th&gt;통과 기준&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;1단계&lt;/td&gt;
&lt;td&gt;시장 레짐&lt;/td&gt;
&lt;td&gt;강세 또는 중립 (방어 구간이면 매수 보류)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2단계&lt;/td&gt;
&lt;td&gt;점수&lt;/td&gt;
&lt;td&gt;70점 이상 (절대 기준이 아닌 후보 자격선)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3단계&lt;/td&gt;
&lt;td&gt;수급&lt;/td&gt;
&lt;td&gt;외국인·기관 5일 순매수 모두 (+)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4단계&lt;/td&gt;
&lt;td&gt;리스크 키워드&lt;/td&gt;
&lt;td&gt;&amp;quot;리스크 주의&amp;quot;, &amp;quot;손실 확인&amp;quot; 등 경고 표시 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5단계&lt;/td&gt;
&lt;td&gt;차트&lt;/td&gt;
&lt;td&gt;HTS에서 일봉·주봉·거래량 직접 확인, 진입 가격·손절가·비중 사전 결정&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;이 다섯 단계를 모두 통과한 종목만 진입 후보로 남기면, AI 점수에 끌려가는 충동 매수를 줄일 수 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;이 기준에 맞는 무료 사이트 사례 — Lee Trader Lab&lt;/h3&gt;
&lt;p&gt;위 5단계 체크리스트를 적용할 수 있는 사이트는 의외로 많지 않습니다. 그중 무료로 시장 레짐과 점수·수급·리스크 키워드를 한 화면에 보여주는 사이트가 Lee Trader Lab(&lt;a href=&quot;https://www.leetrader.kr)%EC%9E%85%EB%8B%88%EB%8B%A4&quot;&gt;https://www.leetrader.kr)입니다&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;시장 레짐: 강세 / 중립 / 방어 3단계로 매일 표시&lt;/li&gt;
&lt;li&gt;점수: 0~100점 + 60일 예측 수익률·MDD 동시 제공&lt;/li&gt;
&lt;li&gt;수급: 외국인·기관 5일 순매수 부호 표시&lt;/li&gt;
&lt;li&gt;리스크: &amp;quot;리스크 주의&amp;quot; 등 경고 키워드 별도 표시&lt;/li&gt;
&lt;li&gt;진입 신호: 의도적으로 미제공 (역할 분리)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;특히 진입 신호를 일부러 제공하지 않는 점이 인상적입니다. 후보군 압축에만 집중하고 진입 결정은 사용자에게 남기는 구조라, 위 5단계 체크리스트를 그대로 적용하기 좋습니다.&lt;/p&gt;
&lt;p&gt;투자 공부 콘텐츠(&lt;a href=&quot;https://www.leetrader.kr/blog)%EB%8F%84&quot;&gt;https://www.leetrader.kr/blog)도&lt;/a&gt; 30개 이상 운영되어 PER·PBR·RSI 같은 기초 지표 해석을 함께 학습할 수 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;정리 — AI 추천 사이트 활용 원칙&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;원칙&lt;/th&gt;
&lt;th&gt;내용&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;AI 점수는 후보 자격선&lt;/td&gt;
&lt;td&gt;단독 매수 신호가 아닌 1차 필터&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;시장 레짐 우선 확인&lt;/td&gt;
&lt;td&gt;같은 점수도 시장 따라 해석 달라짐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;수급·리스크 동시 확인&lt;/td&gt;
&lt;td&gt;점수만 보지 말고 근거·경고 같이&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;차트는 직접 점검&lt;/td&gt;
&lt;td&gt;진입 가격·손절가·비중은 사용자 결정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;무료 신호 제공은 의심&lt;/td&gt;
&lt;td&gt;진짜 가치는 후보 압축에 있다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;AI 주식 분석 사이트는 잘 활용하면 매일 200종목을 검토하던 시간을 30분 안쪽으로 줄여 줍니다. 다만 그것은 &amp;quot;AI가 골라 준 종목을 그대로 산다&amp;quot;는 의미가 아니라, &amp;quot;AI가 후보군을 줄여 준 뒤 내가 직접 결정한다&amp;quot;는 의미입니다.&lt;/p&gt;
&lt;p&gt;이 차이를 인식하고 활용하면, 무료 AI 추천 사이트는 충분히 강력한 보조 도구가 될 수 있습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;본 글은 AI 주식 분석 사이트 활용 가이드 차원에서 작성한 정보 글입니다.&lt;br&gt;본 글에 언급된 사이트는 정보 제공 목적의 무료 서비스이며, 투자 자문이 아닙니다.&lt;br&gt;투자 판단과 손익 책임은 투자자 본인에게 있으며, 본 내용은 특정 종목의 매수·매도 권유가 아닙니다.&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;</description>
      <category>주식 추천 시스템 개발</category>
      <category>AI 주식 분석 활용법</category>
      <category>AI 주식 추천</category>
      <category>무료 주식 분석 사이트</category>
      <category>시장 레짐</category>
      <category>주식 매수 체크리스트</category>
      <category>주식 수급 분석</category>
      <category>주식 점수 활용</category>
      <category>코스닥 분석</category>
      <category>코스피 종목 분석</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/742</guid>
      <comments>https://lee-mandu.tistory.com/742#entry742comment</comments>
      <pubDate>Thu, 28 May 2026 11:37:17 +0900</pubDate>
    </item>
    <item>
      <title>AI로 코스피&amp;middot;코스닥 200여 종목을 매일 분석해주는 무료 사이트 &amp;mdash; Lee Trader Lab</title>
      <link>https://lee-mandu.tistory.com/741</link>
      <description>&lt;p&gt;주식 투자를 하다 보면 가장 어려운 것이 &amp;quot;오늘 어떤 종목을 봐야 하는가&amp;quot;입니다. 증권사 리포트는 너무 많고, HTS에서 직접 종목을 거르자니 시간이 부족합니다.&lt;/p&gt;
&lt;p&gt;최근 AI 주식 분석 사이트를 하나 발견했는데, 유료가 아니라 무료로 운영되고 있어서 소개합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;Lee Trader Lab이란&lt;/h3&gt;
&lt;p&gt;Lee Trader Lab(&lt;a href=&quot;https://www.leetrader.kr)%EC%9D%80&quot;&gt;https://www.leetrader.kr)은&lt;/a&gt; KOSPI·KOSDAQ 200여 종목을 매일 AI로 분석하고, 그 결과를 누구나 볼 수 있게 공개하는 리서치 플랫폼입니다.&lt;/p&gt;
&lt;p&gt;단순히 점수를 나열하는 것이 아니라 &amp;quot;왜 이 종목을 주목하는지&amp;quot;, &amp;quot;어떤 리스크를 먼저 봐야 하는지&amp;quot;까지 설명해 주는 구조입니다.&lt;/p&gt;
&lt;p&gt;투자 자문이 아닌 정보 제공 서비스이며, 완전 무료입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;주요 기능 3가지&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. 오늘 시장 요약&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;매일 장 마감 후 자동으로 갱신됩니다. 현재 시장이 강세(Bull)인지, 중립(Neutral)인지, 방어(Defensive) 구간인지를 한눈에 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;지수 수치만 보여주는 게 아니라 &amp;quot;지금 어떻게 대응해야 하는지&amp;quot;를 짧게 설명해 줍니다.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;2. 관찰 후보 종목과 이유&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;AI 모델이 KOSPI·KOSDAQ 200여 종목을 매일 스코어링한 결과를 공개합니다.&lt;/p&gt;
&lt;p&gt;여기서 중요한 것은 종목 이름만 나열하는 게 아니라는 점입니다. 해당 종목을 왜 주목하는지 이유와, 어떤 위험을 조심해야 하는지도 같이 표시됩니다.&lt;/p&gt;
&lt;p&gt;추세, 유동성, 재무 품질, 외국인·기관 수급까지 반영되어 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;3. 투자 공부 블로그&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;RSI 지표 활용법, 외국인·기관 수급 읽는 법, 코스피 vs 코스닥 차이, PER·PBR 해석 등 투자 기초부터 실전 지표까지 다루는 글이 30개 이상 올라와 있습니다.&lt;/p&gt;
&lt;p&gt;처음 주식을 시작한 분들도 읽기 좋은 수준으로 쓰여 있습니다.&lt;/p&gt;
&lt;p&gt;블로그 바로가기 → &lt;a href=&quot;https://www.leetrader.kr/blog&quot;&gt;https://www.leetrader.kr/blog&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;실제로 어떻게 활용하면 좋을까&lt;/h3&gt;
&lt;p&gt;이 사이트를 가장 잘 활용하는 방법은 장 시작 전 또는 장 마감 후 루틴으로 10분 확인하는 것입니다.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;홈에서 오늘 시장 요약 확인 (레짐과 주의 포인트)&lt;/li&gt;
&lt;li&gt;관찰 후보 종목 중 수급이 긍정적인 종목 체크&lt;/li&gt;
&lt;li&gt;해당 종목을 직접 HTS에서 차트·뉴스와 함께 검토&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Lee Trader Lab 자체가 매수 신호를 주는 곳은 아닙니다. 하루에 너무 많은 종목을 보지 않고, 데이터 기반으로 후보군을 압축한 다음 내가 직접 판단하는 구조입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;무료인 이유&lt;/h3&gt;
&lt;p&gt;이 서비스는 개인 개발자가 직접 만들어 운영하고 있습니다. AI 모델 구축과 매일 자동 분석 파이프라인을 직접 설계·운영하면서, 그 결과물을 공개하는 방식입니다.&lt;/p&gt;
&lt;p&gt;수익 모델은 광고 기반이며, 사용자에게 별도 비용을 청구하지 않습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;정리&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;내용&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;분석 대상&lt;/td&gt;
&lt;td&gt;KOSPI·KOSDAQ 200여 종목&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;갱신 주기&lt;/td&gt;
&lt;td&gt;장 마감 후 매일 자동&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;비용&lt;/td&gt;
&lt;td&gt;무료&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;주요 기능&lt;/td&gt;
&lt;td&gt;시장 요약·관찰 후보·수급·투자 공부 블로그&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;주의사항&lt;/td&gt;
&lt;td&gt;투자 자문 아님, 정보 제공 목적&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;주식 공부를 하거나 매일 종목을 직접 고르기 어려운 분들에게 한 번쯤 써볼 만한 사이트라고 생각합니다.&lt;/p&gt;
&lt;p&gt;바로 가기 → &lt;a href=&quot;https://www.leetrader.kr&quot;&gt;https://www.leetrader.kr&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;이 글은 Lee Trader Lab 운영자가 직접 작성한 서비스 소개 글입니다.&lt;br&gt;투자 판단과 손익 책임은 투자자 본인에게 있으며, 본 내용은 특정 종목의 매수·매도 권유가 아닙니다.&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;</description>
      <category>주식 추천 시스템 개발</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/741</guid>
      <comments>https://lee-mandu.tistory.com/741#entry741comment</comments>
      <pubDate>Wed, 27 May 2026 19:40:19 +0900</pubDate>
    </item>
    <item>
      <title>Docker 용량이 계속 늘어나는 이유? `docker_data.vhdx` 개념부터 정리합니다 (Windows Docker Desktop 필수 이해)</title>
      <link>https://lee-mandu.tistory.com/740</link>
      <description>&lt;h1&gt;Docker 용량이 계속 늘어나는 이유? &lt;code&gt;docker_data.vhdx&lt;/code&gt; 개념부터 정리합니다 (Windows Docker Desktop 필수 이해)&lt;/h1&gt;
&lt;p&gt;Docker Desktop을 Windows에서 사용하다 보면 어느 날 갑자기 이런 상황을 만나게 됩니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;C드라이브 또는 D드라이브 용량이 부족하다&lt;/li&gt;
&lt;li&gt;Docker 관련 파일 하나가 수십 GB까지 커져 있다&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docker_data.vhdx&lt;/code&gt; 파일이 30GB, 50GB, 100GB까지 늘어나 있다&lt;/li&gt;
&lt;li&gt;컨테이너는 몇 개 없는데 왜 이렇게 용량이 큰지 모르겠다&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;저 역시 실제로 확인해보니 &lt;code&gt;docker_data.vhdx&lt;/code&gt; 파일 하나가 &lt;strong&gt;57GB 이상&lt;/strong&gt; 커져 있었습니다.&lt;/p&gt;
&lt;p&gt;오늘은 많은 개발자가 한 번쯤 겪는 &lt;strong&gt;Docker Desktop 용량 증가 문제&lt;/strong&gt;, 그리고 핵심 파일인 &lt;strong&gt;docker_data.vhdx의 정체&lt;/strong&gt;를 쉽게 정리해보겠습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;docker_data.vhdx란 무엇인가?&lt;/h1&gt;
&lt;p&gt;간단히 말하면:&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;Docker Desktop이 Windows + WSL2 환경에서 사용하는 가상 하드디스크 파일입니다.&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;즉, Docker 내부 데이터가 모두 이 파일 안에 저장됩니다.&lt;/p&gt;
&lt;p&gt;예를 들면:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Docker 이미지&lt;/li&gt;
&lt;li&gt;컨테이너 데이터&lt;/li&gt;
&lt;li&gt;PostgreSQL / MySQL DB 데이터&lt;/li&gt;
&lt;li&gt;볼륨(volume)&lt;/li&gt;
&lt;li&gt;빌드 캐시&lt;/li&gt;
&lt;li&gt;npm install 결과물&lt;/li&gt;
&lt;li&gt;로그 파일&lt;/li&gt;
&lt;li&gt;임시 파일&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Windows에서는 폴더처럼 보이지 않고, &lt;strong&gt;하나의 거대한 가상 디스크 파일(.vhdx)&lt;/strong&gt; 로 관리됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;왜 Docker 용량이 계속 늘어날까?&lt;/h1&gt;
&lt;p&gt;Docker는 사용할수록 데이터가 누적됩니다.&lt;/p&gt;
&lt;p&gt;대표적인 원인은 아래와 같습니다.&lt;/p&gt;
&lt;h2&gt;1. 이미지(Image) 누적&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker pull node
docker pull postgres
docker pull redis&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;새 이미지를 받을 때마다 저장 공간이 늘어납니다.&lt;/p&gt;
&lt;p&gt;특히 버전이 다르면 각각 따로 저장됩니다.&lt;/p&gt;
&lt;p&gt;예:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;node:18&lt;/li&gt;
&lt;li&gt;node:20&lt;/li&gt;
&lt;li&gt;node:latest&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;전부 용량 차지합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;2. 컨테이너(Container) 잔존&lt;/h2&gt;
&lt;p&gt;삭제하지 않은 종료 컨테이너가 쌓입니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker ps -a&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;보면 오래된 테스트 컨테이너가 남아있는 경우 많습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;3. 빌드 캐시 증가&lt;/h2&gt;
&lt;p&gt;개발 중 자주 발생합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker compose up --build
docker build .&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이미지 레이어 캐시가 계속 쌓입니다.&lt;/p&gt;
&lt;p&gt;실무에서는 이것 때문에 수십 GB 되는 경우 흔합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;4. DB 볼륨 데이터 증가&lt;/h2&gt;
&lt;p&gt;특히 아래 사용자는 많이 커집니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PostgreSQL&lt;/li&gt;
&lt;li&gt;MySQL&lt;/li&gt;
&lt;li&gt;MongoDB&lt;/li&gt;
&lt;li&gt;Elasticsearch&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;데이터가 계속 쌓이면 &lt;code&gt;docker_data.vhdx&lt;/code&gt;도 커집니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;5. 로그 파일 증가&lt;/h2&gt;
&lt;p&gt;서버 로그, 에러 로그가 누적되면 생각보다 큽니다.&lt;/p&gt;
&lt;p&gt;예:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;application.log
postgres log
nginx log
node log&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h1&gt;왜 삭제해도 파일 크기가 안 줄어들까?&lt;/h1&gt;
&lt;p&gt;이 부분이 핵심입니다.&lt;/p&gt;
&lt;p&gt;Docker 내부에서 데이터를 지워도 Windows 입장에서는:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;docker_data.vhdx 파일 자체는 그대로 유지&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;즉:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;내부 빈 공간은 생겼지만&lt;/li&gt;
&lt;li&gt;외부 파일 크기는 유지됨&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;그래서 “분명 정리했는데 왜 57GB 그대로지?” 라는 상황이 발생합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;docker_data.vhdx 직접 삭제하면 될까?&lt;/h1&gt;
&lt;p&gt;절대 권장하지 않습니다.&lt;/p&gt;
&lt;p&gt;삭제 시 날아갈 수 있는 것:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;모든 컨테이너&lt;/li&gt;
&lt;li&gt;모든 이미지&lt;/li&gt;
&lt;li&gt;모든 볼륨&lt;/li&gt;
&lt;li&gt;DB 데이터&lt;/li&gt;
&lt;li&gt;개발 환경 세팅&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;즉 Docker 초기화 수준입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;현재 Docker 용량 확인 방법&lt;/h1&gt;
&lt;p&gt;먼저 내부 사용량부터 확인하세요.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker system df&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;예시:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Images      12GB
Containers   2GB
Volumes     18GB
Build Cache 15GB&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이렇게 어디가 큰지 확인 가능합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;안전하게 용량 정리하는 방법&lt;/h1&gt;
&lt;h2&gt;1단계: 안 쓰는 컨테이너/캐시 정리&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker system prune&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;2단계: 안 쓰는 이미지까지 정리&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker system prune -a&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;주의: 다시 pull 받아야 할 수 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;3단계: 사용 안 하는 볼륨 정리&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker volume prune&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;주의: DB 데이터 삭제 가능성 있음&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;Windows 사용자 필수 팁 (WSL2 환경)&lt;/h1&gt;
&lt;p&gt;Docker Desktop은 내부적으로 WSL2를 사용합니다.&lt;/p&gt;
&lt;p&gt;즉 구조는 이런 느낌입니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Windows
 └─ Docker Desktop
     └─ WSL2 Linux
         └─ docker_data.vhdx&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Windows에서 직접 파일 탐색기로 보는 것은 껍데기일 뿐이고,&lt;/p&gt;
&lt;p&gt;실제 내부는 리눅스 파일 시스템입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;개발자 실전 관리 팁&lt;/h1&gt;
&lt;h2&gt;개인 개발 환경이라면 월 1회 정리 추천&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker system prune -a&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;DB 사용 중이면 백업 후 정리&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;pg_dump
mysqldump&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;이미지 빌드 자주 하면 캐시 확인 필수&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker builder prune&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h1&gt;저의 현실적인 의견&lt;/h1&gt;
&lt;p&gt;Docker는 편리하지만 방치하면 용량 괴물이 됩니다.&lt;/p&gt;
&lt;p&gt;특히 Windows 사용자는:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SSD 용량 부족&lt;/li&gt;
&lt;li&gt;백업 어려움&lt;/li&gt;
&lt;li&gt;docker_data.vhdx 비대화&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이 3종 세트를 자주 겪습니다.&lt;/p&gt;
&lt;p&gt;저도 처음엔 “파일 하나인데 왜 57GB지?” 싶었는데, 알고 보면 개발 흔적이 다 들어있는 저장소였습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;결론&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;docker_data.vhdx&lt;/code&gt;는 단순 파일이 아닙니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;Docker Desktop 전체 저장소입니다.&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;따라서 직접 삭제보다:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;내부 사용량 확인&lt;/li&gt;
&lt;li&gt;안전 정리&lt;/li&gt;
&lt;li&gt;필요 시 압축/최적화&lt;/li&gt;
&lt;li&gt;주기적 관리&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;이 방식으로 접근해야 합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;함께 보면 좋은 글&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Docker 컨테이너 삭제 및 정리 방법&lt;/li&gt;
&lt;li&gt;Docker Compose 기본 사용법&lt;/li&gt;
&lt;li&gt;Windows에서 Docker 느려질 때 해결법&lt;/li&gt;
&lt;li&gt;개발자 SSD 용량 관리 실전 팁&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1&gt;한 줄 요약&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;docker_data.vhdx가 커졌다면 문제는 파일이 아니라 Docker 내부 데이터 누적입니다.&lt;/strong&gt;&lt;/p&gt;</description>
      <category>개발/도커(DOCKER)</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/740</guid>
      <comments>https://lee-mandu.tistory.com/740#entry740comment</comments>
      <pubDate>Sat, 25 Apr 2026 10:39:19 +0900</pubDate>
    </item>
    <item>
      <title>Nginx란 무엇인가? 톰캣과 차이까지 쉽게 설명드립니다</title>
      <link>https://lee-mandu.tistory.com/739</link>
      <description>&lt;h1&gt;Nginx란 무엇인가? 톰캣과 차이까지 쉽게 설명드립니다&lt;/h1&gt;
&lt;p&gt;웹 개발이나 서버 운영을 하다 보면 &lt;strong&gt;Nginx(엔진엑스)&lt;/strong&gt; 라는 단어를 자주 듣게 됩니다.&lt;/p&gt;
&lt;p&gt;하지만 처음 접하는 분들은 이런 생각이 들 수 있습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nginx는 웹서버인가?&lt;/li&gt;
&lt;li&gt;톰캣과 같은 프로그램인가?&lt;/li&gt;
&lt;li&gt;프록시 서버라는 말은 또 뭘까?&lt;/li&gt;
&lt;li&gt;왜 회사에서는 Nginx를 많이 사용할까?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이번 글에서는 &lt;strong&gt;Nginx의 개념부터 톰캣과의 차이, 왜 사용하는지까지 쉽게 정리&lt;/strong&gt;해보겠습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Nginx란 무엇인가?&lt;/h2&gt;
&lt;p&gt;Nginx는 &lt;strong&gt;고성능 웹서버이자 리버스 프록시 서버&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;p&gt;쉽게 말하면 사용자의 요청을 가장 먼저 받아서 처리하고, 필요한 경우 뒤쪽 서버로 전달하는 역할을 합니다.&lt;/p&gt;
&lt;p&gt;예를 들어 사용자가 웹사이트에 접속하면:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;사용자 → Nginx → 실제 서버(Tomcat, Node.js 등)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이런 구조가 자주 사용됩니다.&lt;/p&gt;
&lt;p&gt;즉, &lt;strong&gt;Nginx는 웹서비스의 정문 역할&lt;/strong&gt;을 한다고 이해하면 쉽습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;웹서버란 무엇인가?&lt;/h2&gt;
&lt;p&gt;웹서버는 브라우저 요청에 대해 HTML, CSS, 이미지, 파일 등을 전달하는 서버입니다.&lt;/p&gt;
&lt;p&gt;예를 들어:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;홈페이지 메인 화면&lt;/li&gt;
&lt;li&gt;이미지 파일&lt;/li&gt;
&lt;li&gt;CSS 스타일 파일&lt;/li&gt;
&lt;li&gt;자바스크립트 파일&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이런 정적 파일을 빠르게 전달하는 데 강점이 있습니다.&lt;/p&gt;
&lt;p&gt;Nginx는 이런 웹서버 역할을 매우 잘 수행합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Nginx가 유명한 이유&lt;/h2&gt;
&lt;p&gt;Nginx가 많은 회사에서 사용되는 이유는 크게 4가지입니다.&lt;/p&gt;
&lt;h3&gt;1. 빠른 성능&lt;/h3&gt;
&lt;p&gt;동시에 많은 사용자가 접속해도 효율적으로 처리합니다.&lt;/p&gt;
&lt;h3&gt;2. 리버스 프록시 기능&lt;/h3&gt;
&lt;p&gt;앞단에서 요청을 받아 뒤쪽 서버로 전달합니다.&lt;/p&gt;
&lt;h3&gt;3. 로드밸런싱&lt;/h3&gt;
&lt;p&gt;서버가 여러 대일 경우 트래픽을 분산할 수 있습니다.&lt;/p&gt;
&lt;h3&gt;4. 보안 구조에 유리&lt;/h3&gt;
&lt;p&gt;실제 서버를 외부에 직접 노출하지 않아도 됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;리버스 프록시란?&lt;/h2&gt;
&lt;p&gt;처음 들으면 어렵지만 개념은 단순합니다.&lt;/p&gt;
&lt;p&gt;사용자가 서버에 직접 접속하지 않고, &lt;strong&gt;중간 서버(Nginx)를 통해 접속하는 구조&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;사용자 → Nginx → 내부 서버&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;전화로 비유하면:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;사용자 = 고객&lt;/li&gt;
&lt;li&gt;Nginx = 안내 데스크&lt;/li&gt;
&lt;li&gt;내부 서버 = 실제 담당자&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;고객은 안내 데스크에만 전화하고, 안내 데스크가 담당자에게 연결해주는 방식입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;톰캣과 Nginx 차이는 무엇일까?&lt;/h2&gt;
&lt;p&gt;많이 헷갈리는 부분입니다.&lt;/p&gt;
&lt;h3&gt;Apache Tomcat&lt;/h3&gt;
&lt;p&gt;톰캣은 &lt;strong&gt;Java 웹 애플리케이션을 실행하는 서버&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;p&gt;즉:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;JSP 실행&lt;/li&gt;
&lt;li&gt;Servlet 실행&lt;/li&gt;
&lt;li&gt;Spring 프로젝트 구동&lt;/li&gt;
&lt;li&gt;비즈니스 로직 처리&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Nginx&lt;/h3&gt;
&lt;p&gt;Nginx는 앞단에서 요청을 받고 정리하는 역할입니다.&lt;/p&gt;
&lt;p&gt;즉:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;요청 수신&lt;/li&gt;
&lt;li&gt;정적 파일 처리&lt;/li&gt;
&lt;li&gt;HTTPS 처리&lt;/li&gt;
&lt;li&gt;톰캣으로 전달&lt;/li&gt;
&lt;li&gt;부하 분산&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;쉽게 비교하면&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Nginx = 건물 안내 데스크
Tomcat = 실제 업무 담당 부서&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;둘은 경쟁 관계가 아니라 &lt;strong&gt;함께 사용하는 경우가 많습니다.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;회사에서 자주 사용하는 구조&lt;/h2&gt;
&lt;p&gt;실무에서는 보통 아래처럼 구성됩니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;사용자 브라우저
↓
Nginx (80 / 443)
↓
Tomcat (8080)
↓
DB&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이 구조의 장점은:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;사용자는 깔끔하게 80/443 포트로 접속&lt;/li&gt;
&lt;li&gt;내부 서버는 숨길 수 있음&lt;/li&gt;
&lt;li&gt;서버 확장이 쉬움&lt;/li&gt;
&lt;li&gt;성능 최적화 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;왜 톰캣만 쓰지 않고 Nginx를 앞에 둘까?&lt;/h2&gt;
&lt;h3&gt;1. 정적 파일 처리 성능&lt;/h3&gt;
&lt;p&gt;이미지, CSS 등은 Nginx가 더 효율적입니다.&lt;/p&gt;
&lt;h3&gt;2. HTTPS 인증서 관리&lt;/h3&gt;
&lt;p&gt;SSL 인증서 적용을 Nginx에서 관리하기 편합니다.&lt;/p&gt;
&lt;h3&gt;3. 서버 확장성&lt;/h3&gt;
&lt;p&gt;톰캣 여러 대로 늘려도 Nginx가 분산 가능합니다.&lt;/p&gt;
&lt;h3&gt;4. 운영 편의성&lt;/h3&gt;
&lt;p&gt;접속 로그, 차단, 경로 분기 등 관리가 쉽습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;초보자가 가장 많이 하는 오해&lt;/h2&gt;
&lt;h3&gt;Nginx는 톰캣 대체제인가?&lt;/h3&gt;
&lt;p&gt;아닙니다. 역할이 다릅니다.&lt;/p&gt;
&lt;h3&gt;Nginx는 웹서버만 가능한가?&lt;/h3&gt;
&lt;p&gt;아닙니다. 프록시, 로드밸런서 역할도 가능합니다.&lt;/p&gt;
&lt;h3&gt;톰캣 없이 Nginx만 써도 되나?&lt;/h3&gt;
&lt;p&gt;정적 사이트는 가능합니다.&lt;br&gt;Java 웹서비스는 톰캣 같은 WAS가 필요합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;한 줄로 정리하면&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Nginx는 사용자의 요청을 가장 먼저 받아 정적 파일은 직접 처리하고, 필요한 요청은 톰캣 같은 내부 서버로 전달하는 앞단 서버입니다.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;이런 분들에게 중요합니다&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;서버 구조가 궁금한 개발 입문자&lt;/li&gt;
&lt;li&gt;Spring + Tomcat 운영자&lt;/li&gt;
&lt;li&gt;웹사이트 속도를 개선하고 싶은 분&lt;/li&gt;
&lt;li&gt;회사 인프라 구조가 궁금한 분&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;마무리&lt;/h2&gt;
&lt;p&gt;처음에는 Nginx가 어렵게 느껴지지만, 실제로는 &lt;strong&gt;웹서비스 입구를 담당하는 관제 서버&lt;/strong&gt;라고 이해하면 쉽습니다.&lt;/p&gt;
&lt;p&gt;앞으로 서버 구조를 볼 때:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;사용자 → Nginx → Tomcat → DB&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이 흐름만 이해해도 실력이 크게 올라갑니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;함께 보면 좋은 글&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;톰캣이란 무엇인가?&lt;/li&gt;
&lt;li&gt;웹서버와 WAS 차이&lt;/li&gt;
&lt;li&gt;TCP 프록시 쉽게 이해하기&lt;/li&gt;
&lt;li&gt;NAT란 무엇인가?&lt;/li&gt;
&lt;li&gt;Docker와 서버 운영 기초&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>개발/네트워크</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/739</guid>
      <comments>https://lee-mandu.tistory.com/739#entry739comment</comments>
      <pubDate>Fri, 24 Apr 2026 08:04:36 +0900</pubDate>
    </item>
    <item>
      <title>두돌 아기 행동 이해하기 (부모가 꼭 알아야 할 현실 육아 가이드)</title>
      <link>https://lee-mandu.tistory.com/738</link>
      <description>&lt;h1&gt;  두돌 아기 행동 이해하기 (부모가 꼭 알아야 할 현실 육아 가이드)&lt;/h1&gt;
&lt;p&gt;두돌이 되면 아이가 갑자기 변한 것처럼 느껴집니다.&lt;/p&gt;
&lt;p&gt;어제까지 순하던 아이가&lt;br&gt;  떼쓰고&lt;br&gt;  고집 부리고&lt;br&gt;  말을 안 듣고&lt;/p&gt;
&lt;p&gt;부모 입장에서는 솔직히&lt;br&gt;&lt;strong&gt;“왜 이러지?”&lt;/strong&gt;라는 생각이 가장 먼저 듭니다.&lt;/p&gt;
&lt;p&gt;하지만 결론부터 말하면&lt;br&gt;  &lt;strong&gt;정상입니다. 아주 정상입니다.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;오늘은&lt;br&gt;✔ 두돌 아기 행동의 이유&lt;br&gt;✔ 부모가 헷갈리는 대표 행동&lt;br&gt;✔ 실제로 효과 있었던 대처 방법&lt;/p&gt;
&lt;p&gt;까지 현실적으로 정리해드립니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  1. 두돌 아기는 왜 갑자기 변할까?&lt;/h1&gt;
&lt;p&gt;두돌은 단순한 성장 시기가 아닙니다.&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;“자아가 생기는 시기”&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;h3&gt;✔ 핵심 변화 3가지&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;✔ 자기 주장 시작 (“내가 할래!”)&lt;/li&gt;
&lt;li&gt;✔ 감정 표현 증가 (울음, 떼쓰기)&lt;/li&gt;
&lt;li&gt;✔ 언어는 부족한데 욕구는 많음&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  즉,&lt;br&gt;&lt;strong&gt;“표현은 못하는데 하고 싶은 건 많아서 폭발하는 시기”&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  2. 부모들이 가장 당황하는 행동 TOP 5&lt;/h1&gt;
&lt;h2&gt;① 이유 없이 떼쓰기&lt;/h2&gt;
&lt;p&gt;  실제 이유 있음&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;졸림&lt;/li&gt;
&lt;li&gt;배고픔&lt;/li&gt;
&lt;li&gt;관심 부족&lt;/li&gt;
&lt;li&gt;표현 부족&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;✔ 핵심&lt;/strong&gt;&lt;br&gt;  “이유 없는 떼쓰기 = 없다”&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;② 같은 말 계속 반복&lt;/h2&gt;
&lt;p&gt;  “이거 뭐야?”&lt;br&gt;  “왜?” 무한 반복&lt;/p&gt;
&lt;p&gt;  이유&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;언어 학습 중&lt;/li&gt;
&lt;li&gt;반응 확인하려는 행동&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  정상적인 발달 과정입니다&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;③ 갑자기 때리거나 밀침&lt;/h2&gt;
&lt;p&gt;  부모들이 가장 놀라는 행동&lt;/p&gt;
&lt;p&gt;  이유&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;감정 표현 방법을 모름&lt;/li&gt;
&lt;li&gt;순간 감정 폭발&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  절대&lt;br&gt;❌ “나쁜 아이”가 아닙니다&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;④ 엄마/아빠 집착&lt;/h2&gt;
&lt;p&gt;  특정 사람만 찾는 시기&lt;/p&gt;
&lt;p&gt;  이유&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;안정감 확보&lt;/li&gt;
&lt;li&gt;애착 형성 과정&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  특히&lt;br&gt;  아빠만 찾거나 / 엄마만 찾는 경우도 흔함&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;⑤ 혼자 하겠다고 고집&lt;/h2&gt;
&lt;p&gt;  “내가 할래!”&lt;/p&gt;
&lt;p&gt;  이유&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;자율성 발달&lt;/li&gt;
&lt;li&gt;독립성 시작&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  부모 입장에서는 힘들지만&lt;br&gt;  &lt;strong&gt;성장 신호입니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  3. 두돌 행동, 이렇게 대처하면 훨씬 편해집니다&lt;/h1&gt;
&lt;h2&gt;✔ 1. 감정 먼저 공감하기&lt;/h2&gt;
&lt;p&gt;❌ “왜 울어!”&lt;br&gt;❌ “그만해!”&lt;/p&gt;
&lt;p&gt;  대신&lt;/p&gt;
&lt;p&gt;✔ “속상했구나”&lt;br&gt;✔ “하고 싶었지?”&lt;/p&gt;
&lt;p&gt;  이 한마디로&lt;br&gt;  아이 감정이 확 줄어듭니다&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 2. 선택권 주기 (핵심 기술)&lt;/h2&gt;
&lt;p&gt;  아이는 통제받는 걸 싫어합니다&lt;/p&gt;
&lt;p&gt;❌ “이거 해!”&lt;br&gt;✔ “이거 할까? 저거 할까?”&lt;/p&gt;
&lt;p&gt;  선택권 = 협조율 상승&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 3. 미리 예고하기&lt;/h2&gt;
&lt;p&gt;  두돌은 갑작스러운 변화 싫어함&lt;/p&gt;
&lt;p&gt;✔ “이제 5분 뒤에 정리할 거야”&lt;br&gt;✔ “조금 있다가 집 갈 거야”&lt;/p&gt;
&lt;p&gt;  떼쓰기 50% 감소 효과&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 4. 위험 행동은 단호하게&lt;/h2&gt;
&lt;p&gt;  때리기 / 던지기 등&lt;/p&gt;
&lt;p&gt;✔ “때리는 건 안돼” (짧고 단호하게)&lt;/p&gt;
&lt;p&gt;  설명 길게 ❌&lt;br&gt;  감정적으로 ❌&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 5. 부모 멘탈 관리 (진짜 중요)&lt;/h2&gt;
&lt;p&gt;  두돌 육아는 체력전입니다&lt;/p&gt;
&lt;p&gt;✔ 아이 문제 ❌&lt;br&gt;✔ 성장 과정 ✔&lt;/p&gt;
&lt;p&gt;  이걸 이해하는 순간&lt;br&gt;  스트레스가 줄어듭니다&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  4. 이런 경우는 체크해보세요 (주의 신호)&lt;/h1&gt;
&lt;p&gt;대부분 정상 발달이지만&lt;br&gt;아래는 한 번 체크 필요합니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;눈 맞춤 거의 없음&lt;/li&gt;
&lt;li&gt;이름 불러도 반응 없음&lt;/li&gt;
&lt;li&gt;언어 발달이 거의 없음&lt;/li&gt;
&lt;li&gt;반복 행동이 지나치게 심함&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  이런 경우&lt;br&gt;  전문가 상담 권장&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  5. 현실 육아 한 줄 정리&lt;/h1&gt;
&lt;p&gt;  두돌은 “말 안 듣는 시기”가 아니라&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;“세상을 배우는 시기”입니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  결론: 두돌은 문제 행동이 아니라 성장 신호입니다&lt;/h1&gt;
&lt;p&gt;✔ 떼쓰는 것도&lt;br&gt;✔ 고집 부리는 것도&lt;br&gt;✔ 반복 질문도&lt;/p&gt;
&lt;p&gt;  모두 발달 과정입니다&lt;/p&gt;
&lt;p&gt;부모가 해야 할 일은 단 하나입니다&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;이해 + 일관된 대응&lt;/strong&gt;&lt;/p&gt;</description>
      <category>육아</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/738</guid>
      <comments>https://lee-mandu.tistory.com/738#entry738comment</comments>
      <pubDate>Thu, 23 Apr 2026 13:39:28 +0900</pubDate>
    </item>
    <item>
      <title>여름철 차량 에어컨 관리 완벽 가이드</title>
      <link>https://lee-mandu.tistory.com/736</link>
      <description>&lt;p&gt;조금 있으면 본격적인 여름이 시작됩니다.&lt;br&gt;여름철 차량 에어컨 관리 및 정보가 궁금하여 정리해 보았습니다.&lt;/p&gt;
&lt;h1&gt;  여름철 차량 에어컨 관리 완벽 가이드&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;시원함 + 연비 + 건강까지 잡는 실전 관리법&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;❄️ 1. 여름철 차량 에어컨 관리가 중요한 이유&lt;/h2&gt;
&lt;p&gt;여름철에는 외부 온도가 30도를 넘어가면서 차량 내부 온도는 &lt;strong&gt;50~70도까지 상승&lt;/strong&gt;합니다.&lt;br&gt;이 상태에서 에어컨을 제대로 관리하지 않으면 다음 문제가 발생합니다:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;냉방 성능 저하 → 시원하지 않음&lt;/li&gt;
&lt;li&gt;악취 발생 → 곰팡이, 세균 번식&lt;/li&gt;
&lt;li&gt;연비 악화 → 불필요한 연료 소모&lt;/li&gt;
&lt;li&gt;건강 문제 → 호흡기 자극&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  즉, 에어컨 관리는 &lt;strong&gt;쾌적함 + 비용 절감 + 건강 관리&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  2. 필수 관리 항목 5가지&lt;/h2&gt;
&lt;h3&gt;① 에어컨 필터(캐빈 필터) 교체&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;교체 주기: &lt;strong&gt;6개월 또는 10,000km&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;미세먼지 많은 한국 환경 → 더 자주 교체 권장&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;✔ 효과&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;냄새 제거&lt;/li&gt;
&lt;li&gt;냉방 성능 향상&lt;/li&gt;
&lt;li&gt;호흡기 건강 보호&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  가장 비용 대비 효과가 큰 관리입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;② 에어컨 사용 후 송풍(건조) 필수&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;목적: 내부 &lt;strong&gt;에바포레이터(증발기)&lt;/strong&gt; 건조&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;방법:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;목적지 도착 5~10분 전&lt;/li&gt;
&lt;li&gt;A/C OFF&lt;/li&gt;
&lt;li&gt;송풍만 작동&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;✔ 효과&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;곰팡이 및 악취 예방&lt;/li&gt;
&lt;li&gt;내부 습기 제거&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  이거 하나만 해도 냄새 문제 80% 해결됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;③ 에어컨 가스(냉매) 점검&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;점검 주기: &lt;strong&gt;1~2년&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;증상:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;바람은 나오는데 안 시원함&lt;/li&gt;
&lt;li&gt;초기에는 시원 → 금방 더워짐&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;✔ 관리 포인트&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;부족하면 보충&lt;/li&gt;
&lt;li&gt;누설 시 정비 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  냉매 부족은 “에어컨 고장”이 아니라 “관리 문제”일 가능성이 큼.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;④ 에어컨 내부 살균 및 탈취&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;주기: &lt;strong&gt;여름 시작 전 / 냄새 발생 시&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;방법:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;에어컨 전용 살균 스프레이 사용&lt;/li&gt;
&lt;li&gt;정비소 에바크리닝 서비스&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;✔ 효과&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;곰팡이 제거&lt;/li&gt;
&lt;li&gt;쾌적한 공기 유지&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  특히 아이가 있는 가정은 필수 관리 항목.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;⑤ 외기/내기 순환 모드 활용&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;초기 냉방 → &lt;strong&gt;내기 순환&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;장시간 운전 → &lt;strong&gt;외기 + 내기 혼합&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;✔ 이유&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;내기 순환: 빠르게 시원해짐&lt;/li&gt;
&lt;li&gt;외기 순환: 이산화탄소 증가 방지&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  계속 내기만 쓰면 졸림, 두통 유발 가능.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;⚡ 3. 에어컨 사용 꿀팁 (실전 운전 팁)&lt;/h2&gt;
&lt;h3&gt;  빠르게 시원해지는 방법&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;탑승 후 &lt;strong&gt;창문 먼저 열기 (1~2분)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;뜨거운 공기 배출&lt;/li&gt;
&lt;li&gt;이후 에어컨 작동 + 내기 순환&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;  바로 에어컨 켜는 것보다 훨씬 효율적&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;⛽ 연비 아끼는 방법&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;에어컨은 엔진 부하 증가 → 연비 감소&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;해결 방법:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;급가속/급제동 줄이기&lt;/li&gt;
&lt;li&gt;적정 온도 유지 (24~26도)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt; ️ 적정 온도 설정&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;권장: &lt;strong&gt;24~26도&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;너무 낮게 설정 시:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;연비 ↓&lt;/li&gt;
&lt;li&gt;냉방 효율 ↓&lt;/li&gt;
&lt;li&gt;건강 악영향&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;  4. 이런 증상 나오면 점검 필요&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;❌ 시원하지 않다&lt;/li&gt;
&lt;li&gt;❌ 곰팡이 냄새 난다&lt;/li&gt;
&lt;li&gt;❌ 바람 세기가 약하다&lt;/li&gt;
&lt;li&gt;❌ 이상한 소음 발생&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  이 경우는 단순 관리가 아니라 &lt;strong&gt;정비소 점검&lt;/strong&gt; 필요&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  5. 여름철 에어컨 관리 체크리스트&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&gt; 필터 교체 완료&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&gt; 냉매 점검&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&gt; 송풍 건조 습관화&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&gt; 살균/탈취 진행&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&gt; 외기/내기 적절 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;✅ 결론&lt;/h2&gt;
&lt;p&gt;여름철 차량 에어컨 관리는 단순히 “시원함”이 아니라:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✔ 차량 성능 유지&lt;/li&gt;
&lt;li&gt;✔ 연비 절약&lt;/li&gt;
&lt;li&gt;✔ 건강 보호&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;까지 연결되는 핵심 관리입니다.&lt;/p&gt;
&lt;p&gt;  특히 중요한 3가지만 기억하세요:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;필터 교체&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;송풍 건조&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;냉매 점검&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;이 3가지만 지켜도 대부분의 문제는 예방됩니다.&lt;/p&gt;</description>
      <category>일상/정보</category>
      <category>에어컨</category>
      <category>차량</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/736</guid>
      <comments>https://lee-mandu.tistory.com/736#entry736comment</comments>
      <pubDate>Wed, 22 Apr 2026 08:29:47 +0900</pubDate>
    </item>
    <item>
      <title>어린이집 학부모 상담 질문 팁 총정리 (실전 질문으로 아이 상태 정확히 파악하기)</title>
      <link>https://lee-mandu.tistory.com/737</link>
      <description>&lt;h1&gt;  어린이집 학부모 상담 질문 팁 총정리 (실전 질문으로 아이 상태 정확히 파악하기)&lt;/h1&gt;
&lt;p&gt;어린이집 학부모 상담, 막상 가면&lt;br&gt;  “잘 지내고 있나요?”&lt;br&gt;  “밥 잘 먹나요?”&lt;/p&gt;
&lt;p&gt;이 정도 질문만 하고 오는 경우 많습니다.&lt;/p&gt;
&lt;p&gt;하지만 이건 솔직히 &lt;strong&gt;너무 아쉬운 상담&lt;/strong&gt;입니다.&lt;br&gt;  &lt;strong&gt;핵심은 ‘구체적인 질문’으로 아이의 실제 모습을 파악하는 것&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;p&gt;오늘은&lt;br&gt;✔ 어린이집 상담에서 반드시 해야 할 질문&lt;br&gt;✔ 실전에서 바로 써먹는 질문 리스트&lt;br&gt;✔ 선생님 답변을 제대로 해석하는 방법&lt;/p&gt;
&lt;p&gt;까지 현실적으로 정리해드립니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  1. 상담 전에 반드시 준비해야 할 것&lt;/h1&gt;
&lt;p&gt;상담은 “정보 수집 시간”입니다.&lt;br&gt;준비 없이 가면 &lt;strong&gt;시간만 쓰고 끝납니다.&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;✔ 미리 정리해야 할 것&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;집에서의 아이 모습&lt;/li&gt;
&lt;li&gt;요즘 고민 (밥, 잠, 행동 등)&lt;/li&gt;
&lt;li&gt;궁금한 점 3~5개&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  핵심은&lt;br&gt;&lt;strong&gt;“집 vs 어린이집 차이”를 확인하는 것&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  2. 어린이집 상담 핵심 질문 5가지&lt;/h1&gt;
&lt;h2&gt;① 사회성 (친구 관계)&lt;/h2&gt;
&lt;p&gt;  이건 무조건 물어봐야 합니다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;실전 질문&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“친구들과 먼저 다가가는 편인가요?”&lt;/li&gt;
&lt;li&gt;“특정 친구랑만 노는 편인가요?”&lt;/li&gt;
&lt;li&gt;“혼자 노는 시간은 어느 정도인가요?”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  체크 포인트&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;소극적인지&lt;/li&gt;
&lt;li&gt;특정 친구 의존인지&lt;/li&gt;
&lt;li&gt;사회성 발달 정상 범위인지&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;② 식습관 (부모들이 가장 많이 놓치는 부분)&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;실전 질문&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“급식은 어느 정도 먹나요?”&lt;/li&gt;
&lt;li&gt;“편식하는 음식이 있나요?”&lt;/li&gt;
&lt;li&gt;“먹는 속도는 빠른 편인가요?”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  중요한 이유&lt;br&gt;  집에서는 안 먹는데 어린이집에서는 잘 먹는 경우 많음&lt;/p&gt;
&lt;p&gt;  이걸 알면&lt;br&gt;&lt;strong&gt;육아 스트레스 50% 줄어듭니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;③ 생활 습관 (잠, 배변, 규칙성)&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;실전 질문&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“낮잠은 잘 자나요?”&lt;/li&gt;
&lt;li&gt;“혼자 잠드는 편인가요?”&lt;/li&gt;
&lt;li&gt;“배변 신호를 잘 표현하나요?”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  체크 포인트&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;생활 리듬&lt;/li&gt;
&lt;li&gt;자립성&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;④ 감정 표현 &amp;amp; 행동&lt;/h2&gt;
&lt;p&gt;  이 부분이 가장 중요합니다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;실전 질문&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“싫을 때 어떻게 표현하나요?”&lt;/li&gt;
&lt;li&gt;“떼쓰는 상황이 있나요?”&lt;/li&gt;
&lt;li&gt;“화를 낼 때 어떤 반응을 보이나요?”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  여기서&lt;br&gt;&lt;strong&gt;아이 성격 + 스트레스 상태 확인 가능&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;⑤ 선생님 관찰 총평 (핵심 질문)&lt;/h2&gt;
&lt;p&gt;  꼭 마지막에 물어보세요&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;실전 질문&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“우리 아이를 한 문장으로 표현하면 어떤 아이인가요?”&lt;/li&gt;
&lt;li&gt;“지금 가장 걱정되는 부분이 있다면요?”&lt;/li&gt;
&lt;li&gt;“부모가 도와줘야 할 부분이 있을까요?”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  이 질문 하나로&lt;br&gt;  상담 퀄리티가 완전히 달라집니다&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  3. 고수 부모들이 사용하는 질문 (차별화 포인트)&lt;/h1&gt;
&lt;p&gt;  여기서부터 진짜 중요한 부분입니다.&lt;/p&gt;
&lt;h3&gt;✔ 행동 패턴 질문&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;“활동 집중 시간은 어느 정도인가요?”&lt;/li&gt;
&lt;li&gt;“지시를 잘 따르는 편인가요?”&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;✔ 발달 체크 질문&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;“또래 대비 언어 표현은 어떤가요?”&lt;/li&gt;
&lt;li&gt;“신체 활동은 적극적인 편인가요?”&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;✔ 문제 상황 질문&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;“최근 문제 상황이 있었나요?”&lt;/li&gt;
&lt;li&gt;“그때 어떻게 대응하셨나요?”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  이 질문들은&lt;br&gt;  &lt;strong&gt;아이 발달 수준을 객관적으로 파악하는 핵심 질문입니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  4. 선생님 답변 이렇게 해석하세요 (진짜 중요)&lt;/h1&gt;
&lt;p&gt;선생님들은 직접적으로 말하지 않는 경우 많습니다.&lt;/p&gt;
&lt;h3&gt;✔ 예시 해석&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;“조금 소극적인 편이에요”&lt;br&gt;    친구 관계 적극성 부족&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;“자기만의 시간이 필요해요”&lt;br&gt;    혼자 노는 시간이 많음&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;“감정 표현이 확실해요”&lt;br&gt;    떼쓰기 or 고집 있음&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  핵심은&lt;br&gt;&lt;strong&gt;“완곡한 표현 → 실제 의미로 해석”&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  5. 상담에서 절대 하지 말아야 할 질문&lt;/h1&gt;
&lt;p&gt;❌ “문제 없죠?”&lt;br&gt;❌ “괜찮죠?”&lt;br&gt;❌ “잘하고 있죠?”&lt;/p&gt;
&lt;p&gt;  이런 질문은&lt;br&gt;  “좋은 말만 듣고 끝나는 상담”이 됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  6. 현실적인 상담 전략 (가장 중요한 핵심)&lt;/h1&gt;
&lt;p&gt;  상담의 목적은 단 하나입니다&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;“아이의 실제 모습 파악 + 부모 역할 찾기”&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;✔ 이렇게 마무리하세요&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;“집에서 어떻게 도와주면 좋을까요?”&lt;/li&gt;
&lt;li&gt;“지금 시기에 가장 중요한 부분은 뭔가요?”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  이 질문 하나로&lt;br&gt;  상담의 가치가 완성됩니다&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  결론: 좋은 상담은 질문이 90%입니다&lt;/h1&gt;
&lt;p&gt;어린이집 상담은&lt;br&gt;  “정보 듣는 시간”이 아니라&lt;br&gt;  &lt;strong&gt;“아이를 이해하는 시간”입니다&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;✔ 구체적으로 질문하고&lt;br&gt;✔ 솔직하게 듣고&lt;br&gt;✔ 집에서 연결하는 것&lt;/p&gt;
&lt;p&gt;이 3가지만 잘하면&lt;br&gt;  &lt;strong&gt;육아 난이도가 확실히 내려갑니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;</description>
      <category>육아</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/737</guid>
      <comments>https://lee-mandu.tistory.com/737#entry737comment</comments>
      <pubDate>Tue, 21 Apr 2026 08:27:42 +0900</pubDate>
    </item>
    <item>
      <title>04_서버 이관에 용이한 Docker로 구성(주식추천시스템)</title>
      <link>https://lee-mandu.tistory.com/735</link>
      <description>&lt;h1&gt;  Docker로 개발한 프로젝트, 다른 PC로 옮기는 방법 (완벽 가이드)&lt;/h1&gt;
&lt;p&gt;  &lt;strong&gt;AI 종목 추천 서비스:&lt;/strong&gt; &lt;a href=&quot;https://www.leetrader.kr/&quot;&gt;https://www.leetrader.kr/&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  왜 Docker로 개발하면 PC 이동이 쉬울까?&lt;/h2&gt;
&lt;p&gt;개발하다 보면 이런 문제가 반드시 발생합니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PC 바꾸면 실행 안됨&lt;/li&gt;
&lt;li&gt;라이브러리 버전 충돌&lt;/li&gt;
&lt;li&gt;DB 연결 깨짐&lt;/li&gt;
&lt;li&gt;환경변수 누락&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  그런데 Docker를 쓰면 이런 문제들이 거의 사라집니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  Docker의 핵심 개념 (쉽게 이해)&lt;/h2&gt;
&lt;p&gt;Docker는 한마디로:&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;“프로그램 실행에 필요한 모든 환경을 통째로 묶어서 옮기는 기술”&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;입니다.&lt;/p&gt;
&lt;p&gt;즉,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python 버전&lt;/li&gt;
&lt;li&gt;Node 버전&lt;/li&gt;
&lt;li&gt;라이브러리&lt;/li&gt;
&lt;li&gt;실행 환경&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  전부 컨테이너 안에 포함됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  Docker로 개발했을 때 장점&lt;/h2&gt;
&lt;h3&gt;1️⃣ 환경 동일성 (가장 중요)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;내 PC = 다른 PC = 서버&lt;/li&gt;
&lt;li&gt;실행 결과 동일&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  “내 컴퓨터에서는 되는데?” 문제 해결&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;2️⃣ 설치 과정 최소화&lt;/h3&gt;
&lt;p&gt;기존 방식:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python 설치&lt;/li&gt;
&lt;li&gt;Node 설치&lt;/li&gt;
&lt;li&gt;패키지 설치&lt;/li&gt;
&lt;li&gt;DB 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Docker 방식:&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;docker-compose up 한 줄로 끝&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;3️⃣ 서버 배포와 동일 환경&lt;/h3&gt;
&lt;p&gt;현재 서비스처럼:&lt;/p&gt;
&lt;p&gt;  Render / AWS / VPS 등 어디든 동일하게 실행 가능&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;4️⃣ 유지보수 편함&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;환경 깨져도 다시 컨테이너 실행&lt;/li&gt;
&lt;li&gt;재현성 100%&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1&gt;  실제 프로젝트 이동 방법 (실습)&lt;/h1&gt;
&lt;p&gt;이제 가장 중요한 부분입니다.&lt;br&gt;  &lt;strong&gt;다른 PC로 옮기는 실제 방법&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;1️⃣ 준비물&lt;/h2&gt;
&lt;p&gt;새 PC에서 필요한 것:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;Docker Desktop 설치
Git 설치&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  필수 2개입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;2️⃣ 프로젝트 가져오기&lt;/h2&gt;
&lt;h3&gt;방법 1: GitHub 사용 (추천)&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/xxxx/xxxxx.git
cd xxxxx&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;방법 2: USB / 압축파일&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;기존 프로젝트 폴더 압축&lt;/li&gt;
&lt;li&gt;새 PC에서 압축 해제&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;3️⃣ Docker 실행&lt;/h2&gt;
&lt;p&gt;프로젝트 폴더 안에서:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker-compose up --build&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  이 명령 하나로:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;이미지 생성&lt;/li&gt;
&lt;li&gt;컨테이너 실행&lt;/li&gt;
&lt;li&gt;서버 구동&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;⏱️ 최초 실행 시&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;이미지 빌드 때문에 시간이 조금 걸립니다&lt;/li&gt;
&lt;li&gt;이후부터는 빠르게 실행됩니다&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;4️⃣ 실행 확인&lt;/h2&gt;
&lt;p&gt;브라우저에서:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;http://localhost:포트번호&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  예:&lt;br&gt;&lt;a href=&quot;http://localhost:3000&quot;&gt;http://localhost:3000&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://localhost:8000&quot;&gt;http://localhost:8000&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;⚙️ docker-compose 구조 예시&lt;/h1&gt;
&lt;p&gt;실제 구성은 보통 이렇게 되어 있습니다:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;version: &amp;quot;3&amp;quot;

services:
  web:
    build: .
    ports:
      - &amp;quot;3000:3000&amp;quot;
    depends_on:
      - db

  db:
    image: postgres
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h1&gt;  환경변수 (.env) 중요 포인트&lt;/h1&gt;
&lt;p&gt;이거 안 하면 90% 실패합니다.&lt;/p&gt;
&lt;h3&gt;반드시 확인해야 할 것:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;DB 연결 정보&lt;/li&gt;
&lt;li&gt;API KEY&lt;/li&gt;
&lt;li&gt;포트 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;예시&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-env&quot;&gt;DB_HOST=localhost
DB_USER=postgres
DB_PASSWORD=1234&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  &lt;code&gt;.env 파일은 Git에 안 올라가는 경우 많음&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;  꼭 같이 옮겨야 합니다&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;⚠️ 자주 발생하는 오류&lt;/h1&gt;
&lt;h2&gt;❗ Docker 실행 안됨&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker --version&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;확인&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;❗ 포트 충돌&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;Error: port already in use&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  다른 프로그램 종료&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;❗ DB 연결 실패&lt;/h2&gt;
&lt;p&gt;  &lt;code&gt;.env&lt;/code&gt; 확인&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;❗ 이미지 빌드 실패&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker-compose build --no-cache&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h1&gt;  추천 구조 (실무 기준)&lt;/h1&gt;
&lt;p&gt;  프로젝트 폴더 구조&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;lee_trader/
 ├── docker-compose.yml
 ├── Dockerfile
 ├── .env
 ├── backend/
 ├── frontend/
 └── data/&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h1&gt;  추가 꿀팁 (실무)&lt;/h1&gt;
&lt;h2&gt;1️⃣ 백그라운드 실행&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker-compose up -d&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;2️⃣ 종료&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker-compose down&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;3️⃣ 로그 확인&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker-compose logs -f&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h1&gt;  Docker를 쓰면 생기는 진짜 차이&lt;/h1&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;기존 방식&lt;/th&gt;
&lt;th&gt;Docker&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;환경 세팅&lt;/td&gt;
&lt;td&gt;복잡&lt;/td&gt;
&lt;td&gt;매우 간단&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PC 이동&lt;/td&gt;
&lt;td&gt;어려움&lt;/td&gt;
&lt;td&gt;쉬움&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;버그 재현&lt;/td&gt;
&lt;td&gt;어려움&lt;/td&gt;
&lt;td&gt;쉬움&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;배포&lt;/td&gt;
&lt;td&gt;별도 작업&lt;/td&gt;
&lt;td&gt;동일&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h1&gt;  결론&lt;/h1&gt;
&lt;p&gt;이 프로젝트처럼:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI 분석 시스템&lt;/li&gt;
&lt;li&gt;DB 포함 구조&lt;/li&gt;
&lt;li&gt;웹 + 백엔드&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  이런 시스템은 Docker 없으면 관리 거의 불가능합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;한 줄 정리&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;Docker는 “개발 환경을 그대로 복사해서 옮기는 기술”이다&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;p&gt;아직 개인프로젝트 수준이기때문에&lt;br&gt;프로젝트 개발 환경을 이동하곤 합니다.&lt;/p&gt;
&lt;p&gt;그래서 docker를 선택하게 되었습니다.&lt;/p&gt;</description>
      <category>주식 추천 시스템 개발</category>
      <category>Docker</category>
      <category>주식추천시스템</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/735</guid>
      <comments>https://lee-mandu.tistory.com/735#entry735comment</comments>
      <pubDate>Mon, 20 Apr 2026 08:02:48 +0900</pubDate>
    </item>
    <item>
      <title>03_주식 종목 추천 시스템 render로 호스팅 했습니다. (무료)</title>
      <link>https://lee-mandu.tistory.com/734</link>
      <description>&lt;h1&gt;  무료 AI 종목 추천 사이트 접속 시 “로딩 화면”이 뜨는 이유 (Render 무료 호스팅 구조 설명)&lt;/h1&gt;
&lt;p&gt;  &lt;strong&gt;서비스 바로가기:&lt;/strong&gt; &lt;a href=&quot;https://www.leetrader.kr/&quot;&gt;https://www.leetrader.kr/&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  사이트 접속했는데 화면이 멈춘 것처럼 보이나요?&lt;/h2&gt;
&lt;p&gt;최근 많은 분들이 아래와 같은 화면을 보셨을 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;100%&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lOPEp/dJMcahKR0Gl/LkvYivTqFsK81cCUQcZ9Qk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lOPEp/dJMcahKR0Gl/LkvYivTqFsK81cCUQcZ9Qk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lOPEp/dJMcahKR0Gl/LkvYivTqFsK81cCUQcZ9Qk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlOPEp%2FdJMcahKR0Gl%2FLkvYivTqFsK81cCUQcZ9Qk%2Fimg.png&quot; width=&quot;100%&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;ul&gt;
&lt;li&gt;&lt;code&gt;Incoming HTTP request detected&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Service waking up&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Application Loading&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  이런 문구가 보이면서 바로 페이지가 열리지 않는 경우가 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;⚙️ 이유: Render 무료 호스팅의 “슬립(Sleep) 기능”&lt;/h2&gt;
&lt;p&gt;현재 이 서비스는 &lt;strong&gt;Render 무료 호스팅 환경&lt;/strong&gt;에서 운영되고 있습니다.&lt;/p&gt;
&lt;p&gt;무료 플랜에서는 다음과 같은 특징이 있습니다.&lt;/p&gt;
&lt;h3&gt;✔ 핵심 특징&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;일정 시간(약 15분) 트래픽이 없으면&lt;/li&gt;
&lt;li&gt;서버가 자동으로 “슬립 상태”로 전환됨&lt;/li&gt;
&lt;li&gt;다시 접속 시 서버를 깨우는 과정 발생&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;⏱️ 그래서 왜 로딩이 걸릴까?&lt;/h2&gt;
&lt;p&gt;사용자가 사이트에 접속하면:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;요청 감지 (Incoming request)&lt;/li&gt;
&lt;li&gt;서버 깨우기 (Waking up)&lt;/li&gt;
&lt;li&gt;애플리케이션 재시작&lt;/li&gt;
&lt;li&gt;정상 서비스 제공&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;  이 과정 때문에 약 &lt;strong&gt;10~50초 정도 지연&lt;/strong&gt;이 발생할 수 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  결론: 기다리면 정상 작동합니다&lt;/h2&gt;
&lt;p&gt;이건 에러가 아니라 정상 동작입니다.&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;조금만 기다리면 자동으로 서비스가 실행됩니다.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  실제 서비스 구조 (간단 설명)&lt;/h2&gt;
&lt;p&gt;현재 시스템은 다음과 같이 구성되어 있습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;  프론트엔드 + 백엔드: Render&lt;/li&gt;
&lt;li&gt; ️ 데이터베이스: 외부 DB (분리 구조)&lt;/li&gt;
&lt;li&gt;  AI 분석: 자체 모델 기반 종목 추천 시스템&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;  왜 무료 호스팅을 사용했을까?&lt;/h2&gt;
&lt;p&gt;초기 서비스 단계에서는 다음이 중요합니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;빠른 배포&lt;/li&gt;
&lt;li&gt;비용 최소화&lt;/li&gt;
&lt;li&gt;MVP 검증&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;그래서 현재는:&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;무료 인프라 기반으로 먼저 서비스 공개 후 사용자 반응을 확인하는 단계&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;⚠️ 무료 버전의 한계&lt;/h2&gt;
&lt;p&gt;무료 호스팅 환경에서는 아래와 같은 제한이 있습니다.&lt;/p&gt;
&lt;h3&gt;❗ 단점&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;첫 접속 시 지연 (콜드 스타트)&lt;/li&gt;
&lt;li&gt;지속적인 트래픽 대응 어려움&lt;/li&gt;
&lt;li&gt;성능 제한&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;  향후 계획&lt;/h2&gt;
&lt;p&gt;서비스가 안정화되고 트래픽이 증가하면:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;유료 플랜 전환&lt;/li&gt;
&lt;li&gt;슬립 없는 서버 운영&lt;/li&gt;
&lt;li&gt;속도 개선&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  즉, 현재는 “테스트 및 성장 단계”입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  그래도 이 서비스를 써야 하는 이유&lt;/h2&gt;
&lt;p&gt;  &lt;a href=&quot;https://www.leetrader.kr/&quot;&gt;https://www.leetrader.kr/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;이 시스템은 단순 종목 조회가 아닙니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI 기반 종목 추천&lt;/li&gt;
&lt;li&gt;기대 수익 + 리스크 동시 분석&lt;/li&gt;
&lt;li&gt;점수 기반 투자 판단 구조&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  개인 투자자가 활용하기 어려운 분석을 자동으로 제공합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  사용 방법 (추천)&lt;/h2&gt;
&lt;p&gt;접속 시:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;페이지 로딩 기다리기 (최대 1분)&lt;/li&gt;
&lt;li&gt;정상 화면 진입&lt;/li&gt;
&lt;li&gt;종목 분석 및 추천 확인&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2&gt;✍️ 마무리&lt;/h2&gt;
&lt;p&gt;현재 보이는 로딩 화면은 문제가 아니라&lt;br&gt;  &lt;strong&gt;무료 호스팅 구조에서 발생하는 자연스러운 현상&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;p&gt;조금만 기다리시면 정상적으로 서비스를 이용하실 수 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;  &lt;strong&gt;서비스 이용하기:&lt;/strong&gt;&lt;br&gt;&lt;a href=&quot;https://www.leetrader.kr/&quot;&gt;https://www.leetrader.kr/&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;서비스가 활성화되어 유료버전 사용하는 날이 오면 좋겠네요.&lt;/h2&gt;</description>
      <category>주식 추천 시스템 개발</category>
      <category>Render</category>
      <category>웹 호스팅</category>
      <category>주식 종목 추천 시스템</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/734</guid>
      <comments>https://lee-mandu.tistory.com/734#entry734comment</comments>
      <pubDate>Sun, 19 Apr 2026 10:50:35 +0900</pubDate>
    </item>
    <item>
      <title>그럼 NAT라는 장비가 있는건가요?(개념 정리)</title>
      <link>https://lee-mandu.tistory.com/732</link>
      <description>&lt;h1&gt;  NAT란 무엇인가? 쉽게 이해하는 공인 IP·사설 IP 개념 총정리&lt;/h1&gt;
&lt;p&gt;  인터넷을 사용하다 보면 한 번쯤 듣는 용어&lt;br&gt;  &lt;strong&gt;“NAT”&lt;/strong&gt;, “공인 IP”, “사설 IP”&lt;/p&gt;
&lt;p&gt;하지만 실제로는 개념이 헷갈리는 경우가 많습니다.&lt;/p&gt;
&lt;p&gt;이 글에서는&lt;br&gt;✔ NAT가 무엇인지&lt;br&gt;✔ NAT IP가 따로 있는 이유&lt;br&gt;✔ 웹서버(WEB), WAS와 어떤 관계인지&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;완전히 쉽게 설명합니다.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  이런 분들에게 추천합니다&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;서버/웹 개발을 처음 접한 분&lt;/li&gt;
&lt;li&gt;집 인터넷 구조가 궁금한 분&lt;/li&gt;
&lt;li&gt;“내 IP가 왜 두 개지?” 궁금했던 분&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1&gt;1️⃣ NAT란 무엇인가? (초간단 설명)&lt;/h1&gt;
&lt;p&gt;  &lt;strong&gt;NAT(Network Address Translation)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;✔ 쉽게 말하면:&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;“IP 주소를 바꿔주는 번역기”&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 비유로 이해하기&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-plaintext&quot;&gt;회사 대표번호 (02-1234-5678) → 내부 직원들 연결&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  외부에서는 하나의 번호만 보이지만&lt;br&gt;  내부에서는 여러 사람이 사용&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;✔ NAT도 동일합니다&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-plaintext&quot;&gt;외부 인터넷 → 공인 IP 1개 → 내부 여러 기기&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  이때 IP를 바꿔주는 것이 NAT&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;2️⃣ 공인 IP vs 사설 IP&lt;/h1&gt;
&lt;h2&gt;✔ 공인 IP (Public IP)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;인터넷에서 직접 보이는 주소&lt;/li&gt;
&lt;li&gt;예: 123.123.123.10&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 사설 IP (Private IP)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;내부에서만 사용하는 주소&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;예:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;192.168.x.x&lt;/li&gt;
&lt;li&gt;10.x.x.x&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 핵심 차이&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;구분&lt;/th&gt;
&lt;th&gt;공인 IP&lt;/th&gt;
&lt;th&gt;사설 IP&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;사용 위치&lt;/td&gt;
&lt;td&gt;인터넷&lt;/td&gt;
&lt;td&gt;내부 네트워크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;외부 접근&lt;/td&gt;
&lt;td&gt;가능&lt;/td&gt;
&lt;td&gt;불가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;개수&lt;/td&gt;
&lt;td&gt;제한&lt;/td&gt;
&lt;td&gt;무제한&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h1&gt;3️⃣ NAT IP가 따로 있는 이유&lt;/h1&gt;
&lt;p&gt;  많은 사람들이 헷갈리는 부분입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 상황 예시&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-plaintext&quot;&gt;내 PC IP: 192.168.0.5
외부에서 보이는 IP: 123.123.123.10&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  “왜 IP가 두 개지?”&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 답&lt;/h2&gt;
&lt;p&gt;  NAT 때문입니다&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;내부 IP → 사설 IP&lt;/li&gt;
&lt;li&gt;외부 IP → NAT가 변환한 공인 IP&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  그래서:&lt;/p&gt;
&lt;p&gt;✔ “NAT IP가 따로 있다”&lt;br&gt;  = &lt;strong&gt;외부에서 보이는 IP&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;4️⃣ NAT는 장비인가요?&lt;/h1&gt;
&lt;p&gt;  이 질문 많이 나옵니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 결론&lt;/h2&gt;
&lt;p&gt;  &lt;strong&gt;NAT는 장비가 아니라 ‘기능’입니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 하지만 실제로는 이렇게 존재&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;집 → 공유기 (NAT 기능 포함)&lt;/li&gt;
&lt;li&gt;회사 → 방화벽 장비&lt;/li&gt;
&lt;li&gt;서버 → 리눅스 설정&lt;/li&gt;
&lt;li&gt;클라우드 → NAT 서비스&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  즉:&lt;/p&gt;
&lt;p&gt;✔ 기능은 NAT&lt;br&gt;✔ 그 기능을 수행하는 것은 장비/소프트웨어&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;5️⃣ WEB / WAS / NAT 관계 쉽게 이해&lt;/h1&gt;
&lt;p&gt;이건 개발/서버 구조에서 중요합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 전체 흐름&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-plaintext&quot;&gt;사용자 → 인터넷 → NAT → 웹서버 → WAS → DB&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 각 역할&lt;/h2&gt;
&lt;h3&gt;✔ NAT&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;외부 요청을 내부로 전달&lt;/li&gt;
&lt;li&gt;보안 역할&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;✔ WEB 서버&lt;/h3&gt;
&lt;p&gt;대표적으로&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nginx&lt;/li&gt;
&lt;li&gt;Apache HTTP Server&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  역할:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HTML, CSS 같은 화면 처리&lt;/li&gt;
&lt;li&gt;요청을 WAS로 전달&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;✔ WAS 서버&lt;/h3&gt;
&lt;p&gt;대표적으로&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Apache Tomcat&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  역할:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;로그인 처리&lt;/li&gt;
&lt;li&gt;DB 조회&lt;/li&gt;
&lt;li&gt;실제 로직 수행&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1&gt;6️⃣ 실제 인터넷 접속 과정&lt;/h1&gt;
&lt;p&gt;  우리가 사이트 접속할 때 실제 흐름&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-plaintext&quot;&gt;1. 사용자가 사이트 접속
2. 공인 IP(NAT)로 연결
3. NAT → 웹서버 전달
4. 웹서버 → WAS 호출
5. 결과 반환&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;p&gt;  핵심:&lt;/p&gt;
&lt;p&gt;✔ 우리는 항상 NAT를 거쳐서 서버에 접속합니다&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;7️⃣ NAT가 꼭 필요한 이유&lt;/h1&gt;
&lt;h2&gt;✔ 1. IP 부족 해결&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;공인 IP는 부족함&lt;/li&gt;
&lt;li&gt;NAT 덕분에 하나로 여러 기기 사용 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 2. 보안&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;내부 서버 직접 노출 안됨&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 3. 비용 절감&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;공인 IP 여러 개 필요 없음&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1&gt;8️⃣ 실생활 예시&lt;/h1&gt;
&lt;h2&gt;✔ 집 인터넷&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-plaintext&quot;&gt;인터넷 → 공유기(NAT) → 스마트폰 / PC / TV&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  모든 기기가 하나의 공인 IP 사용&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 회사 서버&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-plaintext&quot;&gt;인터넷 → 방화벽(NAT) → WEB → WAS → DB&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h1&gt;  결론 (핵심 요약)&lt;/h1&gt;
&lt;p&gt;  &lt;strong&gt;NAT란 무엇인가?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;✔ 내부 IP를 외부 IP로 변환하는 기술&lt;br&gt;✔ 외부와 내부를 연결하는 “중간 통로”&lt;br&gt;✔ 인터넷에서 반드시 필요한 구조&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 한 줄 정리&lt;/h2&gt;
&lt;p&gt;  &lt;strong&gt;NAT = 인터넷과 내부 네트워크를 연결하는 IP 번역기&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;</description>
      <category>개발/네트워크</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/732</guid>
      <comments>https://lee-mandu.tistory.com/732#entry732comment</comments>
      <pubDate>Sat, 18 Apr 2026 14:04:00 +0900</pubDate>
    </item>
    <item>
      <title>02_주식 종목 추천 시스템(상세 분석 페이지)</title>
      <link>https://lee-mandu.tistory.com/733</link>
      <description>&lt;p&gt;안녕하세요.&lt;br&gt;현재 개발중인 주식 종목 추천 시스템 입니다.&lt;/p&gt;
&lt;p&gt;상세페이지를 기록해 두는 목적이 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  AI 종목 추천 시스템 상세 분석 페이지 완벽 해설&lt;/h1&gt;
&lt;p&gt;  &lt;a href=&quot;https://www.leetrader.kr/detail.html?code=035900&quot;&gt;종목 상세 보기&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  이 페이지는 무엇을 보여주는가?&lt;/h2&gt;
&lt;p&gt;이 페이지는 단순 종목 정보가 아닙니다.&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;AI가 해당 종목을 어떻게 평가했는지 “근거 + 점수 + 리스크”까지 모두 공개하는 분석 페이지&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;p&gt;특히 중요한 점은:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;단순 추천 ❌&lt;/li&gt;
&lt;li&gt;“왜 추천인지” 설명 ⭕&lt;/li&gt;
&lt;li&gt;“들어가도 되는지” 판단 가능 ⭕&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;  1. 오늘의 판단: 핵심 요약 먼저 읽어야 한다&lt;/h2&gt;
&lt;p&gt;페이지 좌측 상단 핵심 문구:&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;✔ “핵심 후보는 아니지만 추적 가치는 있는 종목”&lt;br&gt;✔ “60일 기대수익 20.4% / MDD -22.3%”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;  이 한 줄이 이 종목의 핵심입니다.&lt;/p&gt;
&lt;h3&gt;✔ 해석&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;강력 매수 종목 ❌&lt;/li&gt;
&lt;li&gt;관찰 및 분할 접근 종목 ⭕&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;100%&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBWYPb/dJMcaiJILCz/Fy6ftlXbEU06wdI0UK6Ac0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBWYPb/dJMcaiJILCz/Fy6ftlXbEU06wdI0UK6Ac0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBWYPb/dJMcaiJILCz/Fy6ftlXbEU06wdI0UK6Ac0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBWYPb%2FdJMcaiJILCz%2FFy6ftlXbEU06wdI0UK6Ac0%2Fimg.png&quot; width=&quot;100%&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;hr&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;100%&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nsYVf/dJMcahjOVZC/qULAAHIjs5P4eTZQEc2c31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nsYVf/dJMcahjOVZC/qULAAHIjs5P4eTZQEc2c31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nsYVf/dJMcahjOVZC/qULAAHIjs5P4eTZQEc2c31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnsYVf%2FdJMcahjOVZC%2FqULAAHIjs5P4eTZQEc2c31%2Fimg.png&quot; width=&quot;100%&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;hr&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;100%&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nKdqf/dJMcabcLZyG/zD5wsJINNXOQn05sKqY3B1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nKdqf/dJMcabcLZyG/zD5wsJINNXOQn05sKqY3B1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nKdqf/dJMcabcLZyG/zD5wsJINNXOQn05sKqY3B1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnKdqf%2FdJMcabcLZyG%2FzD5wsJINNXOQn05sKqY3B1%2Fimg.png&quot; width=&quot;100%&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;hr&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;100%&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqyxjK/dJMcagZsGQI/UTRPTNPJsZjtlbzErttbT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqyxjK/dJMcagZsGQI/UTRPTNPJsZjtlbzErttbT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqyxjK/dJMcagZsGQI/UTRPTNPJsZjtlbzErttbT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqyxjK%2FdJMcagZsGQI%2FUTRPTNPJsZjtlbzErttbT0%2Fimg.png&quot; width=&quot;100%&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;hr&gt;
&lt;h2&gt;  2. 최종 점수 구조 (핵심 지표)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;최종 점수: 71.2&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;신뢰도: 0.0 (초기 단계)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;60일 기대수익: 20.4%&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;예상 MDD: -22.3%&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;✔ 중요 해석&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;의미&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;점수 71&lt;/td&gt;
&lt;td&gt;중상위권&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;신뢰도 0&lt;/td&gt;
&lt;td&gt;아직 검증 부족&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;기대수익 20%&lt;/td&gt;
&lt;td&gt;충분히 매력&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MDD -22%&lt;/td&gt;
&lt;td&gt;리스크 큼&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;  &lt;strong&gt;“수익 vs 리스크가 동시에 큰 종목”&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;⚠️ 3. 절대 매수 판단 금지 구간&lt;/h2&gt;
&lt;p&gt;화면에서 매우 중요한 경고:&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;❗ “절대 매수 판단 미정 (score 0.0)”&lt;br&gt;❗ “신뢰도가 낮아 보수적 해석 필요”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;  이건 시스템적으로 매우 중요한 설계입니다.&lt;/p&gt;
&lt;h3&gt;✔ 의미&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;점수는 높지만&lt;/li&gt;
&lt;li&gt;모델 확신이 없음&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  즉,&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;“좋아 보이지만 아직 확신은 없다”&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h2&gt;  4. 기술적 상태 분석&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;현재가: 60,900&lt;/li&gt;
&lt;li&gt;이동평균: &lt;strong&gt;역배열&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;RSI: 44.88 (중립)&lt;/li&gt;
&lt;li&gt;변동성: 보통&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;✔ 핵심 포인트&lt;/h3&gt;
&lt;p&gt;  &lt;strong&gt;하락 추세 진행 중&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MA5 &amp;lt; MA20 &amp;lt; MA60&lt;/li&gt;
&lt;li&gt;RSI도 강세 아님&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  기술적으로는:&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;❌ 추세 매수 구간 아님&lt;br&gt;⭕ 반등 대기 구간&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h2&gt;  5. Horizon별 예측 (이게 핵심이다)&lt;/h2&gt;
&lt;h3&gt;▶ 60일 기준&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;기대수익: &lt;strong&gt;20.4%&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;상위 20 진입 확률: 46.3%&lt;/li&gt;
&lt;li&gt;MDD: -22.3%&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;▶ 90일 기준&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;기대수익: &lt;strong&gt;37.7%&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;진입 확률: 24.4%&lt;/li&gt;
&lt;li&gt;MDD: -24.0%&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;✔ 해석&lt;/h3&gt;
&lt;p&gt;  시간이 길어질수록 수익 증가&lt;br&gt;  대신 확률은 감소&lt;/p&gt;
&lt;p&gt;즉:&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;“단기 확률형 종목 → 중장기 고수익형 종목”&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h2&gt;  6. 점수 구성 요소 분석 (가장 중요한 부분)&lt;/h2&gt;
&lt;h3&gt;강점&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;확률: &lt;strong&gt;97.6&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;예측 수익: &lt;strong&gt;87.4&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;품질: &lt;strong&gt;85.1&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;연구모델: &lt;strong&gt;87.9&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  거의 모든 핵심 요소가 매우 높음&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;약점&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;기술 점수: &lt;strong&gt;32.3&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;리스크 존재&lt;/li&gt;
&lt;li&gt;신뢰도 낮음&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;✔ 한 줄 정리&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“펀더멘털 + 확률은 매우 좋지만,&lt;br&gt;현재 타이밍(기술적)은 좋지 않다”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h2&gt;⚠️ 7. 리스크 요약 (실전에서 가장 중요)&lt;/h2&gt;
&lt;p&gt;페이지에서 강조하는 핵심 리스크:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;신뢰도 낮음&lt;/li&gt;
&lt;li&gt;MDD -22% (큰 낙폭 가능)&lt;/li&gt;
&lt;li&gt;추세 하락 상태&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;✔ 투자 관점 해석&lt;/h3&gt;
&lt;p&gt;  절대 하면 안 되는 행동&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;❌ 추격 매수&lt;/li&gt;
&lt;li&gt;❌ 몰빵 투자&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  적절한 전략&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;⭕ 분할 진입&lt;/li&gt;
&lt;li&gt;⭕ 반등 확인 후 진입&lt;/li&gt;
&lt;li&gt;⭕ 관찰 종목 등록&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;  8. 이 페이지를 어떻게 활용해야 하나?&lt;/h2&gt;
&lt;h3&gt;✔ 매수 전 체크&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;점수 70 이상인지&lt;/li&gt;
&lt;li&gt;신뢰도 확인&lt;/li&gt;
&lt;li&gt;기술 상태 확인&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;✔ 보유 중 체크&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;점수 상승 여부&lt;/li&gt;
&lt;li&gt;리스크 증가 여부&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;✔ 매도 기준&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;신뢰도 급락&lt;/li&gt;
&lt;li&gt;기술 붕괴&lt;/li&gt;
&lt;li&gt;MDD 확대&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;  결론: 이 종목 지금 들어가도 될까?&lt;/h2&gt;
&lt;p&gt;  결론:&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;❌ 지금 당장 매수 타이밍은 아님&lt;br&gt;⭕ “관찰 + 준비 종목”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h3&gt;✔ 가장 현실적인 전략&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;현재: 관망&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;조건:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RSI 상승&lt;/li&gt;
&lt;li&gt;이동평균 수렴&lt;/li&gt;
&lt;li&gt;신뢰도 상승&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  이때 진입이 가장 안전&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  이 시스템의 진짜 가치&lt;/h2&gt;
&lt;p&gt;이 페이지의 핵심은 단 하나입니다:&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;“좋은 종목”과 “좋은 타이밍”을 분리해서 보여준다&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;p&gt;기존 투자:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;좋아 보이면 바로 매수 ❌&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이 시스템:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;좋아 보이지만&lt;/li&gt;
&lt;li&gt;지금은 아니다 ⭕&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;앞으로 계속 진행하면서 포스팅하겠습니다.&lt;/p&gt;</description>
      <category>주식 추천 시스템 개발</category>
      <category>주식 추천 시스템</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/733</guid>
      <comments>https://lee-mandu.tistory.com/733#entry733comment</comments>
      <pubDate>Fri, 17 Apr 2026 08:27:17 +0900</pubDate>
    </item>
    <item>
      <title>WEB, WAS, NAT 관계 한 번에 이해하기</title>
      <link>https://lee-mandu.tistory.com/731</link>
      <description>&lt;h1&gt;  NAT란 무엇인가? (웹서버·WAS 구조까지 한 번에 정리)&lt;/h1&gt;
&lt;p&gt;  &lt;em&gt;웹서비스를 운영하거나 서버를 구축하다 보면 반드시 만나게 되는 개념, NAT&lt;/em&gt;&lt;br&gt;  &lt;em&gt;“NAT IP가 따로 있다?” 이게 무슨 의미일까요?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;이 글에서는 &lt;strong&gt;NAT의 정확한 개념&lt;/strong&gt;, 그리고 &lt;strong&gt;WEB / WAS / NAT 구조에서의 역할&lt;/strong&gt;까지 실무 기준으로 정리합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;1️⃣ NAT(Network Address Translation)란?&lt;/h1&gt;
&lt;h2&gt;✔ 정의&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;NAT(Network Address Translation)&lt;/strong&gt;은&lt;br&gt;  내부 IP(사설 IP)를 외부 IP(공인 IP)로 변환해주는 기술입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 핵심 개념&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;내부 서버 → 보통 &lt;strong&gt;사설 IP (192.168.x.x, 10.x.x.x 등)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;외부 인터넷 → &lt;strong&gt;공인 IP&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  이 둘을 연결해주는 중간 장치가 NAT&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 쉽게 이해&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-plaintext&quot;&gt;[사용자] → 인터넷 → [공인 IP (NAT)] → [내부 서버 (사설 IP)]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;즉,&lt;/p&gt;
&lt;p&gt;  외부에서는 &lt;strong&gt;하나의 공인 IP만 보임&lt;/strong&gt;&lt;br&gt;  내부에서는 여러 서버가 동시에 사용 가능&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;2️⃣ NAT IP가 따로 있다는 의미&lt;/h1&gt;
&lt;p&gt;  질문 핵심 포인트입니다.&lt;/p&gt;
&lt;h2&gt;✔ NAT IP란?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;외부에서 접근할 때 사용하는 IP&lt;/li&gt;
&lt;li&gt;즉 &lt;strong&gt;공인 IP = NAT IP&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 실제 구조&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-plaintext&quot;&gt;외부 사용자 → 123.123.123.10 (NAT IP)
                        ↓
                 192.168.0.10 (WEB 서버)
                 192.168.0.20 (WAS 서버)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  외부에서는 내부 IP를 절대 볼 수 없음&lt;br&gt;  NAT가 대신 연결해줌&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 왜 NAT IP가 따로 있는 것처럼 보일까?&lt;/h2&gt;
&lt;p&gt;이유는 2가지입니다:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;내부 IP와 외부 IP가 다르기 때문&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;방화벽 / L4 / NAT 장비에서 &lt;strong&gt;IP 변환이 발생&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;  그래서 개발하다 보면&lt;br&gt;“서버 IP랑 접속 IP가 다르다” → NAT 때문입니다&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;3️⃣ WEB / WAS / NAT 구조 관계&lt;/h1&gt;
&lt;p&gt;이건 실무에서 매우 중요합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 전체 구조&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-plaintext&quot;&gt;[Client]
   ↓
[Internet]
   ↓
[NAT (공인 IP)]
   ↓
[WEB Server]
   ↓
[WAS Server]
   ↓
[DB]&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h1&gt;4️⃣ 각 역할 정리&lt;/h1&gt;
&lt;h2&gt;✔ 1. NAT (입구 역할)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;외부 요청 수신&lt;/li&gt;
&lt;li&gt;내부 서버로 전달&lt;/li&gt;
&lt;li&gt;보안 역할 수행&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  실제로는:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;방화벽&lt;/li&gt;
&lt;li&gt;공유기&lt;/li&gt;
&lt;li&gt;클라우드 NAT Gateway&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 2. WEB Server&lt;/h2&gt;
&lt;p&gt;대표적으로:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nginx&lt;/li&gt;
&lt;li&gt;Apache HTTP Server&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;역할:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;정적 파일 처리 (HTML, CSS, JS)&lt;/li&gt;
&lt;li&gt;요청을 WAS로 전달&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 3. WAS (Web Application Server)&lt;/h2&gt;
&lt;p&gt;대표적으로:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Apache Tomcat&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;역할:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;비즈니스 로직 처리&lt;/li&gt;
&lt;li&gt;DB 연동&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1&gt;5️⃣ 실제 트래픽 흐름 (중요)&lt;/h1&gt;
&lt;pre&gt;&lt;code class=&quot;language-plaintext&quot;&gt;1. 사용자가 https://example.com 접속
2. DNS → 공인 IP (NAT IP) 반환
3. 요청이 NAT로 들어옴
4. NAT → WEB 서버로 전달
5. WEB → WAS 호출
6. WAS → DB 조회
7. 결과 반환&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  핵심:&lt;br&gt;&lt;strong&gt;외부 요청은 반드시 NAT를 거친다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;6️⃣ NAT가 필요한 이유&lt;/h1&gt;
&lt;h2&gt;✔ 1. IP 절약&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;공인 IP는 제한됨&lt;/li&gt;
&lt;li&gt;내부 서버는 사설 IP 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;✔ 2. 보안&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;내부 서버 직접 노출 방지&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;✔ 3. 트래픽 관리&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;특정 포트만 개방 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1&gt;7️⃣ NAT 없이 운영하면?&lt;/h1&gt;
&lt;p&gt;  거의 불가능에 가깝습니다.&lt;/p&gt;
&lt;p&gt;문제:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;공인 IP 서버마다 필요&lt;/li&gt;
&lt;li&gt;보안 취약&lt;/li&gt;
&lt;li&gt;관리 어려움&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1&gt;8️⃣ 실무에서 자주 겪는 NAT 이슈&lt;/h1&gt;
&lt;h2&gt;✔ 1. IP 로그 문제&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-plaintext&quot;&gt;서버에서 보는 IP = NAT IP&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  실제 사용자 IP가 안 보임&lt;/p&gt;
&lt;p&gt;→ 해결:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;X-Forwarded-For 헤더 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 2. 포트 포워딩&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-plaintext&quot;&gt;123.123.123.10:80 → 192.168.0.10:8080&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  NAT에서 매핑 필요&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 3. HTTPS 인증 문제&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;인증서는 공인 IP 기준&lt;/li&gt;
&lt;li&gt;NAT 위치에서 SSL 종료 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1&gt;9️⃣ 클라우드에서 NAT 구조&lt;/h1&gt;
&lt;p&gt;예:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AWS&lt;/li&gt;
&lt;li&gt;GCP&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  NAT Gateway 사용&lt;/p&gt;
&lt;p&gt;구조:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-plaintext&quot;&gt;Internet → NAT Gateway → Private Subnet (WAS, DB)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  DB는 외부에서 직접 접근 불가&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  결론 (핵심 정리)&lt;/h1&gt;
&lt;p&gt;  &lt;strong&gt;NAT란 무엇인가?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;✔ 내부 사설 IP를 외부 공인 IP로 변환하는 기술&lt;br&gt;✔ 외부 트래픽이 내부 서버로 들어오는 &amp;quot;관문&amp;quot; 역할&lt;br&gt;✔ WEB / WAS 구조에서 반드시 필요한 인프라&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 한 줄 요약&lt;/h2&gt;
&lt;p&gt;  &lt;strong&gt;NAT = 외부 인터넷과 내부 서버를 연결하는 번역기&lt;/strong&gt;&lt;/p&gt;</description>
      <category>개발/네트워크</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/731</guid>
      <comments>https://lee-mandu.tistory.com/731#entry731comment</comments>
      <pubDate>Thu, 16 Apr 2026 13:07:55 +0900</pubDate>
    </item>
    <item>
      <title>01_데이터 기반 주식 추천 서비스(개발중)</title>
      <link>https://lee-mandu.tistory.com/730</link>
      <description>&lt;h1&gt;  데이터 기반 주식 추천 서비스 소개&lt;/h1&gt;
&lt;p&gt;요즘 주식 투자, 어떻게 하고 계신가요?&lt;/p&gt;
&lt;p&gt;뉴스를 보고 판단하거나,&lt;br&gt;커뮤니티 추천을 따라가거나,&lt;br&gt;혹은 감에 의존하는 경우도 많습니다.&lt;/p&gt;
&lt;p&gt;하지만 이런 방식은 대부분&lt;br&gt;  &lt;strong&gt;일관성이 없고 감정에 흔들리기 쉽습니다.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;그래서 저는&lt;br&gt;&lt;strong&gt;데이터 기반으로 종목을 분석하고 추천하는 자동화 시스템&lt;/strong&gt;을 만들게 되었습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;메인 화면 입니다.&lt;/p&gt;
&lt;p&gt;지금은 무료 웹 호스팅으로 배포 하였습니다.&lt;br&gt;15분동은 사용이 없으면 시스템이 잠자게 되는데, 잠시 기다리면 시스템이 열립니다.&lt;br&gt;처음엔 조금 느리긴한데 쓸만해요.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;제가 만들고 있는 사이트 입니다.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.leetrader.kr/&quot;&gt;데이터 기반 주식 추천 서비스 바로가기&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;100%&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/clVhza/dJMcaiwbkJc/VycZa2c0jJNCW1ztDpl7U0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/clVhza/dJMcaiwbkJc/VycZa2c0jJNCW1ztDpl7U0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/clVhza/dJMcaiwbkJc/VycZa2c0jJNCW1ztDpl7U0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FclVhza%2FdJMcaiwbkJc%2FVycZa2c0jJNCW1ztDpl7U0%2Fimg.jpg&quot; width=&quot;100%&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;hr&gt;
&lt;h1&gt;  서비스 한 줄 소개&lt;/h1&gt;
&lt;p&gt;  &lt;strong&gt;데이터로 종목을 분석하고, 자동으로 추천까지 해주는 투자 시스템&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  이 서비스를 만든 이유&lt;/h1&gt;
&lt;p&gt;개인 투자자로서 가장 어려웠던 점은 이것이었습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;언제 사야 할지 모르겠다&lt;/li&gt;
&lt;li&gt;기준 없이 매매하게 된다&lt;/li&gt;
&lt;li&gt;감정에 따라 판단이 흔들린다&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;결국 문제는 하나였습니다.&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;“판단 기준이 없다”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;그래서 이 서비스를 통해&lt;br&gt;&lt;strong&gt;일관된 기준으로 종목을 분석하는 시스템&lt;/strong&gt;을 만들고자 했습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;⚙️ 서비스는 어떻게 동작하나요?&lt;/h1&gt;
&lt;p&gt;이 서비스는 아래와 같은 흐름으로 운영됩니다.&lt;/p&gt;
&lt;h2&gt;1️⃣ 데이터 수집&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;주가 데이터&lt;/li&gt;
&lt;li&gt;종목 정보&lt;/li&gt;
&lt;li&gt;다양한 시장 데이터&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  기본이 되는 핵심 단계입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;2️⃣ 데이터 분석&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;가격 흐름 분석&lt;/li&gt;
&lt;li&gt;패턴 분석&lt;/li&gt;
&lt;li&gt;과거 데이터 기반 평가&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  단순 가격이 아니라 “의미 있는 데이터”로 변환합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;3️⃣ 종목 평가&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;상승 가능성&lt;/li&gt;
&lt;li&gt;위험도&lt;/li&gt;
&lt;li&gt;기대 수익&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  여러 요소를 종합해서 점수를 계산합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;4️⃣ 추천 결과 생성&lt;/h2&gt;
&lt;p&gt;최종적으로&lt;br&gt;  &lt;strong&gt;추천 종목 리스트를 자동으로 생성합니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  완전 자동화 시스템&lt;/h1&gt;
&lt;p&gt;이 서비스의 핵심은 “자동화”입니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;데이터 업데이트&lt;/li&gt;
&lt;li&gt;분석 실행&lt;/li&gt;
&lt;li&gt;결과 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  이 모든 과정이 자동으로 돌아갑니다.&lt;/p&gt;
&lt;p&gt;즉,&lt;/p&gt;
&lt;p&gt;➡️ 사람이 매번 분석하지 않아도 됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  이 서비스의 특징&lt;/h1&gt;
&lt;h2&gt;✔ 감정 없는 투자&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;공포 / 욕심 배제&lt;/li&gt;
&lt;li&gt;데이터 기반 판단&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 일관된 기준 유지&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;매번 동일한 로직&lt;/li&gt;
&lt;li&gt;흔들리지 않는 전략&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 지속적인 데이터 누적&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;시간이 지날수록 더 정교해짐&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1&gt;⚠️ 꼭 알아야 할 점&lt;/h1&gt;
&lt;p&gt;이 서비스는&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;“무조건 수익을 보장하는 시스템”이 아닙니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;하지만 분명한 차이는 있습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;감으로 하는 투자 ❌&lt;/li&gt;
&lt;li&gt;데이터로 하는 투자 ⭕&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1&gt;  이런 분들에게 추천합니다&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;주식 투자를 체계적으로 하고 싶은 분&lt;/li&gt;
&lt;li&gt;감정 없이 투자하고 싶은 분&lt;/li&gt;
&lt;li&gt;데이터 기반 분석에 관심 있는 분&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1&gt;  앞으로의 방향&lt;/h1&gt;
&lt;p&gt;현재 시스템은 계속 발전 중입니다.&lt;/p&gt;
&lt;p&gt;앞으로는:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;더 다양한 데이터 반영&lt;/li&gt;
&lt;li&gt;추천 정확도 개선&lt;/li&gt;
&lt;li&gt;서비스 형태 확장&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;을 목표로 하고 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  한 줄 정리&lt;/h1&gt;
&lt;p&gt;  &lt;strong&gt;이 서비스는 “감이 아니라 데이터로 투자하기 위한 시스템”입니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;</description>
      <category>주식 추천 시스템 개발</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/730</guid>
      <comments>https://lee-mandu.tistory.com/730#entry730comment</comments>
      <pubDate>Wed, 15 Apr 2026 14:22:30 +0900</pubDate>
    </item>
    <item>
      <title>Render 유료 플랜($7)으로 몇 명까지 버틸까? (트래픽 기준 현실 분석)</title>
      <link>https://lee-mandu.tistory.com/728</link>
      <description>&lt;h1&gt;Render 유료 플랜($7)으로 몇 명까지 버틸까? (트래픽 기준 현실 분석)&lt;/h1&gt;
&lt;p&gt;Render를 사용하다 보면 가장 많이 궁금한 부분이 있습니다.&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;“유료 플랜으로 바꾸면 몇 명까지 감당 가능할까?”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;무료 플랜은 슬립(sleep) 문제 때문에 한계가 명확하지만,&lt;br&gt;그렇다면 &lt;strong&gt;월 $7(Starter 플랜)&lt;/strong&gt;은 어디까지 가능한지 현실적으로 정리해보겠습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Render $7 유료 플랜 스펙 (핵심만 정리)&lt;/h2&gt;
&lt;p&gt;Render Starter 플랜 기준 주요 스펙은 다음과 같습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;CPU&lt;/strong&gt;: Shared CPU&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;메모리&lt;/strong&gt;: 512MB&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;슬립 없음 (항상 실행)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;⚡ &lt;strong&gt;자동 배포 &amp;amp; HTTPS 기본 제공&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  핵심은 “항상 살아있는 서버 + 제한된 리소스”입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;결론 먼저: 하루 방문자 몇 명까지 가능할까?&lt;/h2&gt;
&lt;p&gt;실무 기준으로 바로 정리합니다.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;서비스 유형&lt;/th&gt;
&lt;th&gt;일 방문자 가능 범위&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;단순 블로그 / 정적 페이지&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1,000 ~ 3,000명&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;일반 웹서비스 (CRUD 중심)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;300 ~ 1,000명&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DB + API + 로그인 서비스&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;100 ~ 500명&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;트래픽 많은 커뮤니티&lt;/td&gt;
&lt;td&gt;❌ 비추천&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;  현재 당신 상황(애드센스 + 웹서비스 초기 단계) 기준&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;“일 300명까지는 안정권”&lt;/strong&gt;&lt;br&gt;  &lt;strong&gt;“500명 넘어가면 슬슬 느려짐 체감”&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;왜 이런 차이가 발생할까?&lt;/h2&gt;
&lt;h3&gt;1️⃣ CPU가 Shared라서 성능이 들쭉날쭉&lt;/h3&gt;
&lt;p&gt;Render $7 플랜은 &lt;strong&gt;전용 서버가 아닙니다.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;  다른 사용자와 CPU를 공유&lt;/p&gt;
&lt;p&gt;즉,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;특정 시간대에 느려질 수 있음&lt;/li&gt;
&lt;li&gt;요청 몰리면 응답 지연 발생&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2️⃣ 메모리 512MB의 한계&lt;/h3&gt;
&lt;p&gt;Node.js 기준으로 보면:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;서버 실행만 해도 150~250MB 사용&lt;/li&gt;
&lt;li&gt;DB 커넥션 + API 처리 시 빠르게 증가&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  결과:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;동시 요청 많으면 &lt;strong&gt;OOM (메모리 부족) 위험&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;GC 잦아져서 속도 저하&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3️⃣ 동시 접속자 기준으로 보면 더 명확함&lt;/h3&gt;
&lt;p&gt;중요 포인트입니다.&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;일 방문자보다 “동시 접속자”가 핵심&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;대략 기준:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;동시 접속 10명 → 매우 안정&lt;/li&gt;
&lt;li&gt;동시 접속 30명 → 약간 느려짐&lt;/li&gt;
&lt;li&gt;동시 접속 50명 → 병목 시작&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  커뮤니티나 실시간 서비스가 어려운 이유입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;무료 vs 유료 vs AWS 비교 (현실 기준)&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;Render 무료&lt;/th&gt;
&lt;th&gt;Render $7&lt;/th&gt;
&lt;th&gt;AWS&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;슬립&lt;/td&gt;
&lt;td&gt;있음&lt;/td&gt;
&lt;td&gt;없음&lt;/td&gt;
&lt;td&gt;없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;안정성&lt;/td&gt;
&lt;td&gt;낮음&lt;/td&gt;
&lt;td&gt;보통&lt;/td&gt;
&lt;td&gt;높음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;확장성&lt;/td&gt;
&lt;td&gt;없음&lt;/td&gt;
&lt;td&gt;제한적&lt;/td&gt;
&lt;td&gt;무제한&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;추천 단계&lt;/td&gt;
&lt;td&gt;테스트&lt;/td&gt;
&lt;td&gt;초기 운영&lt;/td&gt;
&lt;td&gt;성장 이후&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2&gt;언제 AWS로 넘어가야 할까?&lt;/h2&gt;
&lt;p&gt;다음 조건 중 하나라도 해당되면 이동 고려하세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✔ 일 방문자 &lt;strong&gt;500명 이상&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;✔ API 응답 느려짐 체감&lt;/li&gt;
&lt;li&gt;✔ DB 쿼리 지연 발생&lt;/li&gt;
&lt;li&gt;✔ 수익 발생 (애드센스 등)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  이 시점부터는&lt;/p&gt;
&lt;p&gt;  Amazon Web Services 로 넘어가는 것이 맞습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;현실적인 운영 전략 (추천 루트)&lt;/h2&gt;
&lt;p&gt;개발자 기준으로 가장 효율적인 루트입니다.&lt;/p&gt;
&lt;h3&gt;1단계 (지금)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Render 무료 or $7&lt;/li&gt;
&lt;li&gt;MVP + 애드센스 승인&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;2단계 (트래픽 발생)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Render $7 유지&lt;/li&gt;
&lt;li&gt;DB는 별도 (예: Supabase)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;3단계 (성장 구간)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;AWS EC2 or Lightsail 이전&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;핵심 요약 (중요)&lt;/h2&gt;
&lt;p&gt;  Render $7 플랜은&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;일 방문자 300명까지는 매우 안정&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;500명부터 성능 저하 시작&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;1,000명 이상은 구조적으로 무리&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;마무리&lt;/h2&gt;
&lt;p&gt;Render는 “초기 스타트”에 최적화된 플랫폼입니다.&lt;/p&gt;
&lt;p&gt;하지만 트래픽이 붙는 순간부터는&lt;br&gt;  &lt;strong&gt;성능보다 구조가 중요해집니다.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;지금 단계에서는&lt;/p&gt;
&lt;p&gt;  “빠르게 만들고 → 트래픽 확인 → 확장”&lt;/p&gt;
&lt;p&gt;이 전략이 가장 현실적입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;원하시면 다음 단계로&lt;br&gt;  &lt;strong&gt;“AWS로 이전하는 방법 (무중단 배포 기준)”&lt;/strong&gt;&lt;br&gt;  &lt;strong&gt;“애드센스 승인용 구조 설계”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;까지 이어서 실전 기준으로 정리해드리겠습니다.&lt;/p&gt;</description>
      <category>개발/web, html5,jsp</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/728</guid>
      <comments>https://lee-mandu.tistory.com/728#entry728comment</comments>
      <pubDate>Sun, 12 Apr 2026 12:22:57 +0900</pubDate>
    </item>
    <item>
      <title>무료 호스팅 + 도메인으로 애드센스 승인 받는 방법 총정리</title>
      <link>https://lee-mandu.tistory.com/727</link>
      <description>&lt;h1&gt;무료 호스팅 + 도메인으로 애드센스 승인 받는 방법 총정리&lt;/h1&gt;
&lt;h2&gt;Render, Vercel 비교부터 실제 운영 전략까지&lt;/h2&gt;
&lt;p&gt;블로그나 웹사이트를 직접 운영해보려는 분들이라면 한 번쯤 이런 고민을 하게 됩니다.&lt;/p&gt;
&lt;p&gt;“무료 호스팅으로 시작해도 애드센스 승인이 가능할까?”&lt;br&gt;“도메인만 따로 구매하면 충분할까?”&lt;br&gt;“Render와 Vercel 중 무엇이 더 유리할까?”&lt;/p&gt;
&lt;p&gt;저도 이 부분이 가장 궁금했습니다.&lt;br&gt;처음부터 유료 서버를 쓰기에는 부담스럽고, 그렇다고 너무 허술하게 시작하면 애드센스 승인에서 막힐 수 있기 때문입니다.&lt;/p&gt;
&lt;p&gt;결론부터 말씀드리면,&lt;br&gt;&lt;strong&gt;무료 호스팅 + 자체 도메인 조합으로도 애드센스 승인을 노릴 수 있습니다.&lt;/strong&gt;&lt;br&gt;다만 아무렇게나 만들면 안 되고, &lt;strong&gt;호스팅 선택 + 사이트 구조 + 콘텐츠 품질&lt;/strong&gt;이 함께 맞아야 합니다.&lt;/p&gt;
&lt;p&gt;오늘은 이 기준으로 무료 호스팅을 비교하고, 실제로 어떤 방식이 애드센스 승인에 더 유리한지 정리해보겠습니다.&lt;/p&gt;
&lt;h2&gt;애드센스 승인에서 가장 중요한 조건&lt;/h2&gt;
&lt;p&gt;많은 분들이 “어느 호스팅을 써야 승인되나요?”를 먼저 묻지만,&lt;br&gt;실제로는 호스팅 자체보다 더 중요한 조건들이 있습니다.&lt;/p&gt;
&lt;p&gt;애드센스 승인을 준비할 때 기본적으로 체크해야 할 것은 아래와 같습니다.&lt;/p&gt;
&lt;h3&gt;1. 자체 도메인 사용&lt;/h3&gt;
&lt;p&gt;무료 기본 주소보다 &lt;strong&gt;내가 소유한 도메인&lt;/strong&gt;이 신뢰도 측면에서 유리합니다.&lt;br&gt;예를 들어 &lt;code&gt;example.onrender.com&lt;/code&gt; 보다는 &lt;code&gt;example.kr&lt;/code&gt; 혹은 &lt;code&gt;example.com&lt;/code&gt; 형태가 훨씬 깔끔합니다.&lt;/p&gt;
&lt;h3&gt;2. 사이트 소유 확인 가능해야 함&lt;/h3&gt;
&lt;p&gt;애드센스는 사이트 소유 여부를 확인합니다.&lt;br&gt;즉, 내 사이트의 HTML 소스에 코드를 넣을 수 있어야 하고, 사이트를 내가 실제로 제어할 수 있어야 합니다.&lt;/p&gt;
&lt;h3&gt;3. 원본 콘텐츠가 충분해야 함&lt;/h3&gt;
&lt;p&gt;단순한 소개 페이지 한두 개로는 어렵습니다.&lt;br&gt;최소한 &lt;strong&gt;직접 작성한 글이 여러 개 누적&lt;/strong&gt;되어 있어야 하고, 중복되거나 얇은 내용은 피하는 것이 좋습니다.&lt;/p&gt;
&lt;h3&gt;4. 기본 페이지가 있어야 함&lt;/h3&gt;
&lt;p&gt;아무 글만 올린 사이트보다 아래 같은 기본 페이지가 있는 사이트가 훨씬 안정적으로 보입니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;소개 페이지&lt;/li&gt;
&lt;li&gt;문의 페이지&lt;/li&gt;
&lt;li&gt;개인정보처리방침&lt;/li&gt;
&lt;li&gt;카테고리 구조&lt;/li&gt;
&lt;li&gt;최신 글 목록&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;5. 모바일에서도 보기 좋아야 함&lt;/h3&gt;
&lt;p&gt;요즘은 모바일 트래픽 비중이 높기 때문에,&lt;br&gt;모바일에서 글이 깨지거나 메뉴가 불편하면 승인 전에 사이트 완성도가 낮아 보일 수 있습니다.&lt;/p&gt;
&lt;h2&gt;무료 호스팅으로 애드센스 승인을 준비할 수 있을까?&lt;/h2&gt;
&lt;p&gt;제 생각은 이렇습니다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;가능은 합니다.&lt;/strong&gt;&lt;br&gt;하지만 “무료”라는 점만 보고 고르면 안 됩니다.&lt;/p&gt;
&lt;p&gt;애드센스 승인을 목표로 할 때 무료 호스팅은 아래 기준으로 봐야 합니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;커스텀 도메인 연결이 쉬운가&lt;/li&gt;
&lt;li&gt;HTTPS가 자동 적용되는가&lt;/li&gt;
&lt;li&gt;사이트 접속 속도가 너무 느리지 않은가&lt;/li&gt;
&lt;li&gt;서버가 자주 꺼지지 않는가&lt;/li&gt;
&lt;li&gt;정적 페이지 운영에 적합한가&lt;/li&gt;
&lt;li&gt;추후 유료 전환이 쉬운가&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이 기준으로 많이 비교되는 서비스가 바로 &lt;strong&gt;Render&lt;/strong&gt;와 &lt;strong&gt;Vercel&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;무료 호스팅 비교: Render vs Vercel&lt;/h2&gt;
&lt;h3&gt;1. Render&lt;/h3&gt;
&lt;p&gt;Render는 개인적으로 &lt;strong&gt;기능이 있는 사이트&lt;/strong&gt;, 즉 단순 블로그를 넘어서&lt;br&gt;백엔드나 API, DB 연결까지 염두에 둔 경우에 더 매력적인 선택지입니다.&lt;/p&gt;
&lt;h4&gt;Render 장점&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Node.js, Python, Docker 등 서버형 배포에 강함&lt;/li&gt;
&lt;li&gt;웹 서비스 배포가 비교적 직관적임&lt;/li&gt;
&lt;li&gt;커스텀 도메인 연결 가능&lt;/li&gt;
&lt;li&gt;HTTPS 자동 적용&lt;/li&gt;
&lt;li&gt;이후 기능 확장에 유리함&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Render 단점&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;무료 웹 서비스는 일정 시간 유휴 상태가 되면 sleep 상태로 들어갈 수 있음&lt;/li&gt;
&lt;li&gt;첫 접속 시 느리게 느껴질 수 있음&lt;/li&gt;
&lt;li&gt;애드센스 심사 중 방문 시 반응 속도가 불안정하면 체감상 아쉬울 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Render가 잘 맞는 경우&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;앞으로 커뮤니티, 게시판, API, DB 연동까지 키우고 싶을 때&lt;/li&gt;
&lt;li&gt;단순 소개 사이트가 아니라 실제 서비스형 사이트를 만들고 싶을 때&lt;/li&gt;
&lt;li&gt;개발자가 직접 운영하고 확장할 계획이 있을 때&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2. Vercel&lt;/h3&gt;
&lt;p&gt;Vercel은 정적 사이트나 프론트엔드 중심 사이트에 굉장히 강합니다.&lt;br&gt;특히 사이트 로딩 속도와 배포 편의성 측면에서 만족도가 높은 편입니다.&lt;/p&gt;
&lt;h4&gt;Vercel 장점&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;정적 사이트 배포가 매우 쉬움&lt;/li&gt;
&lt;li&gt;배포 속도가 빠르고 사용성이 좋음&lt;/li&gt;
&lt;li&gt;커스텀 도메인 연결 가능&lt;/li&gt;
&lt;li&gt;HTTPS 자동 적용&lt;/li&gt;
&lt;li&gt;애드센스용 콘텐츠 사이트나 랜딩 페이지 구성에 유리함&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Vercel 단점&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;서버 기능이 많은 구조에는 다소 제약이 있을 수 있음&lt;/li&gt;
&lt;li&gt;단순한 블로그/콘텐츠 사이트에는 좋지만, 무거운 백엔드 운영에는 설계 고민이 필요함&lt;/li&gt;
&lt;li&gt;기능이 점점 늘어나면 구조를 다시 손봐야 할 수도 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Vercel이 잘 맞는 경우&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;애드센스 승인용 콘텐츠 사이트를 먼저 만들고 싶을 때&lt;/li&gt;
&lt;li&gt;속도 좋은 정적 페이지가 필요할 때&lt;/li&gt;
&lt;li&gt;복잡한 서버 없이 빠르게 시작하고 싶을 때&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;애드센스 승인 목표라면 Render와 Vercel 중 무엇이 더 좋을까?&lt;/h2&gt;
&lt;p&gt;이건 사이트 목적에 따라 달라집니다.&lt;/p&gt;
&lt;h3&gt;Vercel이 더 유리한 경우&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;글 중심 사이트&lt;/li&gt;
&lt;li&gt;소개 페이지 + 카테고리 + 글 목록 구조&lt;/li&gt;
&lt;li&gt;빠른 로딩 속도가 중요한 경우&lt;/li&gt;
&lt;li&gt;당장 서비스 기능보다 승인 자체가 우선인 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Render가 더 유리한 경우&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;나중에 회원가입, DB, 게시판, API 등 기능 확장을 고려하는 경우&lt;/li&gt;
&lt;li&gt;단순 블로그가 아니라 실제 웹서비스를 만들 계획이 있는 경우&lt;/li&gt;
&lt;li&gt;승인이 끝난 뒤에도 같은 플랫폼에서 계속 운영하고 싶은 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;제 기준에서는 이렇게 추천드립니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;애드센스 승인 자체가 1순위면 Vercel&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;향후 서비스 확장까지 고려하면 Render&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;왜 무료 호스팅만으로는 부족하고 도메인이 중요한가&lt;/h2&gt;
&lt;p&gt;무료 호스팅을 써도 &lt;strong&gt;도메인은 직접 구매하는 것&lt;/strong&gt;이 좋습니다.&lt;/p&gt;
&lt;p&gt;이유는 간단합니다.&lt;/p&gt;
&lt;p&gt;첫째, 사이트가 훨씬 신뢰 있어 보입니다.&lt;br&gt;둘째, 나중에 호스팅을 바꿔도 도메인은 계속 유지할 수 있습니다.&lt;br&gt;셋째, 애드센스 심사에서도 내 사이트를 내가 운영한다는 인상을 주기 좋습니다.&lt;/p&gt;
&lt;p&gt;도메인은 보통 &lt;code&gt;.com&lt;/code&gt;, &lt;code&gt;.kr&lt;/code&gt;, &lt;code&gt;.co.kr&lt;/code&gt; 정도가 가장 무난합니다.&lt;br&gt;너무 길거나 의미 없는 문자열보다,&lt;br&gt;짧고 기억하기 쉬운 이름이 좋습니다.&lt;/p&gt;
&lt;p&gt;예를 들면 이런 식입니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;devnote.kr&lt;/li&gt;
&lt;li&gt;leeweb.kr&lt;/li&gt;
&lt;li&gt;mydevlog.com&lt;/li&gt;
&lt;li&gt;simplehost.kr&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;애드센스 승인용 사이트 구조는 이렇게 가는 것이 좋다&lt;/h2&gt;
&lt;p&gt;무료 호스팅에 도메인만 연결했다고 끝이 아닙니다.&lt;br&gt;실제로 승인 가능성을 높이려면 사이트 구조가 단정해야 합니다.&lt;/p&gt;
&lt;p&gt;추천하는 기본 구조는 아래와 같습니다.&lt;/p&gt;
&lt;h3&gt;필수 페이지&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;홈&lt;/li&gt;
&lt;li&gt;소개&lt;/li&gt;
&lt;li&gt;문의&lt;/li&gt;
&lt;li&gt;개인정보처리방침&lt;/li&gt;
&lt;li&gt;카테고리 목록&lt;/li&gt;
&lt;li&gt;글 상세 페이지&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;글 개수&lt;/h3&gt;
&lt;p&gt;개인적으로는 최소 15개 이상,&lt;br&gt;가능하면 20개 이상을 추천드립니다.&lt;/p&gt;
&lt;h3&gt;글 길이&lt;/h3&gt;
&lt;p&gt;짧은 글 여러 개보다,&lt;br&gt;주제가 분명하고 내용이 충분한 글이 더 좋습니다.&lt;/p&gt;
&lt;h3&gt;글 주제 통일성&lt;/h3&gt;
&lt;p&gt;개발 블로그라면 개발 위주,&lt;br&gt;육아 블로그라면 육아 위주처럼&lt;br&gt;&lt;strong&gt;사이트 전체 방향성이 어느 정도 일관된 편이 좋습니다.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;실제로 추천하는 운영 전략&lt;/h2&gt;
&lt;p&gt;제가 무료 호스팅으로 애드센스 승인을 노린다면 아래 순서로 진행할 것 같습니다.&lt;/p&gt;
&lt;h3&gt;1단계. 도메인 먼저 구매&lt;/h3&gt;
&lt;p&gt;도메인은 초반에 미리 구매해두는 것이 좋습니다.&lt;br&gt;브랜드를 먼저 잡는 느낌으로 가는 것이 편합니다.&lt;/p&gt;
&lt;h3&gt;2단계. 호스팅 선택&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;콘텐츠형이면 Vercel&lt;/li&gt;
&lt;li&gt;서비스 확장형이면 Render&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;3단계. 기본 페이지 구성&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;소개&lt;/li&gt;
&lt;li&gt;문의&lt;/li&gt;
&lt;li&gt;개인정보처리방침&lt;/li&gt;
&lt;li&gt;카테고리 메뉴&lt;/li&gt;
&lt;li&gt;메인 홈&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;4단계. 글 15~20개 이상 작성&lt;/h3&gt;
&lt;p&gt;이때 중요한 건 양보다도 품질입니다.&lt;br&gt;너무 AI 티가 나는 말투보다는, 실제 경험이 묻어나는 문장으로 쓰는 것이 좋습니다.&lt;/p&gt;
&lt;h3&gt;5단계. 모바일 화면 점검&lt;/h3&gt;
&lt;p&gt;데스크톱에서만 예쁘고 모바일에서 깨지면 체감상 완성도가 많이 떨어집니다.&lt;/p&gt;
&lt;h3&gt;6단계. 애드센스 신청&lt;/h3&gt;
&lt;p&gt;구조와 글이 어느 정도 쌓였을 때 신청하는 것이 좋습니다.&lt;/p&gt;
&lt;h2&gt;무료 호스팅으로 시작할 때 자주 하는 실수&lt;/h2&gt;
&lt;p&gt;무료 호스팅으로 시작하는 분들이 자주 놓치는 부분도 있습니다.&lt;/p&gt;
&lt;h3&gt;1. 기본 제공 주소만 사용&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;onrender.com&lt;/code&gt;, &lt;code&gt;vercel.app&lt;/code&gt; 주소로만 운영하면 완성도가 떨어져 보일 수 있습니다.&lt;/p&gt;
&lt;h3&gt;2. 글이 너무 적음&lt;/h3&gt;
&lt;p&gt;5개 정도 올리고 승인 신청하면 통과 확률이 낮아질 수 있습니다.&lt;/p&gt;
&lt;h3&gt;3. 소개/정책 페이지가 없음&lt;/h3&gt;
&lt;p&gt;아무 설명 없는 사이트는 신뢰도가 부족해 보입니다.&lt;/p&gt;
&lt;h3&gt;4. 디자인보다 구조가 더 중요한데 반대로 감&lt;/h3&gt;
&lt;p&gt;예쁜 화면만 신경 쓰고, 정작 메뉴/카테고리/페이지 연결이 어색한 경우가 많습니다.&lt;/p&gt;
&lt;h3&gt;5. Render 무료 sleep 특성을 모르고 운영&lt;/h3&gt;
&lt;p&gt;승인 심사나 외부 유입 시 첫 접속 반응이 느려질 수 있다는 점은 꼭 알고 있어야 합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;최종 결론&lt;/h2&gt;
&lt;p&gt;무료 호스팅으로 애드센스 승인을 받는 것은 충분히 가능합니다.&lt;br&gt;다만 핵심은 “무료냐 유료냐”가 아니라,&lt;br&gt;&lt;strong&gt;내 사이트가 얼마나 신뢰 있고 정돈되어 보이느냐&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;p&gt;정리하면 이렇습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;승인 자체가 우선이면 Vercel 쪽이 조금 더 편한 선택&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;향후 기능 확장까지 생각하면 Render가 더 매력적&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;둘 중 무엇을 쓰든 자체 도메인은 거의 필수&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;기본 페이지 + 원본 글 + 모바일 최적화가 중요&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;처음 시작할 때는 완벽한 구조보다&lt;br&gt;&lt;strong&gt;승인 가능한 최소한의 안정적인 구조&lt;/strong&gt;를 먼저 만드는 것이 훨씬 현실적입니다.&lt;/p&gt;
&lt;p&gt;무료 호스팅도 잘만 쓰면 충분히 좋은 출발점이 됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;한 줄 요약&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;무료 호스팅으로도 애드센스 승인은 가능하지만, 승인을 좌우하는 것은 결국 도메인, 구조, 콘텐츠 품질입니다.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;</description>
      <category>개발/web, html5,jsp</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/727</guid>
      <comments>https://lee-mandu.tistory.com/727#entry727comment</comments>
      <pubDate>Sat, 11 Apr 2026 12:14:19 +0900</pubDate>
    </item>
    <item>
      <title>주식 추천보다 중요한 것: 내가 만든 자동 분석 시스템 공개</title>
      <link>https://lee-mandu.tistory.com/729</link>
      <description>&lt;h1&gt;  주식 추천보다 중요한 것: 내가 만든 자동 분석 시스템 공개&lt;/h1&gt;
&lt;p&gt;주식 투자를 하다 보면 누구나 한 번쯤 이런 생각을 합니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“이 종목… 왜 지금 추천된 거지?”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;좋아 보이는 종목을 보여주는 서비스는 많습니다.&lt;br&gt;하지만 실제로 중요한 것은 단 하나입니다.&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;그 추천이 왜 나왔는지 설명할 수 있는가&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;저는 이 부분이 늘 부족하다고 느꼈습니다.&lt;br&gt;그래서 단순 추천기가 아니라,&lt;br&gt;&lt;strong&gt;“운영 기준이 남는 주식 분석 시스템”&lt;/strong&gt;을 직접 만들게 되었습니다.&lt;/p&gt;
&lt;p&gt;이 글에서는&lt;br&gt;제가 만든 &lt;strong&gt;주식 자동 분석 시스템의 구조, 운영 방식, 그리고 핵심 철학&lt;/strong&gt;을 모두 공개합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  이 시스템의 핵심: 추천이 아니라 “운영 기준”&lt;/h1&gt;
&lt;p&gt;일반적인 주식 추천 서비스는 이런 구조입니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;종목 몇 개 추천&lt;/li&gt;
&lt;li&gt;상승 가능성 설명&lt;/li&gt;
&lt;li&gt;끝&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;하지만 저는 다르게 접근했습니다.&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;“이 판단을 내일도 반복할 수 있는가?”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;그래서 시스템을 만들 때 아래를 가장 중요하게 봤습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;언제 기준으로 계산된 데이터인가&lt;/li&gt;
&lt;li&gt;점수는 왜 높은가&lt;/li&gt;
&lt;li&gt;리스크는 어떻게 반영되는가&lt;/li&gt;
&lt;li&gt;시장 상황이 바뀌면 어떻게 대응하는가&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이 시스템은&lt;br&gt;단순 추천이 아니라 &lt;strong&gt;“운영 가능한 구조”&lt;/strong&gt;를 목표로 설계되었습니다. &lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;⏱️ 하루 2번 시장을 다시 보는 시스템&lt;/h1&gt;
&lt;p&gt;이 시스템의 가장 큰 특징은&lt;br&gt;  &lt;strong&gt;하루에 2번 분석을 수행한다는 점입니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  1. 16:00 종가 기준 정식 분석&lt;/h2&gt;
&lt;p&gt;주식 시장 마감 이후&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;종가 데이터 반영&lt;/li&gt;
&lt;li&gt;종목 점수 재계산&lt;/li&gt;
&lt;li&gt;랭킹 재정렬&lt;/li&gt;
&lt;li&gt;추천 리스트 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  하루 운영의 기준은 &lt;strong&gt;무조건 종가 기준&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;이 시간에 생성되는 데이터가&lt;br&gt;&lt;strong&gt;가장 신뢰도 높은 기준 데이터&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  2. 12:00 장중 재검토&lt;/h2&gt;
&lt;p&gt;하지만 종가만 보면 놓치는 것이 있습니다.&lt;/p&gt;
&lt;p&gt;그래서 시스템은&lt;br&gt;  &lt;strong&gt;장중 흐름을 한 번 더 체크합니다&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;이때 확인하는 것:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;오전 흐름이 예상과 다른가&lt;/li&gt;
&lt;li&gt;종목 체력이 유지되는가&lt;/li&gt;
&lt;li&gt;과열 신호 존재 여부&lt;/li&gt;
&lt;li&gt;리스크 증가 여부&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  즉, 12시는 “판단 검증 단계”입니다&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  점수보다 중요한 것: 해석&lt;/h1&gt;
&lt;p&gt;많은 시스템이 “점수”만 보여줍니다.&lt;/p&gt;
&lt;p&gt;하지만 실제 투자에서는 이런 상황이 발생합니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;점수는 높은데 위험이 큼&lt;/li&gt;
&lt;li&gt;기대수익은 높은데 확률이 낮음&lt;/li&gt;
&lt;li&gt;종가 기준 OK, 장중은 위험&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;그래서 이 시스템은 단순 점수가 아니라&lt;br&gt;다음 요소를 &lt;strong&gt;동시에 분석&lt;/strong&gt;합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  핵심 평가 요소&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Return (기대수익)&lt;/li&gt;
&lt;li&gt;Probability (상승 확률)&lt;/li&gt;
&lt;li&gt;Technical (기술적 흐름)&lt;/li&gt;
&lt;li&gt;Quality (재무 안정성)&lt;/li&gt;
&lt;li&gt;Risk (리스크)&lt;/li&gt;
&lt;li&gt;Confidence (신뢰도)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  핵심은 이것입니다:&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“좋아 보이는 종목”이 아니라&lt;br&gt;&lt;strong&gt;“버틸 수 있는 종목”을 찾는다&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h1&gt;⚠️ 상위 종목 ≠ 매수 종목&lt;/h1&gt;
&lt;p&gt;이건 매우 중요한 포인트입니다.&lt;/p&gt;
&lt;p&gt;  랭킹이 높다고 바로 매수하면 안 됩니다&lt;/p&gt;
&lt;p&gt;그래서 시스템은 종목 상태를 이렇게 구분합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  종목 상태 분류&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;BUY_ALLOWED&lt;/strong&gt; → 매수 가능&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WATCH&lt;/strong&gt; → 관찰 필요&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;BLOCK&lt;/strong&gt; → 매수 금지&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;이렇게 나누는 이유:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;시장 상황 반영&lt;/li&gt;
&lt;li&gt;리스크 필터 적용&lt;/li&gt;
&lt;li&gt;포트폴리오 안정성 유지&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  실제 투자에서는&lt;br&gt;&lt;strong&gt;“좋은 종목”과 “지금 사도 되는 종목”은 다릅니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  왜 Confidence(신뢰도)가 중요한가&lt;/h1&gt;
&lt;p&gt;많은 사람들이 기대수익만 봅니다.&lt;/p&gt;
&lt;p&gt;하지만 현실에서는 이런 경우가 더 많습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;기대수익 ↑ / 신뢰도 ↓&lt;/li&gt;
&lt;li&gt;점수 ↑ / 재무 품질 ↓&lt;/li&gt;
&lt;li&gt;상승 가능성 ↑ / 낙폭 위험 ↑&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;그래서 이 시스템은&lt;br&gt;  &lt;strong&gt;Confidence를 핵심 지표로 사용합니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  실제 판단 기준&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;수익 가능성&lt;/li&gt;
&lt;li&gt;하락 위험&lt;/li&gt;
&lt;li&gt;데이터 신뢰성&lt;/li&gt;
&lt;li&gt;시장 상태&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  이걸 종합해서&lt;br&gt;&lt;strong&gt;“지금 들어가도 되는지” 판단합니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  이 시스템이 계속 검증되는 이유&lt;/h1&gt;
&lt;p&gt;이 시스템은 한 번 만들고 끝이 아닙니다.&lt;/p&gt;
&lt;p&gt;  계속 “검증”합니다&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  내부 검증 항목&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Top20 종목 안정성&lt;/li&gt;
&lt;li&gt;점수 재현성&lt;/li&gt;
&lt;li&gt;리스크 반영 적절성&lt;/li&gt;
&lt;li&gt;품질 낮은 종목 필터링&lt;/li&gt;
&lt;li&gt;Shadow 테스트 (실험 모델)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  핵심 철학:&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“잘 맞는 시스템”이 아니라&lt;br&gt;&lt;strong&gt;“다시 검증 가능한 시스템”&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h1&gt;  이 시스템을 한 줄로 설명하면&lt;/h1&gt;
&lt;p&gt;  이 시스템은&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;종가 기준 분석 + 장중 검증 + 리스크 필터 + 신뢰도 평가까지 포함된 주식 운영 시스템입니다&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h2&gt;✔️ 핵심 요약&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;매일 16:00 종가 기준 정식 분석&lt;/li&gt;
&lt;li&gt;매일 12:00 장중 재검토&lt;/li&gt;
&lt;li&gt;점수 + 확률 + 리스크 + 품질 동시 분석&lt;/li&gt;
&lt;li&gt;랭킹과 매수 판단 분리&lt;/li&gt;
&lt;li&gt;Shadow 검증 시스템 운영&lt;/li&gt;
&lt;li&gt;데이터 기반 투자 구조&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1&gt;  앞으로의 방향&lt;/h1&gt;
&lt;p&gt;이 블로그에서는 앞으로 이런 내용을 다룹니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;실제 추천 종목 분석&lt;/li&gt;
&lt;li&gt;시스템 개선 과정&lt;/li&gt;
&lt;li&gt;실패 사례 공유&lt;/li&gt;
&lt;li&gt;리스크 관리 전략&lt;/li&gt;
&lt;li&gt;점수 계산 방식 공개&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  단순 추천이 아니라&lt;br&gt;&lt;strong&gt;“운영 기록”을 남기는 블로그&lt;/strong&gt;로 운영할 예정입니다&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  이런 분들에게 추천합니다&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;감으로 투자하다가 실패한 분&lt;/li&gt;
&lt;li&gt;근거 있는 투자 시스템이 필요한 분&lt;/li&gt;
&lt;li&gt;자동화된 주식 분석에 관심 있는 분&lt;/li&gt;
&lt;li&gt;퀀트 투자에 입문하고 싶은 분&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1&gt;  마무리&lt;/h1&gt;
&lt;p&gt;주식 시장에서 중요한 건&lt;br&gt;“무엇을 사느냐”보다&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;“왜 샀는지 설명할 수 있는가”&lt;/strong&gt;입니다&lt;/p&gt;
&lt;p&gt;이 시스템은&lt;br&gt;그 질문에 답하기 위해 만들어졌습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;시스템 입니다 ~!&lt;br&gt;데모버전이고 제가 만들고 있어요&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.leetrader.kr/&quot;&gt;https://www.leetrader.kr/&lt;/a&gt;&lt;/p&gt;</description>
      <category>일상/금융, 경제</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/729</guid>
      <comments>https://lee-mandu.tistory.com/729#entry729comment</comments>
      <pubDate>Fri, 10 Apr 2026 17:08:34 +0900</pubDate>
    </item>
    <item>
      <title>Render 웹 호스팅 방법 완벽 가이드 (무료부터 실전 운영까지)</title>
      <link>https://lee-mandu.tistory.com/726</link>
      <description>&lt;h1&gt;  Render 웹 호스팅 방법 완벽 가이드 (무료부터 실전 운영까지)&lt;/h1&gt;
&lt;p&gt;웹 서비스를 만들고 나면 반드시 고민하게 되는 것이 바로 &lt;strong&gt;호스팅&lt;/strong&gt;입니다.&lt;br&gt;요즘 개발자들 사이에서 많이 사용하는 플랫폼이 바로 Render 입니다.&lt;/p&gt;
&lt;p&gt;이 글에서는 &lt;strong&gt;Render를 이용한 웹 호스팅 방법&lt;/strong&gt;을&lt;br&gt;  가입부터 배포, DB 구성, 실전 운영까지 한 번에 정리합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  Render란 무엇인가?&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/nk9UxxKicptzyJH7OkqOw6FqU2Ubk3dapDYZV4r-w5iuD3VNGUxnnAsJfMPKA6QSAy5eC3nZwgEED43y_qcH2GIrJn1XHTMS8LPU5vSyR-uQ-jFQ_rP_jlbq0_a4Babfh1wAqj_slLSabQ0Qq4ww7iZsIwLoYmH1zu-kr_ZSjzvcsbihIdKeaJbvVCg8P5fW?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/qG9B1uznbzuk6UQ9Lz17PE8PmsIt2QrWv58GLG4roHO-FY6JTRToh5nbszGdmVyDybkif4d_c29muswW7oZIufn9TYNUt8OyNi5N3hM9T7l9AZJbPiryrvZl33tri-t9RysHKW0WFN_os79KyQ18FJppbqdOI5vT4c2uDmytw8sN4UurzgPhbrqh3CsDXb1z?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/lNILOn79G_tKQJURNO-m9K8fLplfVpTNvq3CMRncI-unw3zMFo5JtVxN-DqvCUKIZztGQnIU7gS_Rdn_l0r2fOY27TRex_PjT2dYWCYQIUhbSLFcghx2MbbovVdV7lpA2YOszRoMLkl2SsB5or00Eo-ow69JVh_JVSPxuTaNPvmTvf-6F196US2exJe0hLOd?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/pGc_EYtWDijTZ4XiLlGQyWlkM20AjvQuxroGcl4-A8GR83dLR8nhd2xiFwAswPDDD8jr6L1hV_Lb64wygKcW7yBaA2Z1JI0vG4SG-ojtVGlzcXO1jGKPONQ-Xhh9jdPf_P1j_YdirjwzG8l4XQnD23RzRIERTSz4fqY7VURQDRLj1jPkCJQL_84fNI5LLW4G?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/j9kkU1duaf2O0te5UAASLh4T40PlgziaK3-rB-iXRy_CEd20j3Ro5HbUpsm7H2TgJY868bZu5h7lOTaC8vHE4xdX3ABIGiN5jY9DVPDfunFvTmcsZYOIaTQbu8urI2Zc-BN79VzpzHy1HVPvz5uSTkxGi8kvPQZwi5N03m3ewn8bOAXcWeHL1CDZ6c4j6VJP?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/yG867P_QA6IY8AuKTQHsuB3EQhJsZ7sdJIyw9lEekU4wHIopvIj0yaO0yOeN1c2Mtzcvm7LfD0FhXkFhcx5WIFKNnhJxRXk_I3sgW8T6a3DBSt_wlQ59yFtpPcw6cOtQYqoR43HuGpR81uwQ9yr_qrz1bqjqE-T9l2HhkLaH9I0-n7TWBkQR-0Ducg6imFjD?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/cL9FRDiX7rdCGn0h2ljCzmPJr4z7ncBgf8HiVXKmyS2e3YjbSNVnVQhgW1mGg5X991nOkKugm6NfaahpghwKMsYw6tn09qAE_XzUUFpZfPOq090NvW3EQzzxRzajSlKoPiThi8Y4DaTevqfP2Zm9fYlGZYDjXynuzaPxVbTnPHGYXmXx4va9h8U0ZSheaf_S?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;Render는 &lt;strong&gt;코드를 자동으로 배포하고 서버를 운영해주는 클라우드 플랫폼&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;p&gt;쉽게 말하면&lt;br&gt;  “서버 세팅 없이 웹사이트를 바로 띄울 수 있는 서비스” 입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;✔ 주요 특징&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;GitHub 연동 자동 배포&lt;/li&gt;
&lt;li&gt;무료 플랜 제공&lt;/li&gt;
&lt;li&gt;Node.js / Python / Docker 지원&lt;/li&gt;
&lt;li&gt;HTTPS 자동 적용 (SSL 포함)&lt;/li&gt;
&lt;li&gt;서버 관리 불필요&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  개인 프로젝트 / 사이드 프로젝트에 최적화된 플랫폼입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  Render 웹 호스팅 구조 이해&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/Eb3rHvEk7cNw2MVbUSGj0pepmHfAZWSxdttFf8q2NtQmqFV7m0IPxxWMqV7OMpSbjfhXe5oih5ipyrFkvWCJIcHqPpbgrOcUsKrpolw8GUOgGEiLsYvJqgFfHdqxFx0GTYg4A9eVMJgngsLgXC8kIHJMDBmmRToZPwsj1tKfRGIPsB3doJgBqCHIKTdVhutS?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/TIXK-JXSwoAa3OSAVqGVvN77M097RlKeoWnmZdD917w5QWXdcFpaviIZ5fXRRpZOc_chATSkGQ5rlMO7Fzi8yfJIpDauU-P4fbxmDi9fThQ6sE7BLIELXZ6Nu7vUQ320j14PCyk6-iBBZ5T7aKAFAs-VnyKOB7gLb9JUalcjVGPKLJm39_EoAgkUYJktTBvb?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/0F9xo-RlI3pBW8g8Bk1s2wh6A3HtFBKt_LCjwnlYeYeaCV6VAzU_2fs_Zx-pqq2xe6R7a5M4iJ5uaXYazo2Vwo9-pvfSMQEU8szKPJFR2GCsK58PJmkiry4eCKQcegbOooUNLZRJhRrjfgQjB2bsmvGSfrsXptl-LUO50forqDfwSvSPEss5Em2RgvBImD1r?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/68CWR8vRmQB9OXcVlfs47n5XRMz7jSCreX6M0deO1QdYdDE6PXRagaeEACqtrb5aWCnmLAz1qLWQTxz1v6rSn2LwtbZKdCpfhjjchEAkiaTd4AqB2Disam_P0v93whDnIzeDQQgG0HV9kSh38ErMroipASQUpGJF37yNw0xL0suAzpSjDsMMHJQI_fcG4aQ5?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/H7O_h7kfgVQQoumdEsveHFyeoEwFg55D8DYsRAFpixDEDva9beKtIZHjPCqE-NYFg8EVqeM4TcXdoAVla8EnFnRIWrk_QOAjcq2dF9XW0sLLk2ZCo1VQk6Xby4M2CWV0VEugYVuJ6qK7GO_6fJKxN6Gv34ZHmt-b9Zm2WTeyFgKv4qIw9-8imAI2iRSaO1v6?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/w0mbIWK3DaHYlKSWtQAizPKhDXZjEikyZl7q-ZDx4q5nH_ZUb2CW4ULW2KIAoqDLFaak-lxWuG5GcsS88WPHysZ5o7G2hl5vw1UPzLgD9VEmjdOFUB2JrkgMP8aTaQSHSSWZCtVSr_D8QUv1upOE9eWHD-A5zI3r7FRd2r2VS9C6OjxENJmil5qfOVWJtE6w?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;Render의 구조는 매우 단순합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;GitHub → Render → 웹 서비스 실행&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;  코드만 올리면 자동으로 서버가 생성되고 실행됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  Render 회원가입 및 초기 설정&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/MJae7heKhl3G6Xx-En9RoCPKO5atsPvm1u6gKIqRTCVG1-ihpXb_Wmim-LliVcdZXGzVYSSIOw839j2phrLXcPzPPWosQA02sXm9VcVQuCF1193L5G8XbYrd7CObX9xia8qlx-48s8pl4PDa5IXZULAGucJMEDlhZyl2Z12L6Xl3p8VN5ohIykiGe4WU7DMG?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/eZM3TlDqvZCObZHsaG52NcMCDC37jBp1oLnyrrw9XbcFuVFhrV6DOHID9rupbycIFNBB7GyGUEmHWlCjiBbVGI-KohaaEWSzWQG45g2-pxb2lJv99lpjQiQyTR3eGIM3xk8JIQwWn0hbxD5C8NrVfN_ECXp9dn0MkR_5SjsHFjdlM_DwrE__gBSjWPA79Rpq?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/nk9UxxKicptzyJH7OkqOw6FqU2Ubk3dapDYZV4r-w5iuD3VNGUxnnAsJfMPKA6QSAy5eC3nZwgEED43y_qcH2GIrJn1XHTMS8LPU5vSyR-uQ-jFQ_rP_jlbq0_a4Babfh1wAqj_slLSabQ0Qq4ww7iZsIwLoYmH1zu-kr_ZSjzvcsbihIdKeaJbvVCg8P5fW?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/W9_v0xAc7LFc0enMDEwidgqmsIU0cQ3f2kqZMzpQwOOTHqGwX2VR95S6wnQqvpf1MmBdM7fvHP_1dY5geP37PMpRa9lWcR2WhJtASUArzxCDHn8xWMtp0i_k108avA0J2JqF4tH6tApV3pMIMpGt1bZikoXvQUOUrjlt6H-QN54MjachSy2IhIwXMI4ySyiY?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/J5Nu6f_ra8c9WpH_lF23BpJgLrpZ3N2dcCyjkD2KHtVnx7XnK5-uA7ddcWZ6Yhj2L2pP8Stym51aJwar8S5KeH4n8mujUclqZ-CvB_ZoSWFVRcjn1h6W7wmcBup1LqtjDrdhbFIegBcxF57lco0D-qHUX6knt-NboPdVt2cow2jJRktnlCa7LaeRQgQbUPd1?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/8JeW54JHJBoGTqI0hCRrjDotMJJuS2jub5WCf4mfhpe2z8kMqIi4FaomQ2EV-QgOi9H2S0sqRtZP0OcMjzakcCVS-I5vwVzIapBxl9QThrEF7YvjGH0S_R_A1nC7aqhDxlROggr8cg0sOi1qXTSP18kpXWzIMvXqWMtT0U9I6IHpraUo74jfG9d6EyAMM8Mf?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;h3&gt;1️⃣ 회원가입&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Render 공식 사이트 접속&lt;/li&gt;
&lt;li&gt;GitHub 계정으로 로그인&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  GitHub 연동은 필수입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;2️⃣ 저장소 연결&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;배포할 Repository 선택&lt;/li&gt;
&lt;li&gt;자동 배포 설정 활성화&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  코드 push 시 자동 배포됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  웹 서비스 생성 방법 (핵심)&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/uAd0mRT8scvTVR9Co06_XJcnBS6ScZHio84EbqFYgD26xqbiEN3-eW9FIQIetILyGVCrnCdW0rZtJYV1OeQDDZX-8uNNIETwqGknPF6hm_ms1be37gH1bGD5_IYPs62bNrazOaBDTvaahC1KrTyGz69lL55RFmeHZlwSx5E7kzjBUNqNWt1wUjIB3b7zkLFw?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/j9kkU1duaf2O0te5UAASLh4T40PlgziaK3-rB-iXRy_CEd20j3Ro5HbUpsm7H2TgJY868bZu5h7lOTaC8vHE4xdX3ABIGiN5jY9DVPDfunFvTmcsZYOIaTQbu8urI2Zc-BN79VzpzHy1HVPvz5uSTkxGi8kvPQZwi5N03m3ewn8bOAXcWeHL1CDZ6c4j6VJP?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/gpQVVbw4z8WCujbonnY_D9D-ZuHr_j1PJdm0Odsv276M0nBjFhjsFNuOBKnQXFaHlUOymsfmtuR4pkdExx4becH5vQ-uV_uF7nf_6hfB-2L7edZmE5gYieRy5-cgbPhJEbc8sjzPnyTuAhvexysJfEA-SCBRGn477qv9fk7mr7n4aOXN5rpmAqeV_jkDy0wu?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/-hFxEofkztXiM7uazFEuLVtm7W7YCmtpnPJ_jfwHOXtBQwfUXisDo1lGBvg8XHQFji9M9kUX_3a-8QHJSOF6wuHdAzKzl4TLM2IXL4R8C_tFmr7JM38Ost6DbQZoWoHCPBRsaj0NT9o463Ybjk3X81tNnoQl0zU72sa8WoUDO1NLRI4-1B-lsU8QtPZx_Q6-?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/881jhK94kxMNHp383Jo3Fw-s1K32XgT8WJZkXPNwvo-M8A8XNN3EWqxSmabvJa5dgVySu1rSnvunal1twHZmQ6MhOuYTIFJ98yhrSRYJDVOZDy-AyVYu5U73xRVbK24oYtZpQJo321f30kBhGcO_WvgvOrwRaksB_3KSamGONPcDe4_f8sGyzPILK5Aos4bS?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/ie9FZq2IDMTRT8BREree4A7TZ82AoglFb2fh1to5rXeu_cP9JMgXDUvE4W0fXzLavqpaMsf3SJTp8-Ldv55yx3PfHfb9iD_Dw3FFkPEm1LznHXdHQ-QyRJ5B8qev1J3nOKbyE8BLslDjBR9mYMTwLmk0MK0g0CdMgS9cUhz2bq1Pwgt9BUF_3L_UMrOisx0v?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/phXw9CCWoLMY-ZJccbjuAKPIOnXj3MRJtkFVfA-ULWX7HuE9Ycls9slczBgO7hsE0dwLUgtTmu2Hz5TO5kyFLu69cK_fZ4XLJLvSSuu0qgCHVpRb6TFbwoXBMiz_fyQkVsB-Eo9T3KoovxdaC5blelIkiFY4o5kxA6uyAk95Hb69_hBrLxCynyLd3WzPGBi6?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;h3&gt;1️⃣ New → Web Service 선택&lt;/h3&gt;
&lt;h3&gt;2️⃣ GitHub Repository 연결&lt;/h3&gt;
&lt;hr&gt;
&lt;h3&gt;3️⃣ 주요 설정 입력&lt;/h3&gt;
&lt;h4&gt;✔ Build Command&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npm install&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;✔ Start Command&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;node index.js&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  Express 서버 기준입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  Node.js 서버 예제 코드&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;const express = require(&amp;quot;express&amp;quot;);
const app = express();

const PORT = process.env.PORT || 3000;

app.get(&amp;quot;/&amp;quot;, (req, res) =&amp;gt; {
  res.send(&amp;quot;Hello Render!&amp;quot;);
});

app.listen(PORT, () =&amp;gt; {
  console.log(`Server running on port ${PORT}`);
});&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  반드시 &lt;code&gt;process.env.PORT&lt;/code&gt; 사용해야 합니다. (중요)&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  무료 플랜 사용 시 주의사항&lt;/h2&gt;
&lt;h3&gt;✔ 장점&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;완전 무료&lt;/li&gt;
&lt;li&gt;HTTPS 자동 적용&lt;/li&gt;
&lt;li&gt;빠른 배포 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;❗ 단점 (핵심)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;15분 무접속 시 서버 Sleep&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;첫 접속 시 로딩 지연 발생&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  애드센스 / 실서비스 운영 시 영향 있음&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  Render + DB 구성 방법&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/lsaPx9DKOzqeQqHkwO6v1DaNMphs4rjqbz0DzPleZ-vQUYx97qUUaVYXP8cqnoWvKzBPcmHv-f3LI536nK5tX2Aapt6jeVSUt9Jxdi1xE2HzAFGmLqL5N29xSsoXXVrM4Xci3pWYz4FMQ4vumwtGmnCN4E-oyCMszZ630lyTo5kgF0MaPm5ROnbFyXmQfOYX?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/WeOvYCrwTor-rdlyK8J7Nkrjs9-JQD25I4Q6ClkQ4c_-pY5r88Dqdw1auJOvDvuAvdz8xWYUw84JJ-qztNyYJLMhvhR0Sh8YxAwPN5715iAAfWUxf3JCl0Qqb_QPm6qw_WMrPBd-w87UXHWFCpDfTJFyrBOoLujyD3c3PTRslryhGqIseubh-kYnaMjKZsB7?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/SgmEC_s4Su1IYrwfor-qGc2jxHqTO5zNlhc8pEPQTKa8mQo8-MW8p1nQEgEtxt45YAZWGpSgtNTupCqp356oB85BuCQDoELBaa21fxCKILdsbrfzZYMC0h6w7-ANjtQT0q1IDGPO1L9iuA1RWzvf5h40iN-9aJqDCoJccW4Osk719PDbJaNLF2MRAqbX1I5w?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/gS0Uc4jSnEHC68dHaSON-UkM9WnloOawS9dOCXL-JOKM2wXiZSAmQxNC1i-bxlscZg5tymKsb6_aNP11PD-9r81MZFXvgqGl3ekL6fV0_21yFISFInM3bcaBDyu8yfenNWNnwtMsLwivTTim7VM_zL4XR5THBHPJT3oFuQUXhRQngI_sMqPh6PGvuWlI9_hx?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/6C5N4kiBu1SUOv-uT06OgBvyNjAVTUDBNVBxTY8TZKtNvxH3ACxYO_zhV8tWTC6oHVCY7NxGXYBXWH-Z2PI1xggoa-3FgXU963yrQ3AcubVzZueKi7YQMJOVLwlGaamp5JKv7ps3FGcjq7PXDXANZDrZEuzndS0zJ_TmbpAzUWfgT0B8QzGNz5R_YzAp6Bws?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/g5_aSDrDy1qnRttzm2LsOfYOa4IiiY68LNyMFthkSIRycuwtlhPKnny6Ad6gfU3ZUWL7oBMtxVnGhFnxOkEGspzXzRPK2I3BdbzeeiI6WAu3Nq4iKfzEfl_RjLvtFguIk-GG9g3-wfkR7yW3bRwStVMvrBeFEzUMNMcSv_JFJ-WxLT87HbNDBokVO5F8sag1?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;h3&gt;방법 1️⃣ Render DB 사용&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;PostgreSQL 제공&lt;/li&gt;
&lt;li&gt;설정 간편&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;방법 2️⃣ 외부 DB (추천)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Supabase&lt;/li&gt;
&lt;li&gt;MongoDB Atlas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  이유&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;무료 용량 활용 가능&lt;/li&gt;
&lt;li&gt;확장성 좋음&lt;/li&gt;
&lt;li&gt;서비스 분리로 안정성 확보&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;  도메인 연결 방법&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/DfPePj2wq9lQamR_FATgX--OLjlBQ2piIImjduTvL_VJJxekOBN6XW5uyoRwsfCa7yhYiSbRuboRpUgTde7PBw25lP-Gnq62TNFKTfww9AXmukEo73vhWHnImB00cn8YP55Fb3v3HuYf57s4EZgauvxHrQaUutc4DYFqVQaOdX-8-HDLalQpQREp2CzwnmLh?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/q8aRcvylCuZKSUD8I1QqjoRWQrq2kVA86lD-GlTUj7ioad3nMVyOa-39Aupljf78LlJ5cMKZ23vOMGRpIucRWBIxvrsrGYI2pDWOHbDxLXnG_JVgZRnr2MEEzQ5y-Z_psTaodVePDtF7hjoz0YSqm-WBkAE3LSgAQHAeTcxmhMuaAIDvllZ7vGcXmKwpyirn?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/W4i-7pZJVOz5UsOIF7PKc9rdqDV-M_QMj96xamfVGzRrhmW7ddNm0LnGCfd2qF6-tctHTK-4mptwVMW9yp3RhWaKi0V87ISFBwkSjZ0In9u4hf_NXdIhiOaoKP4pVDPputPty6ayteZn72lFGH2UeCTJw8g9x_LHN5JhjTnXbI8hv53gqP-RkBJYVyLnYp27?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/x-oAqeEOmRjA-x7U1zID-AZysFXWOxHLHGeaYHxNLfc5kaWJgY6HEhU0_8eJ5QdGBnUmmKgdNq540knCbN_lrJfMQdoX_5GDF6PV0BGq0BeYt2lHYB2n3NIXkqywMaL-codg2pk4wdyol49VIu2NSqw2fOrGp5dDzcfY1simE6wPcbPN53sksp7mrFn8eLg1?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/QPH-oY89t9QiMj8aCVKwki8y8GhT_59A6wquOoXuJre0Rw-8YOVsT6_M0RKhIoW8jIC6MpTvgAI7fTbOCGxArnMNh4ddSn7tekURcRvbaZpeiMcuvPRnRX110k38XalZJ38UvuRG_Q6xZjPx0QyZhmi-hrsy16Glj10HbcPLgLFaxIjRPyAbtkZATZbsQUEH?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.openai.com/static-rsc-4/Y1hjWZ8CwdUA17B4CwQRw8hnS7vJSg4Te5FFMvQNeFE770raKWIwFT6mvcScA7mWxWeBrN7lvTuSd0W7vtRBj1_0lh_Cj-33SawwzCuq40SHSELWx0V32-_MRSij7iaE1zIEvX0wmzP-EBG3dJ2Qg2ORDlIcDWDuIkLY5uJTbByWjLSYqazyH0mAzwdnqqc7?purpose=fullsize&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;h3&gt;✔ 진행 순서&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;도메인 구매 (가비아 등)&lt;/li&gt;
&lt;li&gt;Render → Custom Domain 추가&lt;/li&gt;
&lt;li&gt;DNS 설정 (A / CNAME)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;  몇 분 내 HTTPS 자동 적용됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  실전 운영 팁 (개발자 기준)&lt;/h2&gt;
&lt;h3&gt;✔ 1. 무료 → 유료 전환 기준&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;하루 방문자 100명 이상&lt;/li&gt;
&lt;li&gt;응답속도가 중요해질 때&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;✔ 2. 서버 Sleep 방지 방법&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;유료 플랜 사용 (가장 확실)&lt;/li&gt;
&lt;li&gt;외부 ping 서비스 활용 (비추천)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;✔ 3. 로그 확인 습관&lt;/h3&gt;
&lt;p&gt;  배포 실패 원인의 90%는 로그에 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  Render vs 다른 호스팅 비교&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;Render&lt;/th&gt;
&lt;th&gt;AWS&lt;/th&gt;
&lt;th&gt;Vercel&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;난이도&lt;/td&gt;
&lt;td&gt;쉬움&lt;/td&gt;
&lt;td&gt;어려움&lt;/td&gt;
&lt;td&gt;쉬움&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;무료 플랜&lt;/td&gt;
&lt;td&gt;있음&lt;/td&gt;
&lt;td&gt;제한적&lt;/td&gt;
&lt;td&gt;있음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;백엔드 지원&lt;/td&gt;
&lt;td&gt;가능&lt;/td&gt;
&lt;td&gt;가능&lt;/td&gt;
&lt;td&gt;제한적&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;추천 대상&lt;/td&gt;
&lt;td&gt;개인/스타트업&lt;/td&gt;
&lt;td&gt;기업&lt;/td&gt;
&lt;td&gt;프론트 중심&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2&gt;  결론 (현실적인 추천)&lt;/h2&gt;
&lt;p&gt;  Render는 이런 분들에게 추천합니다&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;처음 웹 서비스를 배포하는 개발자&lt;/li&gt;
&lt;li&gt;사이드 프로젝트 운영&lt;/li&gt;
&lt;li&gt;빠르게 MVP 만들고 싶은 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  하지만 아래 상황이라면 고민 필요&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;트래픽 증가&lt;/li&gt;
&lt;li&gt;수익화 (애드센스)&lt;/li&gt;
&lt;li&gt;안정적인 서비스 운영 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  이 경우 AWS 또는 유료 플랜 전환 고려&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  한줄 정리&lt;/h2&gt;
&lt;p&gt;  &lt;strong&gt;Render는 가장 빠르게 서비스를 시작할 수 있는 최고의 선택입니다.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;</description>
      <category>개발/web, html5,jsp</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/726</guid>
      <comments>https://lee-mandu.tistory.com/726#entry726comment</comments>
      <pubDate>Fri, 10 Apr 2026 10:59:17 +0900</pubDate>
    </item>
    <item>
      <title>DB형 vs DC형 퇴직금 비교 (20년 후 차이, 현실적으로 따져보자)</title>
      <link>https://lee-mandu.tistory.com/725</link>
      <description>&lt;h1&gt;  DB형 vs DC형 퇴직금 비교 (20년 후 차이, 현실적으로 따져보자)&lt;/h1&gt;
&lt;p&gt;직장 다니면서 한 번쯤 고민합니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“퇴직금… DB형이 나을까? DC형이 나을까?”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;특히 요즘처럼 투자 관심이 높아지면&lt;br&gt;DC형으로 바꾸고 싶은 생각이 계속 들죠.&lt;/p&gt;
&lt;p&gt;저도 같은 고민을 했고, 결론은 단순했습니다.&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;“확정 안정 vs 투자 수익”의 선택&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;오늘은 실무적으로&lt;br&gt;&lt;strong&gt;DB형 vs DC형 퇴직금 차이&lt;/strong&gt;를 현실 기준으로 정리해보겠습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  1. DB형 vs DC형 한 줄 정리&lt;/h1&gt;
&lt;h2&gt;✔ DB형 (확정급여형)&lt;/h2&gt;
&lt;p&gt;  &lt;strong&gt;퇴직금이 미리 정해져 있음&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;✔ DC형 (확정기여형)&lt;/h2&gt;
&lt;p&gt;  &lt;strong&gt;내가 굴린 만큼 퇴직금이 결정됨&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;  이 한 줄로 끝납니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  2. DB형 퇴직금 특징&lt;/h1&gt;
&lt;h2&gt;✔ 구조&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;회사가 운용&lt;/li&gt;
&lt;li&gt;퇴직 시 평균 임금 기준으로 계산&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 장점&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;안정적&lt;/li&gt;
&lt;li&gt;신경 쓸 필요 없음&lt;/li&gt;
&lt;li&gt;시장 영향 적음&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 단점&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;수익률 낮음&lt;/li&gt;
&lt;li&gt;물가 상승 반영 부족&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  쉽게 말하면&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;“안전하지만 크게 늘어나진 않는다”&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  3. DC형 퇴직금 특징&lt;/h1&gt;
&lt;h2&gt;✔ 구조&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;회사가 돈 넣어줌&lt;/li&gt;
&lt;li&gt;내가 직접 투자&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 장점&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;수익률 높을 가능성&lt;/li&gt;
&lt;li&gt;ETF / 펀드 투자 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 단점&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;손실 가능&lt;/li&gt;
&lt;li&gt;직접 관리 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  한 줄 요약&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;“잘하면 크게 먹고, 못하면 줄어든다”&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;⚖️ 4. 20년 기준 현실 비교&lt;/h1&gt;
&lt;p&gt;직장인 기준으로 가장 중요한 건 이겁니다.&lt;/p&gt;
&lt;p&gt;  “그래서 결국 얼마 차이 나는데?”&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 가정&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;연봉 상승: 연 3%&lt;/li&gt;
&lt;li&gt;투자 수익률: 연 5~6%&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 결과 (현실 기준)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;DB형 → 안정적으로 증가&lt;/li&gt;
&lt;li&gt;DC형 → 잘 운용하면 &lt;strong&gt;1.5~2배 차이 가능&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  핵심&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;복리 효과는 시간이 길수록 폭발합니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  5. 언제 DB형이 유리할까&lt;/h1&gt;
&lt;h2&gt;✔ 이런 경우&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;투자 잘 모른다&lt;/li&gt;
&lt;li&gt;안정이 최우선&lt;/li&gt;
&lt;li&gt;관리할 시간 없음&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  결론&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;그냥 DB형 유지가 낫습니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  6. 언제 DC형이 유리할까&lt;/h1&gt;
&lt;h2&gt;✔ 이런 경우&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;ETF 투자 가능&lt;/li&gt;
&lt;li&gt;장기 투자 마인드 있음&lt;/li&gt;
&lt;li&gt;변동성 견딜 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  결론&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;DC형이 훨씬 유리&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  7. 사람들이 많이 착각하는 포인트&lt;/h1&gt;
&lt;h2&gt;❌ 오해&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“DC형 하면 무조건 돈 번다”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;p&gt;  아닙니다&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;투자를 잘해야 이깁니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 현실&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;방치 → DB보다 못함&lt;/li&gt;
&lt;li&gt;잘 운용 → 크게 이김&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1&gt;  8. 실무 기준 추천 전략&lt;/h1&gt;
&lt;p&gt;가장 현실적인 방법입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 추천&lt;/h2&gt;
&lt;p&gt;  DC형 + ETF 장기 투자&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 예시&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;S&amp;amp;P500 ETF&lt;/li&gt;
&lt;li&gt;국내 지수 ETF&lt;/li&gt;
&lt;li&gt;배당 ETF&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  핵심&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;“절대 단타하지 말 것”&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;⏱️ 9. 지금 시장이 고민되는 이유&lt;/h1&gt;
&lt;p&gt;요즘 고민 많으실 겁니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;시장 많이 오른 상태&lt;/li&gt;
&lt;li&gt;투자 타이밍 부담&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  그래서 결론&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;분할 투자 + 장기 관점&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  현실 직장인 한 줄 정리&lt;/h1&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“DB형은 마음이 편하고, DC형은 미래가 커진다”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h1&gt;  결론&lt;/h1&gt;
&lt;p&gt;퇴직금은 선택이 아니라&lt;br&gt;  &lt;strong&gt;전략입니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 핵심 요약&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;DB형 → 안정&lt;/li&gt;
&lt;li&gt;DC형 → 성장&lt;/li&gt;
&lt;li&gt;장기 투자 가능하면 DC형&lt;/li&gt;
&lt;li&gt;아니면 DB형 유지&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  가장 중요한 건&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;“내 성향에 맞는 선택”&lt;/strong&gt;&lt;/p&gt;</description>
      <category>일상/금융, 경제</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/725</guid>
      <comments>https://lee-mandu.tistory.com/725#entry725comment</comments>
      <pubDate>Thu, 9 Apr 2026 09:33:50 +0900</pubDate>
    </item>
    <item>
      <title>아기 편식 해결 방법 (현실편)</title>
      <link>https://lee-mandu.tistory.com/724</link>
      <description>&lt;h1&gt;  아기 편식 해결 방법 (현실편)&lt;/h1&gt;
&lt;p&gt;&lt;em&gt;“안 먹는 아이, 진짜 이렇게 바뀝니다”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;처음엔 단순합니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“채소 좀 안 먹는 거겠지…”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;그런데 어느 순간&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;채소 ❌&lt;/li&gt;
&lt;li&gt;고기 ❌&lt;/li&gt;
&lt;li&gt;밥 ❌&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  먹는 건 딱 몇 개만&lt;/p&gt;
&lt;p&gt;그때부터 부모는 흔들립니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“이대로 괜찮은 건가?”&lt;br&gt;“영양 부족 아닌가?”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;저도 똑같이 겪었습니다.&lt;br&gt;그래서 결론부터 말하면&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;편식은 ‘고치는 것’보다 ‘관리하는 것’에 가깝습니다&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;오늘은 실제 경험 기준&lt;br&gt;&lt;strong&gt;아기 편식 해결 방법 (현실편)&lt;/strong&gt; 정리해보겠습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  1. 편식은 “문제”가 아니라 “과정”이다&lt;/h1&gt;
&lt;p&gt;많은 부모가 여기서 무너집니다.&lt;/p&gt;
&lt;p&gt;  “왜 이렇게 안 먹지…”&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 현실&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;대부분 아이는 편식합니다&lt;/li&gt;
&lt;li&gt;특히 두돌 전후 심해짐&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  이유&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;자기 의지 발달&lt;/li&gt;
&lt;li&gt;음식 선택 욕구&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  결론&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;정상이니 너무 불안해하지 않아도 됩니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt; ️ 2. 억지로 먹이면 더 심해진다&lt;/h1&gt;
&lt;p&gt;이건 100%입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;❌ 상황&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;입에 억지로 넣기&lt;/li&gt;
&lt;li&gt;혼내면서 먹이기&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  결과&lt;/p&gt;
&lt;p&gt;  음식 = 스트레스&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 해결&lt;/h2&gt;
&lt;p&gt;  먹기 싫으면 안 먹게 둔다&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;  처음엔 불안하지만&lt;br&gt;  &lt;strong&gt;이게 장기적으로 훨씬 효과적&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  3. “먹는 음식”을 중심으로 확장하라&lt;/h1&gt;
&lt;p&gt;안 먹는 걸 계속 주면 싸움만 납니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 방법&lt;/h2&gt;
&lt;p&gt;  아이가 먹는 음식 기준으로 확장&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 예시&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;밥은 먹는다 → 볶음밥&lt;/li&gt;
&lt;li&gt;계란은 먹는다 → 계란 + 채소&lt;/li&gt;
&lt;li&gt;국수 좋아한다 → 채소 섞기&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  핵심&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;안 먹는 걸 강요하지 말고, 먹는 걸 활용&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  4. 식단보다 “환경”이 더 중요하다&lt;/h1&gt;
&lt;p&gt;의외로 많은 부모가 놓치는 부분입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 체크&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;TV 보면서 먹는가&lt;/li&gt;
&lt;li&gt;장난감 있는가&lt;/li&gt;
&lt;li&gt;집중 가능한가&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  해결&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;식사에만 집중하는 환경 만들기&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;⏱️ 5. 식사 시간은 짧고 명확하게&lt;/h1&gt;
&lt;p&gt;질질 끌면 더 안 먹습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 추천&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;20~30분 제한&lt;/li&gt;
&lt;li&gt;안 먹으면 종료&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  핵심&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;식사는 이벤트가 아니라 루틴&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  6. 간식이 편식을 만든다&lt;/h1&gt;
&lt;p&gt;이건 정말 중요합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 상황&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;밥 안 먹음&lt;/li&gt;
&lt;li&gt;대신 과자 / 바나나&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  결과&lt;/p&gt;
&lt;p&gt;  더 안 먹음&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 해결&lt;/h2&gt;
&lt;p&gt;  식사 전 간식 제한&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;  핵심&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;배고파야 먹는다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  7. “선택권”을 주면 참여한다&lt;/h1&gt;
&lt;p&gt;아이들은 통제를 싫어합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 방법&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;“이거 먹을래? 저거 먹을래?”&lt;/li&gt;
&lt;li&gt;“먼저 먹을 거 고르자”&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  강요 → 거부&lt;br&gt;  선택 → 참여&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  8. 부모 감정 관리가 핵심이다&lt;/h1&gt;
&lt;p&gt;이건 정말 중요합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;❌ 상황&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;화내면서 먹이기&lt;/li&gt;
&lt;li&gt;짜증 섞인 말투&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  아이는 바로 느낌&lt;/p&gt;
&lt;p&gt;  더 안 먹습니다&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 해결&lt;/h2&gt;
&lt;p&gt;  최대한 편하게&lt;br&gt;  놀이처럼 접근&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  9. 반복 노출이 답이다&lt;/h1&gt;
&lt;p&gt;아이들은 한 번에 안 먹습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 현실&lt;/h2&gt;
&lt;p&gt;  10번 이상 노출해야 먹는 경우 많음&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;  그래서&lt;/p&gt;
&lt;p&gt;  포기하지 말고 계속 보여주기&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  10. “잘 먹는 날”이 반드시 온다&lt;/h1&gt;
&lt;p&gt;이건 경험에서 나옵니다.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;처음에는&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;아무것도 안 먹는 것 같고&lt;/li&gt;
&lt;li&gt;걱정되고&lt;/li&gt;
&lt;li&gt;답답합니다&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;하지만 어느 순간&lt;/p&gt;
&lt;p&gt;  갑자기 먹기 시작합니다&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;  진짜입니다&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  현실 육아 한 줄 정리&lt;/h1&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“안 먹는 시기도, 결국 지나갑니다”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h1&gt;  핵심 요약&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;편식은 정상 과정&lt;/li&gt;
&lt;li&gt;억지로 먹이지 말 것&lt;/li&gt;
&lt;li&gt;먹는 음식 중심 확장&lt;/li&gt;
&lt;li&gt;간식 조절 필수&lt;/li&gt;
&lt;li&gt;부모 감정 관리 중요&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>육아</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/724</guid>
      <comments>https://lee-mandu.tistory.com/724#entry724comment</comments>
      <pubDate>Wed, 8 Apr 2026 09:31:50 +0900</pubDate>
    </item>
    <item>
      <title>아기 밥 잘 먹게 만드는 식단 TOP 10</title>
      <link>https://lee-mandu.tistory.com/723</link>
      <description>&lt;h1&gt;  아기 밥 잘 먹게 만드는 식단 TOP 10&lt;/h1&gt;
&lt;p&gt;&lt;em&gt;“안 먹던 아이가 먹기 시작한 현실 식단”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;아이 밥 먹이는 건&lt;br&gt;정말 쉽지 않습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“어제까지 잘 먹었는데…”&lt;br&gt;“오늘은 한 입도 안 먹네…”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;부모 입장에서는&lt;br&gt;걱정 + 스트레스가 동시에 옵니다.&lt;/p&gt;
&lt;p&gt;저도 겪어보니 느낀 건 하나였습니다.&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;아이들은 ‘맛’보다 ‘경험’으로 먹는다&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;오늘은 실제로 효과 있었던&lt;br&gt;&lt;strong&gt;아기 밥 잘 먹게 만드는 식단 TOP 10&lt;/strong&gt;을 정리했습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  1. 주먹밥 (한입 크기)&lt;/h1&gt;
&lt;p&gt;&lt;img src=&quot;https://recipe1.ezmember.co.kr/cache/recipe/2015/11/26/e434a4c86a311dc2be86c304604fc9b51.jpg&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;h2&gt;✔ 특징&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;손으로 집어 먹기 쉬움&lt;/li&gt;
&lt;li&gt;놀이처럼 먹음&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;✔ TIP&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;김가루 + 참기름 살짝&lt;/li&gt;
&lt;li&gt;너무 크지 않게 만들기&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  &lt;strong&gt;“내가 먹는다”는 느낌이 중요&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  2. 계란말이 (부드러운 식감)&lt;/h1&gt;
&lt;p&gt;&lt;img src=&quot;https://recipe1.ezmember.co.kr/cache/recipe/2022/09/01/7a3fcb5ef58c798ea619d9b62b02e05f1.jpg&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;h2&gt;✔ 특징&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;부드러워서 거부감 적음&lt;/li&gt;
&lt;li&gt;단백질 보충 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;✔ TIP&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;당근, 애호박 잘게 넣기&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1&gt;  3. 미트볼 (작고 촉촉하게)&lt;/h1&gt;
&lt;p&gt;&lt;img src=&quot;https://recipe1.ezmember.co.kr/cache/recipe/2025/02/23/f6cfd6576f74ab54a46e665e355878301.jpg&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;h2&gt;✔ 특징&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;고기 거부하는 아이도 잘 먹음&lt;/li&gt;
&lt;li&gt;씹기 부담 적음&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;✔ TIP&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;너무 퍽퍽하지 않게 육즙 유지&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1&gt;  4. 국수 / 우동 (면류 활용)&lt;/h1&gt;
&lt;p&gt;&lt;img src=&quot;https://mblogthumb-phinf.pstatic.net/MjAyMDA5MjRfMTcw/MDAxNjAwODczOTE2MzYz.kiCwr10c6CzLfzaQ3AGnO-_av8XxtLoGqmVq3r-aKQQg.3qJ1lxYm8jKbO6SB1gs0wVs4fhKohUDxz-mfC-pXaKQg.JPEG.bloodydevil/20200210_190825.jpg?type=w800&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;h2&gt;✔ 특징&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;대부분 아이들이 좋아함&lt;/li&gt;
&lt;li&gt;실패 확률 낮음&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;✔ TIP&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;길이 짧게 잘라주기&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1&gt;  5. 볶음밥 (재료 숨기기 가능)&lt;/h1&gt;
&lt;p&gt;&lt;img src=&quot;https://mblogthumb-phinf.pstatic.net/MjAyMzA4MjhfMjM2/MDAxNjkzMTk5Mjc2MjIw.VEV99BWsAV6STeaRXHpWlnIVv1Z6HRRaBdLeh29NDTEg.HxB7yNDIt8Jf61Sd6QndO6B_JFi8DZDmkWp0VUMh-8cg.JPEG.jiyeon6202/output_703225644.jpg?type=w800&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;h2&gt;✔ 특징&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;채소 숨기기 좋음&lt;/li&gt;
&lt;li&gt;다양한 재료 활용 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;✔ TIP&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;간은 약하게&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1&gt;  6. 감자 / 고구마 (자연 단맛)&lt;/h1&gt;
&lt;p&gt;&lt;img src=&quot;https://recipe1.ezmember.co.kr/cache/recipe/2023/03/08/a0ae6d9644d6428471770427901802071.jpg&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;h2&gt;✔ 특징&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;단맛 때문에 잘 먹음&lt;/li&gt;
&lt;li&gt;간식 대용 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1&gt;  7. 치즈 활용 식단&lt;/h1&gt;
&lt;p&gt;&lt;img src=&quot;https://recipe1.ezmember.co.kr/cache/recipe/2015/06/05/610f9c4e5fbb7f00c3dceb265afb74d8.jpg&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;h2&gt;✔ 특징&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;거의 대부분 좋아함&lt;/li&gt;
&lt;li&gt;식욕 자극&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;✔ TIP&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;과다 섭취는 주의&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1&gt;  8. 과일 + 식사 조합&lt;/h1&gt;
&lt;p&gt;&lt;img src=&quot;https://img1.daumcdn.net/thumb/R1280x0.fwebp/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2FaUal%2Fimage%2FgV3om3gD8VbaQ72lnOkQcAmQDhs&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;h2&gt;✔ 특징&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;식사 거부 시 활용 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;✔ TIP&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;식사 후 보상 형태로 활용&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1&gt;  9. 오믈렛 / 덮밥 스타일&lt;/h1&gt;
&lt;p&gt;&lt;img src=&quot;https://mblogthumb-phinf.pstatic.net/MjAxODA3MDRfMjc0/MDAxNTMwNjMyMjEwNjkw.Z9Aiup37vHhRugRqu8YXH4x8h_CqxfQ7ApfNKvPx2AMg.qKHMS1H9uqmDewpilcRA96RgvQxIg3kb7_bMHjtmP4Yg.JPEG.em5019/image_9506113251530632101323.jpg?type=w800&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;h2&gt;✔ 특징&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;한 번에 먹기 쉬움&lt;/li&gt;
&lt;li&gt;다양한 재료 혼합 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1&gt;  10. 손으로 먹는 음식 (핑거푸드)&lt;/h1&gt;
&lt;p&gt;&lt;img src=&quot;https://recipe1.ezmember.co.kr/cache/recipe/2022/09/01/7a3fcb5ef58c798ea619d9b62b02e05f1.jpg&quot; alt=&quot;Image&quot;&gt;&lt;/p&gt;
&lt;h2&gt;✔ 특징&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;자율성 증가&lt;/li&gt;
&lt;li&gt;식사 참여도 상승&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1&gt;  진짜 중요한 포인트 (식단보다 더 중요)&lt;/h1&gt;
&lt;p&gt;많이 해보면 느낍니다.&lt;/p&gt;
&lt;p&gt;  식단보다 중요한 건 따로 있습니다&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 핵심&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;억지로 먹이지 않기&lt;/li&gt;
&lt;li&gt;식사 시간 짧게 유지&lt;/li&gt;
&lt;li&gt;간식 조절&lt;/li&gt;
&lt;li&gt;분위기 편하게&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  결국 아이는&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;편할 때 먹습니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  실제 경험 한 줄 정리&lt;/h1&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“안 먹던 아이도, 먹는 날이 옵니다”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;p&gt;조급해하지 않아도 됩니다.&lt;br&gt;조금씩, 자연스럽게 바뀝니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  핵심 요약&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;손으로 먹는 음식 활용&lt;/li&gt;
&lt;li&gt;한입 크기로 만들기&lt;/li&gt;
&lt;li&gt;단맛 식재료 활용&lt;/li&gt;
&lt;li&gt;놀이처럼 접근&lt;/li&gt;
&lt;li&gt;강요 금지&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>육아</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/723</guid>
      <comments>https://lee-mandu.tistory.com/723#entry723comment</comments>
      <pubDate>Tue, 7 Apr 2026 09:29:13 +0900</pubDate>
    </item>
    <item>
      <title>아기 밥 안 먹을 때 해결 방법 (부모라면 한 번은 겪는 현실)</title>
      <link>https://lee-mandu.tistory.com/722</link>
      <description>&lt;h1&gt;  아기 밥 안 먹을 때 해결 방법 (부모라면 한 번은 겪는 현실)&lt;/h1&gt;
&lt;p&gt;밥 먹이는 시간이&lt;br&gt;행복한 시간이 아니라 &lt;strong&gt;전쟁&lt;/strong&gt;이 되는 순간이 있습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“한 입만 더 먹자…”&lt;br&gt;“이거 먹고 간식 줄게…”&lt;br&gt;“왜 안 먹어…”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;그런데 결국&lt;/p&gt;
&lt;p&gt;  안 먹습니다  &lt;/p&gt;
&lt;p&gt;저도 겪어봤습니다.&lt;br&gt;잘 먹던 아이가 갑자기 안 먹기 시작하면&lt;/p&gt;
&lt;p&gt;  걱정 + 스트레스 + 짜증&lt;br&gt;다 같이 옵니다.&lt;/p&gt;
&lt;p&gt;오늘은 실제 경험을 바탕으로&lt;br&gt;&lt;strong&gt;아기 밥 안 먹을 때 해결 방법&lt;/strong&gt;을 정리해보겠습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  1. “안 먹는 시기”는 정상이다&lt;/h1&gt;
&lt;p&gt;가장 먼저 알아야 할 사실입니다.&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;아이들은 원래 안 먹는 시기가 있습니다&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;특히&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;두돌 전후&lt;/li&gt;
&lt;li&gt;자기 의지가 생기는 시기&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 이유&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;배고픔보다 “선택권”이 중요해짐&lt;/li&gt;
&lt;li&gt;관심이 음식보다 다른 곳에 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  결론&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;문제가 아니라 과정입니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  2. 갑자기 다른 음식 찾는 이유&lt;/h1&gt;
&lt;p&gt;밥 먹다가 갑자기&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“바나나 먹을래”&lt;br&gt;“과자 줘”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;이거 정말 흔합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 이유&lt;/h2&gt;
&lt;p&gt;  더 맛있고 자극적인 음식 기억&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 해결 방법&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;식사 전 간식 제한&lt;/li&gt;
&lt;li&gt;식사 시간에는 식사만&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  핵심&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;“대체 음식 주지 않기”&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt; ️ 3. 억지로 먹이면 더 안 먹는다&lt;/h1&gt;
&lt;p&gt;많은 부모가 하는 실수입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;❌ 이런 상황&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;입에 억지로 넣기&lt;/li&gt;
&lt;li&gt;혼내면서 먹이기&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  결과&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;식사 = 스트레스&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 해결&lt;/h2&gt;
&lt;p&gt;  아이가 먹을 때까지 기다리기&lt;br&gt;  안 먹으면 치우기&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;  처음엔 힘들지만&lt;br&gt;  &lt;strong&gt;이게 가장 효과적입니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;⏱️ 4. 식사 시간은 “짧고 명확하게”&lt;/h1&gt;
&lt;p&gt;밥을 오래 붙잡고 있는 경우 많습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 추천&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;20~30분 제한&lt;/li&gt;
&lt;li&gt;안 먹으면 종료&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  핵심&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;식사는 길게 끌지 않는다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  5. “먹는 환경”이 중요하다&lt;/h1&gt;
&lt;p&gt;아이들은 환경 영향을 많이 받습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 체크&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;TV 켜져 있는가&lt;/li&gt;
&lt;li&gt;장난감 있는가&lt;/li&gt;
&lt;li&gt;집중 가능한 환경인가&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  해결&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;식사에만 집중할 환경 만들기&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  6. 양을 줄이면 오히려 잘 먹는다&lt;/h1&gt;
&lt;p&gt;많이 주면 오히려 거부합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 방법&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;처음에는 적게&lt;/li&gt;
&lt;li&gt;먹으면 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  아이 입장&lt;/p&gt;
&lt;p&gt;  “할 수 있다” 느낌 중요&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  7. 선택권을 주면 먹는다&lt;/h1&gt;
&lt;p&gt;아이들은 “강요”를 싫어합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 방법&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;“밥 먹을래? 국 먹을래?”&lt;/li&gt;
&lt;li&gt;“이거 먼저 먹을까?”&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  핵심&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;선택하게 하면 참여한다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  8. 부모 감정이 그대로 전달된다&lt;/h1&gt;
&lt;p&gt;이건 정말 중요합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;❌ 상황&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;화내면서 먹이기&lt;/li&gt;
&lt;li&gt;짜증 섞인 말투&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  아이는 바로 느낌&lt;/p&gt;
&lt;p&gt;  더 안 먹습니다&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 해결&lt;/h2&gt;
&lt;p&gt;  최대한 편하게&lt;br&gt;  놀이처럼 접근&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  9. 생활 리듬을 먼저 점검하자&lt;/h1&gt;
&lt;p&gt;의외로 중요한 부분입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 체크&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;낮잠 시간&lt;/li&gt;
&lt;li&gt;활동량&lt;/li&gt;
&lt;li&gt;식사 간격&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  배고픔이 있어야 먹습니다&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  10. “굶기면 먹는다”는 말, 맞을까?&lt;/h1&gt;
&lt;p&gt;많이 고민하는 부분입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 결론&lt;/h2&gt;
&lt;p&gt;  어느 정도 맞습니다&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;하지만&lt;/p&gt;
&lt;p&gt;  무작정 굶기는 건 위험&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 현실적인 방법&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;식사 안 하면 간식 X&lt;/li&gt;
&lt;li&gt;다음 식사까지 기다리기&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  자연스럽게 배고픔 경험&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  실제 경험에서 느낀 것&lt;/h1&gt;
&lt;p&gt;아이 밥 문제는&lt;/p&gt;
&lt;p&gt;  해결이 아니라 &lt;strong&gt;“지나가는 과정”&lt;/strong&gt;입니다&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;처음에는&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;걱정되고&lt;/li&gt;
&lt;li&gt;스트레스 받고&lt;/li&gt;
&lt;li&gt;내가 잘못하고 있나 싶습니다&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;하지만 시간이 지나면&lt;/p&gt;
&lt;p&gt;  다시 먹기 시작합니다&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  부모에게 가장 중요한 한마디&lt;/h1&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“지금 이 시기도 결국 지나갑니다”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;p&gt;  너무 조급해하지 않아도 됩니다&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  핵심 요약&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;안 먹는 시기는 정상&lt;/li&gt;
&lt;li&gt;억지로 먹이면 역효과&lt;/li&gt;
&lt;li&gt;식사 시간은 짧게&lt;/li&gt;
&lt;li&gt;간식 조절 필수&lt;/li&gt;
&lt;li&gt;부모 감정 관리 중요&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>육아</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/722</guid>
      <comments>https://lee-mandu.tistory.com/722#entry722comment</comments>
      <pubDate>Mon, 6 Apr 2026 09:26:30 +0900</pubDate>
    </item>
    <item>
      <title>개발자가 자주 하는 실수 TOP 10 (실무에서 진짜 많이 겪는다)</title>
      <link>https://lee-mandu.tistory.com/721</link>
      <description>&lt;h1&gt;⚠️ 개발자가 자주 하는 실수 TOP 10 (실무에서 진짜 많이 겪는다)&lt;/h1&gt;
&lt;p&gt;개발을 하다 보면 느끼게 됩니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“이거… 예전에 똑같이 실수했는데 또 했네”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;신기하게도 개발자 실수는 대부분 반복됩니다.&lt;br&gt;그리고 중요한 건&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;실수를 안 하는 게 아니라, 빨리 인지하고 줄이는 것&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;오늘은 실무에서 정말 많이 보이는&lt;br&gt;&lt;strong&gt;개발자가 자주 하는 실수 TOP 10&lt;/strong&gt;을 정리해봤습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  1. null 체크 안 함 (NPE 지옥 입장)&lt;/h1&gt;
&lt;p&gt;가장 흔하면서도 가장 치명적입니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;user.getName(); // user가 null이면 바로 터짐&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;✔ 해결 습관&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;null 체크 기본화&lt;/li&gt;
&lt;li&gt;Optional 활용&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  실무에서는&lt;br&gt;  &lt;strong&gt;“null 들어올 수 있다”는 전제&lt;/strong&gt;로 코딩해야 합니다&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  2. 로그 안 찍고 감으로 디버깅&lt;/h1&gt;
&lt;p&gt;초보 시절 필수 코스입니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“여기 문제 같은데?”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;  거의 틀립니다&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 해결 습관&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;로그 먼저 본다&lt;/li&gt;
&lt;li&gt;추측은 나중에 한다&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  디버깅은 감이 아니라&lt;br&gt;  &lt;strong&gt;근거 싸움입니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;⚠️ 3. 에러 메시지 제대로 안 읽음&lt;/h1&gt;
&lt;p&gt;많은 경우 이미 답이 로그에 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 나쁜 습관&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;에러 보고 바로 검색&lt;/li&gt;
&lt;li&gt;전체 복붙&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 좋은 습관&lt;/h2&gt;
&lt;p&gt;  Exception + 발생 위치 먼저 확인&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;  대부분 에러는&lt;br&gt;  &lt;strong&gt;로그 안에 답이 있습니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  4. 한 번에 여러 개 수정&lt;/h1&gt;
&lt;p&gt;이거 진짜 많이 합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;❌ 문제 상황&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;코드 수정&lt;/li&gt;
&lt;li&gt;설정 변경&lt;/li&gt;
&lt;li&gt;DB 수정&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  뭐가 원인인지 모름&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 해결&lt;/h2&gt;
&lt;p&gt;  &lt;strong&gt;한 번에 하나만 바꾸기&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  5. 재현 없이 문제 해결 시도&lt;/h1&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“왜 안되지…”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;  재현 안 되면 못 잡습니다&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 해결 습관&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;언제 발생하는지 조건 찾기&lt;/li&gt;
&lt;li&gt;동일 상황 만들기&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  디버깅은&lt;br&gt;  &lt;strong&gt;재현 싸움입니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  6. 코드 복붙 후 이해 안 함&lt;/h1&gt;
&lt;p&gt;StackOverflow 복붙 코드… 다들 해봤습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 문제&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;왜 되는지 모름&lt;/li&gt;
&lt;li&gt;나중에 또 막힘&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 해결&lt;/h2&gt;
&lt;p&gt;  최소한 흐름은 이해하기&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;  이해 없는 코드는&lt;br&gt;  &lt;strong&gt;부채가 됩니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  7. 변수 / 메서드 이름 대충 짓기&lt;/h1&gt;
&lt;p&gt;이건 시간이 지나면 바로 티 납니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;❌ 예시&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;int a;
String temp;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 좋은 예&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;int userAge;
String userName;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;p&gt;  이름이 곧 문서입니다&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;⚡ 8. IDE 기능 안 쓰고 수작업&lt;/h1&gt;
&lt;p&gt;아직도 직접 타이핑만 하는 경우 많습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;  IntelliJ IDEA&lt;br&gt;  Eclipse&lt;/p&gt;
&lt;p&gt;이 IDE들은 생산성을 위한 도구입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 실수&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;리팩토링 직접 수정&lt;/li&gt;
&lt;li&gt;검색 수동&lt;/li&gt;
&lt;li&gt;코드 생성 수동&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 해결&lt;/h2&gt;
&lt;p&gt;  단축키 + 자동화 적극 활용&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;⏱️ 9. 테스트 없이 바로 배포&lt;/h1&gt;
&lt;p&gt;이건 실수라기보다 사고입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 문제&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;예상 못한 버그 발생&lt;/li&gt;
&lt;li&gt;장애로 직결&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 해결&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;최소한 로컬 테스트&lt;/li&gt;
&lt;li&gt;API 호출 검증&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  테스트 없는 코드는&lt;br&gt;  &lt;strong&gt;언젠가 반드시 터집니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  10. 예외 처리 대충 함&lt;/h1&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;try {
    ...
} catch (Exception e) {
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  이거… 정말 많이 봅니다&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 문제&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;에러 원인 추적 불가&lt;/li&gt;
&lt;li&gt;장애 분석 불가능&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 해결&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;log.error(&amp;quot;에러 발생&amp;quot;, e);&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;p&gt;  로그는&lt;br&gt;  &lt;strong&gt;나중의 나를 위한 보험&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  실무에서 느낀 핵심&lt;/h1&gt;
&lt;p&gt;개발 실수는 대부분&lt;br&gt;  &lt;strong&gt;기술 부족이 아니라 습관 문제&lt;/strong&gt;입니다&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 차이&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;초보 → 실수 반복&lt;/li&gt;
&lt;li&gt;실무자 → 실수 줄임&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  이 차이가 쌓이면&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;개발 속도 + 안정성 차이로 이어집니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  결론&lt;/h1&gt;
&lt;p&gt;완벽한 개발자는 없습니다.&lt;/p&gt;
&lt;p&gt;하지만 좋은 개발자는 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;  특징은 단 하나&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;같은 실수를 반복하지 않는다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  핵심 요약&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;null 체크 습관화&lt;/li&gt;
&lt;li&gt;로그 기반 디버깅&lt;/li&gt;
&lt;li&gt;한 번에 하나만 수정&lt;/li&gt;
&lt;li&gt;재현 먼저&lt;/li&gt;
&lt;li&gt;IDE 적극 활용&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;</description>
      <category>개발/개발도구</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/721</guid>
      <comments>https://lee-mandu.tistory.com/721#entry721comment</comments>
      <pubDate>Sun, 5 Apr 2026 09:25:15 +0900</pubDate>
    </item>
    <item>
      <title>디버깅 잘하는 개발자의 습관 (실무에서 진짜 차이 나는 포인트)</title>
      <link>https://lee-mandu.tistory.com/720</link>
      <description>&lt;h1&gt;  디버깅 잘하는 개발자의 습관 (실무에서 진짜 차이 나는 포인트)&lt;/h1&gt;
&lt;p&gt;개발을 하다 보면 느끼게 됩니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“코딩 잘하는 사람”보다&lt;br&gt;  &lt;strong&gt;“문제 빨리 찾는 사람”이 훨씬 잘하는 개발자다&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;기능 구현은 누구나 합니다.&lt;br&gt;하지만 장애가 터졌을 때&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;누군가는 3시간 헤매고&lt;/li&gt;
&lt;li&gt;누군가는 10분 만에 끝냅니다&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이 차이는 재능이 아니라&lt;br&gt;  &lt;strong&gt;습관의 차이입니다&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;오늘은 실무에서 느낀&lt;br&gt;&lt;strong&gt;디버깅 잘하는 개발자의 습관&lt;/strong&gt;을 정리해보겠습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  1. 무작정 수정하지 않는다 (가장 중요)&lt;/h1&gt;
&lt;p&gt;초보 때 가장 많이 하는 실수입니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;일단 코드 바꿔본다 ❌&lt;/li&gt;
&lt;li&gt;이것저것 찍어본다 ❌&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  결과&lt;br&gt;  더 꼬임&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 잘하는 개발자는 이렇게 합니다&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;증상 정리&lt;/li&gt;
&lt;li&gt;재현&lt;/li&gt;
&lt;li&gt;원인 추정&lt;/li&gt;
&lt;li&gt;검증&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;  이 순서를 절대 안 깨집니다&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  2. “재현”부터 한다&lt;/h1&gt;
&lt;p&gt;디버깅의 80%는 여기서 끝납니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“왜 안되지?”&lt;br&gt;❌ → 감으로 접근&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“언제 발생하지?”&lt;br&gt;✔ → 재현 조건 찾기&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h2&gt;✔ 실무 기준 질문&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;특정 데이터에서만?&lt;/li&gt;
&lt;li&gt;특정 시간에만?&lt;/li&gt;
&lt;li&gt;특정 API에서만?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  재현 안 되면&lt;br&gt;  절대 못 잡습니다&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  3. 로그를 믿는다, 감을 믿지 않는다&lt;/h1&gt;
&lt;p&gt;많은 사람들이 이렇게 합니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“이 부분이 문제 같은데?”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;  아닙니다&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;로그가 말해주는 게 진짜입니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 실무 습관&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;로그 먼저 본다&lt;/li&gt;
&lt;li&gt;추측은 나중에 한다&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  특히&lt;br&gt;IntelliJ IDEA 디버거 쓰면&lt;br&gt;  변수 상태까지 바로 확인 가능합니다&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  4. 한 번에 하나씩만 바꾼다&lt;/h1&gt;
&lt;p&gt;이거 진짜 중요합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;❌ 나쁜 방식&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;코드 여러 개 수정&lt;/li&gt;
&lt;li&gt;설정도 같이 변경&lt;/li&gt;
&lt;li&gt;로그도 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  뭐가 원인인지 모름&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 좋은 방식&lt;/h2&gt;
&lt;p&gt;  &lt;strong&gt;딱 하나만 변경 → 테스트&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;  그래야 원인이 보입니다&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  5. 문제를 “쪼개서” 본다&lt;/h1&gt;
&lt;p&gt;디버깅 잘하는 사람 특징입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 예시&lt;/h2&gt;
&lt;p&gt;문제: API 호출 실패&lt;/p&gt;
&lt;p&gt;  쪼개기&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;요청은 정상인가?&lt;/li&gt;
&lt;li&gt;서버는 받았는가?&lt;/li&gt;
&lt;li&gt;DB는 정상인가?&lt;/li&gt;
&lt;li&gt;응답 생성은 정상인가?&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;  이렇게 나누면&lt;br&gt;  문제 범위가 급격히 줄어듭니다&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;⚡ 6. 스택 트레이스를 제대로 읽는다&lt;/h1&gt;
&lt;p&gt;이건 기본이면서도 차이를 만드는 부분입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;  핵심&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;에러는 “위에서 발생”&lt;/li&gt;
&lt;li&gt;원인은 “아래에 있음 (Caused by)”&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  잘하는 개발자는&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;3초 안에 위치를 찾습니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  7. 이전에 겪은 에러를 기억한다&lt;/h1&gt;
&lt;p&gt;실무 에러는 반복됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 예시&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;NPE → null 체크&lt;/li&gt;
&lt;li&gt;DB 에러 → 쿼리 문제&lt;/li&gt;
&lt;li&gt;500 → 서버 내부 로직&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  이걸 기억하면&lt;/p&gt;
&lt;p&gt;  “아 이거 그거네”&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;  속도가 달라집니다&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt; ️ 8. 디버거를 적극적으로 쓴다&lt;/h1&gt;
&lt;p&gt;생각보다 안 쓰는 사람이 많습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 핵심 기능&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;브레이크포인트&lt;/li&gt;
&lt;li&gt;변수 값 확인&lt;/li&gt;
&lt;li&gt;조건부 실행&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  특히&lt;br&gt;Eclipse / IntelliJ IDEA 디버거는&lt;br&gt;  그냥 “필수 도구”입니다&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;⏱️ 9. 시간을 쓴 만큼 방향을 점검한다&lt;/h1&gt;
&lt;p&gt;이건 경험에서 나옵니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 기준&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;30분 이상 안 풀린다?&lt;br&gt;  접근 방법 틀렸을 가능성 높음&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  이럴 때는&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;로그 다시 보기&lt;/li&gt;
&lt;li&gt;문제 다시 정의&lt;/li&gt;
&lt;li&gt;동료에게 설명&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  설명하다가 풀리는 경우 많습니다&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  10. 문제를 “설명할 수 있는 상태”로 만든다&lt;/h1&gt;
&lt;p&gt;진짜 잘하는 개발자는&lt;/p&gt;
&lt;p&gt;  문제를 설명할 수 있습니다&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 예시&lt;/h2&gt;
&lt;p&gt;❌&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“에러가 나요…”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;✔&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“특정 API에서 null이 들어오면서 NPE 발생합니다”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;p&gt;  이 차이가&lt;/p&gt;
&lt;p&gt;  디버깅 속도를 바꿉니다&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  결론 (진짜 중요한 한 가지)&lt;/h1&gt;
&lt;p&gt;디버깅 잘하는 개발자는&lt;br&gt;특별한 기술이 있는 게 아닙니다.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;  대신&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;순서를 지키고&lt;/li&gt;
&lt;li&gt;로그를 믿고&lt;/li&gt;
&lt;li&gt;문제를 쪼갭니다&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;그리고 결국 이렇게 됩니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“문제가 무섭지 않다”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h1&gt;  핵심 요약&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;무작정 수정하지 않는다&lt;/li&gt;
&lt;li&gt;재현부터 한다&lt;/li&gt;
&lt;li&gt;로그 기반으로 판단한다&lt;/li&gt;
&lt;li&gt;한 번에 하나씩 바꾼다&lt;/li&gt;
&lt;li&gt;문제를 쪼개서 본다&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>개발/개발도구</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/720</guid>
      <comments>https://lee-mandu.tistory.com/720#entry720comment</comments>
      <pubDate>Sat, 4 Apr 2026 09:23:55 +0900</pubDate>
    </item>
    <item>
      <title>실무에서 자주 만나는 에러 TOP 10 (해결법 포함)</title>
      <link>https://lee-mandu.tistory.com/719</link>
      <description>&lt;h1&gt;  실무에서 자주 만나는 에러 TOP 10 (해결법 포함)&lt;/h1&gt;
&lt;p&gt;&lt;em&gt;개발자라면 반드시 겪는 에러들, 이제는 빠르게 해결하자&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;개발을 하다 보면 느끼는 순간이 있습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“이 에러… 전에 본 것 같은데 또 해결 못하겠네”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;사실 대부분의 에러는&lt;br&gt;  &lt;strong&gt;늘 반복됩니다&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;그리고 실력 차이는 여기서 갈립니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;초보 → 매번 검색&lt;/li&gt;
&lt;li&gt;실무자 → “아 이거 그거네” 바로 해결&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;오늘은 실무에서 정말 자주 만나는&lt;br&gt;&lt;strong&gt;에러 TOP 10 + 해결 방법&lt;/strong&gt;을 정리했습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  1. NullPointerException (NPE)&lt;/h1&gt;
&lt;p&gt;  자바 개발자의 평생 친구&lt;/p&gt;
&lt;h2&gt;✔ 원인&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;객체가 &lt;code&gt;null&lt;/code&gt;인데 접근함&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;✔ 해결 방법&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;if (user != null) {
    user.getName();
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  또는&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;Optional.ofNullable(user).ifPresent(u -&amp;gt; u.getName());&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;✔ 실무 팁&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;서비스 로직에서 null 체크 습관화&lt;/li&gt;
&lt;li&gt;API 응답값 항상 검증&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1&gt;⚠️ 2. IndexOutOfBoundsException&lt;/h1&gt;
&lt;h2&gt;✔ 원인&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;배열 / 리스트 범위 초과&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;✔ 해결&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;if (list.size() &amp;gt; index) {
    list.get(index);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  핵심&lt;br&gt;  &lt;strong&gt;size 체크 없이 접근하지 말 것&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  3. ClassCastException&lt;/h1&gt;
&lt;h2&gt;✔ 원인&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;타입 캐스팅 잘못됨&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;Object obj = &amp;quot;hello&amp;quot;;
Integer num = (Integer) obj; // ❌&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;✔ 해결&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;if (obj instanceof Integer) {
    Integer num = (Integer) obj;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  실무에서는&lt;br&gt;  DTO 타입 맞추는 게 중요&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  4. SQLException&lt;/h1&gt;
&lt;h2&gt;✔ 원인&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;쿼리 오류&lt;/li&gt;
&lt;li&gt;DB 연결 문제&lt;/li&gt;
&lt;li&gt;데이터 타입 불일치&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;✔ 해결&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;쿼리 직접 실행해서 확인&lt;/li&gt;
&lt;li&gt;파라미터 값 로그 찍기&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  실무 핵심&lt;br&gt;  &lt;strong&gt;DB 로그 + 애플리케이션 로그 같이 봐야 함&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  5. HTTP 500 (Internal Server Error)&lt;/h1&gt;
&lt;h2&gt;✔ 원인&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;서버 내부 에러 (대부분 코드 문제)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;✔ 해결&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;서버 로그 확인&lt;/li&gt;
&lt;li&gt;스택 트레이스 분석&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  핵심&lt;br&gt;  &lt;strong&gt;500은 결과가 아니라 “증상”이다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  6. HTTP 403 / 401&lt;/h1&gt;
&lt;h2&gt;✔ 원인&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;401 → 인증 실패&lt;/li&gt;
&lt;li&gt;403 → 권한 없음&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;✔ 해결&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;토큰 확인&lt;/li&gt;
&lt;li&gt;권한 설정 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  실무 팁&lt;br&gt;  Spring Security 설정에서 자주 발생&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;⏱️ 7. Timeout 에러&lt;/h1&gt;
&lt;h2&gt;✔ 원인&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;외부 API 지연&lt;/li&gt;
&lt;li&gt;DB 응답 지연&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;✔ 해결&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;timeout 설정 조정&lt;/li&gt;
&lt;li&gt;비동기 처리&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  핵심&lt;br&gt;  &lt;strong&gt;성능 문제의 신호&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  8. ConcurrentModificationException&lt;/h1&gt;
&lt;h2&gt;✔ 원인&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;반복 중 리스트 수정&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;for (String s : list) {
    list.remove(s); // ❌
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;✔ 해결&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;Iterator&amp;lt;String&amp;gt; it = list.iterator();
while (it.hasNext()) {
    it.remove();
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h1&gt;  9. StackOverflowError&lt;/h1&gt;
&lt;h2&gt;✔ 원인&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;재귀 무한 호출&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;✔ 해결&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;if (조건) return;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  종료 조건 필수&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  10. OutOfMemoryError&lt;/h1&gt;
&lt;h2&gt;✔ 원인&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;메모리 부족&lt;/li&gt;
&lt;li&gt;객체 과다 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;✔ 해결&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;JVM 옵션 조정 (&lt;code&gt;-Xmx&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;객체 관리 최적화&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  실무 핵심&lt;br&gt;  &lt;strong&gt;로그 + 힙덤프 분석 필요&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  실무에서 진짜 중요한 것&lt;/h1&gt;
&lt;p&gt;에러를 많이 아는 것도 중요하지만&lt;br&gt;더 중요한 건 하나입니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;  “패턴을 아는 것”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h2&gt;✔ 예를 들어&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;NPE → null 체크&lt;/li&gt;
&lt;li&gt;DB 에러 → 쿼리 확인&lt;/li&gt;
&lt;li&gt;500 → 서버 로그&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  반복됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  개발자가 성장하는 순간&lt;/h1&gt;
&lt;p&gt;처음에는&lt;/p&gt;
&lt;p&gt;  “이게 뭐지…”&lt;/p&gt;
&lt;p&gt;하지만 어느 순간&lt;/p&gt;
&lt;p&gt;  “아 이거 그거네”&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;이 차이가 쌓이면&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;문제 해결 속도 = 실력&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  결론&lt;/h1&gt;
&lt;p&gt;에러는 피할 수 없습니다.&lt;br&gt;하지만&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;빠르게 해결하는 능력은 만들 수 있습니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 핵심 요약&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;에러는 반복된다&lt;/li&gt;
&lt;li&gt;패턴으로 기억하라&lt;/li&gt;
&lt;li&gt;로그 해석이 핵심이다&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>개발/개발도구</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/719</guid>
      <comments>https://lee-mandu.tistory.com/719#entry719comment</comments>
      <pubDate>Fri, 3 Apr 2026 09:22:07 +0900</pubDate>
    </item>
    <item>
      <title>실무에서 쓰는 에러 로그 해석 방법 (개발자가 진짜 성장하는 순간)</title>
      <link>https://lee-mandu.tistory.com/718</link>
      <description>&lt;h1&gt;  실무에서 쓰는 에러 로그 해석 방법 (개발자가 진짜 성장하는 순간)&lt;/h1&gt;
&lt;p&gt;개발을 하다 보면 반드시 마주하는 순간이 있습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“이 에러… 도대체 뭐야?”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;처음에는 막막합니다.&lt;br&gt;로그는 길고, 영어는 어렵고, 어디서부터 봐야 할지 감도 안 옵니다.&lt;/p&gt;
&lt;p&gt;하지만 어느 순간 깨닫게 됩니다.&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;에러 로그를 읽는 능력 = 개발자의 실력&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;오늘은 실무에서 실제로 사용하는&lt;br&gt;&lt;strong&gt;에러 로그 해석 방법&lt;/strong&gt;을 정리해보겠습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  1. 에러 로그는 “위에서부터 읽는 게 아니다”&lt;/h1&gt;
&lt;p&gt;많은 분들이 로그를 이렇게 봅니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;위에서부터 한 줄씩 읽는다 ❌&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;하지만 실무에서는 다릅니다.&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;핵심은 “Caused by”부터 보는 것&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 예시&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;Exception in thread &amp;quot;main&amp;quot; java.lang.NullPointerException
    at com.example.service.UserService.getUser(UserService.java:25)
    at com.example.controller.UserController.main(UserController.java:10)
Caused by: java.lang.NullPointerException&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  여기서 중요한 건?&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;맨 아래 &amp;quot;Caused by&amp;quot; 라인&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 핵심 포인트&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;에러의 “진짜 원인”은 대부분 아래에 있음&lt;/li&gt;
&lt;li&gt;위쪽은 “흐름”, 아래쪽은 “원인”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  이거 하나만 알아도&lt;br&gt;&lt;strong&gt;디버깅 속도가 2배 이상 빨라집니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  2. 에러 메시지는 “문장이 아니라 힌트”다&lt;/h1&gt;
&lt;p&gt;예를 들어 이런 메시지:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;NullPointerException&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;초보 개발자 생각:&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“아 null이네…”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;실무 개발자 생각:&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;“어디에서 null이 발생했지?”&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 해석 방법&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;무엇이 문제인가 → &lt;code&gt;NullPointerException&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;어디서 발생했나 → &lt;code&gt;UserService.java:25&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  핵심은 항상 2가지&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;무슨 에러인가&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;어디서 발생했는가&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h1&gt;⚡ 3. 스택 트레이스(Stack Trace) 보는 법&lt;/h1&gt;
&lt;p&gt;스택 트레이스는 처음 보면 복잡하지만&lt;br&gt;사실 규칙이 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 구조 이해&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;at A()
at B()
at C()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  의미&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;C → B → A 순서로 호출됨&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  에러는 어디서 발생?&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;가장 위 (첫 번째 줄)&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 실무 핵심&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;첫 줄 = 에러 발생 지점&lt;/li&gt;
&lt;li&gt;아래로 갈수록 호출 흐름&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  그래서 우리는&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;“첫 줄 + caused by”만 집중해서 봅니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  4. 로그에서 “쓸데없는 부분” 버리는 능력&lt;/h1&gt;
&lt;p&gt;실무 로그는 길게 나옵니다.&lt;/p&gt;
&lt;p&gt;특히 프레임워크 사용 시:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Spring&lt;/li&gt;
&lt;li&gt;Hibernate&lt;/li&gt;
&lt;li&gt;Servlet&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  대부분 필요 없습니다&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 예시&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;org.springframework...
org.apache.catalina...&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  이건 대부분 “흐름 로그”&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 진짜 봐야 할 것&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;내 코드 패키지 (&lt;code&gt;com.myproject...&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;실제 에러 라인&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  핵심&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;“내 코드만 찾아라”&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt; ️ 5. 로그 해석 실전 루틴 (이거 그대로 쓰세요)&lt;/h1&gt;
&lt;p&gt;실무에서 저는 항상 이렇게 합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ STEP 1&lt;/h2&gt;
&lt;p&gt;  &lt;code&gt;Exception 이름&lt;/code&gt; 확인&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;NullPointerException&lt;/li&gt;
&lt;li&gt;IndexOutOfBoundsException&lt;/li&gt;
&lt;li&gt;SQLException&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;✔ STEP 2&lt;/h2&gt;
&lt;p&gt;  &lt;code&gt;Caused by&lt;/code&gt; 확인&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ STEP 3&lt;/h2&gt;
&lt;p&gt;  &lt;code&gt;내 코드 위치&lt;/code&gt; 찾기&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ STEP 4&lt;/h2&gt;
&lt;p&gt;  해당 라인 코드 확인&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ STEP 5&lt;/h2&gt;
&lt;p&gt;  값 확인 (null / index / 상태)&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;  이 루틴만 익히면&lt;br&gt;&lt;strong&gt;대부분의 에러는 혼자 해결 가능합니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  6. 초보 시절, 가장 많이 했던 실수&lt;/h1&gt;
&lt;p&gt;저도 처음엔 그랬습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;로그를 전부 읽으려고 함&lt;/li&gt;
&lt;li&gt;구글에 그대로 복붙&lt;/li&gt;
&lt;li&gt;의미도 모르고 해결&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  결과&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;같은 에러 또 발생&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 중요한 깨달음&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;로그를 “읽는 것”이 아니라&lt;br&gt;&lt;strong&gt;“해석”해야 한다&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h1&gt;  7. 진짜 실력은 여기서 갈립니다&lt;/h1&gt;
&lt;p&gt;같은 에러를 봐도&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;초보: 당황한다&lt;/li&gt;
&lt;li&gt;중급: 검색한다&lt;/li&gt;
&lt;li&gt;고수: 로그 보고 바로 원인 추정&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  이 차이는 단 하나&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;로그 해석 경험&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;  결론&lt;/h1&gt;
&lt;p&gt;에러 로그는 두려운 게 아닙니다.&lt;/p&gt;
&lt;p&gt;오히려 말해주고 있습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“여기 문제 있어요”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;p&gt;  중요한 건&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;어디를 봐야 하는지&lt;/li&gt;
&lt;li&gt;무엇을 해석해야 하는지&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;✔ 핵심 요약&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;“Caused by”부터 본다&lt;/li&gt;
&lt;li&gt;Exception + 위치를 본다&lt;/li&gt;
&lt;li&gt;내 코드만 집중한다&lt;/li&gt;
&lt;li&gt;루틴으로 접근한다&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>개발/개발도구</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/718</guid>
      <comments>https://lee-mandu.tistory.com/718#entry718comment</comments>
      <pubDate>Thu, 2 Apr 2026 08:20:41 +0900</pubDate>
    </item>
    <item>
      <title>육아 스트레스 관리 방법 (현실적으로 효과 있었던 7가지)</title>
      <link>https://lee-mandu.tistory.com/717</link>
      <description>&lt;h1&gt;육아 스트레스 관리 방법 (현실적으로 효과 있었던 7가지)&lt;/h1&gt;
&lt;p&gt;육아를 하다 보면 어느 순간 이런 생각이 듭니다.&lt;br&gt;“나 왜 이렇게 예민해졌지?”&lt;br&gt;“이게 맞는 건가…”&lt;/p&gt;
&lt;p&gt;아이를 사랑하는 마음과는 별개로,&lt;br&gt;육아 스트레스는 누구에게나 반드시 찾아옵니다.&lt;/p&gt;
&lt;p&gt;오늘은 실제로 효과 있었던 &lt;strong&gt;육아 스트레스 관리 방법 7가지&lt;/strong&gt;를&lt;br&gt;현실적인 관점에서 정리해보겠습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;육아 스트레스, 왜 이렇게 힘들까?&lt;/h2&gt;
&lt;p&gt;육아 스트레스는 단순한 피곤함이 아닙니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;수면 부족 (만성 피로)&lt;/li&gt;
&lt;li&gt;반복되는 루틴 (끝이 없음)&lt;/li&gt;
&lt;li&gt;통제 불가능한 상황 (아이 울음, 떼쓰기)&lt;/li&gt;
&lt;li&gt;나만의 시간 부족&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이 4가지가 동시에 쌓이면서&lt;br&gt;정신적으로 무너지기 쉬운 구조입니다.&lt;/p&gt;
&lt;p&gt;  그래서 중요한 건 “참는 것”이 아니라&lt;br&gt;&lt;strong&gt;관리하는 방법을 아는 것&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;1. 완벽한 부모를 내려놓기&lt;/h2&gt;
&lt;p&gt;육아 스트레스의 가장 큰 원인 중 하나는&lt;br&gt;“잘해야 한다”는 압박입니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;좋은 부모가 되어야 한다&lt;/li&gt;
&lt;li&gt;아이에게 항상 웃어야 한다&lt;/li&gt;
&lt;li&gt;화내면 안 된다&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  현실적으로 불가능합니다.&lt;/p&gt;
&lt;p&gt;오히려 이렇게 생각하는 게 훨씬 편해집니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“오늘은 70점짜리 부모면 충분하다”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;이 기준 하나만 바꿔도&lt;br&gt;스트레스가 확실히 줄어듭니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;2. ‘혼자만의 시간’을 반드시 확보하기&lt;/h2&gt;
&lt;p&gt;육아는 24시간 업무입니다.&lt;br&gt;그래서 의도적으로 쉬지 않으면 계속 쌓입니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;10분이라도 혼자 있기&lt;/li&gt;
&lt;li&gt;커피 한 잔 천천히 마시기&lt;/li&gt;
&lt;li&gt;핸드폰 보면서 아무 생각 안 하기&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  중요한 건 길이가 아니라 &lt;strong&gt;끊어주는 것&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;p&gt;짧아도 “나만의 시간”이 있으면&lt;br&gt;정신적으로 리셋이 됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;3. 배우자와 역할 분담 명확히 하기&lt;/h2&gt;
&lt;p&gt;육아 스트레스가 폭발하는 이유 중 하나는&lt;br&gt;“혼자 다 한다는 느낌”입니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;기저귀&lt;/li&gt;
&lt;li&gt;목욕&lt;/li&gt;
&lt;li&gt;재우기&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  애매하게 나누면 오히려 더 힘듭니다.&lt;/p&gt;
&lt;p&gt;✔ 추천 방식&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;아예 역할을 고정하기&lt;br&gt;(예: 나는 재우기, 배우자는 목욕)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이렇게 하면&lt;br&gt;&lt;strong&gt;책임 스트레스가 분산&lt;/strong&gt;됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;4. 아이의 행동을 ‘문제’가 아닌 ‘과정’으로 보기&lt;/h2&gt;
&lt;p&gt;아이의 떼쓰기, 울음, 잠투정…&lt;/p&gt;
&lt;p&gt;이걸 문제로 보면 스트레스가 쌓입니다.&lt;br&gt;하지만 이렇게 보면 달라집니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“성장 과정 중 하나다”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;ul&gt;
&lt;li&gt;떼쓰기 → 자기 표현 배우는 과정&lt;/li&gt;
&lt;li&gt;울음 → 의사소통 방식&lt;/li&gt;
&lt;li&gt;잠투정 → 발달 단계&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  관점이 바뀌면 감정 소모가 줄어듭니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;5. 외부 도움 적극적으로 활용하기&lt;/h2&gt;
&lt;p&gt;혼자서 다 하려고 하면 반드시 무너집니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;부모님 도움&lt;/li&gt;
&lt;li&gt;어린이집 / 놀이 수업&lt;/li&gt;
&lt;li&gt;육아 커뮤니티&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  특히 추천하는 방법&lt;/p&gt;
&lt;p&gt;✔ 주 1회라도 아이 맡기기&lt;br&gt;✔ 일정 시간 완전히 자유시간 확보&lt;/p&gt;
&lt;p&gt;이건 사치가 아니라&lt;br&gt;&lt;strong&gt;필수 생존 전략입니다.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;6. 감정이 올라올 때 ‘거리 두기’&lt;/h2&gt;
&lt;p&gt;육아하다 보면 순간적으로 욱합니다.&lt;/p&gt;
&lt;p&gt;그때 가장 중요한 건 이겁니다.&lt;/p&gt;
&lt;p&gt;  “바로 반응하지 않기”&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;10초만 멈추기&lt;/li&gt;
&lt;li&gt;잠깐 자리 피하기&lt;/li&gt;
&lt;li&gt;물 한 잔 마시기&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이 짧은 행동 하나가&lt;br&gt;후회를 줄여줍니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;7. 나 자신을 인정해주기&lt;/h2&gt;
&lt;p&gt;육아를 하다 보면&lt;br&gt;자기 자신을 계속 깎아내리게 됩니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“나는 왜 이것도 못하지”&lt;/li&gt;
&lt;li&gt;“다른 부모는 잘하는데…”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  하지만 사실은&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“이미 충분히 잘하고 있는 중입니다”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;아이를 키우고 있다는 것 자체가&lt;br&gt;엄청난 일입니다.&lt;/p&gt;
&lt;p&gt;이걸 인정해주는 순간&lt;br&gt;스트레스가 훨씬 줄어듭니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;육아 스트레스 관리 핵심 정리&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;완벽한 부모 내려놓기&lt;/li&gt;
&lt;li&gt;혼자만의 시간 만들기&lt;/li&gt;
&lt;li&gt;역할 분담 명확히 하기&lt;/li&gt;
&lt;li&gt;아이 행동을 과정으로 보기&lt;/li&gt;
&lt;li&gt;외부 도움 활용하기&lt;/li&gt;
&lt;li&gt;감정 거리 두기&lt;/li&gt;
&lt;li&gt;나 자신 인정하기&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  이 7가지만 실천해도&lt;br&gt;체감 스트레스는 확실히 달라집니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;마무리 (현실적인 한마디)&lt;/h2&gt;
&lt;p&gt;육아는 “잘하는 사람”이 있는 게 아니라&lt;br&gt;&lt;strong&gt;버티고, 적응하는 과정&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;p&gt;오늘 힘들었다면&lt;br&gt;그건 잘 못한 게 아니라&lt;br&gt;정상입니다.&lt;/p&gt;
&lt;p&gt;  너무 잘하려고 하지 마세요.&lt;br&gt;  오늘 하루 버틴 것만으로도 충분합니다.&lt;/p&gt;</description>
      <category>육아</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/717</guid>
      <comments>https://lee-mandu.tistory.com/717#entry717comment</comments>
      <pubDate>Wed, 1 Apr 2026 17:06:40 +0900</pubDate>
    </item>
    <item>
      <title>개발자가 생산성을 높이는 개발 환경 (실무 기준 정리)</title>
      <link>https://lee-mandu.tistory.com/714</link>
      <description>&lt;h1&gt;개발자가 생산성을 높이는 개발 환경 (실무 기준 정리)&lt;/h1&gt;
&lt;p&gt;개발을 하다 보면 어느 순간 느끼게 됩니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“같은 일을 하는데 왜 나는 더 오래 걸리지?”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;이건 실력의 문제가 아니라&lt;br&gt;대부분 &lt;strong&gt;개발 환경의 차이&lt;/strong&gt;에서 옵니다.&lt;/p&gt;
&lt;p&gt;오늘은 제가 실제로 사용하면서 효과를 본&lt;br&gt;&lt;strong&gt;개발 생산성을 확실하게 올려주는 환경 구성&lt;/strong&gt;을 정리해보겠습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  생산성은 &amp;quot;환경&amp;quot;에서 결정됩니다&lt;/h2&gt;
&lt;p&gt;많은 분들이 착각하는 게 있습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;생산성 = 코딩 실력&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;하지만 실무에서는 오히려 이게 더 정확합니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;생산성 = 환경 + 습관&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;특히 환경은 한 번 잘 세팅해두면&lt;br&gt;계속해서 시간을 절약해줍니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  1. IDE는 무조건 최적화해야 합니다&lt;/h2&gt;
&lt;p&gt;IDE는 그냥 쓰는 게 아니라&lt;br&gt;&lt;strong&gt;튜닝해서 쓰는 도구&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;h3&gt;✔ 추천 IDE&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;IntelliJ / WebStorm&lt;/li&gt;
&lt;li&gt;VSCode&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  중요한 건 “무엇을 쓰냐”가 아니라&lt;br&gt;“얼마나 최적화했냐”입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;✔ 필수 설정 (이건 꼭 하세요)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;자동 저장 (Auto Save)&lt;/li&gt;
&lt;li&gt;코드 자동 정렬 (Format on Save)&lt;/li&gt;
&lt;li&gt;단축키 커스터마이징&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;✔ 생산성 차이 나는 기능&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Go to Definition&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Find Usage&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Refactor (Rename, Extract)&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  이 기능 안 쓰면&lt;br&gt;진짜 시간 많이 날립니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;⚡ 2. 단축키는 선택이 아니라 필수입니다&lt;/h2&gt;
&lt;p&gt;솔직히 말하면&lt;br&gt;단축키 안 쓰면 개발 속도 반토막 납니다.&lt;/p&gt;
&lt;h3&gt;✔ 기본 필수 단축키&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;파일 검색&lt;/li&gt;
&lt;li&gt;전체 검색&lt;/li&gt;
&lt;li&gt;라인 이동&lt;/li&gt;
&lt;li&gt;코드 자동완성&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;✔ 실무 체감 포인트&lt;/h3&gt;
&lt;p&gt;마우스 → 키보드 전환 횟수가 줄어들수록&lt;br&gt;집중력이 유지됩니다.&lt;/p&gt;
&lt;p&gt;  이게 생각보다 엄청 큼&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt; ️ 3. 터미널 환경도 세팅해야 합니다&lt;/h2&gt;
&lt;p&gt;개발자는 하루에도 수십 번 터미널을 씁니다.&lt;/p&gt;
&lt;h3&gt;✔ 추천 환경&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;zsh + oh-my-zsh&lt;/li&gt;
&lt;li&gt;PowerShell (Windows)&lt;/li&gt;
&lt;li&gt;iTerm2 (Mac)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;✔ 필수 설정&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;alias 설정&lt;/li&gt;
&lt;li&gt;자동완성&lt;/li&gt;
&lt;li&gt;히스토리 검색&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;✔ 예시&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;alias gs=&amp;quot;git status&amp;quot;
alias gp=&amp;quot;git pull&amp;quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  이런거 쌓이면 진짜 차이 납니다&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  4. 반복 작업은 무조건 자동화하세요&lt;/h2&gt;
&lt;p&gt;생산성 낮은 개발자의 특징이 있습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;같은 일을 계속 손으로 한다&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h3&gt;✔ 자동화 대상&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;빌드 / 배포&lt;/li&gt;
&lt;li&gt;테스트 실행&lt;/li&gt;
&lt;li&gt;코드 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;✔ 추천 방식&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;npm scripts&lt;/li&gt;
&lt;li&gt;shell script&lt;/li&gt;
&lt;li&gt;Makefile&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  자동화는 “귀찮아서 하는 것”이 아니라&lt;br&gt;“시간을 버는 것”입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  5. 로그와 디버깅 환경을 잘 만들어야 합니다&lt;/h2&gt;
&lt;p&gt;이건 생각보다 중요한 포인트입니다.&lt;/p&gt;
&lt;h3&gt;✔ 좋은 환경의 특징&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;로그가 잘 보인다&lt;/li&gt;
&lt;li&gt;디버깅이 빠르다&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;✔ 실무 팁&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;로그 레벨 구분 (INFO / DEBUG / ERROR)&lt;/li&gt;
&lt;li&gt;traceId 사용&lt;/li&gt;
&lt;li&gt;디버깅 단축키 숙지&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  디버깅 속도가 빠르면&lt;br&gt;개발 속도 자체가 빨라집니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  6. 개발 환경을 통일해야 합니다&lt;/h2&gt;
&lt;p&gt;팀에서 자주 발생하는 문제입니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“내 PC에서는 되는데요?”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;
&lt;h3&gt;✔ 해결 방법&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Docker 사용&lt;/li&gt;
&lt;li&gt;환경 변수 관리 (.env)&lt;/li&gt;
&lt;li&gt;버전 고정 (Node, Java 등)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  환경이 통일되면&lt;br&gt;불필요한 시간 낭비가 사라집니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  7. 멀티 모니터는 거의 필수입니다&lt;/h2&gt;
&lt;p&gt;이건 투자 대비 효율이 가장 좋은 부분입니다.&lt;/p&gt;
&lt;h3&gt;✔ 추천 구성&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;코드&lt;/li&gt;
&lt;li&gt;로그&lt;/li&gt;
&lt;li&gt;브라우저&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;  화면 전환이 줄어들면&lt;br&gt;집중력이 유지됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  생산성이 낮은 환경 특징&lt;/h2&gt;
&lt;p&gt;혹시 아래에 해당된다면&lt;br&gt;환경부터 바꾸셔야 합니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;마우스를 많이 사용한다&lt;/li&gt;
&lt;li&gt;같은 명령어를 반복 입력한다&lt;/li&gt;
&lt;li&gt;로그 찾는데 오래 걸린다&lt;/li&gt;
&lt;li&gt;환경 문제로 시간 낭비한다&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;  핵심 정리&lt;/h2&gt;
&lt;p&gt;생산성은 결국 이 5가지입니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;IDE 최적화&lt;/li&gt;
&lt;li&gt;단축키 사용&lt;/li&gt;
&lt;li&gt;터미널 효율화&lt;/li&gt;
&lt;li&gt;자동화&lt;/li&gt;
&lt;li&gt;환경 통일&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;  마무리 (현실적인 한마디)&lt;/h2&gt;
&lt;p&gt;개발을 오래 하다 보면 느끼게 됩니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;잘하는 개발자는 코드를 빨리 치는 사람이 아니라&lt;br&gt;&lt;strong&gt;일을 빨리 끝내는 사람입니다&lt;/strong&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;그리고 그 차이는 대부분&lt;br&gt;&lt;strong&gt;환경에서 시작됩니다.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;지금 당장 하나만 바꿔보세요.&lt;/p&gt;
&lt;p&gt;  단축키 하나&lt;br&gt;  alias 하나&lt;br&gt;  자동화 하나&lt;/p&gt;
&lt;p&gt;이 작은 변화가&lt;br&gt;나중에 엄청난 시간 차이를 만들어냅니다.&lt;/p&gt;
&lt;hr&gt;</description>
      <category>개발/개발도구</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/714</guid>
      <comments>https://lee-mandu.tistory.com/714#entry714comment</comments>
      <pubDate>Wed, 1 Apr 2026 09:02:54 +0900</pubDate>
    </item>
    <item>
      <title>Eclipse 디버깅 완벽 가이드 (실무에서 바로 써먹는 디버깅 꿀팁)</title>
      <link>https://lee-mandu.tistory.com/712</link>
      <description>&lt;h1&gt;Eclipse 디버깅 완벽 가이드 (실무에서 바로 써먹는 디버깅 꿀팁)&lt;/h1&gt;
&lt;p&gt;개발하다 보면 이런 순간 한 번쯤 겪습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&amp;quot;코드는 맞는 것 같은데 왜 안되지?&amp;quot;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;이럴 때 대부분 로그를 찍기 시작합니다.&lt;br&gt;하지만 실무에서는 더 빠르고 정확한 방법이 있습니다.&lt;/p&gt;
&lt;p&gt;바로 &lt;strong&gt;디버깅(Debugging)&lt;/strong&gt; 입니다.&lt;/p&gt;
&lt;p&gt;오늘은 실제 개발하면서 체감하는&lt;br&gt;&lt;strong&gt;Eclipse 디버깅 핵심 방법 + 실전 꿀팁&lt;/strong&gt;을 정리해보겠습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;디버깅이 중요한 이유&lt;/h1&gt;
&lt;p&gt;많은 개발자가 처음에는 &lt;code&gt;println&lt;/code&gt;으로 디버깅합니다.&lt;/p&gt;
&lt;p&gt;하지만 이 방식은 한계가 명확합니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;실행 → 수정 → 다시 실행 반복&lt;/li&gt;
&lt;li&gt;흐름을 한 번에 보기 어려움&lt;/li&gt;
&lt;li&gt;변수 상태 확인이 불편&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;반면 Eclipse 디버깅을 사용하면&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;코드 실행을 원하는 위치에서 멈출 수 있고&lt;/li&gt;
&lt;li&gt;변수 값을 실시간으로 확인할 수 있으며&lt;/li&gt;
&lt;li&gt;전체 실행 흐름을 파악할 수 있습니다&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  즉, 문제를 &amp;quot;감&amp;quot;이 아니라 &lt;strong&gt;정확하게 찾아낼 수 있습니다&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;기본 디버깅 방법 (이건 무조건 익히세요)&lt;/h1&gt;
&lt;h2&gt;1. 브레이크포인트 설정&lt;/h2&gt;
&lt;p&gt;코드 왼쪽 줄 번호 영역을 클릭하면&lt;br&gt;파란 점이 생기면서 브레이크포인트가 설정됩니다.&lt;/p&gt;
&lt;p&gt;  해당 위치에서 코드 실행이 멈춥니다&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;2. 디버그 실행&lt;/h2&gt;
&lt;p&gt;다음 방법 중 하나로 실행합니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;우클릭 → Debug As → Java Application&lt;/li&gt;
&lt;li&gt;단축키 F11&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;3. 디버깅 핵심 단축키&lt;/h2&gt;
&lt;p&gt;디버깅은 단축키를 모르면 제대로 못 씁니다.&lt;/p&gt;
&lt;h3&gt;F5 → Step Into&lt;/h3&gt;
&lt;p&gt;메서드 내부로 들어가기&lt;/p&gt;
&lt;p&gt;  내부 로직까지 확인할 때 사용&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;F6 → Step Over&lt;/h3&gt;
&lt;p&gt;현재 라인 실행 후 다음 라인 이동&lt;/p&gt;
&lt;p&gt;  가장 많이 사용하는 기본 동작&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;F7 → Step Return&lt;/h3&gt;
&lt;p&gt;현재 메서드 빠져나가기&lt;/p&gt;
&lt;p&gt;  깊게 들어갔을 때 탈출용&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;F8 → Resume&lt;/h3&gt;
&lt;p&gt;다음 브레이크포인트까지 실행&lt;/p&gt;
&lt;p&gt;  빠르게 흐름 넘길 때 사용&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;실무에서 차이 나는 디버깅 포인트&lt;/h1&gt;
&lt;h2&gt;1. 변수 값 실시간 확인&lt;/h2&gt;
&lt;p&gt;디버그 모드에서는 Variables 창에서&lt;br&gt;현재 변수 값을 바로 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;  실무 팁&lt;br&gt;의심되는 변수는 계속 체크하면서 흐름을 봅니다&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;2. 조건부 브레이크포인트 (진짜 핵심)&lt;/h2&gt;
&lt;p&gt;브레이크포인트에 조건을 걸 수 있습니다.&lt;/p&gt;
&lt;p&gt;예시&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;특정 사용자일 때만 멈추기&lt;/li&gt;
&lt;li&gt;특정 값 이상일 때 멈추기&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  반복문 디버깅에서 특히 강력합니다&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;3. Call Stack 활용&lt;/h2&gt;
&lt;p&gt;현재 코드가 어떤 흐름으로 호출되었는지 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;  이런 상황에서 필수&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API 호출 흐름 추적&lt;/li&gt;
&lt;li&gt;예상하지 못한 메서드 호출&lt;/li&gt;
&lt;li&gt;서비스 구조 분석&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;4. Watch / Expressions 활용&lt;/h2&gt;
&lt;p&gt;특정 변수나 조건을 계속 추적할 수 있습니다.&lt;/p&gt;
&lt;p&gt;  반복문이나 복잡한 로직에서 효과적&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;실전 디버깅 꿀팁 (여기서 차이 납니다)&lt;/h1&gt;
&lt;h2&gt;1. 에러 위치가 아니라 &amp;quot;원인 위치&amp;quot;에 브레이크 걸기&lt;/h2&gt;
&lt;p&gt;초보는 에러 난 지점만 봅니다.&lt;/p&gt;
&lt;p&gt;하지만 실무에서는&lt;/p&gt;
&lt;p&gt;  &amp;quot;문제가 시작된 지점&amp;quot;을 찾는 것이 핵심입니다&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;2. Step Into 남발하지 않기&lt;/h2&gt;
&lt;p&gt;무조건 F5 누르면 오히려 길을 잃습니다.&lt;/p&gt;
&lt;p&gt;  대부분은 F6 (Step Over) 사용&lt;/p&gt;
&lt;p&gt;필요할 때만 내부로 들어갑니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;3. 로그 + 디버깅 같이 사용하기&lt;/h2&gt;
&lt;p&gt;실무에서는 하나만 쓰지 않습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;로그 → 전체 흐름 파악&lt;/li&gt;
&lt;li&gt;디버깅 → 상세 분석&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  이 조합이 가장 강력합니다&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;4. 반복문 디버깅은 조건 걸기&lt;/h2&gt;
&lt;p&gt;반복문에서 계속 멈추면 매우 비효율적입니다.&lt;/p&gt;
&lt;p&gt;  해결 방법&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;조건부 브레이크포인트 사용&lt;/li&gt;
&lt;li&gt;특정 값에서만 멈추기&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1&gt;디버깅할 때 자주 하는 실수&lt;/h1&gt;
&lt;h2&gt;1. 브레이크포인트 남발&lt;/h2&gt;
&lt;p&gt;→ 흐름 끊겨서 오히려 더 헷갈림&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;2. 전체 흐름 이해 없이 디버깅&lt;/h2&gt;
&lt;p&gt;→ 어디서부터 봐야 하는지 모르게 됨&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;3. 상태 초기화 안 하고 반복 실행&lt;/h2&gt;
&lt;p&gt;→ 이전 값 때문에 잘못된 판단&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;핵심 정리&lt;/h1&gt;
&lt;p&gt;Eclipse 디버깅은 단순 기능이 아니라&lt;br&gt;&lt;strong&gt;문제 해결 능력을 결정하는 핵심 스킬&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;p&gt;핵심만 정리하면&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;브레이크포인트 정확히 잡기&lt;/li&gt;
&lt;li&gt;F5 / F6 / F7 / F8 이해&lt;/li&gt;
&lt;li&gt;변수 값과 흐름 동시에 보기&lt;/li&gt;
&lt;li&gt;조건부 브레이크포인트 활용&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이것만 제대로 써도&lt;br&gt;디버깅 속도가 완전히 달라집니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;마무리&lt;/h1&gt;
&lt;p&gt;디버깅을 잘하는 개발자는&lt;br&gt;문제를 빠르게 해결하는 개발자입니다.&lt;/p&gt;
&lt;p&gt;처음에는 어렵지만&lt;br&gt;몇 번만 제대로 사용해보면&lt;/p&gt;
&lt;p&gt;  &amp;quot;왜 이제야 썼지?&amp;quot; 느낌이 옵니다&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;  여러분은 디버깅할 때 어떤 방법을 사용하시나요?&lt;br&gt;실무에서 쓰는 꿀팁이 있다면 댓글로 공유해주세요!&lt;/p&gt;</description>
      <category>개발/개발도구</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/712</guid>
      <comments>https://lee-mandu.tistory.com/712#entry712comment</comments>
      <pubDate>Tue, 31 Mar 2026 18:54:58 +0900</pubDate>
    </item>
    <item>
      <title>Checked Exception vs Unchecked Exception 차이: 실무에서 어떻게 선택해야 할까?</title>
      <link>https://lee-mandu.tistory.com/716</link>
      <description>&lt;h1&gt;Checked Exception vs Unchecked Exception 차이: 실무에서 어떻게 선택해야 할까?&lt;/h1&gt;
&lt;p&gt;Java를 어느 정도 공부하다 보면 반드시 마주치는 개념이 있습니다.&lt;br&gt;바로 &lt;strong&gt;Checked Exception vs Unchecked Exception&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;p&gt;처음에는 단순히&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“Checked는 try-catch 해야 하고, Unchecked는 안 해도 된다”&lt;br&gt;이 정도로 이해하고 넘어가기 쉽습니다.&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;하지만 실무에서는 이 선택 하나로&lt;br&gt;&lt;strong&gt;코드 구조, 유지보수성, 예외 설계 방식까지 완전히 달라집니다.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;이번 글에서는 단순 개념 정리를 넘어서&lt;br&gt;&lt;strong&gt;언제 Checked를 쓰고, 언제 Unchecked를 써야 하는지&lt;/strong&gt;까지&lt;br&gt;실무 기준으로 정리해보겠습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Checked Exception vs Unchecked Exception 한눈에 보기&lt;/h2&gt;
&lt;p&gt;먼저 핵심 차이를 빠르게 정리해보겠습니다.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;구분&lt;/th&gt;
&lt;th&gt;Checked Exception&lt;/th&gt;
&lt;th&gt;Unchecked Exception&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;상속&lt;/td&gt;
&lt;td&gt;Exception&lt;/td&gt;
&lt;td&gt;RuntimeException&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;컴파일 체크&lt;/td&gt;
&lt;td&gt;강제됨&lt;/td&gt;
&lt;td&gt;강제되지 않음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;처리 방식&lt;/td&gt;
&lt;td&gt;try-catch 또는 throws 필수&lt;/td&gt;
&lt;td&gt;선택&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;용도&lt;/td&gt;
&lt;td&gt;복구 가능한 예외&lt;/td&gt;
&lt;td&gt;개발 실수 / 비즈니스 오류&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;대표 예외&lt;/td&gt;
&lt;td&gt;IOException, SQLException&lt;/td&gt;
&lt;td&gt;NullPointerException, IllegalArgumentException&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;이 표만 보면 간단해 보이지만, 실제로는 훨씬 중요한 의미를 가지고 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Java Exception 구조에서의 위치&lt;/h2&gt;
&lt;p&gt;Java Exception 구조에서 두 개념은 이렇게 나뉩니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;Throwable
└── Exception
    ├── RuntimeException (Unchecked)
    └── Checked Exception&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;즉,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;RuntimeException&lt;/code&gt;을 상속하면 → Unchecked Exception&lt;/li&gt;
&lt;li&gt;그 외 &lt;code&gt;Exception&lt;/code&gt;을 상속하면 → Checked Exception&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이 구조를 이해하면 왜 동작이 다른지 자연스럽게 연결됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Checked Exception이란?&lt;/h2&gt;
&lt;p&gt;Checked Exception은 &lt;strong&gt;컴파일 단계에서 반드시 처리 여부를 확인받는 예외&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;p&gt;즉, 아래 둘 중 하나를 반드시 해야 합니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;try-catch로 처리&lt;/li&gt;
&lt;li&gt;throws로 위임&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;예시&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;public void readFile() {
    FileReader reader = new FileReader(&amp;quot;test.txt&amp;quot;); // 컴파일 에러 발생
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;위 코드는 컴파일되지 않습니다.&lt;br&gt;왜냐하면 &lt;code&gt;FileNotFoundException&lt;/code&gt;이 Checked Exception이기 때문입니다.&lt;/p&gt;
&lt;h3&gt;해결 방법 1: try-catch&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;try {
    FileReader reader = new FileReader(&amp;quot;test.txt&amp;quot;);
} catch (FileNotFoundException e) {
    System.out.println(&amp;quot;파일이 없습니다.&amp;quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;해결 방법 2: throws&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;public void readFile() throws FileNotFoundException {
    FileReader reader = new FileReader(&amp;quot;test.txt&amp;quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;Checked Exception의 의도&lt;/h2&gt;
&lt;p&gt;Checked Exception은 단순한 제약이 아니라&lt;br&gt;&lt;strong&gt;“이건 반드시 신경 써야 하는 실패 상황이다”&lt;/strong&gt;라는 의미입니다.&lt;/p&gt;
&lt;p&gt;대표적인 특징:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;외부 자원 접근&lt;/li&gt;
&lt;li&gt;실패 가능성이 높음&lt;/li&gt;
&lt;li&gt;복구 가능성이 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;예:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;파일 읽기 실패&lt;/li&gt;
&lt;li&gt;DB 연결 실패&lt;/li&gt;
&lt;li&gt;네트워크 요청 실패&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;즉, Checked Exception은&lt;br&gt;  &lt;strong&gt;“이건 무시하면 안 된다”는 신호&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Unchecked Exception이란?&lt;/h2&gt;
&lt;p&gt;Unchecked Exception은 &lt;code&gt;RuntimeException&lt;/code&gt;을 상속한 예외입니다.&lt;/p&gt;
&lt;p&gt;이 예외는 컴파일러가 처리 여부를 강제하지 않습니다.&lt;/p&gt;
&lt;h3&gt;예시&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;String text = null;
System.out.println(text.length()); // NullPointerException&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;int number = Integer.parseInt(&amp;quot;abc&amp;quot;); // NumberFormatException&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이 코드는 컴파일은 되지만 실행 중 예외가 발생합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Unchecked Exception의 의도&lt;/h2&gt;
&lt;p&gt;Unchecked Exception은 대부분 이런 상황을 의미합니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;개발자의 실수&lt;/li&gt;
&lt;li&gt;잘못된 입력&lt;/li&gt;
&lt;li&gt;잘못된 상태&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;즉,&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;코드를 고쳐야 하는 문제&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;대표 예:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;NullPointerException → null 체크 안 함&lt;/li&gt;
&lt;li&gt;IllegalArgumentException → 잘못된 값 전달&lt;/li&gt;
&lt;li&gt;IllegalStateException → 잘못된 상태에서 호출&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;핵심 차이: “복구 가능 vs 코드 오류”&lt;/h2&gt;
&lt;p&gt;이 둘의 가장 중요한 차이는 여기입니다.&lt;/p&gt;
&lt;h3&gt;Checked Exception&lt;/h3&gt;
&lt;p&gt;  복구 가능성이 있는 예외&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;재시도 가능&lt;/li&gt;
&lt;li&gt;대체 로직 가능&lt;/li&gt;
&lt;li&gt;사용자에게 안내 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Unchecked Exception&lt;/h3&gt;
&lt;p&gt;  코드 자체가 잘못된 상태&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;로직 수정 필요&lt;/li&gt;
&lt;li&gt;방어 코드 필요&lt;/li&gt;
&lt;li&gt;설계 문제일 가능성 높음&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;실무에서 가장 중요한 판단 기준&lt;/h2&gt;
&lt;p&gt;실무에서는 이렇게 생각하면 거의 틀리지 않습니다.&lt;/p&gt;
&lt;h3&gt;1. 외부 시스템 문제인가?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;파일, DB, 네트워크 → Checked 고려&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;2. 개발자 실수인가?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;null, 잘못된 값 → Unchecked&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;3. 비즈니스 규칙 위반인가?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;주문 수량 음수, 로그인 불가 상태 → Unchecked&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;예시로 보는 차이&lt;/h2&gt;
&lt;h3&gt;예시 1: 파일 읽기 (Checked)&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;public String readFile(String path) throws IOException {
    return Files.readString(Path.of(path));
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이건 실패할 수 있는 상황이 자연스럽습니다.&lt;br&gt;그래서 Checked Exception이 적절합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;예시 2: 잘못된 값 (Unchecked)&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;public void setAge(int age) {
    if (age &amp;lt; 0) {
        throw new IllegalArgumentException(&amp;quot;나이는 0 이상이어야 합니다.&amp;quot;);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이건 호출하는 쪽이 잘못 사용한 것입니다.&lt;br&gt;그래서 Unchecked가 맞습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;예시 3: 비즈니스 예외 (Unchecked)&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;public void order(int stock, int quantity) {
    if (quantity &amp;gt; stock) {
        throw new OutOfStockException(&amp;quot;재고 부족&amp;quot;);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이건 시스템 오류가 아니라 &lt;strong&gt;비즈니스 규칙 위반&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;p&gt;그래서 대부분 RuntimeException 기반으로 만듭니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;왜 요즘은 Unchecked Exception을 더 많이 쓸까?&lt;/h2&gt;
&lt;p&gt;이건 실무에서 정말 중요한 포인트입니다.&lt;/p&gt;
&lt;h3&gt;이유 1: 코드가 너무 지저분해짐&lt;/h3&gt;
&lt;p&gt;Checked Exception을 남발하면 이런 코드가 됩니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;public void service() throws IOException, SQLException, ParseException {
    // ...
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;호출하는 쪽도 계속 throws를 추가해야 합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;이유 2: 예외 전파가 과도해짐&lt;/h3&gt;
&lt;p&gt;Controller까지 계속 전달되면서&lt;br&gt;코드가 “예외 전달용 코드”가 되어버립니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;이유 3: 실제로는 복구 안 하는 경우가 많음&lt;/h3&gt;
&lt;p&gt;현실적으로는 대부분 이렇게 합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;catch (Exception e) {
    log.error(e);
    throw new RuntimeException(e);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;즉, Checked로 시작해도 결국 RuntimeException으로 감쌉니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;그래서 실무에서는 이렇게 정리합니다&lt;/h2&gt;
&lt;h3&gt;✔ Checked Exception 사용 기준&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;외부 리소스 접근&lt;/li&gt;
&lt;li&gt;반드시 호출자가 처리해야 하는 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;예:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;파일&lt;/li&gt;
&lt;li&gt;DB&lt;/li&gt;
&lt;li&gt;네트워크&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;✔ Unchecked Exception 사용 기준&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;잘못된 요청&lt;/li&gt;
&lt;li&gt;잘못된 상태&lt;/li&gt;
&lt;li&gt;비즈니스 로직 위반&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;예:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;회원 없음&lt;/li&gt;
&lt;li&gt;재고 부족&lt;/li&gt;
&lt;li&gt;권한 없음&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;Custom Exception 설계 기준&lt;/h2&gt;
&lt;p&gt;실무에서는 직접 예외를 만드는 경우가 많습니다.&lt;/p&gt;
&lt;h3&gt;RuntimeException 기반 (추천)&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;public class UserNotFoundException extends RuntimeException {
    public UserNotFoundException(String message) {
        super(message);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이 방식이 가장 많이 사용됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;Checked Exception 기반 (특수 상황)&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;public class ExternalApiException extends Exception {
    public ExternalApiException(String message) {
        super(message);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;외부 시스템 연동처럼&lt;br&gt;“반드시 처리해야 하는 경우”에 사용합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;잘못된 사용 사례&lt;/h2&gt;
&lt;h3&gt;❌ 무조건 Checked Exception&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;public void validate(int value) throws Exception {
    if (value &amp;lt; 0) {
        throw new Exception(&amp;quot;잘못된 값&amp;quot;);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  의미 없음 + 코드만 복잡해짐&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;❌ 모든 예외 RuntimeException&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;try {
    // DB 처리
} catch (Exception e) {
    throw new RuntimeException(e);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  예외 의미가 사라짐&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;추천 설계 패턴&lt;/h2&gt;
&lt;p&gt;실무에서 가장 많이 쓰는 구조입니다.&lt;/p&gt;
&lt;h3&gt;Repository&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Checked 또는 라이브러리 예외 발생&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Service&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;비즈니스 예외로 변환 (RuntimeException)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Controller&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;전역 예외 처리&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;예시&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;public User getUser(Long id) {
    return userRepository.findById(id)
        .orElseThrow(() -&amp;gt; new UserNotFoundException(&amp;quot;사용자 없음&amp;quot;));
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;핵심 요약&lt;/h2&gt;
&lt;p&gt;이 주제에서 반드시 기억해야 할 핵심입니다.&lt;/p&gt;
&lt;h3&gt;1. Checked Exception&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;컴파일러 강제&lt;/li&gt;
&lt;li&gt;복구 가능한 상황&lt;/li&gt;
&lt;li&gt;외부 리소스 중심&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;2. Unchecked Exception&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;강제 없음&lt;/li&gt;
&lt;li&gt;코드 문제 / 비즈니스 문제&lt;/li&gt;
&lt;li&gt;RuntimeException 기반&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;3. 실무 기준&lt;/h3&gt;
&lt;p&gt;  대부분 RuntimeException 사용&lt;br&gt;  Checked는 제한적으로 사용&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;결론: 중요한 건 “문법”이 아니라 “설계”&lt;/h2&gt;
&lt;p&gt;Checked vs Unchecked는 단순 문법 차이가 아닙니다.&lt;/p&gt;
&lt;p&gt;이 선택은 곧 다음을 의미합니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;이 예외를 누가 책임질 것인가&lt;/li&gt;
&lt;li&gt;어디서 처리할 것인가&lt;/li&gt;
&lt;li&gt;복구 가능한가, 아닌가&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;결국 핵심은 이 한 줄입니다.&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt;“이 예외는 처리해야 하는 문제인가, 고쳐야 하는 문제인가?”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;이 기준만 잡으면 설계가 훨씬 명확해집니다.&lt;/p&gt;</description>
      <category>개발/java,spring</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/716</guid>
      <comments>https://lee-mandu.tistory.com/716#entry716comment</comments>
      <pubDate>Tue, 31 Mar 2026 16:58:22 +0900</pubDate>
    </item>
    <item>
      <title>서버 로그 분석 방법 총정리 (초보부터 실무까지)</title>
      <link>https://lee-mandu.tistory.com/713</link>
      <description>&lt;h1&gt;서버 로그 분석 방법 총정리 (초보부터 실무까지)&lt;/h1&gt;
&lt;p&gt;개발을 하다 보면 반드시 마주치는 순간이 있습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“왜 안 되지?”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;이때 가장 먼저 확인해야 할 것은 바로 &lt;strong&gt;서버 로그(Server Log)&lt;/strong&gt; 입니다.&lt;br&gt;로그를 제대로 읽을 줄 알면 디버깅 속도가 10배 이상 빨라집니다.&lt;/p&gt;
&lt;p&gt;오늘은 &lt;strong&gt;초보자부터 실무 개발자까지 활용 가능한 서버 로그 분석 방법&lt;/strong&gt;을 정리해보겠습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  서버 로그란 무엇인가?&lt;/h2&gt;
&lt;p&gt;서버 로그는 쉽게 말해,&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;서버에서 발생한 모든 이벤트를 기록한 데이터&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;입니다.&lt;/p&gt;
&lt;p&gt;대표적으로 다음과 같은 정보가 포함됩니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;요청(Request) 정보&lt;/li&gt;
&lt;li&gt;응답(Response) 상태&lt;/li&gt;
&lt;li&gt;에러 메시지&lt;/li&gt;
&lt;li&gt;사용자 IP&lt;/li&gt;
&lt;li&gt;처리 시간&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;  서버 로그 종류 (이거 모르면 분석 안 됩니다)&lt;/h2&gt;
&lt;p&gt;로그는 종류별로 역할이 다릅니다.&lt;/p&gt;
&lt;h3&gt;1️⃣ Access Log&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;사용자의 요청 기록&lt;/li&gt;
&lt;li&gt;URL, IP, 상태코드 확인 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  언제 보냐?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;트래픽 분석&lt;/li&gt;
&lt;li&gt;특정 API 호출 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2️⃣ Error Log&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;서버에서 발생한 에러 기록&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  언제 보냐?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;500 에러&lt;/li&gt;
&lt;li&gt;NullPointerException&lt;/li&gt;
&lt;li&gt;DB 연결 실패&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3️⃣ Application Log&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;개발자가 직접 남긴 로그&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  언제 보냐?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;비즈니스 로직 흐름 확인&lt;/li&gt;
&lt;li&gt;값 검증&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;  서버 로그 분석 기본 흐름 (실무 핵심)&lt;/h2&gt;
&lt;p&gt;실무에서는 아래 순서대로 보면 됩니다.&lt;/p&gt;
&lt;h3&gt;✔ 1단계: 에러 로그 먼저 확인&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;ERROR / Exception 키워드 검색&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;  핵심:&lt;br&gt;문제의 &lt;strong&gt;원인(root cause)&lt;/strong&gt;은 거의 여기 있음&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;✔ 2단계: 시간 기준으로 추적&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;문제 발생 시간 기준으로 앞뒤 로그 확인&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;  핵심:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;에러는 결과일 뿐&lt;/li&gt;
&lt;li&gt;그 전에 무슨 일이 있었는지가 중요&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;✔ 3단계: 요청 흐름 따라가기&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;Access Log → Application Log → Error Log&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;  핵심:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;하나의 요청 흐름으로 묶어서 봐야 함&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;✔ 4단계: 키워드 필터링&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;grep, find, 검색 활용&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;예시:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;grep &amp;quot;ERROR&amp;quot; server.log
grep &amp;quot;NullPointerException&amp;quot; server.log&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;⚡ 실무에서 많이 쓰는 로그 분석 명령어&lt;/h2&gt;
&lt;p&gt;리눅스 환경 기준입니다.&lt;/p&gt;
&lt;h3&gt;  특정 키워드 검색&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;grep &amp;quot;ERROR&amp;quot; server.log&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;  실시간 로그 보기&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;tail -f server.log&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  운영 서버에서 필수&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;  특정 시간대 로그 보기&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sed -n &amp;#39;1000,1200p&amp;#39; server.log&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;  여러 키워드 동시에 검색&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;grep -E &amp;quot;ERROR|Exception&amp;quot; server.log&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;  로그 분석이 어려운 이유 (공감 포인트)&lt;/h2&gt;
&lt;p&gt;많은 개발자들이 처음에 이렇게 말합니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;“로그가 너무 많아서 뭐가 문제인지 모르겠어요…”&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;그 이유는 딱 3가지입니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;로그를 “흐름”으로 보지 않음&lt;/li&gt;
&lt;li&gt;에러만 보고 원인을 안 봄&lt;/li&gt;
&lt;li&gt;불필요한 로그에 집중함&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;  로그 분석 잘하는 사람 특징&lt;/h2&gt;
&lt;p&gt;실무에서 잘하는 사람은 이렇게 합니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;에러 발생 &amp;quot;이전 로그&amp;quot;를 본다&lt;/li&gt;
&lt;li&gt;로그를 &amp;quot;시간 순&amp;quot;으로 본다&lt;/li&gt;
&lt;li&gt;문제를 &amp;quot;가설 → 검증&amp;quot;으로 접근한다&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;  로그 잘 남기는 방법 (이게 더 중요)&lt;/h2&gt;
&lt;p&gt;사실 분석보다 더 중요한 건 &lt;strong&gt;로그 설계&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;p&gt;좋은 로그는 아래 조건을 만족합니다.&lt;/p&gt;
&lt;h3&gt;✔ 반드시 포함해야 할 것&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;요청 ID (traceId)&lt;/li&gt;
&lt;li&gt;사용자 정보&lt;/li&gt;
&lt;li&gt;주요 파라미터 값&lt;/li&gt;
&lt;li&gt;처리 시간&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;✔ 예시 (좋은 로그)&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;[INFO] [traceId=abc123] userId=lee API=/login status=200 time=120ms&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  이런 로그가 있어야 추적이 가능함&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;  로그 분석 도구 추천&lt;/h2&gt;
&lt;p&gt;실무에서는 도구도 많이 사용합니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ELK Stack (Elasticsearch, Logstash, Kibana)&lt;/li&gt;
&lt;li&gt;Grafana + Loki&lt;/li&gt;
&lt;li&gt;CloudWatch (AWS)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  규모가 커질수록 필수입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;✅ 정리&lt;/h2&gt;
&lt;p&gt;서버 로그 분석은 단순히 로그를 보는 것이 아니라,&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&amp;quot;문제의 흐름을 추적하는 과정&amp;quot;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;입니다.&lt;/p&gt;
&lt;p&gt;핵심만 다시 정리하면:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;에러 로그부터 본다&lt;/li&gt;
&lt;li&gt;시간 흐름으로 분석한다&lt;/li&gt;
&lt;li&gt;요청 단위로 추적한다&lt;/li&gt;
&lt;li&gt;로그를 잘 남기는 것이 더 중요하다&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;  마무리&lt;/h2&gt;
&lt;p&gt;개발 실력이 늘었다는 느낌이 드는 순간은&lt;br&gt;프레임워크를 잘 쓸 때가 아니라,&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&lt;strong&gt;로그만 보고 문제를 찾아낼 수 있을 때&lt;/strong&gt; 입니다.&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;오늘부터라도 로그를 &amp;quot;읽는 습관&amp;quot;을 만들어보세요.&lt;br&gt;분명히 개발 속도가 달라집니다.&lt;/p&gt;
&lt;hr&gt;</description>
      <category>개발/was</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/713</guid>
      <comments>https://lee-mandu.tistory.com/713#entry713comment</comments>
      <pubDate>Mon, 30 Mar 2026 08:40:46 +0900</pubDate>
    </item>
    <item>
      <title>Java Exception 구조 이해하기: try-catch만 알면 부족한 이유</title>
      <link>https://lee-mandu.tistory.com/715</link>
      <description>&lt;h1&gt;Java Exception 구조 이해하기: try-catch만 알면 부족한 이유&lt;/h1&gt;
&lt;p&gt;자바를 처음 배울 때 &lt;code&gt;try-catch&lt;/code&gt; 문법부터 접하는 경우가 많습니다.&lt;br&gt;그런데 실무로 넘어가면 단순히 예외를 잡는 것보다 &lt;strong&gt;예외가 어떤 구조로 이루어져 있는지&lt;/strong&gt;, &lt;strong&gt;왜 checked exception과 unchecked exception이 나뉘는지&lt;/strong&gt;, &lt;strong&gt;어떻게 설계해야 유지보수가 편한지&lt;/strong&gt;를 이해하는 것이 훨씬 중요합니다.&lt;/p&gt;
&lt;p&gt;저도 처음에는 &lt;code&gt;Exception&lt;/code&gt;, &lt;code&gt;RuntimeException&lt;/code&gt;, &lt;code&gt;throws&lt;/code&gt; 정도만 알면 된다고 생각했는데, 프로젝트가 커질수록 예외 구조를 제대로 이해하지 않으면 디버깅도 어려워지고 코드도 금방 지저분해지더라고요.&lt;/p&gt;
&lt;p&gt;이번 글에서는 &lt;strong&gt;Java Exception 구조&lt;/strong&gt;를 처음부터 차근차근 정리해보겠습니다.&lt;br&gt;문법 설명에 그치지 않고, &lt;strong&gt;실무에서 왜 이 구조가 중요한지&lt;/strong&gt;까지 함께 보겠습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Java Exception이란?&lt;/h2&gt;
&lt;p&gt;Java에서 Exception은 프로그램 실행 중 발생하는 비정상 상황을 의미합니다.&lt;/p&gt;
&lt;p&gt;예를 들면 이런 경우입니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;숫자로 바꿀 수 없는 문자열을 정수로 변환하려고 할 때&lt;/li&gt;
&lt;li&gt;존재하지 않는 파일을 읽으려고 할 때&lt;/li&gt;
&lt;li&gt;배열 범위를 벗어난 인덱스에 접근할 때&lt;/li&gt;
&lt;li&gt;데이터베이스 연결이 실패했을 때&lt;/li&gt;
&lt;li&gt;null 객체의 메서드를 호출했을 때&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이런 상황이 발생했는데 아무 처리도 하지 않으면 프로그램은 비정상 종료될 수 있습니다.&lt;br&gt;그래서 자바는 예외를 객체 형태로 다루고, 개발자가 이를 적절히 처리할 수 있도록 구조를 만들어 두었습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Java Exception 구조 전체 그림&lt;/h2&gt;
&lt;p&gt;자바의 예외 구조는 최상위에서 보면 아래와 같이 이해하면 편합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;Throwable
├── Error
└── Exception
    ├── RuntimeException
    └── 기타 Checked Exception&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;핵심은 &lt;code&gt;Throwable&lt;/code&gt; 아래에 &lt;code&gt;Error&lt;/code&gt;와 &lt;code&gt;Exception&lt;/code&gt;이 있고,&lt;br&gt;&lt;code&gt;Exception&lt;/code&gt; 아래에 다시 &lt;code&gt;RuntimeException&lt;/code&gt; 계열과 일반 예외들이 나뉜다는 점입니다.&lt;/p&gt;
&lt;p&gt;이 구조를 이해하면 왜 어떤 예외는 반드시 처리해야 하고, 어떤 예외는 컴파일러가 강제하지 않는지 바로 연결됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;1. Throwable: 모든 예외와 에러의 최상위 클래스&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Throwable&lt;/code&gt;은 자바에서 던질 수 있는 모든 문제 상황의 부모 클래스입니다.&lt;/p&gt;
&lt;p&gt;즉, &lt;code&gt;throw&lt;/code&gt; 할 수 있는 대상은 결국 &lt;code&gt;Throwable&lt;/code&gt;을 상속받아야 합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;public class Throwable&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이 클래스는 단순한 부모 역할만 하는 것이 아니라, 예외 처리에 필요한 중요한 정보도 가지고 있습니다.&lt;/p&gt;
&lt;p&gt;대표적으로 이런 정보가 들어 있습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;예외 메시지&lt;/li&gt;
&lt;li&gt;원인(cause)&lt;/li&gt;
&lt;li&gt;stack trace 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;예를 들어 아래 코드를 보면 예외 객체 안에 메시지와 원인 정보가 담깁니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;try {
    int number = Integer.parseInt(&amp;quot;abc&amp;quot;);
} catch (NumberFormatException e) {
    System.out.println(e.getMessage());
    e.printStackTrace();
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;실무에서는 단순히 예외가 났다는 사실보다도,&lt;br&gt;&lt;strong&gt;어디서 발생했는지&lt;/strong&gt;, &lt;strong&gt;왜 발생했는지&lt;/strong&gt;, &lt;strong&gt;원인이 되는 이전 예외가 무엇인지&lt;/strong&gt;가 훨씬 중요합니다.&lt;br&gt;그 정보를 담는 뿌리가 바로 &lt;code&gt;Throwable&lt;/code&gt;입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;2. Error: 애플리케이션이 복구하기 어려운 심각한 문제&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Error&lt;/code&gt;는 일반적으로 애플리케이션 코드에서 처리 대상으로 보기 어려운 문제입니다.&lt;/p&gt;
&lt;p&gt;대표적인 예시는 다음과 같습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;OutOfMemoryError&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;StackOverflowError&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;VirtualMachineError&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;예를 들어 메모리가 완전히 부족해서 &lt;code&gt;OutOfMemoryError&lt;/code&gt;가 발생했다면,&lt;br&gt;이건 보통 비즈니스 로직에서 try-catch로 복구할 문제가 아닙니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;try {
    // 메모리를 과도하게 사용하는 코드
} catch (OutOfMemoryError e) {
    // 일반적인 실무에서는 이렇게 처리하는 것을 권장하지 않음
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;실무에서는 &lt;code&gt;Error&lt;/code&gt;를 잡아서 해결하려고 하기보다,&lt;br&gt;애초에 이런 상황이 발생하지 않도록 설계하거나 서버 설정, 메모리 튜닝, 무한 재귀 방지 같은 방향으로 접근합니다.&lt;/p&gt;
&lt;p&gt;즉, &lt;code&gt;Error&lt;/code&gt;는 보통 &lt;strong&gt;시스템 레벨의 심각한 장애&lt;/strong&gt;로 보는 편이 맞습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;3. Exception: 애플리케이션에서 처리 가능한 예외&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Exception&lt;/code&gt;은 개발자가 처리할 수 있는 문제 상황을 표현합니다.&lt;/p&gt;
&lt;p&gt;실무에서 우리가 주로 다루는 예외는 대부분 이쪽입니다.&lt;/p&gt;
&lt;p&gt;예를 들면 다음과 같습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;파일이 존재하지 않음&lt;/li&gt;
&lt;li&gt;잘못된 사용자 입력&lt;/li&gt;
&lt;li&gt;DB 조회 실패&lt;/li&gt;
&lt;li&gt;네트워크 호출 실패&lt;/li&gt;
&lt;li&gt;잘못된 상태에서 메서드 실행&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이 &lt;code&gt;Exception&lt;/code&gt;은 다시 크게 두 가지로 나뉩니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Checked Exception&lt;/li&gt;
&lt;li&gt;Unchecked Exception(RuntimeException)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이 둘의 차이를 이해하는 것이 Java Exception 구조의 핵심입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;4. Checked Exception이란?&lt;/h2&gt;
&lt;p&gt;Checked Exception은 &lt;strong&gt;컴파일 시점에 반드시 처리 여부를 확인받는 예외&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;p&gt;즉, 메서드 안에서 Checked Exception이 발생할 수 있으면 개발자는 아래 둘 중 하나를 해야 합니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;try-catch&lt;/code&gt;로 직접 처리&lt;/li&gt;
&lt;li&gt;&lt;code&gt;throws&lt;/code&gt;로 호출한 쪽에 위임&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;대표적인 Checked Exception 예시는 다음과 같습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;IOException&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SQLException&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ClassNotFoundException&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ParseException&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;예시 1: 직접 처리&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;try {
    FileReader fileReader = new FileReader(&amp;quot;test.txt&amp;quot;);
} catch (FileNotFoundException e) {
    System.out.println(&amp;quot;파일을 찾을 수 없습니다.&amp;quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;예시 2: throws로 위임&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;public void readFile() throws FileNotFoundException {
    FileReader fileReader = new FileReader(&amp;quot;test.txt&amp;quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Checked Exception의 의도는 명확합니다.&lt;br&gt;&lt;strong&gt;복구 가능성이 있는 예외를 개발자가 의식적으로 처리하게 만들자&lt;/strong&gt;는 것입니다.&lt;/p&gt;
&lt;p&gt;예를 들어 파일 읽기나 외부 시스템 접근은 실패 가능성이 있으니,&lt;br&gt;아예 컴파일 단계에서 “이 예외 처리했어?”라고 확인하는 것이죠.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;5. Unchecked Exception이란?&lt;/h2&gt;
&lt;p&gt;Unchecked Exception은 &lt;code&gt;RuntimeException&lt;/code&gt; 계열 예외를 말합니다.&lt;/p&gt;
&lt;p&gt;이 예외는 컴파일러가 처리 여부를 강제하지 않습니다.&lt;br&gt;그래서 &lt;code&gt;try-catch&lt;/code&gt;를 쓰지 않아도 컴파일은 됩니다.&lt;/p&gt;
&lt;p&gt;대표적인 예시는 아래와 같습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;NullPointerException&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ArrayIndexOutOfBoundsException&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;IllegalArgumentException&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;IllegalStateException&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;NumberFormatException&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;예를 들어 이런 코드는 컴파일은 되지만 실행 중 예외가 납니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;String text = null;
System.out.println(text.length());&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;위 코드는 실행 시 &lt;code&gt;NullPointerException&lt;/code&gt;이 발생합니다.&lt;/p&gt;
&lt;p&gt;또 다른 예시입니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;int number = Integer.parseInt(&amp;quot;hello&amp;quot;);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이 경우 &lt;code&gt;NumberFormatException&lt;/code&gt;이 발생합니다.&lt;/p&gt;
&lt;p&gt;Unchecked Exception은 보통 &lt;strong&gt;프로그래밍 실수&lt;/strong&gt;, &lt;strong&gt;잘못된 상태&lt;/strong&gt;, &lt;strong&gt;잘못된 인자 전달&lt;/strong&gt; 같은 경우에 사용됩니다.&lt;/p&gt;
&lt;p&gt;즉, 개발자가 코드 자체를 고쳐야 하는 상황이 많습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;6. Checked Exception과 Unchecked Exception 차이&lt;/h2&gt;
&lt;p&gt;이 부분은 면접이나 실무에서도 정말 자주 나옵니다.&lt;/p&gt;
&lt;h3&gt;Checked Exception&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;컴파일러가 처리 여부를 강제함&lt;/li&gt;
&lt;li&gt;&lt;code&gt;try-catch&lt;/code&gt; 또는 &lt;code&gt;throws&lt;/code&gt; 필요&lt;/li&gt;
&lt;li&gt;복구 가능성이 있는 외부 자원 문제에 자주 사용됨&lt;/li&gt;
&lt;li&gt;예: 파일, 네트워크, DB, 리플렉션 관련 예외&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Unchecked Exception&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;컴파일러가 처리 여부를 강제하지 않음&lt;/li&gt;
&lt;li&gt;보통 개발자 실수나 잘못된 사용에 해당&lt;/li&gt;
&lt;li&gt;예: null 참조, 잘못된 인덱스, 잘못된 인자 값&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;정리하면 이렇습니다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Checked Exception은 “예상 가능한 실패 상황”&lt;/strong&gt;,&lt;br&gt;&lt;strong&gt;Unchecked Exception은 “코드 사용 방식 자체가 잘못된 상황”&lt;/strong&gt;으로 이해하면 편합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;7. RuntimeException이 중요한 이유&lt;/h2&gt;
&lt;p&gt;실무에서는 &lt;code&gt;RuntimeException&lt;/code&gt; 계열이 정말 많이 사용됩니다.&lt;/p&gt;
&lt;p&gt;이유는 단순합니다.&lt;br&gt;Checked Exception을 지나치게 많이 쓰면 코드가 너무 무거워지기 때문입니다.&lt;/p&gt;
&lt;p&gt;예를 들어 서비스 메서드마다 &lt;code&gt;throws Exception&lt;/code&gt;이 늘어나고,&lt;br&gt;호출하는 모든 계층에서 계속 전달하다 보면 코드가 예외 선언으로 가득 차게 됩니다.&lt;/p&gt;
&lt;p&gt;그래서 최근 자바 실무에서는 다음처럼 분리해서 생각하는 경우가 많습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;외부 입출력, 파일, 네트워크처럼 강제 처리가 필요한 경우 → Checked Exception 고려&lt;/li&gt;
&lt;li&gt;비즈니스 규칙 위반, 잘못된 요청, 잘못된 상태 → Custom RuntimeException 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;예를 들어 회원 가입 로직에서 이메일 형식이 잘못되었다면 이런 식으로 만들 수 있습니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;public class InvalidEmailException extends RuntimeException {
    public InvalidEmailException(String message) {
        super(message);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;사용 예시:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;public void register(String email) {
    if (email == null || !email.contains(&amp;quot;@&amp;quot;)) {
        throw new InvalidEmailException(&amp;quot;올바른 이메일 형식이 아닙니다.&amp;quot;);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이런 구조는 비즈니스 예외를 명확히 표현하는 데 도움이 됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;8. 예외 전파란 무엇인가?&lt;/h2&gt;
&lt;p&gt;자바에서는 예외가 발생하면 그 자리에서 끝나는 것이 아니라 호출 스택을 따라 위로 전달됩니다.&lt;br&gt;이걸 &lt;strong&gt;예외 전파&lt;/strong&gt;라고 합니다.&lt;/p&gt;
&lt;p&gt;예를 들어 아래 코드를 보겠습니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;public class Main {
    public static void main(String[] args) {
        methodA();
    }

    public static void methodA() {
        methodB();
    }

    public static void methodB() {
        throw new RuntimeException(&amp;quot;예외 발생&amp;quot;);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;실행 흐름은 이렇습니다.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;main()&lt;/code&gt;이 &lt;code&gt;methodA()&lt;/code&gt; 호출&lt;/li&gt;
&lt;li&gt;&lt;code&gt;methodA()&lt;/code&gt;가 &lt;code&gt;methodB()&lt;/code&gt; 호출&lt;/li&gt;
&lt;li&gt;&lt;code&gt;methodB()&lt;/code&gt;에서 예외 발생&lt;/li&gt;
&lt;li&gt;&lt;code&gt;methodA()&lt;/code&gt;에서 처리하지 않으면 &lt;code&gt;main()&lt;/code&gt;으로 전달&lt;/li&gt;
&lt;li&gt;최종적으로 처리되지 않으면 프로그램 종료&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;이 구조를 이해해야 어디에서 예외를 잡아야 할지 판단할 수 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;9. try-catch-finally 구조 이해하기&lt;/h2&gt;
&lt;p&gt;예외 처리는 보통 &lt;code&gt;try-catch-finally&lt;/code&gt;로 작성합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;try {
    // 예외가 발생할 수 있는 코드
} catch (Exception e) {
    // 예외 처리
} finally {
    // 예외 발생 여부와 관계없이 항상 실행
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;try&lt;/h3&gt;
&lt;p&gt;예외가 발생할 가능성이 있는 코드를 넣습니다.&lt;/p&gt;
&lt;h3&gt;catch&lt;/h3&gt;
&lt;p&gt;예외가 발생했을 때 처리하는 블록입니다.&lt;/p&gt;
&lt;h3&gt;finally&lt;/h3&gt;
&lt;p&gt;예외 발생 여부와 관계없이 마지막에 실행됩니다.&lt;br&gt;주로 자원 해제에 사용했습니다.&lt;/p&gt;
&lt;p&gt;예시를 보면 더 이해가 쉽습니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;BufferedReader br = null;

try {
    br = new BufferedReader(new FileReader(&amp;quot;test.txt&amp;quot;));
    System.out.println(br.readLine());
} catch (IOException e) {
    System.out.println(&amp;quot;파일 처리 중 오류가 발생했습니다.&amp;quot;);
} finally {
    if (br != null) {
        try {
            br.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;다만 요즘은 &lt;code&gt;finally&lt;/code&gt;보다 &lt;code&gt;try-with-resources&lt;/code&gt;를 더 많이 씁니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;10. try-with-resources란?&lt;/h2&gt;
&lt;p&gt;파일, 소켓, 스트림, DB 연결처럼 사용 후 닫아야 하는 자원은&lt;br&gt;예외가 나더라도 반드시 정리해야 합니다.&lt;/p&gt;
&lt;p&gt;이를 더 안전하고 깔끔하게 처리하기 위해 &lt;code&gt;try-with-resources&lt;/code&gt;를 사용합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;try (BufferedReader br = new BufferedReader(new FileReader(&amp;quot;test.txt&amp;quot;))) {
    System.out.println(br.readLine());
} catch (IOException e) {
    System.out.println(&amp;quot;파일 읽기 실패&amp;quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이 방식의 장점은 명확합니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;코드가 간결함&lt;/li&gt;
&lt;li&gt;자원 누수 방지&lt;/li&gt;
&lt;li&gt;finally에서 close 처리할 필요가 줄어듦&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;실무에서는 &lt;code&gt;AutoCloseable&lt;/code&gt; 구현 객체를 다룰 때 거의 기본처럼 사용합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;11. throws와 throw 차이&lt;/h2&gt;
&lt;p&gt;헷갈리기 쉬운 부분이라 꼭 구분해야 합니다.&lt;/p&gt;
&lt;h3&gt;throw&lt;/h3&gt;
&lt;p&gt;예외를 실제로 발생시킬 때 사용합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;throw new IllegalArgumentException(&amp;quot;잘못된 값입니다.&amp;quot;);&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;throws&lt;/h3&gt;
&lt;p&gt;메서드 선언부에서 해당 메서드가 예외를 던질 수 있다고 알릴 때 사용합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;public void read() throws IOException {
    // ...
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;즉,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;throw&lt;/code&gt;는 발생&lt;/li&gt;
&lt;li&gt;&lt;code&gt;throws&lt;/code&gt;는 선언&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;12. 다중 catch와 예외 순서&lt;/h2&gt;
&lt;p&gt;자바에서는 여러 예외를 각각 처리할 수 있습니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;try {
    // ...
} catch (FileNotFoundException e) {
    System.out.println(&amp;quot;파일 없음&amp;quot;);
} catch (IOException e) {
    System.out.println(&amp;quot;입출력 오류&amp;quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이때 중요한 점은 &lt;strong&gt;구체적인 예외를 먼저 잡아야 한다&lt;/strong&gt;는 것입니다.&lt;/p&gt;
&lt;p&gt;왜냐하면 &lt;code&gt;FileNotFoundException&lt;/code&gt;은 &lt;code&gt;IOException&lt;/code&gt;의 자식이기 때문입니다.&lt;br&gt;만약 부모인 &lt;code&gt;IOException&lt;/code&gt;을 먼저 쓰면 뒤의 자식 catch는 도달할 수 없어서 컴파일 오류가 납니다.&lt;/p&gt;
&lt;p&gt;잘못된 예:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;try {
    // ...
} catch (IOException e) {
    System.out.println(&amp;quot;입출력 오류&amp;quot;);
} catch (FileNotFoundException e) {
    System.out.println(&amp;quot;파일 없음&amp;quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;또한 여러 예외를 한 번에 처리할 수도 있습니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;try {
    // ...
} catch (IOException | SQLException e) {
    System.out.println(&amp;quot;입출력 또는 DB 오류&amp;quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;13. Custom Exception은 왜 만들까?&lt;/h2&gt;
&lt;p&gt;실무에서는 기본 예외만으로는 상황을 충분히 설명하지 못하는 경우가 많습니다.&lt;/p&gt;
&lt;p&gt;예를 들어 이런 상황이 있을 수 있습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;주문 수량이 음수인 경우&lt;/li&gt;
&lt;li&gt;이미 탈퇴한 회원이 재로그인을 시도한 경우&lt;/li&gt;
&lt;li&gt;결제 승인 시간이 초과된 경우&lt;/li&gt;
&lt;li&gt;재고 부족 상태에서 주문이 들어온 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이런 비즈니스 상황을 &lt;code&gt;IllegalArgumentException&lt;/code&gt; 하나로만 처리하면 나중에 로그를 봐도 의미가 모호합니다.&lt;br&gt;그래서 도메인에 맞는 예외를 직접 정의합니다.&lt;/p&gt;
&lt;p&gt;예시:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;public class OutOfStockException extends RuntimeException {
    public OutOfStockException(String message) {
        super(message);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;사용 예시:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;public void order(int stock, int quantity) {
    if (quantity &amp;gt; stock) {
        throw new OutOfStockException(&amp;quot;재고가 부족합니다.&amp;quot;);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이렇게 하면 코드의 의도가 훨씬 분명해집니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;14. 예외 메시지와 원인 보존이 중요한 이유&lt;/h2&gt;
&lt;p&gt;실무에서는 예외를 새로 감싸서 던지는 경우가 많습니다.&lt;br&gt;이때 가장 많이 하는 실수 중 하나가 &lt;strong&gt;원인 예외를 잃어버리는 것&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;p&gt;잘못된 예:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;try {
    // DB 처리
} catch (SQLException e) {
    throw new RuntimeException(&amp;quot;회원 저장 실패&amp;quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이렇게 하면 실제 원인이 되는 &lt;code&gt;SQLException&lt;/code&gt; 정보가 사라질 수 있습니다.&lt;/p&gt;
&lt;p&gt;좋은 예:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;try {
    // DB 처리
} catch (SQLException e) {
    throw new RuntimeException(&amp;quot;회원 저장 실패&amp;quot;, e);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이렇게 하면 상위 계층에서 로그를 볼 때&lt;br&gt;“회원 저장 실패”라는 비즈니스 문맥과 함께 실제 원인인 SQL 예외도 추적할 수 있습니다.&lt;/p&gt;
&lt;p&gt;실무에서 이 차이는 정말 큽니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;15. Exception 구조를 계층별로 어떻게 다루면 좋을까?&lt;/h2&gt;
&lt;p&gt;프로젝트를 계층형으로 구성한다고 가정해보겠습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Controller&lt;/li&gt;
&lt;li&gt;Service&lt;/li&gt;
&lt;li&gt;Repository&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이때 예외를 모든 계층에서 무작정 잡아버리면 흐름이 오히려 복잡해집니다.&lt;/p&gt;
&lt;p&gt;보통은 이런 식으로 생각하면 좋습니다.&lt;/p&gt;
&lt;h3&gt;Repository 계층&lt;/h3&gt;
&lt;p&gt;DB나 외부 시스템 관련 저수준 예외 발생 가능&lt;/p&gt;
&lt;h3&gt;Service 계층&lt;/h3&gt;
&lt;p&gt;저수준 예외를 비즈니스 예외로 변환하거나 판단&lt;/p&gt;
&lt;h3&gt;Controller 계층&lt;/h3&gt;
&lt;p&gt;최종적으로 사용자에게 어떤 응답을 줄지 결정&lt;/p&gt;
&lt;p&gt;예를 들어 스프링 기반이라면 다음처럼 흐름을 잡을 수 있습니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;public class UserRepository {
    public User findById(Long id) {
        // DB 조회
        return null;
    }
}

public class UserService {
    public User getUser(Long id) {
        User user = userRepository.findById(id);
        if (user == null) {
            throw new UserNotFoundException(&amp;quot;해당 사용자를 찾을 수 없습니다.&amp;quot;);
        }
        return user;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;즉, 예외 구조는 단순 문법이 아니라 &lt;strong&gt;애플리케이션 아키텍처 설계와도 연결&lt;/strong&gt;됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;16. 예외를 무조건 catch하면 안 되는 이유&lt;/h2&gt;
&lt;p&gt;초보 때 많이 하는 실수 중 하나가 모든 예외를 무조건 잡아버리는 것입니다.&lt;/p&gt;
&lt;p&gt;예를 들어 이런 코드입니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;try {
    // 모든 로직
} catch (Exception e) {
    System.out.println(&amp;quot;에러 발생&amp;quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;겉보기에는 안전해 보이지만 문제점이 많습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;어떤 예외가 발생했는지 알기 어려움&lt;/li&gt;
&lt;li&gt;복구 불가능한 예외까지 뭉뚱그려 처리함&lt;/li&gt;
&lt;li&gt;디버깅이 어려워짐&lt;/li&gt;
&lt;li&gt;중요한 장애를 숨길 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;그래서 예외는 &lt;strong&gt;필요한 곳에서&lt;/strong&gt;, &lt;strong&gt;의미 있게&lt;/strong&gt;, &lt;strong&gt;구체적으로&lt;/strong&gt; 처리해야 합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;17. 실무에서 자주 보는 예외 설계 방식&lt;/h2&gt;
&lt;p&gt;실무에서는 보통 아래 같은 원칙을 많이 씁니다.&lt;/p&gt;
&lt;h3&gt;1) 복구 가능한 경우만 직접 처리&lt;/h3&gt;
&lt;p&gt;정말 복구할 수 있거나 대체 동작이 가능한 경우에만 catch&lt;/p&gt;
&lt;h3&gt;2) 의미 없는 catch는 하지 않기&lt;/h3&gt;
&lt;p&gt;그냥 로그만 찍고 다시 던질 거면 중복 처리일 수 있음&lt;/p&gt;
&lt;h3&gt;3) 도메인 예외는 명확한 이름으로 만들기&lt;/h3&gt;
&lt;p&gt;예: &lt;code&gt;PaymentFailedException&lt;/code&gt;, &lt;code&gt;InvalidOrderStateException&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;4) 원인 예외는 보존하기&lt;/h3&gt;
&lt;p&gt;예외 감쌀 때 cause를 꼭 넣기&lt;/p&gt;
&lt;h3&gt;5) 최상위에서 공통 처리하기&lt;/h3&gt;
&lt;p&gt;웹 애플리케이션이라면 전역 예외 처리로 응답 포맷 통일&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;18. 자주 등장하는 대표 예외 클래스&lt;/h2&gt;
&lt;p&gt;Java Exception 구조를 공부할 때 아래 예외들은 익숙해지는 것이 좋습니다.&lt;/p&gt;
&lt;h3&gt;NullPointerException&lt;/h3&gt;
&lt;p&gt;null 객체 참조 시 발생&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;String name = null;
name.length();&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;IllegalArgumentException&lt;/h3&gt;
&lt;p&gt;잘못된 인자가 전달되었을 때 사용&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;public void setAge(int age) {
    if (age &amp;lt; 0) {
        throw new IllegalArgumentException(&amp;quot;나이는 0 이상이어야 합니다.&amp;quot;);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;IllegalStateException&lt;/h3&gt;
&lt;p&gt;객체 상태가 메서드 호출에 적절하지 않을 때 사용&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;if (!isOpen) {
    throw new IllegalStateException(&amp;quot;현재 닫힌 상태입니다.&amp;quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;IOException&lt;/h3&gt;
&lt;p&gt;입출력 관련 문제&lt;/p&gt;
&lt;h3&gt;NumberFormatException&lt;/h3&gt;
&lt;p&gt;문자열 숫자 변환 실패&lt;/p&gt;
&lt;h3&gt;ArithmeticException&lt;/h3&gt;
&lt;p&gt;0으로 나누는 경우 등 산술 오류&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;19. Java Exception 구조를 공부할 때 꼭 잡아야 할 포인트&lt;/h2&gt;
&lt;p&gt;이 주제는 단순 암기보다 흐름으로 이해해야 합니다.&lt;/p&gt;
&lt;p&gt;꼭 기억하면 좋은 핵심은 아래입니다.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;자바에서 모든 예외의 최상위는 &lt;code&gt;Throwable&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Throwable&lt;/code&gt; 아래에 &lt;code&gt;Error&lt;/code&gt;와 &lt;code&gt;Exception&lt;/code&gt;이 있음&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Exception&lt;/code&gt;은 다시 Checked / Unchecked로 나뉨&lt;/li&gt;
&lt;li&gt;&lt;code&gt;RuntimeException&lt;/code&gt;은 Unchecked Exception 계열&lt;/li&gt;
&lt;li&gt;Checked Exception은 컴파일러가 처리 여부를 강제&lt;/li&gt;
&lt;li&gt;Unchecked Exception은 주로 코드 실수나 잘못된 상태 표현&lt;/li&gt;
&lt;li&gt;실무에서는 Custom Exception과 전역 처리 구조가 중요&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2&gt;20. 초보자가 헷갈리는 부분 정리&lt;/h2&gt;
&lt;h3&gt;Q1. Exception과 Error는 둘 다 예외인가요?&lt;/h3&gt;
&lt;p&gt;넓게 보면 문제 상황이지만, 자바 구조상 &lt;code&gt;Error&lt;/code&gt;는 일반 애플리케이션이 처리할 대상으로 잘 보지 않습니다.&lt;/p&gt;
&lt;h3&gt;Q2. RuntimeException은 왜 굳이 따로 나뉘나요?&lt;/h3&gt;
&lt;p&gt;컴파일 시 강제 처리하면 오히려 코드가 과하게 복잡해질 수 있는 문제들을 분리하기 위해서입니다.&lt;/p&gt;
&lt;h3&gt;Q3. Checked Exception이 무조건 더 좋은가요?&lt;/h3&gt;
&lt;p&gt;그렇지 않습니다. 상황에 따라 다릅니다.&lt;br&gt;외부 자원 접근에는 의미가 있지만, 비즈니스 검증 예외는 RuntimeException이 더 자연스러운 경우가 많습니다.&lt;/p&gt;
&lt;h3&gt;Q4. Exception을 부모로 해서 다 잡으면 안 되나요?&lt;/h3&gt;
&lt;p&gt;가능은 하지만 추천되지는 않습니다.&lt;br&gt;너무 넓게 잡으면 원인 파악과 정확한 처리 흐름이 흐려질 수 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;예외 구조를 제대로 이해하면 코드가 달라집니다&lt;/h2&gt;
&lt;p&gt;Java Exception 구조를 이해한다는 것은 단순히 &lt;code&gt;try-catch&lt;/code&gt; 문법을 아는 수준이 아닙니다.&lt;br&gt;어떤 예외를 어디서 처리해야 하는지, 어떤 예외를 직접 만들어야 하는지, 로그와 디버깅을 어떻게 남겨야 하는지까지 연결됩니다.&lt;/p&gt;
&lt;p&gt;특히 실무에서는 아래 차이가 큽니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;예외를 대충 처리하는 코드 → 문제를 숨김&lt;/li&gt;
&lt;li&gt;예외 구조를 이해하고 설계한 코드 → 원인 파악이 쉬움&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;결국 예외 처리는 “에러를 없애는 기술”이 아니라,&lt;br&gt;&lt;strong&gt;문제가 생겼을 때 시스템을 더 잘 이해하고 통제하기 위한 기술&lt;/strong&gt;에 가깝습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;마무리&lt;/h2&gt;
&lt;p&gt;이번 글에서는 &lt;strong&gt;Java Exception 구조 이해하기&lt;/strong&gt;를 주제로 아래 내용을 정리했습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Throwable&lt;/code&gt;, &lt;code&gt;Error&lt;/code&gt;, &lt;code&gt;Exception&lt;/code&gt;의 차이&lt;/li&gt;
&lt;li&gt;Checked Exception과 Unchecked Exception 구조&lt;/li&gt;
&lt;li&gt;&lt;code&gt;RuntimeException&lt;/code&gt;의 역할&lt;/li&gt;
&lt;li&gt;&lt;code&gt;throw&lt;/code&gt;와 &lt;code&gt;throws&lt;/code&gt; 차이&lt;/li&gt;
&lt;li&gt;예외 전파와 실무 설계 방식&lt;/li&gt;
&lt;li&gt;Custom Exception이 필요한 이유&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;자바를 공부하다 보면 예외는 귀찮은 문법처럼 느껴질 수 있습니다.&lt;br&gt;그런데 프로젝트를 오래 운영할수록 느끼는 건, 예외 처리를 잘한 코드가 결국 유지보수도 쉽고 장애 대응도 훨씬 빠르다는 점입니다.&lt;/p&gt;
&lt;p&gt;그래서 Java를 제대로 공부하려면 문법만 외우기보다,&lt;br&gt;&lt;strong&gt;왜 이런 Exception 구조를 만들었는지&lt;/strong&gt;를 이해하는 것이 정말 중요합니다.&lt;/p&gt;</description>
      <category>개발/java,spring</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/715</guid>
      <comments>https://lee-mandu.tistory.com/715#entry715comment</comments>
      <pubDate>Tue, 24 Mar 2026 14:59:41 +0900</pubDate>
    </item>
    <item>
      <title>Eclipse 생산성 단축키 정리 (실무 개발자가 매일 쓰는 꿀팁)</title>
      <link>https://lee-mandu.tistory.com/711</link>
      <description>&lt;h1&gt;Eclipse 생산성 단축키 정리 (실무 개발자가 매일 쓰는 꿀팁)&lt;/h1&gt;
&lt;p&gt;개발을 하다 보면 느끼는 게 있습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;&amp;quot;마우스를 많이 쓸수록 개발 속도는 느려진다&amp;quot;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;특히 Eclipse를 사용하는 경우,&lt;br&gt;단축키를 얼마나 잘 쓰느냐에 따라 &lt;strong&gt;개발 속도가 2배 이상 차이&lt;/strong&gt; 나기도 합니다.&lt;/p&gt;
&lt;p&gt;오늘은 실제 실무에서 매일 사용하는&lt;br&gt;&lt;strong&gt;Eclipse 생산성 단축키 꿀팁&lt;/strong&gt;을 정리해보겠습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;왜 Eclipse 단축키가 중요한가?&lt;/h1&gt;
&lt;p&gt;단순히 &amp;quot;빠르다&amp;quot;의 문제가 아닙니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;코드 흐름이 끊기지 않음  &lt;/li&gt;
&lt;li&gt;집중력이 유지됨  &lt;/li&gt;
&lt;li&gt;반복 작업이 줄어듦  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;즉, 단축키는 단순한 편의 기능이 아니라&lt;br&gt;&lt;strong&gt;개발자의 생산성을 결정하는 핵심 요소&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;가장 많이 사용하는 핵심 단축키 (이건 무조건 외우세요)&lt;/h1&gt;
&lt;h2&gt;1. Ctrl + Shift + R → 파일 빠르게 열기&lt;/h2&gt;
&lt;p&gt;프로젝트가 커질수록 파일 찾기가 어려워집니다.&lt;/p&gt;
&lt;p&gt;이 단축키 하나면&lt;br&gt;&lt;strong&gt;프로젝트 전체에서 파일 검색 → 바로 이동&lt;/strong&gt; 가능합니다.&lt;/p&gt;
&lt;p&gt;  실무 팁&lt;br&gt;파일명 일부만 입력해도 검색됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;2. Ctrl + Shift + T → 클래스 검색&lt;/h2&gt;
&lt;p&gt;특정 클래스 찾을 때 가장 많이 씁니다.&lt;/p&gt;
&lt;p&gt;특히 Spring 프로젝트에서는 거의 필수입니다.&lt;/p&gt;
&lt;p&gt;  실무 팁&lt;br&gt;인터페이스 / 구현체 찾을 때 매우 유용&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;3. Ctrl + O → 현재 파일 구조 보기&lt;/h2&gt;
&lt;p&gt;현재 클래스 내부의&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;메서드&lt;/li&gt;
&lt;li&gt;변수&lt;/li&gt;
&lt;li&gt;구조&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;를 한눈에 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;  실무 팁&lt;br&gt;긴 클래스에서 위치 찾을 때 필수&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;4. Ctrl + / → 주석 처리 (토글)&lt;/h2&gt;
&lt;p&gt;선택한 라인을 한 번에 주석 처리 / 해제&lt;/p&gt;
&lt;p&gt;  실무에서 가장 많이 쓰는 단축키 중 하나&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;5. Ctrl + Shift + F → 코드 자동 정렬&lt;/h2&gt;
&lt;p&gt;코드 정리가 안 되어 있을 때&lt;br&gt;&lt;strong&gt;한 번에 포맷팅&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;  협업 시 필수 (코드 스타일 맞추기)&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;실무에서 차이 나는 고급 단축키&lt;/h1&gt;
&lt;p&gt;여기부터는 아는 사람만 쓰는 &lt;strong&gt;생산성 폭발 구간&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;6. Ctrl + 1 → Quick Fix (자동 수정 제안)&lt;/h2&gt;
&lt;p&gt;에러가 발생했을 때 가장 먼저 눌러야 하는 키&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;import 자동 추가  &lt;/li&gt;
&lt;li&gt;코드 수정 제안  &lt;/li&gt;
&lt;li&gt;리팩토링 추천  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  실무 꿀팁&lt;br&gt;&amp;quot;일단 Ctrl + 1 눌러본다&amp;quot; 습관 들이면 생산성 올라갑니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;7. Alt + Shift + R → 변수 이름 변경 (리팩토링)&lt;/h2&gt;
&lt;p&gt;변수명을 바꾸면&lt;br&gt;전체 코드에서 자동으로 반영됩니다.&lt;/p&gt;
&lt;p&gt;  실무에서 매우 중요&lt;br&gt;수동으로 바꾸면 사고 납니다&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;8. Ctrl + Alt + Down / Up → 코드 복사&lt;/h2&gt;
&lt;p&gt;라인을 위/아래로 복사&lt;/p&gt;
&lt;p&gt;  반복 코드 작성할 때 시간 절약&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;9. Ctrl + D → 한 줄 삭제&lt;/h2&gt;
&lt;p&gt;빠르게 코드 제거할 때 사용&lt;/p&gt;
&lt;p&gt;  마우스 드래그보다 훨씬 빠름&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;10. F3 → 정의로 이동&lt;/h2&gt;
&lt;p&gt;변수나 메서드 위에서 누르면&lt;br&gt;&lt;strong&gt;선언 위치로 바로 이동&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;  코드 분석할 때 필수&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;진짜 꿀팁 (개발 5년차 이상부터 체감됨)&lt;/h1&gt;
&lt;h2&gt;1. 마우스를 버리고 키보드 중심으로&lt;/h2&gt;
&lt;p&gt;처음에는 불편하지만&lt;br&gt;익숙해지면 개발 속도가 확 달라집니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;2. 자주 쓰는 단축키 10개만 먼저 익히기&lt;/h2&gt;
&lt;p&gt;한 번에 다 외우려고 하지 말고&lt;/p&gt;
&lt;p&gt;  &amp;quot;매일 쓰는 것만 반복&amp;quot;&lt;/p&gt;
&lt;p&gt;이게 핵심입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;3. 단축키 커스터마이징&lt;/h2&gt;
&lt;p&gt;Eclipse에서는 단축키를 변경할 수 있습니다.&lt;/p&gt;
&lt;p&gt;  Window → Preferences → Keys&lt;/p&gt;
&lt;p&gt;자신에게 맞게 바꾸면 생산성이 더 올라갑니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;정리&lt;/h1&gt;
&lt;p&gt;Eclipse 단축키는 선택이 아니라 필수입니다.&lt;/p&gt;
&lt;p&gt;오늘 정리한 핵심만 다시 보면&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ctrl + Shift + R → 파일 검색  &lt;/li&gt;
&lt;li&gt;Ctrl + Shift + T → 클래스 검색  &lt;/li&gt;
&lt;li&gt;Ctrl + O → 구조 확인  &lt;/li&gt;
&lt;li&gt;Ctrl + 1 → 자동 수정  &lt;/li&gt;
&lt;li&gt;Alt + Shift + R → 리팩토링  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이 5개만 제대로 써도&lt;br&gt;개발 속도가 확 달라집니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;마무리&lt;/h1&gt;
&lt;p&gt;처음에는 단축키가 익숙하지 않을 수 있습니다.&lt;/p&gt;
&lt;p&gt;하지만 1~2주만 집중해서 사용해보면&lt;br&gt;&lt;strong&gt;마우스로 개발하던 시절로 절대 돌아가지 못합니다.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;  여러분은 어떤 Eclipse 단축키를 가장 많이 사용하시나요?&lt;br&gt;실무 꿀팁이 있다면 댓글로 공유해주세요!&lt;/p&gt;</description>
      <category>개발/개발도구</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/711</guid>
      <comments>https://lee-mandu.tistory.com/711#entry711comment</comments>
      <pubDate>Sun, 22 Mar 2026 18:47:33 +0900</pubDate>
    </item>
    <item>
      <title>아기 잠투정 해결 방법 (부모라면 꼭 알아야 할 현실적인 육아 팁)</title>
      <link>https://lee-mandu.tistory.com/710</link>
      <description>&lt;h1&gt;아기 잠투정 해결 방법 (부모라면 꼭 알아야 할 현실적인 육아 팁)&lt;/h1&gt;
&lt;p&gt;아기를 키우다 보면 많은 부모들이 겪는 고민이 있습니다. 바로 &lt;strong&gt;아기 잠투정&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;p&gt;졸린 것 같은데 계속 울고, 안아도 울고, 눕혀도 울고…&lt;br&gt;부모 입장에서는 정말 난감한 순간이죠.&lt;/p&gt;
&lt;p&gt;특히 생후 몇 개월이 지나면서 &lt;strong&gt;아기의 수면 패턴이 바뀌는 시기&lt;/strong&gt;에는 잠투정이 더 심해지는 경우도 많습니다.&lt;/p&gt;
&lt;p&gt;오늘은 육아를 하면서 많은 부모들이 검색하는 &lt;strong&gt;아기 잠투정 해결 방법&lt;/strong&gt;을 정리해 보겠습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;아기 잠투정이 생기는 이유&lt;/h1&gt;
&lt;p&gt;잠투정을 해결하려면 먼저 &lt;strong&gt;왜 아기가 잠투정을 하는지&lt;/strong&gt; 이해하는 것이 중요합니다.&lt;/p&gt;
&lt;p&gt;아기의 잠투정은 대부분 다음과 같은 이유 때문입니다.&lt;/p&gt;
&lt;h2&gt;1. 너무 피곤한 상태&lt;/h2&gt;
&lt;p&gt;아기가 잠드는 타이밍을 놓치면 오히려 더 잠들기 어려워집니다.&lt;/p&gt;
&lt;p&gt;피곤함이 지나치게 쌓이면 아기의 몸에서는 &lt;strong&gt;스트레스 호르몬(코르티솔)&lt;/strong&gt;이 증가해 쉽게 잠들지 못합니다.&lt;br&gt;이때 아기는 더 크게 울거나 잠투정을 할 수 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;2. 수면 환경이 불편한 경우&lt;/h2&gt;
&lt;p&gt;아기들은 생각보다 환경에 민감합니다.&lt;/p&gt;
&lt;p&gt;다음과 같은 요소들이 잠투정의 원인이 될 수 있습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;밝은 조명  &lt;/li&gt;
&lt;li&gt;주변 소음  &lt;/li&gt;
&lt;li&gt;실내 온도  &lt;/li&gt;
&lt;li&gt;기저귀 불편함  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;작은 환경 변화만으로도 아기가 훨씬 편하게 잠들 수 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;3. 수면 루틴이 없는 경우&lt;/h2&gt;
&lt;p&gt;아기들은 반복되는 패턴에서 안정감을 느낍니다.&lt;/p&gt;
&lt;p&gt;매일 잠드는 과정이 다르면 아기는 &lt;strong&gt;언제 자야 하는지 인지하기 어렵습니다.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;그래서 잠투정이 더 심해질 수 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;아기 잠투정 해결 방법&lt;/h1&gt;
&lt;p&gt;다음 방법들은 실제로 많은 부모들이 효과를 본 &lt;strong&gt;아기 잠투정 해결 방법&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;1. 잠들기 전 수면 루틴 만들기&lt;/h2&gt;
&lt;p&gt;가장 효과적인 방법은 &lt;strong&gt;수면 루틴을 만드는 것&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;p&gt;예를 들어 다음과 같은 순서를 매일 반복해 보세요.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;목욕하기  &lt;/li&gt;
&lt;li&gt;조명 낮추기  &lt;/li&gt;
&lt;li&gt;조용한 환경 만들기  &lt;/li&gt;
&lt;li&gt;책 읽어주기 또는 자장가  &lt;/li&gt;
&lt;li&gt;잠자리&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;이 과정이 반복되면 아기는 자연스럽게&lt;br&gt;&amp;quot;이제 잘 시간이다&amp;quot; 라고 인식하게 됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;2. 졸린 신호를 놓치지 않기&lt;/h2&gt;
&lt;p&gt;아기들은 잠들기 전에 졸린 신호를 보냅니다.&lt;/p&gt;
&lt;p&gt;대표적인 신호는 다음과 같습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;눈 비비기  &lt;/li&gt;
&lt;li&gt;하품하기  &lt;/li&gt;
&lt;li&gt;멍하게 있기  &lt;/li&gt;
&lt;li&gt;갑자기 짜증 증가  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이 신호가 보이면 &lt;strong&gt;바로 재우는 것이 가장 좋습니다.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;타이밍을 놓치면 잠투정이 시작될 가능성이 높습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;3. 수면 환경을 일정하게 유지하기&lt;/h2&gt;
&lt;p&gt;아기들은 일정한 환경에서 더 쉽게 잠듭니다.&lt;/p&gt;
&lt;p&gt;추천되는 수면 환경은 다음과 같습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;조명은 어둡게 유지  &lt;/li&gt;
&lt;li&gt;백색소음 사용 (선풍기, 백색소음 앱 등)  &lt;/li&gt;
&lt;li&gt;실내 온도 20~22도 유지  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;환경이 안정되면 아기가 더 편하게 잠들 수 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;4. 잠들기 전 자극 줄이기&lt;/h2&gt;
&lt;p&gt;잠들기 전에는 아기를 너무 흥분시키는 활동을 피하는 것이 좋습니다.&lt;/p&gt;
&lt;p&gt;특히 다음 활동은 잠투정을 유발할 수 있습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;TV 시청  &lt;/li&gt;
&lt;li&gt;밝은 장난감 놀이  &lt;/li&gt;
&lt;li&gt;격한 놀기  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;잠들기 30분 전부터는 &lt;strong&gt;차분한 분위기&lt;/strong&gt;를 만들어 주세요.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;아기 잠투정이 심한 시기&lt;/h1&gt;
&lt;p&gt;아기 잠투정은 성장 과정에서 자연스럽게 나타나는 경우가 많습니다.&lt;/p&gt;
&lt;p&gt;특히 다음 시기에 잠투정이 증가할 수 있습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;생후 3~4개월  &lt;/li&gt;
&lt;li&gt;생후 6개월  &lt;/li&gt;
&lt;li&gt;생후 8~10개월  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이 시기는 아기의 &lt;strong&gt;수면 패턴이 변화하는 시기&lt;/strong&gt;라 잠투정이 늘어날 수 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;마무리&lt;/h1&gt;
&lt;p&gt;아기 잠투정은 모든 부모가 겪는 자연스러운 과정입니다.&lt;/p&gt;
&lt;p&gt;하지만 다음 방법을 실천하면 잠투정을 크게 줄일 수 있습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;수면 루틴 만들기  &lt;/li&gt;
&lt;li&gt;졸린 신호 놓치지 않기  &lt;/li&gt;
&lt;li&gt;수면 환경 일정하게 유지  &lt;/li&gt;
&lt;li&gt;잠들기 전 자극 줄이기  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;조금만 패턴을 만들어 주면 아기도 부모도 훨씬 편하게 잠들 수 있습니다.&lt;/p&gt;
&lt;p&gt;육아는 쉽지 않지만, 작은 변화가 큰 차이를 만들기도 합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;혹시 여러분의 아기도 &lt;strong&gt;잠투정이 심한 편인가요?&lt;/strong&gt;&lt;br&gt;육아하면서 겪은 경험이나 방법이 있다면 댓글로 함께 나눠 주세요.&lt;/p&gt;</description>
      <category>육아</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/710</guid>
      <comments>https://lee-mandu.tistory.com/710#entry710comment</comments>
      <pubDate>Sat, 21 Mar 2026 10:16:06 +0900</pubDate>
    </item>
    <item>
      <title>개발자 블로그 운영 방법 (왜 시작했고, 왜 계속 쓰게 되었는지)</title>
      <link>https://lee-mandu.tistory.com/709</link>
      <description>&lt;h2&gt;개발자 블로그 운영 방법 (왜 시작했고, 왜 계속 쓰게 되었는지)&lt;/h2&gt;

&lt;p&gt;
개발자로 일을 하다 보면 한 번쯤 이런 생각을 합니다.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;&quot;개발 블로그를 해야 할까?&quot;&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
저도 처음에는 블로그를 시작할지 말지 꽤 오래 고민했습니다.
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;이미 잘하는 개발자들이 너무 많고&lt;/li&gt;
&lt;li&gt;내가 쓰는 글이 도움이 될까 싶고&lt;/li&gt;
&lt;li&gt;시간도 많이 들 것 같고&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
그래서 처음에는 그냥 &lt;strong&gt;기록용으로 한두 개 글을 써보자&lt;/strong&gt;는 마음으로 시작했습니다.
&lt;/p&gt;

&lt;p&gt;
그런데 블로그를 운영하다 보니 생각보다 얻는 것이 많았습니다.
&lt;/p&gt;

&lt;hr&gt;

&lt;h3&gt;개발자 블로그를 시작하게 되는 이유&lt;/h3&gt;

&lt;p&gt;
개발자들이 블로그를 시작하는 이유는 보통 비슷합니다.
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;공부한 내용을 정리하고 싶어서&lt;/li&gt;
&lt;li&gt;기술 기록을 남기기 위해&lt;/li&gt;
&lt;li&gt;이직이나 커리어 관리&lt;/li&gt;
&lt;li&gt;나중에 다시 찾아보기 위해&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
특히 개발을 하다 보면 이런 경험이 있습니다.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;예전에 분명 해결했던 문제인데 다시 검색하고 있는 상황.&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
이럴 때 블로그에 기록이 남아 있으면 꽤 도움이 됩니다.
&lt;/p&gt;

&lt;hr&gt;

&lt;h3&gt;개발자 블로그는 거창할 필요가 없다&lt;/h3&gt;

&lt;p&gt;
많은 분들이 블로그를 시작하지 못하는 이유가 있습니다.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;&quot;잘 정리된 글을 써야 한다&quot;&lt;/strong&gt;는 부담 때문입니다.
&lt;/p&gt;

&lt;p&gt;
하지만 실제로 많은 개발자들이 찾는 글은 이런 글입니다.
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;에러 해결 방법&lt;/li&gt;
&lt;li&gt;설정 방법&lt;/li&gt;
&lt;li&gt;삽질 기록&lt;/li&gt;
&lt;li&gt;간단한 정리 글&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
예를 들어 이런 글들입니다.
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker 컨테이너 삭제 방법&lt;/li&gt;
&lt;li&gt;Oracle 쿼리 페이징 처리&lt;/li&gt;
&lt;li&gt;Spring Boot 실행 오류 해결&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
화려한 글보다 &lt;strong&gt;실제 문제 해결 글&lt;/strong&gt;이 더 많은 도움이 됩니다.
&lt;/p&gt;

&lt;hr&gt;

&lt;h3&gt;개발 블로그를 꾸준히 운영하는 방법&lt;/h3&gt;

&lt;p&gt;
개발 블로그에서 가장 어려운 것은 사실 글을 잘 쓰는 것이 아닙니다.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;꾸준히 쓰는 것&lt;/strong&gt;입니다.
&lt;/p&gt;

&lt;p&gt;
저도 처음에는 몇 개 글을 쓰다가 멈춘 적이 있습니다.
&lt;/p&gt;

&lt;p&gt;
그래서 나름대로 규칙을 하나 만들었습니다.
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;완벽하게 쓰려고 하지 않는다&lt;/li&gt;
&lt;li&gt;짧은 글도 괜찮다&lt;/li&gt;
&lt;li&gt;기록 위주로 작성한다&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
이렇게 마음을 바꾸니 글을 쓰는 부담이 훨씬 줄었습니다.
&lt;/p&gt;

&lt;hr&gt;

&lt;h3&gt;개발 블로그를 하면 좋은 점&lt;/h3&gt;

&lt;p&gt;
블로그를 운영하면서 생각보다 좋은 점이 몇 가지 있었습니다.
&lt;/p&gt;

&lt;p&gt;
첫 번째는 &lt;strong&gt;기억에 오래 남는다는 것&lt;/strong&gt;입니다.
&lt;/p&gt;

&lt;p&gt;
단순히 공부만 할 때보다 글로 정리하면 이해도가 훨씬 높아집니다.
&lt;/p&gt;

&lt;p&gt;
두 번째는 &lt;strong&gt;문제 해결 기록이 쌓인다는 것&lt;/strong&gt;입니다.
&lt;/p&gt;

&lt;p&gt;
몇 달 뒤 같은 문제를 만났을 때 블로그 글이 꽤 큰 도움이 됩니다.
&lt;/p&gt;

&lt;p&gt;
그리고 세 번째는 &lt;strong&gt;개발자로서의 기록이 남는다는 것&lt;/strong&gt;입니다.
&lt;/p&gt;

&lt;p&gt;
시간이 지나서 글을 다시 보면
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;&quot;아 그때 이런 걸 공부했었구나&quot;&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
하는 순간들이 생깁니다.
&lt;/p&gt;

&lt;hr&gt;

&lt;h3&gt;조회수보다 중요한 것&lt;/h3&gt;

&lt;p&gt;
블로그를 하다 보면 조회수를 신경 쓰게 됩니다.
&lt;/p&gt;

&lt;p&gt;
하지만 개발 블로그는 조금 다른 것 같습니다.
&lt;/p&gt;

&lt;p&gt;
조회수보다 중요한 것은 &lt;strong&gt;기록&lt;/strong&gt;입니다.
&lt;/p&gt;

&lt;p&gt;
누군가에게 도움이 되는 글이라면
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;몇 년 뒤에도 검색을 통해 계속 읽히게 됩니다.&lt;/strong&gt;
&lt;/p&gt;

&lt;hr&gt;

&lt;h3&gt;정리&lt;/h3&gt;

&lt;p&gt;
개발자 블로그는 거창할 필요가 없습니다.
&lt;/p&gt;

&lt;p&gt;
오늘 겪은 문제를 기록하고
공부한 내용을 정리하고
삽질했던 경험을 남기는 것
&lt;/p&gt;

&lt;p&gt;
그것만으로도 충분히 의미 있는 블로그가 됩니다.
&lt;/p&gt;

&lt;p&gt;
완벽한 글이 아니라 &lt;strong&gt;꾸준한 기록&lt;/strong&gt;이 더 중요합니다.
&lt;/p&gt;

&lt;p&gt;
그래서 오늘도 하나 기록을 남겨봅니다.
&lt;/p&gt;</description>
      <category>일상/정보</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/709</guid>
      <comments>https://lee-mandu.tistory.com/709#entry709comment</comments>
      <pubDate>Fri, 20 Mar 2026 12:35:59 +0900</pubDate>
    </item>
    <item>
      <title>REST API 설계 기본 원칙 정리 (백엔드 개발자를 위한 가이드)</title>
      <link>https://lee-mandu.tistory.com/708</link>
      <description>&lt;h2&gt;REST API 설계 기본 원칙 정리 (백엔드 개발자를 위한 가이드)&lt;/h2&gt;

&lt;p&gt;
백엔드 개발을 하다 보면 반드시 접하게 되는 개념이 바로 &lt;strong&gt;REST API&lt;/strong&gt;입니다.
&lt;/p&gt;

&lt;p&gt;
하지만 처음 API를 설계할 때 이런 고민을 하게 됩니다.
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;URL을 어떻게 설계해야 할까?&lt;/li&gt;
&lt;li&gt;GET, POST, PUT은 언제 사용해야 할까?&lt;/li&gt;
&lt;li&gt;RESTful한 API는 어떤 구조일까?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
이번 글에서는 &lt;strong&gt;REST API 설계 기본 원칙&lt;/strong&gt;을 실제 개발에서 사용하는 방식으로 정리해 보겠습니다.
&lt;/p&gt;

&lt;hr&gt;

&lt;h3&gt;목차&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;REST API란 무엇인가&lt;/li&gt;
&lt;li&gt;REST API 설계 핵심 원칙&lt;/li&gt;
&lt;li&gt;HTTP Method 올바른 사용&lt;/li&gt;
&lt;li&gt;RESTful URL 설계 규칙&lt;/li&gt;
&lt;li&gt;응답 구조 설계&lt;/li&gt;
&lt;li&gt;정리&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;h3&gt;REST API란 무엇인가&lt;/h3&gt;

&lt;p&gt;
REST API는 &lt;strong&gt;웹에서 데이터를 주고받기 위한 아키텍처 스타일&lt;/strong&gt;입니다.
&lt;/p&gt;

&lt;p&gt;
REST는 &lt;strong&gt;Representational State Transfer&lt;/strong&gt;의 약자입니다.
&lt;/p&gt;

&lt;p&gt;
쉽게 말하면
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;HTTP 프로토콜을 기반으로 자원을 표현하고 처리하는 방식&lt;/strong&gt;입니다.
&lt;/p&gt;

&lt;p&gt;
예를 들어 사용자 정보를 조회하는 API라면 다음과 같이 설계할 수 있습니다.
&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;
GET /users/1
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;
이 요청은 다음 의미를 가집니다.
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;users → 사용자 자원&lt;/li&gt;
&lt;li&gt;1 → 특정 사용자&lt;/li&gt;
&lt;li&gt;GET → 조회 요청&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;h3&gt;REST API 설계 핵심 원칙&lt;/h3&gt;

&lt;p&gt;
REST API 설계에서 가장 중요한 것은 &lt;strong&gt;자원을 중심으로 설계하는 것&lt;/strong&gt;입니다.
&lt;/p&gt;

&lt;p&gt;
즉 API는 &lt;strong&gt;동작이 아니라 리소스 중심으로 설계&lt;/strong&gt;해야 합니다.
&lt;/p&gt;

&lt;p&gt;
좋지 않은 예
&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;
/getUser
/createUser
/deleteUser
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;
REST 방식
&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;
GET /users
POST /users
DELETE /users/1
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;
이렇게 하면 API 구조가 훨씬 명확해집니다.
&lt;/p&gt;

&lt;hr&gt;

&lt;h3&gt;HTTP Method 올바른 사용&lt;/h3&gt;

&lt;p&gt;
REST API에서는 HTTP Method를 명확하게 사용하는 것이 중요합니다.
&lt;/p&gt;

&lt;table border=&quot;1&quot;&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;설명&lt;/th&gt;
&lt;th&gt;예시&lt;/th&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;GET&lt;/td&gt;
&lt;td&gt;데이터 조회&lt;/td&gt;
&lt;td&gt;/users&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;POST&lt;/td&gt;
&lt;td&gt;데이터 생성&lt;/td&gt;
&lt;td&gt;/users&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;PUT&lt;/td&gt;
&lt;td&gt;전체 수정&lt;/td&gt;
&lt;td&gt;/users/1&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;PATCH&lt;/td&gt;
&lt;td&gt;부분 수정&lt;/td&gt;
&lt;td&gt;/users/1&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;DELETE&lt;/td&gt;
&lt;td&gt;데이터 삭제&lt;/td&gt;
&lt;td&gt;/users/1&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;

&lt;p&gt;
이 규칙을 지키면 API 사용자가 훨씬 쉽게 이해할 수 있습니다.
&lt;/p&gt;

&lt;hr&gt;

&lt;h3&gt;RESTful URL 설계 규칙&lt;/h3&gt;

&lt;p&gt;
좋은 REST API는 URL만 봐도 어떤 API인지 이해할 수 있어야 합니다.
&lt;/p&gt;

&lt;p&gt;
REST URL 설계 기본 규칙은 다음과 같습니다.
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;명사를 사용한다&lt;/li&gt;
&lt;li&gt;복수형을 사용한다&lt;/li&gt;
&lt;li&gt;동사를 사용하지 않는다&lt;/li&gt;
&lt;li&gt;계층 구조를 표현한다&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
예시
&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;
GET /users
GET /users/1
GET /users/1/orders
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;
이 URL만 봐도 의미를 쉽게 이해할 수 있습니다.
&lt;/p&gt;

&lt;hr&gt;

&lt;h3&gt;응답 구조 설계&lt;/h3&gt;

&lt;p&gt;
REST API에서는 응답 구조도 일정하게 유지하는 것이 좋습니다.
&lt;/p&gt;

&lt;p&gt;
예시 JSON 응답
&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;
{
  &quot;success&quot;: true,
  &quot;data&quot;: {
    &quot;id&quot;: 1,
    &quot;name&quot;: &quot;Lee&quot;
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;
에러 응답 예시
&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;
{
  &quot;success&quot;: false,
  &quot;message&quot;: &quot;User not found&quot;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;
이렇게 응답 구조를 통일하면 프론트엔드 개발도 훨씬 편해집니다.
&lt;/p&gt;

&lt;hr&gt;

&lt;h3&gt;정리&lt;/h3&gt;

&lt;p&gt;
REST API 설계 핵심 원칙을 정리하면 다음과 같습니다.
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;자원(Resource) 중심 설계&lt;/li&gt;
&lt;li&gt;HTTP Method 올바르게 사용&lt;/li&gt;
&lt;li&gt;URL은 명사 중심으로 작성&lt;/li&gt;
&lt;li&gt;응답 구조 통일&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
이 원칙만 잘 지켜도 대부분의 REST API 설계를 안정적으로 할 수 있습니다.
&lt;/p&gt;

&lt;p&gt;
실제 프로젝트에서는 여기에
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API 버전 관리&lt;/li&gt;
&lt;li&gt;인증 방식&lt;/li&gt;
&lt;li&gt;에러 코드 관리&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
같은 요소들이 추가됩니다.
&lt;/p&gt;

&lt;hr&gt;

&lt;h3&gt;자주 묻는 질문 (FAQ)&lt;/h3&gt;

&lt;h4&gt;REST API와 RESTful API는 다른 개념인가요?&lt;/h4&gt;

&lt;p&gt;
REST API는 REST 스타일을 사용하는 API이고,
RESTful API는 REST 원칙을 잘 지킨 API를 의미합니다.
&lt;/p&gt;

&lt;h4&gt;REST API에서 POST와 PUT 차이는 무엇인가요?&lt;/h4&gt;

&lt;p&gt;
POST는 새로운 데이터를 생성할 때 사용하고
PUT은 기존 데이터를 전체 수정할 때 사용합니다.
&lt;/p&gt;

&lt;h4&gt;REST API 설계에서 가장 중요한 것은 무엇인가요?&lt;/h4&gt;

&lt;p&gt;
자원을 중심으로 설계하는 것입니다.
&lt;/p&gt;</description>
      <category>개발/java,spring</category>
      <author>Mr.Lee 하루</author>
      <guid isPermaLink="true">https://lee-mandu.tistory.com/708</guid>
      <comments>https://lee-mandu.tistory.com/708#entry708comment</comments>
      <pubDate>Thu, 19 Mar 2026 11:28:08 +0900</pubDate>
    </item>
  </channel>
</rss>