<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>IT 공부한거 올리는 블로그</title>
    <link>https://it-learn.tistory.com/</link>
    <description>상어악어</description>
    <language>ko</language>
    <pubDate>Mon, 29 Jun 2026 23:56:41 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>상어악어</managingEditor>
    <image>
      <title>IT 공부한거 올리는 블로그</title>
      <url>https://tistory1.daumcdn.net/tistory/4945904/attach/f6488a8affb64df08e8c444ccd21a1cc</url>
      <link>https://it-learn.tistory.com</link>
    </image>
    <item>
      <title>요즘 개발자를 위한 시스템 설계 수업</title>
      <link>https://it-learn.tistory.com/184</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;2. 분산시스템의 속성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일관성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;강한 일관성&lt;/li&gt;
&lt;li&gt;최종 일관성&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;강한 일관성은 모든 노드가 동일한 순서에 따라 데이터 업데이트하도록 보장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최종 일관성은 시스템 내에서 일시적이나마 데이터 불일치를 허용하지만, 시간이 지나면 모든 레프리카 데이터베이스나 노드가 결국 동일한 상태에 도달하도록 보장하는 방식&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;key point&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일관성과 가용성 사이에 어떤 설계를 가져갈 것인지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 분산 시스템의 기본 요소: DNS, 로드 밸런서, 애플리케이션 게이트웨이&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로드 밸런서 - L4 (전송계층)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;애플리케이션 게이트웨이 - L7(응용계층)&lt;/p&gt;</description>
      <author>상어악어</author>
      <guid isPermaLink="true">https://it-learn.tistory.com/184</guid>
      <comments>https://it-learn.tistory.com/184#entry184comment</comments>
      <pubDate>Fri, 8 May 2026 16:34:24 +0900</pubDate>
    </item>
    <item>
      <title>프론트엔드 개발자를 위한, 실전 웹 성능 최적화(part2)</title>
      <link>https://it-learn.tistory.com/183</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;캐시&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;no-cache: 캐시를 사용하기 전에 서버에 검사 후, 사용 결정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;no store: 캐시 사용 안 함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;public: 모든 환경에서 캐시 사용 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;private: 브라우저 환경에서만 캐시 사용, 외부 캐시 서버에서는 사용 불가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;max-age: 캐시의 유효시간&lt;/p&gt;</description>
      <author>상어악어</author>
      <guid isPermaLink="true">https://it-learn.tistory.com/183</guid>
      <comments>https://it-learn.tistory.com/183#entry183comment</comments>
      <pubDate>Tue, 28 Apr 2026 15:39:56 +0900</pubDate>
    </item>
    <item>
      <title>코딩애플 도커 Docker &amp;amp; Container</title>
      <link>https://it-learn.tistory.com/182</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;26.04.20&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;성능을 위한 Dockerfile 작성법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;좋은 관습 1. 캐싱&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Dockerfile 작성시&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&quot;빌드할 때마다 변동사항이 많이 생기는 부분들을 최대한 아래 쪽에 적기&quot;&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그럼 build 시간이 단축될 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;빌드 작업할때 COPY, RUN 같은 명령어를 실행하면&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;도커가 내부적으로 캐싱을 진행함&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 변동사항이 없는건 캐싱으로 사용하고,&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 변동사항이 있는건 캐싱사용 안함&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 그래서 변동사항 있는것들은 아래에 적으면 빨라짐&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;좋은 관습 2. npm ci &lt;/b&gt;&lt;/blockquote&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;RUN [&quot;npm&quot; &quot;install&quot;] 보다&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;RUN[&quot;npm&quot; &quot;ci&quot;]가 좋다&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;ci = clean install&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;packge.json에 ^4.1.0 버전이 이렇게 정규표현식으로 적힌경우&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;새로운 버전이 나왔을때 나도 모르게 4.2.0으로 설치될 수 있는데,&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;ci를 하면 package-lock.json에 있는 버전 그대로 유지 가능&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;좋은 관습 3. ENV&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;dockerfile&quot; style=&quot;background-color: #282c34; color: #abb2bf; text-align: start;&quot;&gt;&lt;code&gt;ENV NODE_ENV=production
CMD 어쩌구~&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;ENV 라는 명령어를 쓰면 환경변수를 집어넣어서 이미지를 빌드할 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ENV 환경변수이름=값&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;사용하면 됩니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이런걸 왜 쓰냐면 옛날부터 존재하던 express 같은 라이브러리들은&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;NODE_ENV=production을 집어넣어놔야 로그출력양을 좀 줄이고 그래서 성능이 향상되고 그런 케이스가 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그래서 Node.js 개발시 설정해두면 나쁠건 없습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;참고로 docker run할 때도 -e 옵션으로 환경변수를 그때그때 집어넣어서 이미지를 실행할 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;좋은 관습 4. 권한 낮추기&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;보안적으로 더 나은 습관도 있는데&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;원래 Dockerfile에 적은 명령어들은 전부 root 권한으로 실행됩니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;마지막에 서버 띄우는 명령어는 root 말고&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;권한을 좀 낮춰서 실행하는게&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;약간 더 안전하고 좋습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그럴려면 유저를 하나 생성하고 그걸로 유저를 바꿔서 실행하라고 코드짜면 되는데&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;근데 node 공식 이미지의 경우엔 node라는 이름의 유저가 이미 만들어져있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그래서 그거 써도 되겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;background-color: #282c34; color: #abb2bf; text-align: start;&quot;&gt;&lt;code&gt;(Dockerfile)

USER node
CMD 어쩌구~&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;USER 유저이름&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;적으면 그 유저로 변경됩니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;유저가 제공되지 않는 이미지는 직접 유저만드는 명령어 찾아서 씁시다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;multi-stage build&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;dockerfile&quot; style=&quot;background-color: #282c34; color: #abb2bf; text-align: start;&quot;&gt;&lt;code&gt;FROM amazoncorretto:21.0.4 AS build
WORKDIR /app
COPY . .
RUN ./gradlew build

# Runtime stage
FROM amazoncorretto:21.0.4 AS runtime
WORKDIR /app
COPY --from=build /app/build/libs/*.jar /app/server.jar
CMD [&quot;java&quot;, &quot;-jar&quot;, &quot;/app/server.jar&quot;] &lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;실은 Dockerfile에 FROM을 2번 이상 작성할 수 있는데&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;FROM을 만날 때 마다 위에 있는 작업내역들이 삭제되고 새로운 마음으로 깨끗하게 시작됩니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;근데 깨끗하게 시작할 때&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;위의 작업내역에서 만든 파일들을 몰래 훔쳐올 수 있습니다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이게 비결임&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;26.04.22&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #282828; text-align: start;&quot;&gt;Network 2. 컨테이너간 통신&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #282828; text-align: start;&quot;&gt;1. nginx 리버스 프록시 쓰면 장점이 많음&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #282828; text-align: start;&quot;&gt;2. 네트워크 안에 컨테이너 넣으면 서로 통신 가능&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #282828; text-align: start;&quot;&gt;26.04.24&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #282828; text-align: start;&quot;&gt;Volume 사용법과 PostgreSQL DB 띄우기&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;컨테이너는 중지되거나 삭제되면 DB 데이터가 유실될가능성있기 때문에&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;volume을 사용하면 영구저장이 가능하다&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;근데 보통 db를 컨테이너로 만들일이 없고(컨테이너는 껐다 켰다 유용하게하는데 보통 db는 계속 켜져있어야되니까)&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;웹서버는 영구적으로 저장되어야할일이 없으니&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;db를 컨테이너로 만든다면 고려해보자&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;26.05.06&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #282828; text-align: start;&quot;&gt;Orchestration 1. 태스크, 서비스, 클러스터 개념정리&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;마이크로서비스아키텍처의 장점&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;1. 유저가 많이 몰리는 서비스가 있으면 그거만 확장 가능&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;자원 사용이 효율적이다&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;2. 회원기능을 수정했으면 회원기능 서비스만 따로 배포하면 되니까 기능 업데이트도 빨라짐&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;단점&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;1. 마이크로 서비스끼리 통신해야하면 그게 귀찮아짐&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;2. 마이크로 서비스가 많아지면 그걸 관리하는데 시간과 인력이 추가로 필요함&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;3. 서버비도 초반에 비쌈&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;26.05.08&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Orchestration 1. 태스크, 서비스, 클러스터 개념정리&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;클러스터는 하나의 프로젝트&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;서비스는 하나의 마이크로서비스&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;태스크는 서로 붙어있어야할 컨테이너들을 묶는 단위&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;태스크를 docker compose라고 이해해도될듯하다&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #282828; text-align: start;&quot;&gt;Orchestration 3. 서비스 만들기&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;배포옵션&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;롤링 업데이트&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;새 태스크 띄우고 기존 태스크 하나씩 없애기&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;블루/그린 배포&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;새 태스트 띄우고 기존 트래픽 전부 새 태스크로 이동&lt;/p&gt;</description>
      <category>개념</category>
      <author>상어악어</author>
      <guid isPermaLink="true">https://it-learn.tistory.com/182</guid>
      <comments>https://it-learn.tistory.com/182#entry182comment</comments>
      <pubDate>Mon, 20 Apr 2026 15:07:56 +0900</pubDate>
    </item>
    <item>
      <title>26.04.07 바이브코딩 프로젝트 진행</title>
      <link>https://it-learn.tistory.com/180</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 제목: Blue Chip Finder&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 주제:&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Screenshot_20260206_190705_YouTube.jpg&quot; data-origin-width=&quot;2340&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8gro7/dJMcaadNznv/BhUUklIdZjxpa4k7MDXuP0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8gro7/dJMcaadNznv/BhUUklIdZjxpa4k7MDXuP0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8gro7/dJMcaadNznv/BhUUklIdZjxpa4k7MDXuP0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8gro7%2FdJMcaadNznv%2FBhUUklIdZjxpa4k7MDXuP0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2340&quot; height=&quot;1080&quot; data-filename=&quot;Screenshot_20260206_190705_YouTube.jpg&quot; data-origin-width=&quot;2340&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Screenshot_20260206_190809_YouTube.jpg&quot; data-origin-width=&quot;2340&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GZT3U/dJMcahjIaoq/LlM6I692jjzibrrw4r4Wd0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GZT3U/dJMcahjIaoq/LlM6I692jjzibrrw4r4Wd0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GZT3U/dJMcahjIaoq/LlM6I692jjzibrrw4r4Wd0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGZT3U%2FdJMcahjIaoq%2FLlM6I692jjzibrrw4r4Wd0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2340&quot; height=&quot;1080&quot; data-filename=&quot;Screenshot_20260206_190809_YouTube.jpg&quot; data-origin-width=&quot;2340&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 지표에 해당하는 장기투자 종목 추천 프로그램&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컨셉: 하루에 한 번 배치 돌려서 날짜별 점수 정보 최신화&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 코스피만 진행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;목표: 개발도 개발이지만, 바이브코딩, 최신 기술 학습이 주 목적&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기능 1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;날짜별 점수 높은 순서대로 종목 조회&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(표 형태로 조회한다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기능1을 만들기 위한 점수 구하는 알고리즘&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정량적인 평가가 가능한 것은 웹서치로 찾는다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정성적인 평가가 필요한 것은 에이전트(AI)로 한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TODO&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. Overall 기획서 한 장 뽑기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 페이지별 UI/UX 뽑기(피그마 MCP 활용?)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 아키텍처 구상&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(프론트, 백, DB, CI/CD)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 에이전트 아키텍처 구상&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;피드백 루프, 하네스?, 테스트코드, 가드레일, SKILL, MCP, 플랜모드?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5.Claude.md 파일 정의 어떻게 할지 고민&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>상어악어</author>
      <guid isPermaLink="true">https://it-learn.tistory.com/180</guid>
      <comments>https://it-learn.tistory.com/180#entry180comment</comments>
      <pubDate>Tue, 7 Apr 2026 21:46:56 +0900</pubDate>
    </item>
    <item>
      <title>SSG 통합회원계정 비밀번호 찾기 오류</title>
      <link>https://it-learn.tistory.com/178</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스마게.jpg&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;2000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6AGm5/btsJ5DN6d1B/rl2ILC6Nj7Ariy1BXKVe61/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6AGm5/btsJ5DN6d1B/rl2ILC6Nj7Ariy1BXKVe61/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6AGm5/btsJ5DN6d1B/rl2ILC6Nj7Ariy1BXKVe61/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6AGm5%2FbtsJ5DN6d1B%2Frl2ILC6Nj7Ariy1BXKVe61%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;900&quot; height=&quot;2000&quot; data-filename=&quot;스마게.jpg&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;2000&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p id=&quot;SE-2d9ddd27-c0fa-459e-b9b2-7a50c9a9d5e4&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;스마게 스터디가 끝나고&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-525b987a-3b8e-4111-9937-94eeabedac11&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;우수그룹에 선정되어 상품을 받게되었다&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-98ee883e-24ac-45c3-b8be-61122f067b06&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;팀에 10만원 주는 줄 알았는데&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-525371f5-a31a-4da0-8fca-2389d5c5a54c&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;개인당 10만원이라니...&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-8f3ea83e-2555-45c8-818d-f18a868986db&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;역시 스마게 통이 크다&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-9ebb47fa-d168-4bc7-b838-0308cbf1ccd1&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;근데 마침 준게 경쟁사의 쿠폰..!&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;sssg.PNG&quot; data-origin-width=&quot;759&quot; data-origin-height=&quot;586&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7i0Nc/btsJ5wax0Ik/hHunqjQsOaS1OkODTeruk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7i0Nc/btsJ5wax0Ik/hHunqjQsOaS1OkODTeruk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7i0Nc/btsJ5wax0Ik/hHunqjQsOaS1OkODTeruk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7i0Nc%2FbtsJ5wax0Ik%2FhHunqjQsOaS1OkODTeruk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;759&quot; height=&quot;586&quot; data-filename=&quot;sssg.PNG&quot; data-origin-width=&quot;759&quot; data-origin-height=&quot;586&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p id=&quot;SE-f026d4e7-9655-4dfb-9a5e-6d71755c9803&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;근데 비번을 까먹었다&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-c5837621-9c16-45fb-8ee6-bd5c28f880cd&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;​&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-00024261-8490-405b-af6a-9dcd859d3596&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;아이디 찾기를 해보니&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-0f3b8bb8-a95f-453d-9ed4-5fdce6443f88&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;계정이 이미 있었다&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-d5bcd575-fff6-41d5-839c-33ae36bbeca6&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;그 다음으로 비밀번호 찾기를 했는데&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-0ea80a6b-9cc8-4fc1-988c-1dd5bf5fea54&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;문제는 여기서 발생했다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_ssg-1.PNG&quot; data-origin-width=&quot;1898&quot; data-origin-height=&quot;813&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/r0tjA/btsJ7twxUye/4IQo7Kzc488SvQTuknziu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/r0tjA/btsJ7twxUye/4IQo7Kzc488SvQTuknziu1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/r0tjA/btsJ7twxUye/4IQo7Kzc488SvQTuknziu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fr0tjA%2FbtsJ7twxUye%2F4IQo7Kzc488SvQTuknziu1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1898&quot; height=&quot;813&quot; data-filename=&quot;edited_ssg-1.PNG&quot; data-origin-width=&quot;1898&quot; data-origin-height=&quot;813&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p id=&quot;SE-21097e91-667d-473c-87c3-1d9d37957094&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;내 아이디는 ***********@naver.com(length: 21)인데&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-ff39ee3e-a16d-4eba-8579-627dbe4caca0&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;아이디칸이 자꾸 &lt;span style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot;&gt;***********&lt;/span&gt; @naver.co(length: 20)밖에 입력이 안되는거다&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-406328ab-9e35-491b-abde-99e75fad28ca&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;​&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-0b3d2ef1-6c98-4e91-a4a6-7a29aac8029e&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;문제는 해당 input type의 maxlength가 20으로 제한되어있었기 때문&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_ssg-2.PNG&quot; data-origin-width=&quot;1919&quot; data-origin-height=&quot;872&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bi9Y8E/btsJ6p9CV0o/p1vNpY3A4Y8o8tWgmQB5Nk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bi9Y8E/btsJ6p9CV0o/p1vNpY3A4Y8o8tWgmQB5Nk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bi9Y8E/btsJ6p9CV0o/p1vNpY3A4Y8o8tWgmQB5Nk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbi9Y8E%2FbtsJ6p9CV0o%2Fp1vNpY3A4Y8o8tWgmQB5Nk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1919&quot; height=&quot;872&quot; data-filename=&quot;edited_ssg-2.PNG&quot; data-origin-width=&quot;1919&quot; data-origin-height=&quot;872&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-c5fb56ff-90fc-4817-bb77-762ee90e1ed4&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;그러니까 얘가 아이디가 있는데도&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-0a29c2ce-6023-4f55-8fd8-6637a618dc48&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;@naver.co까지만 입력되니까 정보 조회가 안됐다&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-89f65cc4-22f8-4296-9de7-d5f25a324808&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;​&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-c4689e75-1eda-45c1-b57a-cfdc939d5950&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;​&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-83c41744-dae5-421b-aa4d-58d31d249c58&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;아 그러면 어떡하지&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-e4667d91-7cf7-4ad3-8e1a-0dab5c63dd5c&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;메신저로 상담사랑 문의하려면 로그인을 해야하고,&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-7e4f5b90-3801-46d5-a4a1-38d817df5456&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;그게 아니면 전화를 해야하는데&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-c4493d81-2e99-4098-a879-aaa6d34cd972&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;전화해서 비밀번호를 찾으려고하는데 maxlength가 20이라서 이거 안늘려주면 비번 못찾아요~&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-da72577f-fa2c-4e2f-af7b-9c3055923c3b&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이러기도 좀 그렇고&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-0f904884-ca06-4155-b49c-dbe46ca99f81&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;무엇보다 전화하기가 귀찮았다&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-9b806cf0-cd15-4f9b-81f1-72b3a41e084a&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;​&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_ssg-3.PNG&quot; data-origin-width=&quot;1905&quot; data-origin-height=&quot;811&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0HQOM/btsJ7nwwjd0/WimjK9Ruui8615JzqHyLX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0HQOM/btsJ7nwwjd0/WimjK9Ruui8615JzqHyLX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0HQOM/btsJ7nwwjd0/WimjK9Ruui8615JzqHyLX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0HQOM%2FbtsJ7nwwjd0%2FWimjK9Ruui8615JzqHyLX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1905&quot; height=&quot;811&quot; data-filename=&quot;edited_ssg-3.PNG&quot; data-origin-width=&quot;1905&quot; data-origin-height=&quot;811&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p id=&quot;SE-f4b8fc3b-56da-4eb4-8855-fb9bf98b7e54&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;하지만 나는 개발자니까&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-6a79b5ad-da5d-444e-b201-661aaefdb8ea&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;maxlength 21로 바꾸면 됨 ㅋㅋ&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;ssg-4.PNG&quot; data-origin-width=&quot;1902&quot; data-origin-height=&quot;816&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IQuBk/btsJ5DUN6qy/OnkR0tkKjtvMtYKOdJJVKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IQuBk/btsJ5DUN6qy/OnkR0tkKjtvMtYKOdJJVKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IQuBk/btsJ5DUN6qy/OnkR0tkKjtvMtYKOdJJVKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIQuBk%2FbtsJ5DUN6qy%2FOnkR0tkKjtvMtYKOdJJVKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1902&quot; height=&quot;816&quot; data-filename=&quot;ssg-4.PNG&quot; data-origin-width=&quot;1902&quot; data-origin-height=&quot;816&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p id=&quot;SE-278b4ccd-ebe8-48bf-8f40-6d7d5e582865&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;아ㅋㅋㅋ 이제 잘 되네&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-99c3da8f-1814-4d05-b7f4-350605cb75b8&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;앞단에서 바꿔서 그냥 통과되는걸 보니&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-4ca2b466-606e-402a-9a0b-7d50bc384a54&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;서버단에서 길이 유효성 체크하는 로직은 따로 없는듯 하다&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-65c73394-837d-4e6f-bc11-ab757739ff7e&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;​&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_ssg-5.PNG&quot; data-origin-width=&quot;1910&quot; data-origin-height=&quot;813&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKaeeq/btsJ7TPjajg/xET2MkVYLlkXyT8NQl9Z2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKaeeq/btsJ7TPjajg/xET2MkVYLlkXyT8NQl9Z2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKaeeq/btsJ7TPjajg/xET2MkVYLlkXyT8NQl9Z2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKaeeq%2FbtsJ7TPjajg%2FxET2MkVYLlkXyT8NQl9Z2k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1910&quot; height=&quot;813&quot; data-filename=&quot;edited_ssg-5.PNG&quot; data-origin-width=&quot;1910&quot; data-origin-height=&quot;813&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot;&gt;음 그래그래 잘 되는구나&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_ssg-6.PNG&quot; data-origin-width=&quot;959&quot; data-origin-height=&quot;819&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bA8WtS/btsJ7uWx0kM/fKEz7jtoHisEQOqQZX2sf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bA8WtS/btsJ7uWx0kM/fKEz7jtoHisEQOqQZX2sf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bA8WtS/btsJ7uWx0kM/fKEz7jtoHisEQOqQZX2sf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbA8WtS%2FbtsJ7uWx0kM%2FfKEz7jtoHisEQOqQZX2sf1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;959&quot; height=&quot;819&quot; data-filename=&quot;edited_ssg-6.PNG&quot; data-origin-width=&quot;959&quot; data-origin-height=&quot;819&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot;&gt;로그인 후에 상담사에게 해당 건을 전달했&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot;&gt;다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;ssg-7.PNG&quot; data-origin-width=&quot;957&quot; data-origin-height=&quot;865&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lDpES/btsJ7ySa7aC/bOzFroXveheBjdquJuj1UK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lDpES/btsJ7ySa7aC/bOzFroXveheBjdquJuj1UK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lDpES/btsJ7ySa7aC/bOzFroXveheBjdquJuj1UK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlDpES%2FbtsJ7ySa7aC%2FbOzFroXveheBjdquJuj1UK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;957&quot; height=&quot;865&quot; data-filename=&quot;ssg-7.PNG&quot; data-origin-width=&quot;957&quot; data-origin-height=&quot;865&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개선해~&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;sssg-2.PNG&quot; data-origin-width=&quot;1914&quot; data-origin-height=&quot;945&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lJG9a/btsJ7u3mlBb/FTqjZJeNt33zYpL6zWUAPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lJG9a/btsJ7u3mlBb/FTqjZJeNt33zYpL6zWUAPk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lJG9a/btsJ7u3mlBb/FTqjZJeNt33zYpL6zWUAPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlJG9a%2FbtsJ7u3mlBb%2FFTqjZJeNt33zYpL6zWUAPk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1914&quot; height=&quot;945&quot; data-filename=&quot;sssg-2.PNG&quot; data-origin-width=&quot;1914&quot; data-origin-height=&quot;945&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p id=&quot;SE-f5983bd3-faf5-4598-a5e2-7e47316a1377&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;후에 확인해봤는데 회원가입 아이디 20자로 제한하고있네요&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-d7258526-c82f-4f87-8f9d-ffcbe5b970a7&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;그러면 나는 어떻게 21자로 가입한거지?&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-1ccfc061-cf83-4ec2-9bee-336210b201ae&quot; style=&quot;background-color: #ffffff; color: #808080; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;아마 최근 회원가입 정책이 바뀐거 같습니다&lt;/span&gt;&lt;/p&gt;</description>
      <category>이슈</category>
      <author>상어악어</author>
      <guid isPermaLink="true">https://it-learn.tistory.com/178</guid>
      <comments>https://it-learn.tistory.com/178#entry178comment</comments>
      <pubDate>Wed, 16 Oct 2024 10:06:51 +0900</pubDate>
    </item>
    <item>
      <title>Partition BY vs GROUP BY</title>
      <link>https://it-learn.tistory.com/177</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;둘 다 특정 기준으로 데이터를 그룹화하고, 집계하는 함수라고 생각했는데 뭐가 다른걸까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고: &lt;a href=&quot;https://kimsyoung.tistory.com/entry/GROUP-BY-vs-PARTITION-BY-%EC%9C%A0%EC%82%AC%EC%A0%90%EA%B3%BC-%EC%B0%A8%EC%9D%B4%EC%A0%90&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://kimsyoung.tistory.com/entry/GROUP-BY-vs-PARTITION-BY-%EC%9C%A0%EC%82%AC%EC%A0%90%EA%B3%BC-%EC%B0%A8%EC%9D%B4%EC%A0%90&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1724291358941&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;GROUP BY vs. PARTITION BY: 유사점과 차이점&quot; data-og-description=&quot;윈도우 함수는 SQL의 유용한 기능 중 하나입니다. 윈도우 함수를 잘 사용할 줄 안다면 여러분의 인생은 보다 편안해질 것입니다. 이 글에서는 GROUP BY와 PARTITION BY의 차이점을 살펴보고자 합니다. P&quot; data-og-host=&quot;kimsyoung.tistory.com&quot; data-og-source-url=&quot;https://kimsyoung.tistory.com/entry/GROUP-BY-vs-PARTITION-BY-%EC%9C%A0%EC%82%AC%EC%A0%90%EA%B3%BC-%EC%B0%A8%EC%9D%B4%EC%A0%90&quot; data-og-url=&quot;https://kimsyoung.tistory.com/entry/GROUP-BY-vs-PARTITION-BY-%EC%9C%A0%EC%82%AC%EC%A0%90%EA%B3%BC-%EC%B0%A8%EC%9D%B4%EC%A0%90&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ypfeE/hyWSjIa9hw/nVrJj0M8UnOEgTOHnNd930/img.jpg?width=800&amp;amp;height=841&amp;amp;face=0_0_800_841,https://scrap.kakaocdn.net/dn/c0V9E5/hyWSoQfVzv/FvFdJk7kR9OoUiou4oMkwk/img.jpg?width=800&amp;amp;height=841&amp;amp;face=0_0_800_841&quot;&gt;&lt;a href=&quot;https://kimsyoung.tistory.com/entry/GROUP-BY-vs-PARTITION-BY-%EC%9C%A0%EC%82%AC%EC%A0%90%EA%B3%BC-%EC%B0%A8%EC%9D%B4%EC%A0%90&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kimsyoung.tistory.com/entry/GROUP-BY-vs-PARTITION-BY-%EC%9C%A0%EC%82%AC%EC%A0%90%EA%B3%BC-%EC%B0%A8%EC%9D%B4%EC%A0%90&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ypfeE/hyWSjIa9hw/nVrJj0M8UnOEgTOHnNd930/img.jpg?width=800&amp;amp;height=841&amp;amp;face=0_0_800_841,https://scrap.kakaocdn.net/dn/c0V9E5/hyWSoQfVzv/FvFdJk7kR9OoUiou4oMkwk/img.jpg?width=800&amp;amp;height=841&amp;amp;face=0_0_800_841');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GROUP BY vs. PARTITION BY: 유사점과 차이점&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;윈도우 함수는 SQL의 유용한 기능 중 하나입니다. 윈도우 함수를 잘 사용할 줄 안다면 여러분의 인생은 보다 편안해질 것입니다. 이 글에서는 GROUP BY와 PARTITION BY의 차이점을 살펴보고자 합니다. P&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;kimsyoung.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 블로그에서 자세히 다뤄서 여기서 보는게 나은듯 하다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결론:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;GROUP BY는 그룹으로 묶으면서 기존의 행 단위 데이터가 사라진다&lt;/li&gt;
&lt;li&gt;PARTITION BY는 기존의 행 단위 데이터가 사라지지 않는다&lt;/li&gt;
&lt;li&gt;PARTITION BY는 OVER()라는 윈도우 함수와 같이 쓰인다&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GROUP BY가 여러개의 상자를 모아서 큰 하나의 상자를 만드는 방식이라면,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PARTITION BY는 여러개의 상자를 각각 조사해서 조사 결과를 각 상자에 다시 써놓는 방식&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;성능의 차이가 있을까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;GPT에게 물어본 결과&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;메모리 사용량 관점&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;GROUP BY는 그룹당 하나의 행이 반환되므로 메모리 사용량 적음&lt;/li&gt;
&lt;li&gt;PARTITION BY는 모든 행이 결과에 포함되므로 데이터 양이 줄어들지 않음 -&amp;gt; 메모리 사용량이 더 많아질 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;병렬처리 가능성&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;GROUP BY는 종종 데이터를 정렬하거나 해시 테이블을 구성하는 등의 작업이 필요하므로,&amp;nbsp;&lt;/li&gt;
&lt;li&gt;병렬 처리가 제한적일 수 있다&lt;/li&gt;
&lt;li&gt;PARTITION BY는 데이터가 여러 파티션으로 나뉘고 각 파티션 내에서 독립적으로 계산되기 때문에,&lt;/li&gt;
&lt;li&gt;병렬 처리의 이점을 누릴 가능성이 더 크다&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결론은 상황에 따라 다르다고 하네요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;성능의 차이로 선택하기 보단&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존의 행이 유지되느냐, 유지되지 않느냐의 상황에 따라&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;선택해서 사용하는 것 같습니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개념/데이터베이스시스템</category>
      <author>상어악어</author>
      <guid isPermaLink="true">https://it-learn.tistory.com/177</guid>
      <comments>https://it-learn.tistory.com/177#entry177comment</comments>
      <pubDate>Thu, 22 Aug 2024 10:50:25 +0900</pubDate>
    </item>
    <item>
      <title>인프콘 2024 - 개발자를 위한 최고의 기술 컨퍼런스</title>
      <link>https://it-learn.tistory.com/176</link>
      <description>&lt;h1&gt;인프콘 2024: 기술과 혁신의 미래를 만나보세요!&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요, 기술 애호가 여러분!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다가오는 2024년, 대한민국을 대표하는 기술 컨퍼런스, &lt;b&gt;인프콘 2024&lt;/b&gt;가 여러분을 찾아옵니다. 인프콘은 매년 IT 산업의 최신 트렌드와 혁신적인 기술을 소개하는 자리로, 개발자, 엔지니어, 스타트업, 그리고 IT 산업에 관심 있는 모든 분들에게 열려있는 축제입니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;일시 및 장소&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;일시&lt;/b&gt;: 2024년 8월 2일(금)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;장소&lt;/b&gt;: 서울 코엑스(COEX)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;왜 인프콘 2024에 참여해야 할까요?&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 최신 기술 트렌드를 한눈에!&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인프콘 2024에서는 AI, 빅데이터, 클라우드 컴퓨팅, 사이버 보안 등 IT 산업의 모든 최신 트렌드를 만나볼 수 있습니다. 세계적인 기술 기업들과 함께 혁신적인 제품과 솔루션을 직접 체험해보세요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 글로벌 전문가들의 인사이트&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 분야의 선도적인 전문가들이 인프콘 2024의 스피커로 참여하여 깊이 있는 강연을 제공합니다. 실무에 바로 적용할 수 있는 노하우와 글로벌 트렌드를 공유받을 수 있는 절호의 기회입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 네트워킹의 장&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인프콘 2024는 수많은 IT 전문가들과의 네트워킹 기회를 제공합니다. 같은 관심사를 가진 사람들과의 만남을 통해 새로운 아이디어와 협업의 가능성을 열어보세요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. 스타트업 부스&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혁신적인 스타트업들이 인프콘 2024에 모여 그들의 독창적인 아이디어와 제품을 선보입니다. 새로운 기술과 비즈니스 모델을 탐색하고, 협업의 기회를 찾을 수 있습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;참가 등록&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인프콘 2024의 사전 등록이 시작되었습니다! 지금 등록하시면 얼리버드 할인 혜택을 받으실 수 있습니다. 자세한 사항은 &lt;a href=&quot;https://www.inflearn.com/conf/infcon-2024/?gad_source=1&amp;amp;gclid=CjwKCAjwnK60BhA9EiwAmpHZwwEIUkSW7FobrVC6xj7U60Do043FW-HUFaxKQEUYvl8fedWbB-NvcRoCckgQAvD_BwE&quot;&gt;인프콘 2024 공식 홈페이지&lt;/a&gt;에서 확인하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기술과 혁신의 미래를 만나는 시간, 인프콘 2024에서 여러분을 기다립니다. 함께 새로운 가능성을 열어가요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제 시간표에요~&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;&lt;a href=&quot;https://www.inflearn.com/conf/infcon-2024/share?year=2024&amp;amp;id=866819&amp;amp;hash=sangwoo0795%405a802e63&amp;amp;name=sangwoo0795&quot;&gt;https://www.inflearn.com/conf/infcon-2024/share?year=2024&amp;amp;id=866819&amp;amp;hash=sangwoo0795%405a802e63&amp;amp;name=sangwoo0795&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>2024인프콘</category>
      <category>infcon</category>
      <category>infcon 2024</category>
      <category>인프콘</category>
      <category>인프콘2024</category>
      <author>상어악어</author>
      <guid isPermaLink="true">https://it-learn.tistory.com/176</guid>
      <comments>https://it-learn.tistory.com/176#entry176comment</comments>
      <pubDate>Tue, 9 Jul 2024 11:11:24 +0900</pubDate>
    </item>
    <item>
      <title>친절한 SQL튜닝 3장 - 인덱스 튜닝</title>
      <link>https://it-learn.tistory.com/175</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;3.1.3 인덱스 손익분기점&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Table Full Scan은 성능이 일정하다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 인덱스는 전체 데이터 중 몇 건을 추출하느냐에 따라 성능이 크게 달라진다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 이유는&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;Table Full Scan&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;인덱스&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;시퀀셜 엑세스&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;랜덤 엑세스&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;Multiblock I/O&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;Single Block I/O&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3.1.4&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인덱스 튜닝 방법 중 하나는&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인덱스에 컬럼을 추가하는 방법이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 통해 인덱스 스캔량은 줄지 않지만, 테이블 랜덤 액세스 횟수를 줄여준다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UNION은 소트 연산이 발생하므로&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UNION ALL을 사용하는 것이 성능 면에서 좋다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근데 데이터 중복이 일어날 수 있으므로 잘 사용해야한다&lt;/p&gt;</description>
      <author>상어악어</author>
      <guid isPermaLink="true">https://it-learn.tistory.com/175</guid>
      <comments>https://it-learn.tistory.com/175#entry175comment</comments>
      <pubDate>Sun, 9 Jun 2024 21:20:43 +0900</pubDate>
    </item>
    <item>
      <title>친절한 SQL튜닝 2장 - 인덱스 기본</title>
      <link>https://it-learn.tistory.com/174</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2.1 인덱스 구조 및 탐색&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인덱스 튜닝의 두 가지 핵심요소&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 인덱스 스캔 효율화 튜닝&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2.&amp;nbsp; 랜덤 액세스 최소화 튜닝&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2.2 인덱스 기본 사용법&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;인덱스를 Range Scan할 수 없는 이유: 인덱스 컬럼을 가공하면 인덱스를 정상적으로 사용(Range Scan)할 수 없다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;그 이유는 인덱스 스캔 시작점을 찾을 수 없기 때문이다&lt;/b&gt;&lt;/p&gt;</description>
      <author>상어악어</author>
      <guid isPermaLink="true">https://it-learn.tistory.com/174</guid>
      <comments>https://it-learn.tistory.com/174#entry174comment</comments>
      <pubDate>Tue, 28 May 2024 19:55:23 +0900</pubDate>
    </item>
    <item>
      <title>친절한 SQL 튜닝 1장</title>
      <link>https://it-learn.tistory.com/173</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;SQL을 실행하기 전 최적화 과정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. SQL 파싱&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파싱 트리 생성: SQL 문을 이루는 개별 구성요소를 분석해서 파싱 트리 생성&lt;/li&gt;
&lt;li&gt;Syntax 체크: 문법적 오류가 없는지 확인&lt;/li&gt;
&lt;li&gt;Semantic 체크: 의미상 오류가 없는지 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. SQL 최적화&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;옵티마이저가 실행계획 세우는 것&lt;/li&gt;
&lt;li&gt;다양한 실행경로 중 가장 효율적인 하나 선택&lt;/li&gt;
&lt;li&gt;데이터베이스 성능을 결정하는 가장 핵심적인 엔진&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 로우 소스 생성&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SQL 옵티마이저가 선택한 실행경로를 실제 실행 간으한 코드 또는 프로시저 형태로 포맷팅 하는 단계&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;논리적 I/O vs 물리적 I/O&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;논리적I/O: SQL을 처리하는 과정에 발생한 총 블록I/O(메모리 I/O)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물리적I/O: 디스크에서 발생한 총 블록I/O(버퍼캐시에서 못 찾았을 때)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버퍼캐시 히트율(Buffer Cache Hit Ratio, BCHR)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;= (1 - 물리적I/O / 논리적I/0) * 100&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물리적 I/O가 성능을 결정하지만, 실제 SQL 성능을 향상하려면 물리적I/O가 아닌 논리적 I/O를 줄여야한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물리적I/O = 논리적I/O * (100% - BCHR)이기때문에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;논리적I/O를 줄이면 물리적I/O도 줄어듬&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;b&gt;논리적 I/O를 줄임으로써 물리적 i/o를 줄이는 것이 곧 SQL 튜닝이다&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Table Full Scan vs Index Range Scan&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다량의 데이터를 읽을때는 Table Full Scan이 좋다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Sequential Access와 Multiblock I/O 방식이기 때문에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;큰 테이블에서 아주 적은 일부 데이터를 찾을때는 Index Range Scan이 좋다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Random Access와 Singleblock I/O 방식이기 때문이다&lt;/p&gt;</description>
      <category>데이터베이스/친절한 SQL 튜닝</category>
      <category>SQL 튜닝</category>
      <category>친절한 SQL 튜닝</category>
      <author>상어악어</author>
      <guid isPermaLink="true">https://it-learn.tistory.com/173</guid>
      <comments>https://it-learn.tistory.com/173#entry173comment</comments>
      <pubDate>Tue, 21 May 2024 21:05:28 +0900</pubDate>
    </item>
  </channel>
</rss>