<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>기록을 전송</title>
    <link>https://yeoon.tistory.com/</link>
    <description>기록을 전송</description>
    <language>ko</language>
    <pubDate>Fri, 12 Jun 2026 08:50:44 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>sendkite</managingEditor>
    <item>
      <title>(2편) AI 오해와 사실 - AI는 낱말 조합 글짓기 기계다.</title>
      <link>https://yeoon.tistory.com/202</link>
      <description>&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;&quot;AI 온보딩 - 다 함께 AI 성숙도 올리기&quot; &lt;/b&gt;주제로&amp;nbsp;발표를 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비개발 직군 분들이 이건 알고 AI 쓰면 좋겠다는 마음에 정리 했던 것인데 슬라이드 일부를 공유해본다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-06-07 오전 2.23.02.png&quot; data-origin-width=&quot;2240&quot; data-origin-height=&quot;1506&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b39QvU/dJMcaiQ6GdD/Ervu2ZmsKFyzPIBwMybJEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b39QvU/dJMcaiQ6GdD/Ervu2ZmsKFyzPIBwMybJEk/img.png&quot; data-alt=&quot;2026 사내 발표&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b39QvU/dJMcaiQ6GdD/Ervu2ZmsKFyzPIBwMybJEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb39QvU%2FdJMcaiQ6GdD%2FErvu2ZmsKFyzPIBwMybJEk%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;661&quot; height=&quot;444&quot; data-filename=&quot;스크린샷 2026-06-07 오전 2.23.02.png&quot; data-origin-width=&quot;2240&quot; data-origin-height=&quot;1506&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;2026 사내 발표&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;AI의 정체&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI의 시작은 예측이다. &lt;br /&gt;2012년 LLM 관련 초기 논문을 보면 &lt;br /&gt;일상의 자연어는 반복적이며 단순해서 예측할 수 있다는 것에서 출발한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-06-07 오전 2.26.43.png&quot; data-origin-width=&quot;2246&quot; data-origin-height=&quot;1268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/v4Nch/dJMcaf08laB/MhEOStnyZmMb58kZ8hobQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/v4Nch/dJMcaf08laB/MhEOStnyZmMb58kZ8hobQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/v4Nch/dJMcaf08laB/MhEOStnyZmMb58kZ8hobQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fv4Nch%2FdJMcaf08laB%2FMhEOStnyZmMb58kZ8hobQ1%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;2246&quot; height=&quot;1268&quot; data-filename=&quot;스크린샷 2026-06-07 오전 2.26.43.png&quot; data-origin-width=&quot;2246&quot; data-origin-height=&quot;1268&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;그런 점에서 LLM은 글짓기 기계다.&amp;nbsp;&lt;br /&gt;입력이 들어오면 가지고 있는 데이터로 답변이 될 내용을 예측해서 글짓기를 해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;2025년 젠슨황이 인생을 돌아가면 생물학을 공부할 것이라 언급한적 있다.&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;AI의 기저에는 '예측'이 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-06-07 오전 2.30.17.png&quot; data-origin-width=&quot;2220&quot; data-origin-height=&quot;1152&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bd8lwg/dJMcadPKNAU/rD9ikHSKKHNzcp9qmeLex1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bd8lwg/dJMcadPKNAU/rD9ikHSKKHNzcp9qmeLex1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bd8lwg/dJMcadPKNAU/rD9ikHSKKHNzcp9qmeLex1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbd8lwg%2FdJMcadPKNAU%2FrD9ikHSKKHNzcp9qmeLex1%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;2220&quot; height=&quot;1152&quot; data-filename=&quot;스크린샷 2026-06-07 오전 2.30.17.png&quot; data-origin-width=&quot;2220&quot; data-origin-height=&quot;1152&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;이 내용을 알면, AI를 어떻게 사용해야할지 감이 온다.&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;b&gt;논리적이며, 정제된 내용으로 사용해야한다.&lt;/b&gt;&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;스크린샷 2026-06-07 오전 2.33.41.png&quot; data-origin-width=&quot;2178&quot; data-origin-height=&quot;1234&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRLmAa/dJMcahYXVum/PQD31YUJ43VWwBs2rrdz30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRLmAa/dJMcahYXVum/PQD31YUJ43VWwBs2rrdz30/img.png&quot; data-alt=&quot;AI 사용의 부적절한 예&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRLmAa/dJMcahYXVum/PQD31YUJ43VWwBs2rrdz30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRLmAa%2FdJMcahYXVum%2FPQD31YUJ43VWwBs2rrdz30%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;796&quot; height=&quot;451&quot; data-filename=&quot;스크린샷 2026-06-07 오전 2.33.41.png&quot; data-origin-width=&quot;2178&quot; data-origin-height=&quot;1234&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;AI 사용의 부적절한 예&lt;/figcaption&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-06-07 오전 2.35.10.png&quot; data-origin-width=&quot;2026&quot; data-origin-height=&quot;1022&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsaBk8/dJMcacpRTOr/tDkPFc1K9hTT76zBTjFrOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsaBk8/dJMcacpRTOr/tDkPFc1K9hTT76zBTjFrOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsaBk8/dJMcacpRTOr/tDkPFc1K9hTT76zBTjFrOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsaBk8%2FdJMcacpRTOr%2FtDkPFc1K9hTT76zBTjFrOK%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;2026&quot; height=&quot;1022&quot; data-filename=&quot;스크린샷 2026-06-07 오전 2.35.10.png&quot; data-origin-width=&quot;2026&quot; data-origin-height=&quot;1022&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;AI의 미래&amp;nbsp;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2022년 ChatGPT 등장 이후 스택오버 플로우 질문이 5/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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;명확하게 질문하고, 명확하게 답변하던 행위들이 사라졌다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-06-07 오전 2.35.43.png&quot; data-origin-width=&quot;2238&quot; data-origin-height=&quot;1164&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FjqYU/dJMcacwCNLD/4Mn1JrHqMq6lTkrfPomJ00/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FjqYU/dJMcacwCNLD/4Mn1JrHqMq6lTkrfPomJ00/img.png&quot; data-alt=&quot;2022 스택오버 플로우 글 통계&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FjqYU/dJMcacwCNLD/4Mn1JrHqMq6lTkrfPomJ00/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFjqYU%2FdJMcacwCNLD%2F4Mn1JrHqMq6lTkrfPomJ00%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;2238&quot; height=&quot;380&quot; data-filename=&quot;스크린샷 2026-06-07 오전 2.35.43.png&quot; data-origin-width=&quot;2238&quot; data-origin-height=&quot;1164&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;2022 스택오버 플로우 글 통계&lt;/figcaption&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;지금의 AI 성능이 좋은 이유는&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 모델 성능을 위해 물류 센터에 책을 수백만권 구매해 스캔 했다고 한다.&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;스크린샷 2026-06-07 오전 2.37.46.png&quot; data-origin-width=&quot;1252&quot; data-origin-height=&quot;706&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dyqbe8/dJMcafUqE2e/f0MwR4TmqjRibjQSVpYDnk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dyqbe8/dJMcafUqE2e/f0MwR4TmqjRibjQSVpYDnk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dyqbe8/dJMcafUqE2e/f0MwR4TmqjRibjQSVpYDnk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdyqbe8%2FdJMcafUqE2e%2Ff0MwR4TmqjRibjQSVpYDnk%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;794&quot; height=&quot;448&quot; data-filename=&quot;스크린샷 2026-06-07 오전 2.37.46.png&quot; data-origin-width=&quot;1252&quot; data-origin-height=&quot;706&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데, 요즘에는 AI가 생성한 데이터를 AI가 학습하고 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI Slop이라는 신조어도 나왔다.&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;잘못되고, 품질이 낮은 데이터를 AI가 벌써 학습을 시작했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI의 성능은 영원할까?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-06-07 오전 2.40.18.png&quot; data-origin-width=&quot;2266&quot; data-origin-height=&quot;1238&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tBTzi/dJMcabYNNvT/LEovPYEwlKeHxjCyd6WnsK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tBTzi/dJMcabYNNvT/LEovPYEwlKeHxjCyd6WnsK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tBTzi/dJMcabYNNvT/LEovPYEwlKeHxjCyd6WnsK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtBTzi%2FdJMcabYNNvT%2FLEovPYEwlKeHxjCyd6WnsK%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;778&quot; height=&quot;425&quot; data-filename=&quot;스크린샷 2026-06-07 오전 2.40.18.png&quot; data-origin-width=&quot;2266&quot; data-origin-height=&quot;1238&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AI를 어떻게 사용할지 보다, &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AI에게 줄 데이터를 어떻게 관리하고&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;출력을 검증하는 것이 중요하다.&amp;nbsp;&lt;/b&gt;&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;스크린샷 2026-06-07 오전 2.41.16.png&quot; data-origin-width=&quot;2186&quot; data-origin-height=&quot;1230&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FxOax/dJMcah5NmhH/Y6tNdOKEeLK8SKUpqQWJLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FxOax/dJMcah5NmhH/Y6tNdOKEeLK8SKUpqQWJLK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FxOax/dJMcah5NmhH/Y6tNdOKEeLK8SKUpqQWJLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFxOax%2FdJMcah5NmhH%2FY6tNdOKEeLK8SKUpqQWJLK%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;427&quot; data-filename=&quot;스크린샷 2026-06-07 오전 2.41.16.png&quot; data-origin-width=&quot;2186&quot; data-origin-height=&quot;1230&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-06-07 오전 2.45.50.png&quot; data-origin-width=&quot;2212&quot; data-origin-height=&quot;1254&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OIHya/dJMcaaevZqu/wuIsN5dGZsPSc2gZ1RhpcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OIHya/dJMcaaevZqu/wuIsN5dGZsPSc2gZ1RhpcK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OIHya/dJMcaaevZqu/wuIsN5dGZsPSc2gZ1RhpcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOIHya%2FdJMcaaevZqu%2FwuIsN5dGZsPSc2gZ1RhpcK%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;790&quot; height=&quot;448&quot; data-filename=&quot;스크린샷 2026-06-07 오전 2.45.50.png&quot; data-origin-width=&quot;2212&quot; data-origin-height=&quot;1254&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>AI</category>
      <author>sendkite</author>
      <guid isPermaLink="true">https://yeoon.tistory.com/202</guid>
      <comments>https://yeoon.tistory.com/202#entry202comment</comments>
      <pubDate>Sun, 7 Jun 2026 02:42:09 +0900</pubDate>
    </item>
    <item>
      <title>2026.05 클린 아키텍처 리뷰 - 읽을 만한 고전인가</title>
      <link>https://yeoon.tistory.com/201</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&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;AI 열풍으로 할 것도 많은데 왠 아키텍처 싶겠지만,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AI 시대에는 아키텍처가 1순위 역량 아닐까 생각한다.&amp;nbsp;&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;클로드 코드 품질이 형편이 없다 같은 이야기가 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;그래서 유출 코드를 클로드로 평가 해봤는데&lt;/b&gt;&lt;br /&gt;&lt;b&gt;아키텍처 영역이 만점에 가깝게 나오더라&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-06-07 오전 2.01.05.png&quot; data-origin-width=&quot;1388&quot; data-origin-height=&quot;946&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b15ZXZ/dJMcah5NlUn/K66K6kKgH84EYKZ926NOr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b15ZXZ/dJMcah5NlUn/K66K6kKgH84EYKZ926NOr0/img.png&quot; data-alt=&quot;클로드 코드 유출 사건&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b15ZXZ/dJMcah5NlUn/K66K6kKgH84EYKZ926NOr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb15ZXZ%2FdJMcah5NlUn%2FK66K6kKgH84EYKZ926NOr0%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;663&quot; height=&quot;452&quot; data-filename=&quot;스크린샷 2026-06-07 오전 2.01.05.png&quot; data-origin-width=&quot;1388&quot; data-origin-height=&quot;946&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;클로드 코드 유출 사건&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&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;1. 자리만 차지하던 책을 완독해서 속이 다 시원하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 9명 인원 스터디로 매주 2명씩 발표해서, 발표 퀄리티가 유지 됬다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 참여 인원 경력이 4-6년차로 비슷해서 좋은 토론 주제가 많았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 모임장이 부담 없이 일정 구성을 잘 구성했다.&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;스크린샷 2026-06-07 오전 1.50.15.png&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1530&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HQlf7/dJMcaaevYyv/fdWRW0gNglORYu4OPSySWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HQlf7/dJMcaaevYyv/fdWRW0gNglORYu4OPSySWk/img.png&quot; data-alt=&quot;책 - 클린 아키텍처&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HQlf7/dJMcaaevYyv/fdWRW0gNglORYu4OPSySWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHQlf7%2FdJMcaaevYyv%2FfdWRW0gNglORYu4OPSySWk%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;409&quot; height=&quot;535&quot; data-filename=&quot;스크린샷 2026-06-07 오전 1.50.15.png&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1530&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;책 - 클린 아키텍처&lt;/figcaption&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;책 내용은 개발 철학, 설계 원칙, port-adapter 패턴이다.&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;br /&gt;ChatGPT에 내가 이해한게 맞는지 spring boot로 예시 요청을 무진장 하며 읽었다.&lt;br /&gt;그렇게 이해한 내용은 스터디에서 토론으로&amp;nbsp;검증할 수 있어서 좋았다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; 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;a href=&quot;https://docs.google.com/presentation/d/1L5yFcqnBSTKbhwtowIVtakwkJgQVSlrphJ4vrOWhnRE/edit?slide=id.p#slide=id.p&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://docs.google.com/presentation/d/1L5yFcqnBSTKbhwtowIVtakwkJgQVSlrphJ4vrOWhnRE/edit?slide=id.p#slide=id.p&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1780764315741&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;20260421_아키텍처(20-24)&quot; data-og-description=&quot;5부 아키텍처 20장 업무규칙 (Business Rule) 21장 소리치는 아키텍처 (Screaming Architecture) 22장 클린 아키텍처 (The Clean Architecture) 23장 프리젠터와 험블 객체 (Presenter, Humble Object) 24장 부분적 경계 (Partial &quot; data-og-host=&quot;docs.google.com&quot; data-og-source-url=&quot;https://docs.google.com/presentation/d/1L5yFcqnBSTKbhwtowIVtakwkJgQVSlrphJ4vrOWhnRE/edit?slide=id.p#slide=id.p&quot; data-og-url=&quot;https://docs.google.com/presentation/d/1L5yFcqnBSTKbhwtowIVtakwkJgQVSlrphJ4vrOWhnRE/edit?slide=id.p&amp;amp;usp=embed_facebook&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bMTLrE/dJMb88GcKc3/tDdK7SnbhlFLsD6uzhMZk0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://docs.google.com/presentation/d/1L5yFcqnBSTKbhwtowIVtakwkJgQVSlrphJ4vrOWhnRE/edit?slide=id.p#slide=id.p&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.google.com/presentation/d/1L5yFcqnBSTKbhwtowIVtakwkJgQVSlrphJ4vrOWhnRE/edit?slide=id.p#slide=id.p&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bMTLrE/dJMb88GcKc3/tDdK7SnbhlFLsD6uzhMZk0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&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;20260421_아키텍처(20-24)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;5부 아키텍처 20장 업무규칙 (Business Rule) 21장 소리치는 아키텍처 (Screaming Architecture) 22장 클린 아키텍처 (The Clean Architecture) 23장 프리젠터와 험블 객체 (Presenter, Humble Object) 24장 부분적 경계 (Partial&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.google.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;a href=&quot;https://docs.google.com/presentation/d/1RVwH09To1AaGSE6A7TOit6x7YadqklmVsmfhBtcS3F8/edit?slide=id.g3dd3973cb84_0_5#slide=id.g3dd3973cb84_0_5&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://docs.google.com/presentation/d/1RVwH09To1AaGSE6A7TOit6x7YadqklmVsmfhBtcS3F8/edit?slide=id.g3dd3973cb84_0_5#slide=id.g3dd3973cb84_0_5&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1780764331944&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;20260405_클린아키텍처_4부_컴포넌트원칙&quot; data-og-description=&quot;4부 - 컴포넌트 원칙 12장 - 컴포넌트 13장 - 컴포넌트 응집도 14장 - 컴포넌트 결합 2026.04.07 전송연&quot; data-og-host=&quot;docs.google.com&quot; data-og-source-url=&quot;https://docs.google.com/presentation/d/1RVwH09To1AaGSE6A7TOit6x7YadqklmVsmfhBtcS3F8/edit?slide=id.g3dd3973cb84_0_5#slide=id.g3dd3973cb84_0_5&quot; data-og-url=&quot;https://docs.google.com/presentation/d/1RVwH09To1AaGSE6A7TOit6x7YadqklmVsmfhBtcS3F8/edit?slide=id.g3dd3973cb84_0_5&amp;amp;usp=embed_facebook&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dg9ZEv/dJMb9cBPHNg/kPka64rNjxUgp0yXpfCUnK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://docs.google.com/presentation/d/1RVwH09To1AaGSE6A7TOit6x7YadqklmVsmfhBtcS3F8/edit?slide=id.g3dd3973cb84_0_5#slide=id.g3dd3973cb84_0_5&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.google.com/presentation/d/1RVwH09To1AaGSE6A7TOit6x7YadqklmVsmfhBtcS3F8/edit?slide=id.g3dd3973cb84_0_5#slide=id.g3dd3973cb84_0_5&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dg9ZEv/dJMb9cBPHNg/kPka64rNjxUgp0yXpfCUnK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&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;20260405_클린아키텍처_4부_컴포넌트원칙&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;4부 - 컴포넌트 원칙 12장 - 컴포넌트 13장 - 컴포넌트 응집도 14장 - 컴포넌트 결합 2026.04.07 전송연&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.google.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;</description>
      <category>아키텍처</category>
      <category>클린 아키텍처</category>
      <author>sendkite</author>
      <guid isPermaLink="true">https://yeoon.tistory.com/201</guid>
      <comments>https://yeoon.tistory.com/201#entry201comment</comments>
      <pubDate>Sun, 7 Jun 2026 02:11:35 +0900</pubDate>
    </item>
    <item>
      <title>(1편) AI 오해와 사실 - AI는 멍청하다.</title>
      <link>https://yeoon.tistory.com/200</link>
      <description>&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;&amp;ldquo;AI 시대 인재는 어떠해야 하는가&amp;rdquo;&lt;/b&gt;를 주제로&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현업 실무자들의 조언을 듣는 인터뷰에 다녀왔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나를 포함해 총 13명의 다양한 분야 종사자들이 참여해,&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;자동차부품 업계 -&amp;gt; 국가 핵심 산업으로 AI를 떠나 인터넷도 사용 불가한 환경&lt;/li&gt;
&lt;li&gt;제조업, 물류, 의료기기 업계 -&amp;gt; TF 조직 단위로 엑셀 작업 자동화 시도&amp;nbsp;&lt;/li&gt;
&lt;li&gt;수출업, 공공기관 -&amp;gt; ChatGPT, Gemini 같은 도구 적극 사용중&lt;/li&gt;
&lt;li&gt;소프트웨어 회사 -&amp;gt; 전 직원이 AI를 사용중이며 모든 업무에 AI를 어떻게 사용했는지 보고하며 인사고과에 반영&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote style=&quot;color: #0e0e0e;&quot; data-ke-style=&quot;style1&quot;&gt;&lt;b&gt;결론부터 말하자면, 소프트웨어 기업과 피지컬 기업의 AI 활용도 격차는 생각 이상으로 크게 벌어져 있었다.&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span style=&quot;color: #0e0e0e; text-align: start;&quot;&gt;왜..&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #0e0e0e; text-align: start;&quot;&gt;나는 AI의 기본 원리와 한계점에 대한 교육 부재라고 생각한다.&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;AI 자율성 활용 수준&lt;/h2&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;작년 5월 쯤 등장한 AI 활용 수준을 나타내는 용어다.&amp;nbsp;&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;b&gt;AI in the Loop&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인간이 대부분의 일을 수행하며 AI는 보조자 역할&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Human in the Loop&amp;nbsp;&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AI가 대부분 일을 수행하며 인간은 판단(검토, 승인) 수행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-03-19 오후 11.37.32.png&quot; data-origin-width=&quot;842&quot; data-origin-height=&quot;166&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCyyno/dJMcadnLe2q/cy3wCET3ODwFc0DZ7MD8O1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCyyno/dJMcadnLe2q/cy3wCET3ODwFc0DZ7MD8O1/img.png&quot; data-alt=&quot;개발자 대화방 - 사람이 직접 코드를 작성하지 않는 것은 일상이 되었다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCyyno/dJMcadnLe2q/cy3wCET3ODwFc0DZ7MD8O1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCyyno%2FdJMcadnLe2q%2Fcy3wCET3ODwFc0DZ7MD8O1%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;543&quot; height=&quot;107&quot; data-filename=&quot;스크린샷 2026-03-19 오후 11.37.32.png&quot; data-origin-width=&quot;842&quot; data-origin-height=&quot;166&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;개발자 대화방 - 사람이 직접 코드를 작성하지 않는 것은 일상이 되었다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Human on the Loop&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AI가 완전 자율로 일하며 인간은 최종 결과물 승인&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-03-19 오후 11.33.55.png&quot; data-origin-width=&quot;3054&quot; data-origin-height=&quot;1926&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/u8g5o/dJMcabjeYuu/BRvtTWUZKW7R2VVKe2mcxk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/u8g5o/dJMcabjeYuu/BRvtTWUZKW7R2VVKe2mcxk/img.png&quot; data-alt=&quot;개발 쪽은 Ralph Loop라고 해서 잠자는 동안에도 AI가 24시간 작업하게 하는 도구도 나왔다. 어떻게 될지는 모르겠지만 코딩을 자동화하면 AI 발전이 급속도로 높아질 것라고 한다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/u8g5o/dJMcabjeYuu/BRvtTWUZKW7R2VVKe2mcxk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fu8g5o%2FdJMcabjeYuu%2FBRvtTWUZKW7R2VVKe2mcxk%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;525&quot; height=&quot;331&quot; data-filename=&quot;스크린샷 2026-03-19 오후 11.33.55.png&quot; data-origin-width=&quot;3054&quot; data-origin-height=&quot;1926&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;개발 쪽은 Ralph Loop라고 해서 잠자는 동안에도 AI가 24시간 작업하게 하는 도구도 나왔다. 어떻게 될지는 모르겠지만 코딩을 자동화하면 AI 발전이 급속도로 높아질 것라고 한다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style=&quot;color: #0e0e0e;&quot; data-ke-style=&quot;style1&quot;&gt;소프트웨어 기업은 AI in the Loop + Human in the Loop + Human on the Loop 로 AI를 활용하는 반면&lt;br /&gt;피지컬 기업은 &lt;b&gt;챗봇 활용 수준&lt;/b&gt;의 AI in the Loop 정도로 활용하는 것으로 보인다.&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;&lt;span style=&quot;color: #0e0e0e; text-align: start;&quot;&gt;어떻게 하면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #0e0e0e; text-align: start;&quot;&gt;Human in the Loop,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #0e0e0e; text-align: start;&quot;&gt;Human on the Loop 로 활용할 수 있을까?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0e0e0e; text-align: start;&quot;&gt;다시 반복하지만 &lt;b&gt;&lt;span style=&quot;color: #0e0e0e; text-align: start;&quot;&gt;나는 AI의 기본 원리와 한계점에 대한 교육 부재라고 생각한다.&amp;nbsp;&lt;/span&gt;&lt;/b&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;AI 기본 원리를 살펴보기 위해 가장 빈번한 오해를 살펴보자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;AI 오해 (1) &lt;/span&gt;- AI는 멍청하다.&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대부분 사람들이 ChatGPT와 같은 AI Chabot을 쓰며 &amp;lsquo;멍청한 것 같아&amp;rsquo;, '자꾸 이상한 말을 한다' 라고 표현한다.&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;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;사실 AI는 반드시 이상한 말을 한다.&lt;/b&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;우리가 AI라고 말하는 기저에는 LLM이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LLM은 완성 문자열의 확률 분포를 학습 데이터 토대로 모델링 하는 것이다.&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;b&gt;&quot;낱말 조합 글짓기 기계다.&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;오늘의 날씨는&quot; 뒤에 확률적으로 &quot;맑다&quot;, &quot;좋다&quot;, &quot;흐리다&quot; 같은 단어가 올 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제는 확률적으로 가장 높은 확률로 조합하는 것이 아니라 무작위로 조합한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;오늘의 날씨는 링가르디움레비오사!&quot; 가 될 수도 있는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;멍청한 것이 아니다, 모델이 아무리 뛰어나도 확률적으로 반드시 잘못된 결과가 나온다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좀 들어본 용어로 아래처럼 표현한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 잘못된 결과 -&amp;gt; &lt;b&gt;할루시네이션&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요청할때 마다 확률적으로 다른 결과 -&amp;gt; &lt;b&gt;비결정성&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;AI 오해 (2) - AI는 무&lt;/span&gt;료다.&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI에게 질문은 공짜가 아니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터를 가져올때 질문은 token이라는 것으로 변환되며,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;질문할때마다 token 만큼 비용이 발생한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;지금은 역사상 AI Model 사용료가 가장 낮은 시점이다.&lt;/b&gt;&lt;/span&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;gt; 저렴한 모델&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 추론, 분석 작업 -&amp;gt; 중간 모델&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 복잡한 추론, 리서치 작업 -&amp;gt; 비싼 고급 모델 (월 구독료가 30만원을 넘어간다.)&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;h2 style=&quot;color: #000000;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;AI 사실&lt;/b&gt;&lt;/span&gt; - 내가 멍청하다.&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LLM이 무작위 확률 낱말 글짓기라고 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;목표하는 답변이 나올 확률이 높은 질문을 하면, LLM이 올바른 답변을 줄 확률이 올라간다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좋은 질문을 해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[좋은 질문이 필수 요소]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 내가 달성하려는 목적&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 내가 목표를 위해 참고한 것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 내 작업 환경&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 내가 한 시도들&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 내가 얻고 싶은 답&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Prompt 템플릿, 페르소나, Context 다 좋은 질문을 위한 요소일 뿐이다.&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;b&gt; Meta Prompting&lt;/b&gt;이라고 해서 좋은 질문(prompt)을 LLM을 통해 만들 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(ex. 이런 작업을 하려고 하는데 더 필요한 건 없을지 날 인터뷰 해줘.. 이런 작업을 하려고하는데 prompt를 생성해줘)&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;h2 style=&quot;color: #000000;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;AI 사실&lt;/b&gt; &lt;/span&gt;- AI는 반드시 잘못된 결과를 준다.&lt;/h2&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;학습한 데이터가 편향적으로 학습되어 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;사실이 아닌데 사실 처럼 줄 수 있다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(인터넷에 잘못된 블로그 글, AI로 생성한 글, 잘못된 기사, 커뮤니티 글 등.. 얼마든지 학습 될 수 있다.)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-03-20 오전 12.04.19.png&quot; data-origin-width=&quot;2938&quot; data-origin-height=&quot;2012&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QB8xp/dJMcagY6ZBy/EihQ4vpv54rVWRYP14vsr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QB8xp/dJMcagY6ZBy/EihQ4vpv54rVWRYP14vsr1/img.png&quot; data-alt=&quot;Claude를 만든 엔트로픽은 양질의 데이터 학습을 위해 책 수백만권을 스캔하여 학습 시키고 버렸다. (프로젝트 파나마) https://www.aitimes.com/news/articleView.html?idxno=206046&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QB8xp/dJMcagY6ZBy/EihQ4vpv54rVWRYP14vsr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQB8xp%2FdJMcagY6ZBy%2FEihQ4vpv54rVWRYP14vsr1%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;704&quot; height=&quot;482&quot; data-filename=&quot;스크린샷 2026-03-20 오전 12.04.19.png&quot; data-origin-width=&quot;2938&quot; data-origin-height=&quot;2012&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Claude를 만든 엔트로픽은 양질의 데이터 학습을 위해 책 수백만권을 스캔하여 학습 시키고 버렸다. (프로젝트 파나마) https://www.aitimes.com/news/articleView.html?idxno=206046&lt;/figcaption&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;LLM이 학습한 데이터는 최신의 데이터가 아니다.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;LLM은 학습시킨 시점의 고정된 정보만 가지고 있다.&amp;nbsp;구식의 정보를 줄 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000;&quot; data-ke-size=&quot;size26&quot;&gt;소프트웨어 회사의 AI &amp;nbsp;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI가 주는 데이터가 반드시 잘못 되었다는 것을 알고&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;(ChatGPT로 예로 들면, 결과물의 출처 링크를 주는 것도 가드레일이다.)&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;가드레일이 없는 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;&lt;b&gt;소프트웨어 회사는 이러한 가드레일을 자동화했다.&amp;nbsp;&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;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Reference&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- LLM의 동작원리&amp;nbsp;&lt;a href=&quot;https://www.youtube.com/watch?v=sTdz6PZoAnw&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.youtube.com/watch?v=sTdz6PZoAnw&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;nbsp;팀&amp;nbsp;하네스&amp;nbsp;구축&amp;nbsp;&lt;a href=&quot;https://toss.tech/article/harness-for-team-productivity&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://toss.tech/article/harness-for-team-productivity&lt;/a&gt;&lt;br /&gt;-&amp;nbsp;LUI의&amp;nbsp;시대&amp;nbsp;harness&amp;nbsp;:&amp;nbsp;&lt;a href=&quot;https://toss.tech/article/software-3-0-era&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://toss.tech/article/software-3-0-era&lt;/a&gt;&lt;br /&gt;-&amp;nbsp;AI&amp;nbsp;거품&amp;nbsp;&lt;a href=&quot;https://www.wheresyoured.at/the-haters-gui/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.wheresyoured.at/the-haters-gui/&lt;/a&gt;&lt;br /&gt;-&amp;nbsp;AI&amp;nbsp;도구&amp;nbsp;생산성&amp;nbsp;하락&amp;nbsp;&lt;a href=&quot;https://www.theregister.com/2025/07/11/ai_code_tools_slow_down/?ref=wheresyoured.at&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.theregister.com/2025/07/11/ai_code_tools_slow_down/?ref=wheresyoured.at&lt;/a&gt;&amp;nbsp;&lt;br /&gt;- 일자리는 AI가 대체하는게 아니라 소비하고 있는 것이다.&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://www.fastcompany.com/91435192/chatgpt-llm-openai-jobs-amazon&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.fastcompany.com/91435192/chatgpt-llm-openai-jobs-amazon&lt;/a&gt;&amp;nbsp;&lt;br /&gt;-&amp;nbsp;전체&amp;nbsp;Ai&amp;nbsp;agent&amp;nbsp;절반은&amp;nbsp;소프트웨어&amp;nbsp;&lt;a href=&quot;https://garryslist.org/posts/half-the-ai-agent-market-is-one-category-the-rest-is-wide-open&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://garryslist.org/posts/half-the-ai-agent-market-is-one-category-the-rest-is-wide-open&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI 자율성 활용도 수준 - AI 스펙트럼&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;a href=&quot;https://martinfowler.com/articles/exploring-gen-ai/humans-and-agents.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://martinfowler.com/articles/exploring-gen-ai/humans-and-agents.html&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://community.ibm.com/community/user/blogs/anuj-bahuguna/2025/05/25/ai-in-the-loop-vs-human-in-the-loop&quot;&gt;https://community.ibm.com/community/user/blogs/anuj-bahuguna/2025/05/25/ai-in-the-loop-vs-human-in-the-loop&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=mYMvFZDTC_M&amp;amp;t=1s&quot;&gt;https://www.youtube.com/watch?v=mYMvFZDTC_M&amp;amp;t=1s&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>AI</category>
      <category>AI</category>
      <author>sendkite</author>
      <guid isPermaLink="true">https://yeoon.tistory.com/200</guid>
      <comments>https://yeoon.tistory.com/200#entry200comment</comments>
      <pubDate>Fri, 20 Mar 2026 00:17:59 +0900</pubDate>
    </item>
    <item>
      <title>2025 회고(2) - 개발자 5년차 커리어 회고</title>
      <link>https://yeoon.tistory.com/199</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;h2 data-ke-size=&quot;size26&quot;&gt;개발자 5년차의 회고&lt;/h2&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;2026년을 기점으로 5년차 경력이 되었다.&lt;/li&gt;&lt;li&gt;개발자가 될 결심을 했을때 적어도 5년 뒤에 어떤 모습이길 원하는 청사진이 있었다.&lt;/li&gt;&lt;/ul&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;“평균보다 잘하는 개발자”&lt;/b&gt;&lt;/i&gt;&lt;br&gt;&lt;i&gt;&lt;b&gt;“해외 취업이 가능한 역량 상태일 것”&lt;/b&gt;&lt;/i&gt;&lt;br&gt;&lt;i&gt;&lt;b&gt;“생존 걱정하지 않을 만큼의 연봉”&lt;/b&gt;&lt;/i&gt;&lt;br&gt;&lt;i&gt;&lt;b&gt;“회사에서 일할때 유쾌하고 행복할 것”&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;초기에 설정한 목표가 실제로 달성되었는지 반추해본다.&lt;/li&gt;&lt;/ul&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;516&quot; data-origin-height=&quot;762&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zvsFq/dJMcagjSHTB/I51TMA7OpqSJHdKjE1UQ80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zvsFq/dJMcagjSHTB/I51TMA7OpqSJHdKjE1UQ80/img.png&quot; data-alt=&quot;ChatGPT로 생성한 5년차 개발자 이미지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zvsFq/dJMcagjSHTB/I51TMA7OpqSJHdKjE1UQ80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzvsFq%2FdJMcagjSHTB%2FI51TMA7OpqSJHdKjE1UQ80%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;321&quot; height=&quot;474&quot; data-origin-width=&quot;516&quot; data-origin-height=&quot;762&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ChatGPT로 생성한 5년차 개발자 이미지&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h1&gt;“평균보다 잘하는 개발자”&lt;/h1&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;li&gt;나보다 먼저 간 잘하는 개발자들을 롤모델로 세우고 따라하기로 했다.&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;롤모델&lt;/h3&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;b&gt;김영재 님(라인)&lt;/b&gt; - &lt;a href=&quot;https://engineering.linecorp.com/ko/blog/author/김영재&quot;&gt;https://engineering.linecorp.com/ko/blog/author/김영재&lt;/a&gt; 
  &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&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;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;오프라인 강연 듣고 너무 좋아서 시중에 존재하는 모든 컨텐츠를 반복했다. 
    &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
     &lt;li&gt;유튜브, okky 강연, 마이크로소프트 강연, 인프콘 강연, 라인 블로그, 출판 서적(책 - Design it!)&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;한정수 님(실리콘 밸리)&lt;/b&gt; - &lt;a href=&quot;https://www.integer.blog/&quot;&gt;https://www.integer.blog/&lt;/a&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;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;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;김동욱 님(인프런)&lt;/b&gt; - &lt;a href=&quot;https://jojoldu.tistory.com/&quot;&gt;https://jojoldu.tistory.com/&lt;/a&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;유튜브 개발바닥 초반 컨텐츠를 보면 35살에 7년차 배민을 퇴사하는 내용이 나온다. 
    &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
     &lt;li&gt;35살에 이 사람 정도의 실력이 있으면 좋겠다라고 생각했다. (&lt;a href=&quot;https://www.youtube.com/watch?v=kE0qicg9Kl0&quot;&gt;https://www.youtube.com/watch?v=kE0qicg9Kl0&lt;/a&gt;)&lt;/li&gt; 
     &lt;li&gt;방송하면 뒷편에 있는 책장을 스크린샷 떠서, 따라 구매하고, 모든 컨텐츠를 챙겨 보며 마음을 다졌다.&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;오프라인에서 총 4번 만났다. (동욱 님은 날 모르겠지만) 
    &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
     &lt;li&gt;데스커 행사 - 당시에 회사에서 겪던 조직 갈등, 기술적 문제에 대해 질문해 큰 도움을 받았다.&lt;/li&gt; 
     &lt;li&gt;마이크로소프트 - 인프런 조직에 대한 발표, 조직 문화, 업무 프로세스를 이렇게 까지 좋게 만들 수 있구나 인사이트&lt;/li&gt; 
     &lt;li&gt;데브콘(스파르타) - 문서화 잘하는 방법, 슬랙 더 잘 쓰는 방법, AI 활용, DORA Metric 같은 키워드&lt;/li&gt; 
     &lt;li&gt;스프링캠프 - 매니저급 들의 인사이트&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;박용권 님(당근)&lt;/b&gt; - &lt;a href=&quot;https://www.linkedin.com/in/arawn/&quot;&gt;https://www.linkedin.com/in/arawn/&lt;/a&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;Nextstep - 모놀리틱 아키텍처 강의 
    &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
     &lt;li&gt;Spring momulith를 알게 되고 써보고 싶다는 동기를 주신 분이다.&lt;/li&gt; 
     &lt;li&gt;덕분에 현재 실무에 Spring modulith를 도입하여 쾌적한 아키텍처를 구축할 수 있었다.&lt;/li&gt; 
     &lt;li&gt;스프링캠프 - 토론 할때 요구사항을 정확히 정제하는 질문 법 같은 것을 배운 것 같다.&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;조영호 님(개인 사업자)&lt;/b&gt; - &lt;a href=&quot;https://eternity-object.tistory.com/&quot;&gt;https://eternity-object.tistory.com/&lt;/a&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;작년에 온라인 강의도 2개 내셨는데, 오프라인 강의력이 기가 막히시다.&lt;/li&gt; 
   &lt;li&gt;강의 
    &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
     &lt;li&gt;객체지향사실 오해 
      &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
       &lt;li&gt;이 책으로 스터디만 3번 진행했다. 정말 마스터 피스&lt;/li&gt; 
       &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=dJ5C4qRqAgA&quot;&gt;https://www.youtube.com/watch?v=dJ5C4qRqAgA&lt;/a&gt;&lt;/li&gt; 
      &lt;/ul&gt; &lt;/li&gt; 
     &lt;li&gt;도메인 주도 설계 사실과 오해 
      &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
       &lt;li&gt;이것 덕분에 DDD 관련 컨텐츠 소비가 너무 수월했다.&lt;/li&gt; 
       &lt;li&gt;현재 팀 모두가 DDD 용어를 이해하고 있으며, 적용되어 있다.&lt;/li&gt; 
      &lt;/ul&gt; &lt;/li&gt; 
     &lt;li&gt;JPA 사실과 오해 
      &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
       &lt;li&gt;실무에서 JPA, TypeORM 같은 ORM을 써보면 아래 같았다. 
        &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
         &lt;li&gt;N+1은 무조껀 발생하고 있다.&lt;/li&gt; 
         &lt;li&gt;왜 나는지 추적이 어려우며, 성능 손해 원인인데, 다른 업무로 손대지 못한다.&lt;/li&gt; 
         &lt;li&gt;연관관계를 다 끊고 사용하도록 강제&lt;/li&gt; 
        &lt;/ul&gt; &lt;/li&gt; 
       &lt;li&gt;네이버 재직 시절부터 JPA를 사용하시며, 아키텍처적으로 이렇게 사용해야한다. 명쾌한 답을 주신 강의 
        &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
         &lt;li&gt;현재 회사에서는 N+1 문제 없이 연관관계를 쾌적하게 사용중이다.&lt;/li&gt; 
        &lt;/ul&gt; &lt;/li&gt; 
      &lt;/ul&gt; &lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;이태형 님(아이아이컴바인드)&lt;/b&gt; - &lt;a href=&quot;https://jsonobject.tistory.com/&quot;&gt;https://jsonobject.tistory.com/&lt;/a&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;/li&gt; 
 &lt;li&gt;&lt;b&gt;손권남 님(네이버)&lt;/b&gt; - &lt;a href=&quot;https://kwonnam.pe.kr/wiki/&quot;&gt;https://kwonnam.pe.kr/wiki/&lt;/a&gt; 
  &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;1세대 개발 파워 블로거,&lt;/li&gt; 
   &lt;li&gt;블로그 글들로 많은 것을 배웠다. 
    &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
     &lt;li&gt;특히 개발자 머피의 법칙, 롬복 사용법, 읽기/쓰기 DB 라우팅에서 큰 도움을 받았다.&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;이일민 님(토비)&lt;/b&gt; - &lt;a href=&quot;https://www.linkedin.com/in/tobyilee/&quot;&gt;https://www.linkedin.com/in/tobyilee/&lt;/a&gt; 
  &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;발표력, 강의력이 대한민국 No 1.&lt;/li&gt; 
   &lt;li&gt;클린 스프링 강의 시리즈 시간가는 줄 모르고 보면서 많은 인사이트를 받았다.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;백기선 님(마이크로소프트)&lt;/b&gt; 
  &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;자바 8 강의, 커리어 관련 강의로 도움을 받았다.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;나는 평균보다 잘하는 개발자 인가?&lt;/h3&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;유지보수, 생산성 좋은 코드를 만들어 내는 것 같다.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;평균 보다 많은 스터디 시간을 투자 할애하고 있다.&lt;/li&gt; 
 &lt;li&gt;평균 보다 많은 연봉은 받지 않고 있다. (제일 슬픈 부분)&lt;/li&gt; 
 &lt;li&gt;평균 보다 Database, 인프라에 약하다. 
  &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;Redis, Kafka, DynomoDB 같은 Store 기술을 너무 얕게만 알고 사용하고 있다.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&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;/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;br&gt;&lt;b&gt;⇒ 개인적으로는 지난 5년을 학점으로 평가하면 B학점이다.&lt;/b&gt;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;h1&gt;&lt;b&gt;“해외 취업이 가능한 역량 상태일 것”&lt;/b&gt;&lt;/h1&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;마이크로소프트 직무 연차별 특징 (출처 : 백기선님 - 커리어 강연)&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;마이크로소프트 재직자의 연차별 역량 요구사항 보고 점검해보자.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1954&quot; data-origin-height=&quot;1612&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CLfsX/dJMcadglM34/0n5Q75gzvK2U08aiHypdY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CLfsX/dJMcadglM34/0n5Q75gzvK2U08aiHypdY0/img.png&quot; data-alt=&quot;넷플릭스 흑백요리사2 - 요리괴물&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CLfsX/dJMcadglM34/0n5Q75gzvK2U08aiHypdY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCLfsX%2FdJMcadglM34%2F0n5Q75gzvK2U08aiHypdY0%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;611&quot; height=&quot;504&quot; data-origin-width=&quot;1954&quot; data-origin-height=&quot;1612&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;넷플릭스 흑백요리사2 - 요리괴물&lt;/figcaption&gt;
&lt;/figure&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;b&gt;주니어(SDE) 역량 (1 ~ 3년)&lt;/b&gt; 
  &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&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;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;일정 맞춰보는 연습 (ETA 산정 연습)&lt;/li&gt; 
      &lt;/ul&gt; &lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;미들(SDE2) 역량 (3 ~ 5년)&lt;/b&gt; 
  &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;조금 덜 분명한 문제, 목표를 독립적으로 달성 능력. 
    &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
     &lt;li&gt;전반적인 프로젝트, 전반적인 E2E, 시나리오 관점에서 업무 바라볼 수 있어야함 
      &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;/li&gt; 
     &lt;li&gt;특정 도메인의 특화 담당자가 되어 전문성 키우는 단계 
      &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
       &lt;li&gt;코딩, 설계, 디버깅, 설계 문서 작성, PM 협업, 수치 분석 실천할 수 있어야함 
        &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;/li&gt; 
      &lt;/ul&gt; &lt;/li&gt; 
     &lt;li&gt;효율적인 협업으로 의사소통 최적화 능력 
      &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
       &lt;li&gt;PM, 매니저 활용 능력&lt;/li&gt; 
      &lt;/ul&gt; &lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;시니어 (6 ~ 8년, 최고 5+)&lt;/b&gt; 
  &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;모호한 업무, 목표 수행 능력 
    &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
     &lt;li&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;/ul&gt; &lt;/li&gt; 
     &lt;li&gt;Feature Crew (4-5명 규모 팀) 테크 리더 
      &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
       &lt;li&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;/li&gt; 
       &lt;li&gt;풀기 어려운 문제의 전략 수립&lt;/li&gt; 
      &lt;/ul&gt; &lt;/li&gt; 
     &lt;li&gt;타 개발자 업무적 솔선수범 (Lead by example) 
      &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
       &lt;li&gt;좋은 업무 방식, 행동 예시 등 팀의 롤모델이 될 것&lt;/li&gt; 
      &lt;/ul&gt; &lt;/li&gt; 
     &lt;li&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;/ul&gt; &lt;/li&gt; 
     &lt;li&gt;피드백 제공 - 시스템, 서비스, 팀원&lt;/li&gt; 
     &lt;li&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;/ul&gt; &lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;수석 엔지니어(Principal SDE) (8 ~ 12년+)&lt;/b&gt; 
  &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;프로젝트 범위가 넓고, 시간과 비용이 큰 프로젝트 리딩 
    &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
     &lt;li&gt;4-5팀 규모의 조직 리딩 
      &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
       &lt;li&gt;R&amp;amp;R 분산, 협업 환경 조성&lt;/li&gt; 
      &lt;/ul&gt; &lt;/li&gt; 
     &lt;li&gt;1-2년 이상의 장기 프로젝트 리딩하고 큰 비즈니스 임팩트 가져옴&lt;/li&gt; 
     &lt;li&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
         &lt;li&gt;배포 버전별 수치 변화 리포트&lt;/li&gt; 
        &lt;/ul&gt; &lt;/li&gt; 
       &lt;li&gt;고객, 제품 데이터 기반 통찰력 있는 설계 및 구현&lt;/li&gt; 
      &lt;/ul&gt; &lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&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;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;시니어 수석 엔지니어 (12년+ ~)&lt;/b&gt; 
  &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;C Level, 그룹장&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;/li&gt; 
&lt;/ul&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;나는 해외 취업이 가능한 상태인가?&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;외국어 공부를 너무 안하긴 했는데, AI 도구가 너무 좋아져서 커버할 수 있을 것 같다.&lt;/li&gt;&lt;li&gt;미들(SDE2) 역량은 소화한 것 같다.&lt;/li&gt;&lt;li&gt;코딩 테스트, 외국어 능력만 증명하면 도전해 볼수 있지 않을까&lt;/li&gt;&lt;/ul&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;⇒ 개인적인 평가는 A 학점&lt;/b&gt;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;1606&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cGZIoZ/dJMcagYtzmz/IL0zyGf0kk3zYmOmikeeFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cGZIoZ/dJMcagYtzmz/IL0zyGf0kk3zYmOmikeeFk/img.png&quot; data-alt=&quot;2025 포르투 여행&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cGZIoZ/dJMcagYtzmz/IL0zyGf0kk3zYmOmikeeFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcGZIoZ%2FdJMcagYtzmz%2FIL0zyGf0kk3zYmOmikeeFk%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;525&quot; height=&quot;675&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;1606&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;2025 포르투 여행&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;h1&gt;“생존 걱정하지 않을 만큼의 연봉”&lt;/h1&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;&lt;b&gt;⇒ 개인적인 평가는 C 학점&lt;/b&gt;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1270&quot; data-origin-height=&quot;1490&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYC4sZ/dJMcagKXN2h/xZGjJqEWo5AUSNKruUr9u1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYC4sZ/dJMcagKXN2h/xZGjJqEWo5AUSNKruUr9u1/img.png&quot; data-alt=&quot;2025 포르투 여행&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYC4sZ/dJMcagKXN2h/xZGjJqEWo5AUSNKruUr9u1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYC4sZ%2FdJMcagKXN2h%2FxZGjJqEWo5AUSNKruUr9u1%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;476&quot; height=&quot;558&quot; data-origin-width=&quot;1270&quot; data-origin-height=&quot;1490&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;2025 포르투 여행&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h1&gt;“회사에서 일할때 유쾌하고 행복할 것”&lt;/h1&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;li&gt;회사에서는 업무적으로 복이 많았던 해이다.&lt;/li&gt;&lt;/ul&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;⇒ &lt;b&gt;개인적인 평가는 A+&lt;/b&gt;&lt;br&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;/ul&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1266&quot; data-origin-height=&quot;1628&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Nr4Zm/dJMcaiospS0/4YnZNcXQfYeA0NkfwN78p1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Nr4Zm/dJMcaiospS0/4YnZNcXQfYeA0NkfwN78p1/img.png&quot; data-alt=&quot;2025 리스본 여행&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Nr4Zm/dJMcaiospS0/4YnZNcXQfYeA0NkfwN78p1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNr4Zm%2FdJMcaiospS0%2F4YnZNcXQfYeA0NkfwN78p1%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;462&quot; height=&quot;594&quot; data-origin-width=&quot;1266&quot; data-origin-height=&quot;1628&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;2025 리스본 여행&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2108&quot; data-origin-height=&quot;1566&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqu34t/dJMcabbN8ln/7L5Y62Jh3qVn7uznmHkBj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqu34t/dJMcabbN8ln/7L5Y62Jh3qVn7uznmHkBj1/img.png&quot; data-alt=&quot;2025년 바르셀로나 호안미로 미술관&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqu34t/dJMcabbN8ln/7L5Y62Jh3qVn7uznmHkBj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcqu34t%2FdJMcabbN8ln%2F7L5Y62Jh3qVn7uznmHkBj1%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;490&quot; height=&quot;364&quot; data-origin-width=&quot;2108&quot; data-origin-height=&quot;1566&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;2025년 바르셀로나 호안미로 미술관&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot;&gt;&lt;h1&gt;결론&lt;/h1&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;“평균보다 잘하는 개발자” (B)&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;DB, 인프라 (redis, kafka, dynamo…) 역량 강화에 힘쓸 것&lt;/li&gt;&lt;li&gt;AI 활용 늘릴 것&lt;/li&gt;&lt;li&gt;테스트코드 작성 할 것&lt;/li&gt;&lt;/ul&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;“해외 취업이 가능한 역량 상태일 것” (A)&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;“생존 걱정하지 않을 만큼의 연봉” (C)&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;TBD&lt;/li&gt;&lt;/ul&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;“회사에서 일할때 유쾌하고 행복할 것” (A+)&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;br&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>회고</category>
      <category>2025회고</category>
      <author>sendkite</author>
      <guid isPermaLink="true">https://yeoon.tistory.com/199</guid>
      <comments>https://yeoon.tistory.com/199#entry199comment</comments>
      <pubDate>Tue, 6 Jan 2026 01:51:50 +0900</pubDate>
    </item>
    <item>
      <title>2025 회고(1) - 겨울, 생존, IT의 가치</title>
      <link>https://yeoon.tistory.com/198</link>
      <description>&lt;h1&gt;1. 너무 추운 겨울&lt;/h1&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;업계 전반에 구조조정이 일상처럼 확산되면서, &lt;b&gt;이제는 더 이상 특별한 일이 아닌 ‘보통의 일’이 되어버렸다&lt;/b&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1452&quot; data-origin-height=&quot;1298&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/U7wbb/dJMcai2ZHZC/BeDra57QKly7SbZbmHESKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/U7wbb/dJMcai2ZHZC/BeDra57QKly7SbZbmHESKK/img.png&quot; data-alt=&quot;올해 구조조정 뉴스&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/U7wbb/dJMcai2ZHZC/BeDra57QKly7SbZbmHESKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FU7wbb%2FdJMcai2ZHZC%2FBeDra57QKly7SbZbmHESKK%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;682&quot; height=&quot;610&quot; data-origin-width=&quot;1452&quot; data-origin-height=&quot;1298&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;올해 구조조정 뉴스&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
 &lt;li&gt;&lt;b&gt;유니콘 기업도 경영의 기조가 변했다.&lt;/b&gt; 
  &lt;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;개발 세미나에서도 '무엇보다 회사의 비즈니스, 생존'이 중요하다는 워딩이 자주 들렸다&amp;nbsp;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1394&quot; data-origin-height=&quot;358&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AZwfc/dJMcaa40Kkr/zmFWGaO9VlB477LVIc7dyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AZwfc/dJMcaa40Kkr/zmFWGaO9VlB477LVIc7dyk/img.png&quot; data-alt=&quot;언더스탠딩 - https://www.youtube.com/watch?v=V2t6wvugHwU&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AZwfc/dJMcaa40Kkr/zmFWGaO9VlB477LVIc7dyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAZwfc%2FdJMcaa40Kkr%2FzmFWGaO9VlB477LVIc7dyk%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;1394&quot; height=&quot;358&quot; data-origin-width=&quot;1394&quot; data-origin-height=&quot;358&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;언더스탠딩 - https://www.youtube.com/watch?v=V2t6wvugHwU&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1362&quot; data-origin-height=&quot;330&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lLESl/dJMcajgxqxT/3o2f5vQs7Aa21My5YJG9Nk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lLESl/dJMcajgxqxT/3o2f5vQs7Aa21My5YJG9Nk/img.png&quot; data-alt=&quot;2024년 IT 유니콘의 성장률과, 영업 이익률 - SaaS 기업이 40%가 초과하면 매력적으로 평가 받는다고 한다&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lLESl/dJMcajgxqxT/3o2f5vQs7Aa21My5YJG9Nk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlLESl%2FdJMcajgxqxT%2F3o2f5vQs7Aa21My5YJG9Nk%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;715&quot; height=&quot;173&quot; data-origin-width=&quot;1362&quot; data-origin-height=&quot;330&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;2024년 IT 유니콘의 성장률과, 영업 이익률 - SaaS 기업이 40%가 초과하면 매력적으로 평가 받는다고 한다&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;개발자들의 지갑도 닫혔다. (AI의 영향일 수 있으나, 개인적인 생각이다.)&lt;/li&gt;&lt;/ul&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1194&quot; data-origin-height=&quot;764&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxmfSr/dJMcajt31bf/mtJ9remKMJ9BQ01OkcDIiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxmfSr/dJMcajt31bf/mtJ9remKMJ9BQ01OkcDIiK/img.png&quot; data-alt=&quot;인프런 재무재표&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxmfSr/dJMcajt31bf/mtJ9remKMJ9BQ01OkcDIiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxmfSr%2FdJMcajt31bf%2FmtJ9remKMJ9BQ01OkcDIiK%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;647&quot; height=&quot;414&quot; data-origin-width=&quot;1194&quot; data-origin-height=&quot;764&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;인프런 재무재표&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;h1 style=&quot;color: #000000; text-align: start;&quot;&gt;2. 회사의 생존&lt;/h1&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: justify;&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;경영학 3대 거물로 마이클 포터라는 교수가 있다. (피터 드러커, 톰 피터스와 함께)&lt;/li&gt;&lt;li&gt;기업의 '경쟁 전략'을 체계화한 인물로, 경영 전략의 교과서를 만든 사람이다.&lt;/li&gt;&lt;li&gt;이전 회사 CEO님이 경영학과 출신이었는데, 이 분의 이론에 영향을 많이 받으셨는지&lt;/li&gt;&lt;li&gt;&lt;b&gt;신입 온보딩 일주일이 마이클 포터의 경영 전략으로 편성되어 있었다.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;덕분에 기업에 생존을 생각하니 마이클 포터가 생각난다.&lt;/li&gt;&lt;/ul&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br&gt;마이클 포터의 이론을 요약하면 경쟁에서 이기는 전략이다.&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;p data-ke-size=&quot;size18&quot; style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;1. 경쟁 우위&lt;/b&gt;&lt;/p&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: justify;&quot;&gt;기업이 지속하려면 경쟁 우위가 있어야한다. &lt;br&gt;경쟁 우위가 있으면 다른 시장 경쟁자에게 지속적으로 이길 수 있다. &lt;br&gt;&lt;br&gt;경쟁 우위는 차별화 우위 또는 비용 우위로 나타단다.&lt;br&gt;둘은 trade off 관계로 둘다 가지려고 하면 실패한다.&lt;br&gt;&lt;br&gt;&amp;nbsp;ex) 스타벅스(고품질 차별화 우위) vs. 메가커피(저렴한 가격(비용) 우위)&lt;br&gt;&amp;nbsp;ex) 이전 회사는 '타 회사 대비 저렴한 단가' 비용 우위로 시장 점유율을 1위를 하고 있었다.&amp;nbsp;&lt;/p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1408&quot; data-origin-height=&quot;842&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cvQm1J/dJMcajgxq6b/hWl2MDwQJfyy8wk2mKj0qK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cvQm1J/dJMcajgxq6b/hWl2MDwQJfyy8wk2mKj0qK/img.png&quot; data-alt=&quot;마이클 포터 - 경쟁우위&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cvQm1J/dJMcajgxq6b/hWl2MDwQJfyy8wk2mKj0qK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcvQm1J%2FdJMcajgxq6b%2FhWl2MDwQJfyy8wk2mKj0qK%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;499&quot; height=&quot;298&quot; data-origin-width=&quot;1408&quot; data-origin-height=&quot;842&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;마이클 포터 - 경쟁우위&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p data-ke-size=&quot;size18&quot; style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;b&gt;2. Five &lt;/b&gt;&lt;b&gt;Forces&amp;nbsp;&lt;/b&gt;&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;내가 참여한 또는 참여할 시장 매력도 평가 프레임워크&lt;/li&gt;&lt;/ul&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1384&quot; data-origin-height=&quot;866&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tXl8r/dJMcadN84QT/vM0hpNnZlJr4fW8rDafpdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tXl8r/dJMcadN84QT/vM0hpNnZlJr4fW8rDafpdK/img.png&quot; data-alt=&quot;마이클 포터 시장 평가 프레임워크&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tXl8r/dJMcadN84QT/vM0hpNnZlJr4fW8rDafpdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtXl8r%2FdJMcadN84QT%2FvM0hpNnZlJr4fW8rDafpdK%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;528&quot; height=&quot;330&quot; data-origin-width=&quot;1384&quot; data-origin-height=&quot;866&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;마이클 포터 시장 평가 프레임워크&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: justify;&quot;&gt;ex) 2022년 새벽배송&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;li&gt;구매자 - 쿠팡, 컬리 따라서 새벽배송 하고 싶은 소비자 넘쳐남&lt;/li&gt;&lt;li&gt;대체제 - 극소수&lt;/li&gt;&lt;/ul&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: justify;&quot;&gt;프레임워크에 따르면 새벽배송은 매력이 넘치는 시장이었다.&lt;br&gt;&amp;nbsp;&lt;br&gt;=&amp;gt; ex) 2024년 새벽배송&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;li&gt;구매자 - 새벽배송 업체가 많아지면서 선택의 폭이 넓어짐 (소비자가 갑이 됨)&lt;/li&gt;&lt;li&gt;대체제 - 대기업 진출 물류로 다수의 선택권&lt;/li&gt;&lt;/ul&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;br&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;매력도는 고정이 아니다. &lt;/span&gt;&lt;br&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;시장 참여자에 따라 매력도가 가변하고 기업은 알맞은 전략을 취해야 수익성이 유지 된다.&lt;/span&gt;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;p data-ke-size=&quot;size18&quot; style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;b&gt;3. 가치 사슬&lt;/b&gt;&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
 &lt;li&gt;기업활동을 작게 쪼개서 어디에서 경쟁 우위(차별화 또는 비용우위)가 만들어지는지 분석하는 개념이다.&lt;/li&gt; 
 &lt;li&gt;ex) 애플의 차별화 우위 
  &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;연구 개발 -&amp;gt; 세련된 디자인, 자체 소프트웨어 생태&lt;/li&gt; 
   &lt;li&gt;구매 조달 -&amp;gt; 업계 최고 부품 업체들과 관계&lt;/li&gt; 
   &lt;li&gt;물류 -&amp;gt; 애플 매장에 재고가 떨어지려고 하면 공급망 우선 배치 (앞당겨 배송)&lt;/li&gt; 
   &lt;li&gt;마케팅 및 영업 -&amp;gt; 수요 예측, 판매력..&amp;nbsp;&lt;/li&gt; 
   &lt;li&gt;등등..&amp;nbsp; 이 유기적으로 연결되어 경쟁우위라는 것이 생긴다.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1542&quot; data-origin-height=&quot;938&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwe9rY/dJMcabW98DG/R3vKkRMq9NuTogn2gpTPJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwe9rY/dJMcabW98DG/R3vKkRMq9NuTogn2gpTPJK/img.png&quot; data-alt=&quot;마이클 포터 - 가치사슬 (https://boardmix.com/kr/skills/value-chain-analysis/)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwe9rY/dJMcabW98DG/R3vKkRMq9NuTogn2gpTPJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbwe9rY%2FdJMcabW98DG%2FR3vKkRMq9NuTogn2gpTPJK%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;578&quot; height=&quot;352&quot; data-origin-width=&quot;1542&quot; data-origin-height=&quot;938&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;마이클 포터 - 가치사슬 (https://boardmix.com/kr/skills/value-chain-analysis/)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;h1&gt;IT가 주는 경쟁 우위는 뭘까&amp;nbsp;&lt;/h1&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: justify;&quot;&gt;IT는 주로 사업의 공격수 보다 서포트다. (게임이나, 솔루션, 네카라쿠당토 같은 IT 서비스가 상품인 곳은 공격수다)&lt;br&gt;서포트 역할의 IT가 가치사슬에서 제공해야할 것&lt;br&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;IT의 경쟁우위 가치는 시간, 경험, 돈이다. 
  &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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
     &lt;li&gt;사람이 줄어든다.&amp;nbsp; 
      &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
       &lt;li&gt;인건비가 줄어든다.&amp;nbsp;&lt;/li&gt; 
       &lt;li&gt;실수가 줄어든다. (ex 푸시알림)&lt;/li&gt; 
      &lt;/ul&gt; &lt;/li&gt; 
     &lt;li&gt;낭비를 줄인다. 
      &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
       &lt;li&gt;운영 비용 (자동 정산, 분류 자동, 광고 최적화, 물류 최적화, ERP 회계 자동)&lt;/li&gt; 
      &lt;/ul&gt; &lt;/li&gt; 
     &lt;li&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;/ul&gt; &lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&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;/ul&gt; &lt;/li&gt; 
   &lt;li&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;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;위 가치를 B2C와 &lt;/b&gt;&lt;b&gt;B2B로 나눠보자&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;br&gt;&amp;nbsp;&lt;br&gt;&lt;b&gt;서비스가 어떤 경험을 줘야하는지 정의하면&lt;/b&gt;&lt;br&gt;&lt;b&gt;어떤 수치를 추적해야하고, 집중해야하는지 대략 이럴 것 같다. &lt;/b&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;✅ B2C 가치&lt;/b&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;귀찮음 최소화 - 세션 길이 / 체류 시간, 페이지 뷰,&amp;nbsp; &amp;nbsp; 
    &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;li&gt;이해하기 쉬움&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&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;li&gt;콘텐츠 기반 전환률&lt;/li&gt; 
     &lt;li&gt;저장/스크랩/위시 비율&lt;/li&gt; 
     &lt;li&gt;공유율&amp;nbsp;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;습관 형성 (중독성, 매일 쓰게 하는 루프) 
  &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;Retention&lt;/li&gt; 
   &lt;li&gt;Frequency, Interval&lt;/li&gt; 
   &lt;li&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;li&gt;특정 콘텐츠, 카테고리 재방문율&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;친구가 쓰니까 쓰게 되는 네트워크 효과&lt;br&gt; 
  &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;UGC 생성 비율 (사진 리뷰, 후기)&lt;/li&gt; 
   &lt;li&gt;공유율&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: justify;&quot;&gt;=&amp;gt; 사용자 삶을 변화&lt;/p&gt;&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;✅ B2B 가치&lt;/b&gt;&lt;/h2&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
 &lt;li&gt;매출 증가 (Revenue) 
  &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;구매 전환율 (탐색 -&amp;gt; 장바구니 -&amp;gt; 결제) 
    &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
     &lt;li&gt;탐색 시작부터 구매까지 얼마나 걸렸는가 (TTV)&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;FQA 작성후 구매 전환율 혹은 이탈률&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;반복 구매(Retention) 증가&amp;nbsp;&lt;/li&gt; 
   &lt;li&gt;신뢰(배송 예측 가능성, 클레임(VoC)) - 
    &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
     &lt;li&gt;주문/배송/취소/교환/반품 CS 인입율&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;/li&gt; 
 &lt;li&gt;비용 감소 (Cost)&lt;br&gt; 
  &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;운영 효율 (물류/CS/정산)&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;리스크 감소 (Risk) 
  &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;li&gt;재고 정확도 관리&amp;nbsp;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;생산성 증가 (Productivity)&lt;/li&gt; 
&lt;/ul&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>회고</category>
      <category>2025년 회고</category>
      <author>sendkite</author>
      <guid isPermaLink="true">https://yeoon.tistory.com/198</guid>
      <comments>https://yeoon.tistory.com/198#entry198comment</comments>
      <pubDate>Fri, 2 Jan 2026 01:56:20 +0900</pubDate>
    </item>
    <item>
      <title>계층형 아키텍처 (Layered Architecture) - 지금은 일단 아키텍처 고민할 때가 아니야, 생존부터 해야지</title>
      <link>https://yeoon.tistory.com/197</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;스타트업에서 신규 프로젝트가 시작되면&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;어디서 시작되었는지 모를 스켈레톤 탬플릿으로 코드베이스, 인프라가 뚝딱 나온다.&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;100이면 100 Layered Architecture였다.&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #000000;&quot;&gt;몇년 지나면 해당 프로젝트는&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;i&gt;'지금은 일단은 아키텍처 고민할 때가 아니야, 생존부터 해야지' &lt;span style=&quot;color: #000000;&quot;&gt;라는 논리로 Layered Architecture가 &lt;span style=&quot;color: #ee2323;&quot;&gt;오남용된다&lt;/span&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Layered Architecture가 무엇이며 잘쓰는 법을 살펴보자&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 계층형 아키텍처(Layered Architecture)란?&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;프로그래밍을 관심사를 기준으로 분리해서 계층 형태로 사용하는 패턴이다.&lt;/li&gt;
&lt;li&gt;1990년대 중반에 등장한 개념으로 엔터프라이즈급 시스템에서 확장성, 유지보수성 문제를 해결하기 위해 제안됬다.&lt;/li&gt;
&lt;li&gt;특히 Java, .NET, Oracle, SAP 등의 플랫폼에 본격적으로 채택되며 확산&lt;/li&gt;
&lt;li&gt;사용자 입/출력 처리, 비즈니스 로직 처리, 데이터 저장소 같은 관심사를 분리해서 &lt;b&gt;설계 시점 유연성, 재사용성, 유지보수성&lt;/b&gt;을 목적으로 탄생했다.&lt;/li&gt;
&lt;li&gt;사실상 업계 표준으로 이해하기 쉽고, 적응이 쉽다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-07-06 오후 11.34.25.png&quot; data-origin-width=&quot;1132&quot; data-origin-height=&quot;198&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eida1a/btsO5MME1vE/0tMjigNCx9q37R5INAv78K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eida1a/btsO5MME1vE/0tMjigNCx9q37R5INAv78K/img.png&quot; data-alt=&quot;책 - 클린 아키텍처 : 관심사를 분리하면 DB나 UI는 언제든 교체 가능한 선택을 가질 수 있다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eida1a/btsO5MME1vE/0tMjigNCx9q37R5INAv78K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Feida1a%2FbtsO5MME1vE%2F0tMjigNCx9q37R5INAv78K%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;1132&quot; height=&quot;198&quot; data-filename=&quot;스크린샷 2025-07-06 오후 11.34.25.png&quot; data-origin-width=&quot;1132&quot; data-origin-height=&quot;198&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;책 - 클린 아키텍처 : 관심사를 분리하면 DB나 UI는 언제든 교체 가능한 선택을 가질 수 있다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-07-06 오후 11.35.03.png&quot; data-origin-width=&quot;485&quot; data-origin-height=&quot;340&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dQeQkU/btsO6Bp7jn0/gx2BGj0M3jCDaKRUnPPWVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dQeQkU/btsO6Bp7jn0/gx2BGj0M3jCDaKRUnPPWVk/img.png&quot; data-alt=&quot;책 - 클린 아키택처 : 계층 예시&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dQeQkU/btsO6Bp7jn0/gx2BGj0M3jCDaKRUnPPWVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdQeQkU%2FbtsO6Bp7jn0%2Fgx2BGj0M3jCDaKRUnPPWVk%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;485&quot; height=&quot;340&quot; data-filename=&quot;스크린샷 2025-07-06 오후 11.35.03.png&quot; data-origin-width=&quot;485&quot; data-origin-height=&quot;340&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;책 - 클린 아키택처 : 계층 예시&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[계층형 아키텍처 - 계층별 설명]&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 98px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;계층&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;역할&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;구현 (스프링 기준)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;&lt;span&gt;Presentation (=UI, WEB, API)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;요청, 응답 반환 책임&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;&lt;span&gt;@Controller&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 38px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 38px;&quot;&gt;Business Logic (=Service, Application)&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 38px;&quot;&gt;도메인 로직 처리 (Domain Model, Transaction Script)&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 38px;&quot;&gt;&lt;span&gt;@Service&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;&lt;span&gt;Data Access (=Persistence Layer)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;DB 직접 통신&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;&lt;span&gt;@Repository&lt;/span&gt;&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;제약 조건 : &lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;계층은 같은 계층 또는 하위 계층만 의존할 수 있다&lt;/span&gt;.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;하향식으로 의존한다. (ex. Business Logic은 상위 계층인 Presentation Layer를 의존할 수 없다.)&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;하위 계층이 상위 계층의 존재를 알아서는 안된다. &lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;제약 조건을 위반하면, 계층간 결합, 순환 참조가 발생해 코드 복잡도가 기하 급수적으로 늘어난다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;아래 예시 의존 방향성은 계층형 아키텍처를 사용한다면 반드시 사수한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-07-06 오후 11.42.51.png&quot; data-origin-width=&quot;924&quot; data-origin-height=&quot;416&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTvsdt/btsO5XmVyQd/cqGwZiNgjmL2oHCXhSJMk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTvsdt/btsO5XmVyQd/cqGwZiNgjmL2oHCXhSJMk1/img.png&quot; data-alt=&quot;책 Design it - 개발자에서 아키텍트로&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTvsdt/btsO5XmVyQd/cqGwZiNgjmL2oHCXhSJMk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTvsdt%2FbtsO5XmVyQd%2FcqGwZiNgjmL2oHCXhSJMk1%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;618&quot; height=&quot;278&quot; data-filename=&quot;스크린샷 2025-07-06 오후 11.42.51.png&quot; data-origin-width=&quot;924&quot; data-origin-height=&quot;416&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;책 Design it - 개발자에서 아키텍트로&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;단점
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;계층형 아키텍처는 데이터베이스 주도 설계를 유도한다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;JPA 같은 ORM을 사용하면, Entity와 Domain이 결합되어 유연성이라는 품질속성을 잃는다.&lt;/li&gt;
&lt;li&gt;(그러나, DB를 mysql -&amp;gt; postgress 같은 변경은 실무에서 0%에 가깝다. Entity, Domain 분리는 나중에 해도 늦지 않다.)&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-07-07 오전 12.09.44.png&quot; data-origin-width=&quot;750&quot; data-origin-height=&quot;334&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ks4YF/btsO5uyRQ8A/pOax1ZALclBTzHnLtZBQL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ks4YF/btsO5uyRQ8A/pOax1ZALclBTzHnLtZBQL1/img.png&quot; data-alt=&quot;책- 만들면서 배우는 클린 아키텍처&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ks4YF/btsO5uyRQ8A/pOax1ZALclBTzHnLtZBQL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKs4YF%2FbtsO5uyRQ8A%2FpOax1ZALclBTzHnLtZBQL1%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;750&quot; height=&quot;334&quot; data-filename=&quot;스크린샷 2025-07-07 오전 12.09.44.png&quot; data-origin-width=&quot;750&quot; data-origin-height=&quot;334&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;책- 만들면서 배우는 클린 아키텍처&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;지름길을 찾기가 쉽다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;특정 계층에서는 같은 계층 컴포넌트나 아래 계층만 접근 가능한데, 코드에서 강제하는 것이 아니다 보니 사람은 금방 위반하게 된다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;테스트 하기가 어렵다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;규모가 커지면 영속성이 복잡해지면서 종속성을 이해하고, mock하는데에 더 많은 시간을 보내게 된다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;2. 멀티 계층형 아키텍처 (Multi Layered Architecture)&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;2000년대에 접어들면서 Layered Architecture는 3계층(3 tier)의 단점을 보안하기 위해 멀티 계층 패턴(N-tier architecture)으로 진화했다.&lt;/li&gt;
&lt;li&gt;현업에 대부분 적용중이다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;4계층 아키텍처&amp;nbsp;&lt;/h3&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;위에서 설명한 3계층에서 Domain Layer를 추가한 모습니다.&lt;/li&gt;
&lt;li&gt;도메인 모델 패턴을 사용해, 재사용성, 유지보수성, 테스트 가능성 품질을 높일 수 있는 전략이다.&amp;nbsp;&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;[4계층 아키텍처- 계층별 설명]&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 92px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;계층&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;역할&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;구현&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;Presentation&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;요청, 응답 반환 책임&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;span&gt;UI, Controller&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;Application Service&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;작업의 흐름, 트랜젝션 조정&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;span&gt;Service, Use Case, Application Facade&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;Domain&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;Domain Logic&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;span&gt;Entity, Domain Service, Aggregate&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;infra&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;데이터 저장소, 외부 시스템 연동&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;span&gt;Repository, ORM, DAO&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-07-07 오전 12.30.09.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;1030&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o0dRO/btsO5DI4Ej6/Jsl0pIfQII1khHSRKDYiyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o0dRO/btsO5DI4Ej6/Jsl0pIfQII1khHSRKDYiyK/img.png&quot; data-alt=&quot;조영호님 DDD 강의 - 4계층 아키텍처 강의 슬라이드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o0dRO/btsO5DI4Ej6/Jsl0pIfQII1khHSRKDYiyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo0dRO%2FbtsO5DI4Ej6%2FJsl0pIfQII1khHSRKDYiyK%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;460&quot; height=&quot;526&quot; data-filename=&quot;스크린샷 2025-07-07 오전 12.30.09.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;1030&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;조영호님 DDD 강의 - 4계층 아키텍처 강의 슬라이드&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;N계층 아키텍처&amp;nbsp;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;필요에 따라 아래 같은 Layer를 추가한다.&amp;nbsp;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;API Gateway&lt;/li&gt;
&lt;li&gt;BFF(Backend for Frontend)&lt;/li&gt;
&lt;li&gt;Messaging Layer&amp;nbsp;&lt;/li&gt;
&lt;li&gt;등등..&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;MSA 형태로 서버가 분리되어도 좋다.&lt;/li&gt;
&lt;li&gt;유지보수성, 확장성, 테스트 용이성과 같은 품질 속성을 끌어 올릴 수 있다.&lt;/li&gt;
&lt;li&gt;(단, 비용이 따른다. 이래서 리소스 제한이 아키텍처에 영향을 준다.)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;완화된 계층 아키텍처&amp;nbsp;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&quot;계층은 같은 계층 또는 하위 계층만 의존할 수 있다. '는 &lt;b&gt;제약 조건을 완화한 계층형 아키텍처다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;마틴 파울러가 사실상 제약을 완벽히 따르기 어렵다는 것을 시사하며, Presentation에서 Data Access로 바로 의존하여도 괜찮다는 내용이다. (그래도 하향식 의존이라는 큰 틀은 반드시 지켜야한다.)&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;화면 그릴때 필요한 데이터 조회 QueryDsl Repository를 Controller에서 바로 사용하는 것과 같은 경우가 이 경우에 속한다.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; 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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;규모가 작다면 3계층 아키텍처가 가장 단순하며 충분하다고 생각된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&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;/ul&gt;
&lt;/li&gt;
&lt;li&gt;팀원들이 계층형 아키텍처 사용법을 위반했을때 잡아낼 방법을 만들자.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ArchUnit&lt;/li&gt;
&lt;li&gt;Spring Modulith&lt;/li&gt;
&lt;li&gt;코드 리뷰 문화&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;시스템 복잡도, 요구사항에 따라 멀티 계층 아키텍처를 옵션으로 고려해보자.&amp;nbsp;&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;h3 data-ke-size=&quot;size23&quot;&gt;참고&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;a href=&quot;https://jojoldu.tistory.com/603&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://jojoldu.tistory.com/603&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1751816007952&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;계층형 아키텍처&quot; data-og-description=&quot;학교 다닐때 잠깐 JAVA 관련 수업을 들은적이 있다. 그때 수업 내용은 넷빈즈(Netbeans) IDE를 통해 JAVA로 윈도우 애플리케이션을 만드는 것이였다. 간단한 시간표 관리 프로그램을 만드는 과제는 얼&quot; data-og-host=&quot;jojoldu.tistory.com&quot; data-og-source-url=&quot;https://jojoldu.tistory.com/603&quot; data-og-url=&quot;https://jojoldu.tistory.com/603&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/frvCW/hyZjFgKgmQ/P5bXvxKQkSDWNt5rGMqg2k/img.png?width=800&amp;amp;height=478&amp;amp;face=0_0_800_478,https://scrap.kakaocdn.net/dn/eEr7S/hyZjFnvOy2/ksMpm7pvwYx2QIJzkVPSA0/img.png?width=800&amp;amp;height=478&amp;amp;face=0_0_800_478,https://scrap.kakaocdn.net/dn/ybv82/hyZf763s6H/uyHjK5JFuzkN8G6HJ3eXDK/img.png?width=1310&amp;amp;height=784&amp;amp;face=0_0_1310_784&quot;&gt;&lt;a href=&quot;https://jojoldu.tistory.com/603&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://jojoldu.tistory.com/603&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/frvCW/hyZjFgKgmQ/P5bXvxKQkSDWNt5rGMqg2k/img.png?width=800&amp;amp;height=478&amp;amp;face=0_0_800_478,https://scrap.kakaocdn.net/dn/eEr7S/hyZjFnvOy2/ksMpm7pvwYx2QIJzkVPSA0/img.png?width=800&amp;amp;height=478&amp;amp;face=0_0_800_478,https://scrap.kakaocdn.net/dn/ybv82/hyZf763s6H/uyHjK5JFuzkN8G6HJ3eXDK/img.png?width=1310&amp;amp;height=784&amp;amp;face=0_0_1310_784');&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;계층형 아키텍처&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;학교 다닐때 잠깐 JAVA 관련 수업을 들은적이 있다. 그때 수업 내용은 넷빈즈(Netbeans) IDE를 통해 JAVA로 윈도우 애플리케이션을 만드는 것이였다. 간단한 시간표 관리 프로그램을 만드는 과제는 얼&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;jojoldu.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;a href=&quot;https://herbertograca.com/2016/06/27/peaa-1-layering/?utm_source=chatgpt.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://herbertograca.com/2016/06/27/peaa-1-layering/?utm_source=chatgpt.com&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1751817172009&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;PEAA.1 &amp;ndash; Layering&quot; data-og-description=&quot;Layering is a common practice to separate and organise code units by their role/responsibilities in the system. In a layered system, each layer: Depends on the layers beneath it; Is independent of &amp;hellip;&quot; data-og-host=&quot;herbertograca.com&quot; data-og-source-url=&quot;https://herbertograca.com/2016/06/27/peaa-1-layering/?utm_source=chatgpt.com&quot; data-og-url=&quot;http://herbertograca.com/2016/06/27/peaa-1-layering/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/p7BSb/hyZf8ES8wt/hgNjCuYIDtsoRkHqzd1u8k/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200,https://scrap.kakaocdn.net/dn/dkjS63/hyZf9DNzej/uc9kJ7TkEdyKUXf1MapCV1/img.png?width=240&amp;amp;height=240&amp;amp;face=0_0_240_240,https://scrap.kakaocdn.net/dn/fmmkV/hyZjCRQ3jS/J1LsYzAWwAslSys8Hv5RyK/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400&quot;&gt;&lt;a href=&quot;https://herbertograca.com/2016/06/27/peaa-1-layering/?utm_source=chatgpt.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://herbertograca.com/2016/06/27/peaa-1-layering/?utm_source=chatgpt.com&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/p7BSb/hyZf8ES8wt/hgNjCuYIDtsoRkHqzd1u8k/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200,https://scrap.kakaocdn.net/dn/dkjS63/hyZf9DNzej/uc9kJ7TkEdyKUXf1MapCV1/img.png?width=240&amp;amp;height=240&amp;amp;face=0_0_240_240,https://scrap.kakaocdn.net/dn/fmmkV/hyZjCRQ3jS/J1LsYzAWwAslSys8Hv5RyK/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;PEAA.1 &amp;ndash; Layering&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Layering is a common practice to separate and organise code units by their role/responsibilities in the system. In a layered system, each layer: Depends on the layers beneath it; Is independent of &amp;hellip;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;herbertograca.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;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발공부</category>
      <category>계층형 아키텍처 2025</category>
      <author>sendkite</author>
      <guid isPermaLink="true">https://yeoon.tistory.com/197</guid>
      <comments>https://yeoon.tistory.com/197#entry197comment</comments>
      <pubDate>Mon, 7 Jul 2025 00:42:30 +0900</pubDate>
    </item>
    <item>
      <title>2025.05.09 - 켄트 백의 Augmented Coding(증강 코딩): Explore, yes, expand &amp;amp; extract not so much (yet)</title>
      <link>https://yeoon.tistory.com/196</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;TDD 창시자 켄트백 아저씨의 GenAI 사용법을 살펴보자&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;영문 Live로 들은 것을 정리한 것이라 오역이 있을 수 있습니다.&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h1&gt;배경&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;최근에 켄트 백님이 &lt;b&gt;Augument Coding&lt;/b&gt;이라는 개념을 제시하고 Prompt를 공유 했다.&amp;nbsp; (&lt;a href=&quot;https://tidyfirst.substack.com/p/augmented-coding-beyond-the-vibes&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://tidyfirst.substack.com/p/augmented-coding-beyond-the-vibes&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;개발자가 GenAI를 생산적으로 쓰는 방법에 대한 공유다.&lt;/li&gt;
&lt;li&gt;기존 &lt;b&gt;바이브 코딩(Vibe Coding)&lt;/b&gt;은 AI가 만든 결과를 시스템의 최종 동작에 초점을 두는 반면, (코드 품질, 구조 보다는 돌아가는 것에 집중)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;증강 코딩(Augument Coding)&lt;/b&gt;은&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;코드&amp;nbsp;&lt;/span&gt;품질, 복잡도, 테스트 등을 중요하게 생각하며, 개발자가 주도권을 가지고 도구로 AI를 활용하는 법이라고 설명한다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot;&gt;25년 5월에 오라일리에 나오셔서 Augmented Coding에 대한 세미나를 진행했었는데, 세미나에서 나왔던 내용을 정리해본다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-07-05 오후 11.54.22.png&quot; data-origin-width=&quot;1410&quot; data-origin-height=&quot;532&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wNTXC/btsO68m87F4/k1twknweeY7v0aVrp2huZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wNTXC/btsO68m87F4/k1twknweeY7v0aVrp2huZK/img.png&quot; data-alt=&quot;5월에 진행했던 Oreilly AI 세미나&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wNTXC/btsO68m87F4/k1twknweeY7v0aVrp2huZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwNTXC%2FbtsO68m87F4%2Fk1twknweeY7v0aVrp2huZK%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;1410&quot; height=&quot;532&quot; data-filename=&quot;스크린샷 2025-07-05 오후 11.54.22.png&quot; data-origin-width=&quot;1410&quot; data-origin-height=&quot;532&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;5월에 진행했던 Oreilly AI 세미나&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;3X Thinker (2018 - facebook Kent Back에 소개했던 개념)&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;켄트 백은 AI와 개발을 3단계로 나눠서 실험하고 다음과 같은 결과를 얻었다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-07-05 오후 11.57.18.png&quot; data-origin-width=&quot;1110&quot; data-origin-height=&quot;610&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1Uu6W/btsO66plGmK/kikXC6QKntZdCKFSMSRXCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1Uu6W/btsO66plGmK/kikXC6QKntZdCKFSMSRXCk/img.png&quot; data-alt=&quot;개발은 - 탐색(Explore), 확장(Expand), 정제(Extract) 순서로 진행된다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1Uu6W/btsO66plGmK/kikXC6QKntZdCKFSMSRXCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1Uu6W%2FbtsO66plGmK%2FkikXC6QKntZdCKFSMSRXCk%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;684&quot; height=&quot;376&quot; data-filename=&quot;스크린샷 2025-07-05 오후 11.57.18.png&quot; data-origin-width=&quot;1110&quot; data-origin-height=&quot;610&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;개발은 - 탐색(Explore), 확장(Expand), 정제(Extract) 순서로 진행된다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Explore&lt;/b&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;b&gt;AI코딩 : AI가 추천하는대로 빠르게 만들면서 아이디어제이션, 학습, 구현을 할 수 있었다.&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;만족으러운 AI (Yes)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Expand&lt;/b&gt; : 확장
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;학습을 토대로 코드의 structure, design를 잡는 단계다. 큰 틀, 방향을 정한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;AI 코딩 : AI가 만든 코드의 structure, design 수정 작업을 한다.&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;만족스럽지 못하다. 켄트 백이 직접 고쳐야하는 작업이 많다. (아직 AI 역량 부족하다. 지금은 그런데 앞으로는 어떻게 될지 모르겠다.)&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Extract&lt;/b&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;b&gt;AI 코딩 : AI가 만든 코드를 테스트, 엣지케이스, 수정 등의 개선 작업을 한다.&lt;/b&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;만족스럽지 못하다. 개발자가 관리, 감독 역할을 제대로 수행해야한다. &lt;span style=&quot;color: #ee2323;&quot;&gt;(아직 AI 역량 부족하다.)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;각 단계는 맥락에 따라 반복적으로 순환한다. 순환 주기는 맥락에 따라 하루일 수도, 3개월일 수도 1년일 수도 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;AI와 코딩할때 단계마다 자아를 3개로 분리 해보자&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(프로이드 심리학에서 소개된 인간의 정신 구조의 3 요소를 적용해서 각 단계별로 AI 역할, 인간 역할 코딩 접근을 달리 해본다.)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Id(이드) - 쾌락만을 쫒는 빠른 코딩 아이디어, 실험 코딩&lt;/li&gt;
&lt;li&gt;Ego(이고) - design, structure를 정리하는 코딩&lt;/li&gt;
&lt;li&gt;Superego(슈퍼이고) - 정제, 테스트, 실수 해결하는 코딩&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-07-06 오전 12.10.09.png&quot; data-origin-width=&quot;1372&quot; data-origin-height=&quot;676&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cwlDgy/btsO50wUcW0/T3KqsoKz5fN3oOayMouat0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cwlDgy/btsO50wUcW0/T3KqsoKz5fN3oOayMouat0/img.png&quot; data-alt=&quot;켄트 백 - 강의 슬라이드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cwlDgy/btsO50wUcW0/T3KqsoKz5fN3oOayMouat0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcwlDgy%2FbtsO50wUcW0%2FT3KqsoKz5fN3oOayMouat0%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;1372&quot; height=&quot;676&quot; data-filename=&quot;스크린샷 2025-07-06 오전 12.10.09.png&quot; data-origin-width=&quot;1372&quot; data-origin-height=&quot;676&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;켄트 백 - 강의 슬라이드&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;결론&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;GenAI가 주는 도움을 적재적소로 활용하여 생산성을 극대화 시킨다.&lt;/li&gt;
&lt;li&gt;시스템 구조, 디자인, 테스트, 엣지케이스 관리는 인간의 사고에 의존한다. (&lt;span style=&quot;color: #ee2323;&quot;&gt;아직이다&lt;/span&gt;. 앞으로 어떻게 될지는 모르겠다.)&lt;/li&gt;
&lt;li&gt;인간의 능력, AI 능력에 균형이 필요하다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;전적으로 AI에 의존하는 Vide Coding 보다 Augmented Coding으로 전환하자.&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;&amp;nbsp;&lt;/h1&gt;
&lt;h1&gt;참고&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Oreilly AI 코딩 세미나&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;a href=&quot;https://www.oreilly.com/CodingwithAI/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.oreilly.com/CodingwithAI/&lt;/a&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;(Augmented Coding)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;(바이브코딩 vs 증강코딩) &lt;a href=&quot;https://brunch.co.kr/@graypool/2363&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://brunch.co.kr/@graypool/2363&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;(켄트 백 님의 증각 코딩 포스팅 ) &lt;a href=&quot;https://tidyfirst.substack.com/?utm_source=navbar&amp;amp;utm_medium=web&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://tidyfirst.substack.com/?utm_source=navbar&amp;amp;utm_medium=web&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;(토비의 스프링 토비 님의 증강코딩 포스팅) &lt;a href=&quot;https://www.linkedin.com/pulse/%EC%BC%84%ED%8A%B8-%EB%B2%A1%EC%9D%98-augmented-coding-beyond-vibes-%EC%9A%94%EC%95%BD-%EB%B0%8F-%EC%B6%94%EA%B0%80-%EC%9D%98%EA%B2%AC-toby-lee-mcy8e/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.linkedin.com/pulse/%EC%BC%84%ED%8A%B8-%EB%B2%A1%EC%9D%98-augmented-coding-beyond-vibes-%EC%9A%94%EC%95%BD-%EB%B0%8F-%EC%B6%94%EA%B0%80-%EC%9D%98%EA%B2%AC-toby-lee-mcy8e/&lt;/a&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;(켄트 백님의 3X Thinker 개념에 대한 글과 발표)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://medium.com/@kentbeck_7670/fast-slow-in-3x-explore-expand-extract-6d4c94a7539&quot;&gt;https://medium.com/@kentbeck_7670/fast-slow-in-3x-explore-expand-extract-6d4c94a7539&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://medium.com/@kentbeck_7670/the-product-development-triathlon-6464e2763c46&quot;&gt;https://medium.com/@kentbeck_7670/the-product-development-triathlon-6464e2763c46&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=YGhS8VQpS6s&quot;&gt;https://www.youtube.com/watch?v=YGhS8VQpS6s&lt;/a&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;</description>
      <category>AI</category>
      <category>augmented coding</category>
      <category>바이브코딩 증강코딩 차이점</category>
      <category>증강코딩</category>
      <category>켄트백 증강코딩</category>
      <author>sendkite</author>
      <guid isPermaLink="true">https://yeoon.tistory.com/196</guid>
      <comments>https://yeoon.tistory.com/196#entry196comment</comments>
      <pubDate>Sun, 6 Jul 2025 00:16:50 +0900</pubDate>
    </item>
    <item>
      <title>  눈 떠보니 레거시 (레거시에도 철학이 있는데 저희 서비스는 철학이 없어요. feat. 아키텍처)</title>
      <link>https://yeoon.tistory.com/195</link>
      <description>&lt;h1&gt;1. 배경&lt;/h1&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;최근 AI 컨텐츠가 물밀듯이 나오고 있는데, 뒤쳐지는 것은 아닌가 걱정되어 회고 해보니&lt;/li&gt;
&lt;li&gt;아키텍처에 앞도적으로 많은 관심과 시간을 소비했다.&lt;/li&gt;
&lt;li&gt;아키텍처에 대해 공부를 한 이유와 지난 7개월의 인사이트를 남겨본다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1040&quot; data-origin-height=&quot;638&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjdjAp/btsO6CWtlcl/uFmSnkw4fWRCgaW6D3mtjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjdjAp/btsO6CWtlcl/uFmSnkw4fWRCgaW6D3mtjK/img.png&quot; data-alt=&quot;빠르게 훑어 읽어본 아키텍처 서적&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjdjAp/btsO6CWtlcl/uFmSnkw4fWRCgaW6D3mtjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjdjAp%2FbtsO6CWtlcl%2FuFmSnkw4fWRCgaW6D3mtjK%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;694&quot; height=&quot;426&quot; data-origin-width=&quot;1040&quot; data-origin-height=&quot;638&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;빠르게 훑어 읽어본 아키텍처 서적&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h1&gt;2. 아키텍처란?&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;&lt;i&gt;&lt;b&gt;아키텍처는 시스템의 토대이자, 팀의 나침반이며, 미래를 여는 설계 언어다.&lt;/b&gt;&lt;/i&gt;&lt;br /&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;이러한 구조적 형태를 아키텍처라 하며 아키텍처는 &amp;lsquo;&lt;b&gt;어떤 품질 속성&lt;/b&gt;&amp;rsquo;을 목표한다.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;품질 속성&lt;/b&gt;&lt;/span&gt;에는 성능, 테스트 가능성, 확장성, 재사용성, 유지보수성, 적응력 같은 것이 있다.&lt;/li&gt;
&lt;li&gt;모든 품질을 만족하는 은총알은 없다. 상황에 맞는 trade off만이 있을 뿐이다.&lt;/li&gt;
&lt;li&gt;한번 정해진 아키텍처는 프로덕트 전반의 코드 배치, 팀 협업 등 모든 개발 영역에 큰 영향을 미친다.&lt;/li&gt;
&lt;li&gt;아키텍처에는 지켜야하는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;제약 조건&lt;/b&gt;&lt;/span&gt;이 따른다. (ex. 계층형 아키텍처는 계층끼리 단방향 의존, 하향식 의존을 따른다, MSA에서 프론트 N개 직업 연결하지 않는다..). &lt;b&gt;제약이 지켜지지 않으면 품질 속성을 잃을 수 있다.&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;아키텍처 변경은 큰 비용이 필요하다,&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1008&quot; data-origin-height=&quot;634&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3BM1o/btsO6qaVg5c/rSkyKRsKmLUCxEp2IkeJQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3BM1o/btsO6qaVg5c/rSkyKRsKmLUCxEp2IkeJQ1/img.png&quot; data-alt=&quot;잘 정돈된 아키텍처는 잘 정돈된 도로 같은 것 아닐까&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3BM1o/btsO6qaVg5c/rSkyKRsKmLUCxEp2IkeJQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3BM1o%2FbtsO6qaVg5c%2FrSkyKRsKmLUCxEp2IkeJQ1%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;660&quot; height=&quot;415&quot; data-origin-width=&quot;1008&quot; data-origin-height=&quot;634&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;잘 정돈된 아키텍처는 잘 정돈된 도로 같은 것 아닐까&lt;/figcaption&gt;
&lt;/figure&gt;
&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;스크린샷 2025-07-05 오후 11.24.56.png&quot; data-origin-width=&quot;1788&quot; data-origin-height=&quot;1446&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LzaQf/btsO5xWifpp/GcqAlG5QBIQPbznnxlGPYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LzaQf/btsO5xWifpp/GcqAlG5QBIQPbznnxlGPYk/img.png&quot; data-alt=&quot;클린 아키텍처(엉클밥) - 아키텍처의 의미&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LzaQf/btsO5xWifpp/GcqAlG5QBIQPbznnxlGPYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLzaQf%2FbtsO5xWifpp%2FGcqAlG5QBIQPbznnxlGPYk%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;739&quot; height=&quot;598&quot; data-filename=&quot;스크린샷 2025-07-05 오후 11.24.56.png&quot; data-origin-width=&quot;1788&quot; data-origin-height=&quot;1446&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;클린 아키텍처(엉클밥) - 아키텍처의 의미&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h1&gt;3. 망가진 아키텍처 (큰 진흙 공 패턴)&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;&lt;i&gt;&lt;b&gt;&amp;ldquo;레거시에도 철학이 있는데 저희 서비스는 철학이 없어요.&amp;rdquo; - 동료 개발자 김00님&lt;/b&gt;&lt;/i&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/i&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;제약 조건을 위반하여 아키텍처의 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;품질 속성을 잃어버린 단점만 남은 아키텍처&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;의미를 알 수 없는 모듈/컴포넌트 분리, 경계 짓지 않은 강결합 코드&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;이러한 망가진 아키텍처를 큰 진흙 공 패턴(&lt;a href=&quot;https://blog.codinghorror.com/the-big-ball-of-mud-and-other-architectural-disasters/&quot;&gt;https://blog.codinghorror.com/the-big-ball-of-mud-and-other-architectural-disasters/&lt;/a&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;
&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;928&quot; data-origin-height=&quot;574&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ecjzG5/btsO5uL6xe0/WurCx6wjHAeUxslYtb0EB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ecjzG5/btsO5uL6xe0/WurCx6wjHAeUxslYtb0EB0/img.png&quot; data-alt=&quot;망가진 아키텍처는 이런 모습 아닐까&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ecjzG5/btsO5uL6xe0/WurCx6wjHAeUxslYtb0EB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FecjzG5%2FbtsO5uL6xe0%2FWurCx6wjHAeUxslYtb0EB0%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;542&quot; height=&quot;335&quot; data-origin-width=&quot;928&quot; data-origin-height=&quot;574&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;망가진 아키텍처는 이런 모습 아닐까&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;내가 경험한 프로젝트도 예외가 아니다.
&lt;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;기능 개발할때 평균 1.5배-2배는 더 일하게 만들었다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;4. 왜 아키텍처가 망가질까&amp;nbsp;&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;사실 아키텍처가 망가지는 것은 너무 쉽다.&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;친절하게&amp;nbsp;아키텍처&amp;nbsp;설계&amp;nbsp;의도,&amp;nbsp;철학을&amp;nbsp;공유해주는&amp;nbsp;시니어는&amp;nbsp;존재하지&amp;nbsp;않았다.&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;1-2년 후에 시니어는 이직하고, 혼자 남은 주니어는 이해 없이 일정에 쫒겨 기능을 찍어낸다.&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;몇년 지나고 보니 프로덕트는 &amp;lsquo;너무 급하게 만들어서&amp;rsquo;, &amp;lsquo;잘 모를때 만들어서&amp;rsquo; 레거시가 되어 있다.&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;레거시를&amp;nbsp;만든&amp;nbsp;직원은&amp;nbsp;다른&amp;nbsp;프로젝트로&amp;nbsp;차출&amp;nbsp;되어&amp;nbsp;사라진다.&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아키텍처가 망가지는 이유
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;지금은 이상해도 과거에는 최선의 아키텍처인 경우가 있다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서비스, SW, 조직의 성장으로 특이점이 넘어 기술부채가 된 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&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;/ul&gt;
&lt;/li&gt;
&lt;li&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;/ul&gt;
&lt;/li&gt;
&lt;li&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;/li&gt;
&lt;li&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;/li&gt;
&lt;li&gt;설계 원칙, 철학은 생략하고 &amp;ldquo;기능이 되게 하는 것&amp;rdquo;만 집중&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-07-05 오후 11.24.18.png&quot; data-origin-width=&quot;1508&quot; data-origin-height=&quot;750&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUAAHh/btsO6CCbN6T/oVwVN0sLxKaKOyb5wrSTEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUAAHh/btsO6CCbN6T/oVwVN0sLxKaKOyb5wrSTEK/img.png&quot; data-alt=&quot;개발자에서 아키텍트로 - 아키텍처 설계는 팀 활동이 되야한다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUAAHh/btsO6CCbN6T/oVwVN0sLxKaKOyb5wrSTEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUAAHh%2FbtsO6CCbN6T%2FoVwVN0sLxKaKOyb5wrSTEK%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;691&quot; height=&quot;344&quot; data-filename=&quot;스크린샷 2025-07-05 오후 11.24.18.png&quot; data-origin-width=&quot;1508&quot; data-origin-height=&quot;750&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;개발자에서 아키텍트로 - 아키텍처 설계는 팀 활동이 되야한다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h1&gt;5. 망가진 아키텍처를 고치는 법&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;결국 망가진 아키텍처가 가져오는 고통은 사업팀, 운영팀도 아닌 &amp;lsquo;개발팀&amp;rsquo;만 느낀다.&lt;/li&gt;
&lt;li&gt;코드를 짜는 개발팀이 코드 방향을 결정하는 최종 권한을 가지고 있다.&lt;/li&gt;
&lt;li&gt;내가 고치려고 해본 노력들을 작성해 본다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;사전조건&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;주어진 업무를 쳐내면서 팀 동료들의 충분한 신뢰를 확보한 상황&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1) 공통 개념의 부재 매우기&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Object Oriented(객체지향설계), DDD(Domain Driven Design) 개념 전파하기
&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;코드를 작성에 옳고/그름의 기준으로 동작하는 정신 모델로 OOP와 DDD를 선택한다. (이래야 시스템 디자인 이야기를 리뷰에서 할 수 있다.)&lt;/li&gt;
&lt;li&gt;객체지향, DDD 주제로 스터디를 만들어서 조용하게 스며들게 한다. &lt;span style=&quot;color: #9d9d9d;&quot;&gt;(같이 스터디 하신 분들은 모르셨겠지만, 다 계획이 있었다...)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;468&quot; data-origin-height=&quot;606&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dUQfCG/btsO50X4Hsy/vYLeW22og1ZqEgN3bSiqY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dUQfCG/btsO50X4Hsy/vYLeW22og1ZqEgN3bSiqY0/img.png&quot; data-alt=&quot;팀원 다같이 외부 세미나를 수강&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dUQfCG/btsO50X4Hsy/vYLeW22og1ZqEgN3bSiqY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdUQfCG%2FbtsO50X4Hsy%2FvYLeW22og1ZqEgN3bSiqY0%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;272&quot; height=&quot;352&quot; data-origin-width=&quot;468&quot; data-origin-height=&quot;606&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;팀원 다같이 외부 세미나를 수강&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1240&quot; data-origin-height=&quot;678&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0Tcwl/btsO6ALai2Z/w8kfrSngny5fjak9KMgXk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0Tcwl/btsO6ALai2Z/w8kfrSngny5fjak9KMgXk1/img.png&quot; data-alt=&quot;2023년, 2025년 객체지향 사내스터디 주도&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0Tcwl/btsO6ALai2Z/w8kfrSngny5fjak9KMgXk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0Tcwl%2FbtsO6ALai2Z%2Fw8kfrSngny5fjak9KMgXk1%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;622&quot; height=&quot;340&quot; data-origin-width=&quot;1240&quot; data-origin-height=&quot;678&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;2023년, 2025년 객체지향 사내스터디 주도&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2) 팀이 공통적으로 가지고 있어야할 규칙을 만든다.&lt;/h3&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;동의를 얻어 적용된 것은 문서로 정리해서, &amp;lsquo;문서로 한번 만들어 봤어요!&amp;rsquo; 라고 말하여 코드 리뷰 규칙으로 박제한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;522&quot; data-origin-height=&quot;302&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IIfKP/btsO6bSC3RD/5qIt0x0qHf4KWyxQxNqNok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IIfKP/btsO6bSC3RD/5qIt0x0qHf4KWyxQxNqNok/img.png&quot; data-alt=&quot;규칙 예시.. 코드리뷰할때 위반 발생하면 링크 재사용&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IIfKP/btsO6bSC3RD/5qIt0x0qHf4KWyxQxNqNok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIIfKP%2FbtsO6bSC3RD%2F5qIt0x0qHf4KWyxQxNqNok%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;522&quot; height=&quot;302&quot; data-origin-width=&quot;522&quot; data-origin-height=&quot;302&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;규칙 예시.. 코드리뷰할때 위반 발생하면 링크 재사용&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3) 제약 조건 강제화&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;경계 조건 강제화
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ArchUnit으로 의존 방향 강제화&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Spring Modulith 적용&lt;/li&gt;
&lt;li&gt;SonarCube, Linter 기능 사용&lt;/li&gt;
&lt;li&gt;언어 접근자 활용&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;package by feature 전략으로 패키지 구성하여 코드 캡슐화&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1102&quot; data-origin-height=&quot;972&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l1Pdb/btsO6oxqgqR/fU0A1htRGJuTkDHbgJhbA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l1Pdb/btsO6oxqgqR/fU0A1htRGJuTkDHbgJhbA0/img.png&quot; data-alt=&quot;만들면서 배우는 클린 아키텍처 - ❌ 좋지 않은 패키지 구조 - 작은 프로젝트에 적합&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l1Pdb/btsO6oxqgqR/fU0A1htRGJuTkDHbgJhbA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl1Pdb%2FbtsO6oxqgqR%2FfU0A1htRGJuTkDHbgJhbA0%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;419&quot; height=&quot;370&quot; data-origin-width=&quot;1102&quot; data-origin-height=&quot;972&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;만들면서 배우는 클린 아키텍처 - ❌ 좋지 않은 패키지 구조 - 작은 프로젝트에 적합&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1192&quot; data-origin-height=&quot;1360&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ns5iw/btsO7pWuBgf/ZAuyssfDkttFT54SNq5Oh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ns5iw/btsO7pWuBgf/ZAuyssfDkttFT54SNq5Oh1/img.png&quot; data-alt=&quot;만들면서 배우는 클린 아키텍처 - ✅ 가독성 좋은 패키지 구조&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ns5iw/btsO7pWuBgf/ZAuyssfDkttFT54SNq5Oh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fns5iw%2FbtsO7pWuBgf%2FZAuyssfDkttFT54SNq5Oh1%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;555&quot; height=&quot;633&quot; data-origin-width=&quot;1192&quot; data-origin-height=&quot;1360&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;만들면서 배우는 클린 아키텍처 - ✅ 가독성 좋은 패키지 구조&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4) 벤치마킹 (다른 회사는 어떻게 접근하는지 참고)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;많은 영감을 준 네이버 쇼핑의 개선 사례&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시니어의 대규모 엔터프라이즈 시스템 개선 경험기 (&lt;a href=&quot;https://www.youtube.com/watch?v=UwAoUshVpgM&amp;amp;t=1s&quot;&gt;https://www.youtube.com/watch?v=UwAoUshVpgM&amp;amp;t=1s&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;주니어의 대규모 엔터프라이즈 시스템 개선 경험기 (&lt;a href=&quot;https://www.youtube.com/watch?v=u_y6UGzOPUk&quot;&gt;https://www.youtube.com/watch?v=u_y6UGzOPUk&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;라인 개선 사례 (&lt;a href=&quot;https://techblog.lycorp.co.jp/ko/techniques-for-improving-code-quality-list&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://techblog.lycorp.co.jp/ko/techniques-for-improving-code-quality-list&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;올리브영 개선 사례 (&lt;a href=&quot;https://oliveyoung.tech/2025-01-24/store-service-journey-1/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://oliveyoung.tech/2025-01-24/store-service-journey-1/&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1 style=&quot;color: #000000; text-align: start;&quot;&gt;결론&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아마 망가진 아키텍처의 경험이 너무 좋지 못해서, 올바른 아키텍처에 대한 열망이 컸던거 같다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;(요즘은 팀장님의 아키텍처 설계를 보며 아키텍처의 힘을 다시금 느낀다. 참 감사하다)&lt;/span&gt;&lt;/li&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;span style=&quot;color: #000000;&quot;&gt;3계층, 4계층, 완화된 아키텍처&lt;/span&gt;&amp;nbsp;등 같이 변경돤 종류가 있다. (&lt;a href=&quot;https://yeoon.tistory.com/197&quot;&gt;https://yeoon.tistory.com/197&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>개발공부</category>
      <category>소프트웨어 아키텍처</category>
      <category>아키텍처 개선</category>
      <category>아키텍처란?</category>
      <category>좋은 아키텍처란</category>
      <author>sendkite</author>
      <guid isPermaLink="true">https://yeoon.tistory.com/195</guid>
      <comments>https://yeoon.tistory.com/195#entry195comment</comments>
      <pubDate>Sat, 5 Jul 2025 22:11:34 +0900</pubDate>
    </item>
    <item>
      <title>스프링캠프 2025 후기</title>
      <link>https://yeoon.tistory.com/194</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2023년, 2024년에 이어 2025년에도 스프링캠프에 다녀왔다. &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3년 연속으로 참석하게 된 셈이다. (발표 자료 -&amp;gt; &lt;a href=&quot;https://github.com/springcamp/presentations/tree/main/SpringCamp-2025-Presentations&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/springcamp/presentations/tree/main/SpringCamp-2025-Presentations&lt;/a&gt;)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2023년에는 첫 개발 오프라인 컨퍼런스라는 설레임으로,&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;그리고 2025년에는 오로지 &amp;lsquo;동기부여&amp;rsquo;를 위해 참석했다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://yeoon.tistory.com/152&quot;&gt;2024 스프링캠프 후기&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://yeoon.tistory.com/108&quot;&gt;2023 스프링캠프 후기&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;&lt;b&gt;0. 현장 분위기&lt;/b&gt;&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;올해 스프링캠프는 10주년을 맞은 만큼 뜻깊은 행사였다.&lt;/li&gt;
&lt;li&gt;그래서였을까, 무려 13명이 내가 평소에 링크드인이나 트위터로 팔로우하던 분들이었고, 덕분에 마치 팬사인회에 가는 마음으로 행사장을 찾게 되었다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-06-28 오후 6.45.18.png&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;984&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qmZr2/btsOUUYqfK9/GLuHhzfGIj8meUegmwgj9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qmZr2/btsOUUYqfK9/GLuHhzfGIj8meUegmwgj9K/img.png&quot; data-alt=&quot;3월 스프링캠프 모집 공고&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qmZr2/btsOUUYqfK9/GLuHhzfGIj8meUegmwgj9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqmZr2%2FbtsOUUYqfK9%2FGLuHhzfGIj8meUegmwgj9K%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;518&quot; height=&quot;535&quot; data-filename=&quot;스크린샷 2025-06-28 오후 6.45.18.png&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;984&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;3월 스프링캠프 모집 공고&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;올해는 예년과 달리 인프런에서 선착순이 아닌 추첨 방식으로 참가자를 모집했다. (비용은 4만원으로 비싸졌다.)&lt;/li&gt;
&lt;li&gt;인프런에서 연차나 성비 등을 고려해 추첨한 덕분인지, 여자 개발자나 시니어로 보이시는 분들의 비율이 늘었다. 그래도 압도적으로 주니어가 많았다.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://yeoon.tistory.com/176&quot;&gt;KSUG 가을 세미나&lt;/a&gt; 또는 &lt;a href=&quot;https://www.youtube.com/watch?v=EVdh_jjiTww&quot;&gt;김영한의 50만 기념 세미나&lt;/a&gt;와 같은 패널 토크 형태의 발표가 3시간이나 생겼다.
&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;/li&gt;
&lt;li&gt;&lt;b&gt;채용부스가 전멸했다. 항상 채용 상담과 같은 부스가 있었는데 올해는 찾아 볼 수 없었다. &lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;경제가 진짜 힘든것 같다.&lt;/span&gt;&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;올리브영, Flex, 카카오뱅크, AWS가 있었으나 채용보다는 회사 홍보만 진행&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;코틀린 코너가 없어졌다. 대신 발표 내용 예제 코드가 다 코틀린이었다. (내가 들었던 세션은 그랬다)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-06-28 오후 6.49.24.png&quot; data-origin-width=&quot;682&quot; data-origin-height=&quot;1060&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/B45cB/btsOWmGlBxN/BncUN36wYdsanFCSSbWMVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/B45cB/btsOWmGlBxN/BncUN36wYdsanFCSSbWMVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/B45cB/btsOWmGlBxN/BncUN36wYdsanFCSSbWMVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FB45cB%2FbtsOWmGlBxN%2FBncUN36wYdsanFCSSbWMVK%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;483&quot; height=&quot;751&quot; data-filename=&quot;스크린샷 2025-06-28 오후 6.49.24.png&quot; data-origin-width=&quot;682&quot; data-origin-height=&quot;1060&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-06-28 오후 6.49.46.png&quot; data-origin-width=&quot;948&quot; data-origin-height=&quot;718&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ddCRec/btsOUzmHlMU/NbyVJkTr5pzlduPtqNEXp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ddCRec/btsOUzmHlMU/NbyVJkTr5pzlduPtqNEXp0/img.png&quot; data-alt=&quot;드디어 이상한 손선풍기 대신에 힙한 굿즈를 나눠주는구나..&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ddCRec/btsOUzmHlMU/NbyVJkTr5pzlduPtqNEXp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FddCRec%2FbtsOUzmHlMU%2FNbyVJkTr5pzlduPtqNEXp0%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;472&quot; height=&quot;357&quot; data-filename=&quot;스크린샷 2025-06-28 오후 6.49.46.png&quot; data-origin-width=&quot;948&quot; data-origin-height=&quot;718&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;드디어 이상한 손선풍기 대신에 힙한 굿즈를 나눠주는구나..&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-06-28 오후 6.50.43.png&quot; data-origin-width=&quot;786&quot; data-origin-height=&quot;788&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c6SvEK/btsOXOB6Gui/f6XkwYOyjNJ8U9lo69bi2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c6SvEK/btsOXOB6Gui/f6XkwYOyjNJ8U9lo69bi2k/img.png&quot; data-alt=&quot;flex 부스에서 나눠준 아메리카노.. 센스&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c6SvEK/btsOXOB6Gui/f6XkwYOyjNJ8U9lo69bi2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc6SvEK%2FbtsOXOB6Gui%2Ff6XkwYOyjNJ8U9lo69bi2k%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;478&quot; height=&quot;479&quot; data-filename=&quot;스크린샷 2025-06-28 오후 6.50.43.png&quot; data-origin-width=&quot;786&quot; data-origin-height=&quot;788&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;flex 부스에서 나눠준 아메리카노.. 센스&lt;/figcaption&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;h1&gt;&lt;b&gt;1. 난 spring에서 ml 서빙을 해봤어요 (김수원 님 / Sionic ai)&lt;/b&gt;&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;네이버 ML, 토스 ML 엔지니어 출신, ML 전문 회사 CTO의 JVM 환경에서 ML 서빙 경험 공유&lt;/li&gt;
&lt;li&gt;이미 Spring으로 ML 서빙하며 백엔드 서비스 운영 중&lt;/li&gt;
&lt;li&gt;ML을 JVM에서 서빙하는 이유, 어떻게 할 수 있는지를 공유&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Python이 중심인 ML 서빙 환경&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Python을 빼놓고 ML을 이야기 할 수 없다.&lt;/li&gt;
&lt;li&gt;모델을 만드는 도구가 python 베이스이기 때문이다. e.g) LangChain, PyTorch, TensorFlow, Llamalndex . . .&lt;/li&gt;
&lt;li&gt;그러나 Python으로 대규모 프로덕션 운영 하는데 어려움이 있다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;python은 GIL(Global Interpreter Lock) 영향으로 성능, 병렬처리 한계가 있다.&lt;/li&gt;
&lt;li&gt;패키지 및 환경 관리가 복잡하다. (라이브러리 업데이트 직접 관리)&lt;/li&gt;
&lt;li&gt;운영 한계 (타입 안정성 문제)&lt;/li&gt;
&lt;li&gt;물론 Python으로 운영 가능은 하지만, 난이도가 높다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Python 말고 다른 대안은 없을까?&lt;/b&gt;&lt;b&gt;&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ML 추론 서버/엔진 사용 방법이 있다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&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;vLLM&lt;/li&gt;
&lt;li&gt;AWS&lt;/li&gt;
&lt;li&gt;OCI&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;그러나 구축 및 운영 복잡성, 벤터 종속성 및 기술 지원 한계가 분명하다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;리소스 및 비용 부담, 문제가 생겼을때 Rust, Go를 뜯어 고쳐야하는 비용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;JVM 기반으로 ML 서빙하는 방법&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;JVM에서 ML 서빙 지원하는 라이브러리
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ONNX (저수준 - 최적화 필요)&lt;/li&gt;
&lt;li&gt;TensorFlow (저수준 - 최적화 필요)&lt;/li&gt;
&lt;li&gt;DJL (고수준 - 추상화 잘되서 최적화 필요 없음)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;DJL
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Java 개발자들의 ML 진입 장벽은 Python, AI을 모른다는 것이다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Python 언어, 아키텍처, 라이브러리, 추론/서빙, GPU/환경에 대한 이해 선행되어야 한다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;그러나 DJL은 &quot;Python, AI/ML을 몰라도 ML 서빙을 할 수 있게 만든다&quot;는 슬로건으로 Java만 알아도 사용 가능하다.&amp;nbsp;&lt;/li&gt;
&lt;li&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;Hugging Face(전세계 모델러들의 오픈소스 허브)와 연결 되어 오픈소스 모델 부분적으로 사용 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;예시 (리뷰 노출, 판매자 패널티)&lt;/li&gt;
&lt;li&gt;DJL은 Netflex에서도 활용하고 있다. (&lt;a href=&quot;https://aws.amazon.com/blogs/opensource/how-netflix-uses-deep-java-library-djl-for-distributed-deep-learning-inference-in-real-time/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://aws.amazon.com/blogs/opensource/how-netflix-uses-deep-java-library-djl-for-distributed-deep-learning-inference-in-real-time/&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-06-28 오후 7.04.00.png&quot; data-origin-width=&quot;646&quot; data-origin-height=&quot;452&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nSUM9/btsOWmTUc5J/V8OGi92tcQZIgaVCSa3gD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nSUM9/btsOWmTUc5J/V8OGi92tcQZIgaVCSa3gD1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nSUM9/btsOWmTUc5J/V8OGi92tcQZIgaVCSa3gD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnSUM9%2FbtsOWmTUc5J%2FV8OGi92tcQZIgaVCSa3gD1%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;646&quot; height=&quot;452&quot; data-filename=&quot;스크린샷 2025-06-28 오후 7.04.00.png&quot; data-origin-width=&quot;646&quot; data-origin-height=&quot;452&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-06-28 오후 7.05.16.png&quot; data-origin-width=&quot;694&quot; data-origin-height=&quot;508&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UFeY4/btsOXIvdJo2/JInhmYSkocBRDXSb9FAkGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UFeY4/btsOXIvdJo2/JInhmYSkocBRDXSb9FAkGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UFeY4/btsOXIvdJo2/JInhmYSkocBRDXSb9FAkGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUFeY4%2FbtsOXIvdJo2%2FJInhmYSkocBRDXSb9FAkGk%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;652&quot; height=&quot;477&quot; data-filename=&quot;스크린샷 2025-06-28 오후 7.05.16.png&quot; data-origin-width=&quot;694&quot; data-origin-height=&quot;508&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-06-28 오후 7.05.29.png&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;642&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTGeBI/btsOWL0bweK/W1QKrymv843GKfmLKkEYuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTGeBI/btsOWL0bweK/W1QKrymv843GKfmLKkEYuk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTGeBI/btsOWL0bweK/W1QKrymv843GKfmLKkEYuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTGeBI%2FbtsOWL0bweK%2FW1QKrymv843GKfmLKkEYuk%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;659&quot; height=&quot;438&quot; data-filename=&quot;스크린샷 2025-06-28 오후 7.05.29.png&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;642&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;JVM에서 ML 서빙의 한계도 분명하다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CPU 48코어 사용&lt;/li&gt;
&lt;li&gt;메모리 몇 백기가 할당하기도 함&lt;/li&gt;
&lt;li&gt;하드웨어 성능을 0.000001%까지 쥐어짜야한다.&lt;/li&gt;
&lt;li&gt;DJL은 저수준 제어가 어렵다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ONNX, TensorFlow를 사용하면 하드웨어 극한으로 쓸 수 있다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;GPU 설정&lt;/li&gt;
&lt;li&gt;GPU 병렬처리 직접 설정&lt;/li&gt;
&lt;li&gt;동적 배치처리&lt;/li&gt;
&lt;li&gt;Zero-copy 메모리 최적화&lt;/li&gt;
&lt;li&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;1000만개 문서 1s 이하&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;b&gt;끝내며,, JVM 서빙하는 것이 정답일까?&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;단점도 많다.
&lt;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;Spring AI 라이브러리의 미성숙도 (이제 1.0이 출시한 것이 지난달)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;각자의 환경, 해야하는 테스크에 맞게 환경 구성하고 서빙하면 좋을 것 같다.&lt;/li&gt;
&lt;li&gt;반드시 python을 사용하는 경우가 있으며 python 사용은 필수 불가결하다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ML 테스크 중 라이브러리를 써야하는데, python에만 있을 경우, 최신성을 반영 해야하는 경우 (java는 업데이트가 느리다.)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;&lt;b&gt;2. Talk 1 - 개발자 커뮤니티 (패널 토크)&lt;/b&gt;&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(박용권 님 (당근), 김지헌 님(컬리), 이상훈 님(야놀자))&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같은 주제로 50분간 토론했다.&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;li&gt;커뮤니티를 만들어가는 입장에서 지속가능한 커뮤니티는 뭐가 있을까&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결론은, 개인이 뚜렷한 목적을 가지고 스터디나 커뮤니티 활동을 하고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;커뮤니티를 통해 다른 회사 분위기 파악, 본인 PR이 가능하며, 일단 용기내서 말을 걸어보자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;&lt;b&gt;3. Talk 2 - 함께 성장하기 (패널 토크)&lt;/b&gt;&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(박재성(우아한형제들, Nextstep 캡틴), 변정훈(당근), 이경일(네이버))&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;b&gt;함께 성장 한다는 것은 무엇일까?&lt;/b&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;span style=&quot;color: #000000;&quot;&gt;그 조직이 가지고 있는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;Domain Knowlege 전파&lt;/b&gt;&lt;/span&gt; (조직만의 도메인 지식의 전파)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;과거 개발자는 탁월한 기술적으로 신기술 빠르게 적용하는 사람이었는데, AI가 등장하고 도메인의 시대가 온 것 같다. AI가 대체 할 수 없는 Domain쪽에 관심을 가지고 성장해보자.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;좋은 개발 문화란?&amp;nbsp;&lt;/span&gt;&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문제 없는 조직은 이 세상에 존재하지 않는다. 빅테크 여러곳 다녀봐도 실망스러운 팀, 조직이 많았다.&amp;nbsp;
&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;바꾸고, 기여하면서 성장할 수 있다. 도망가려하지 말고 변화 시켜보려는 마인드가 필요하다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;예를 들어 IT 개발자는 staff 직군인 회사에 있으며 해볼 수 있는 것 찾아서 해결 해보았다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;배포 - FTP로 배포하던 것 배포 시스템 작성&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;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;좋은 문화를 만들기 위해서는?&amp;nbsp;&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&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;6개월 이상 팀원 신뢰를 만들고, 천천히 작은 성공을 반복한다.&lt;/li&gt;
&lt;li&gt;조직 상황, 서비스 특성을 고려해야한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;좋은 문화, 변화는 반드시 회사 성과로 이어져야한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;심리적 안정감이 있는 조직 이란?&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;심리적 안정감이 있는 조직은 전적으로 리더에게 달렸다.&lt;/b&gt;
&lt;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;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;주니어 한계를 두지 말아라 코딩 외에 소프트 스킬, 코칭 역량 쌓아가는 노력을 해야한다.&lt;/b&gt;&lt;/span&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;스터디가 활발하고 지식 공유가 잘되는 조직 왜 안될까?&lt;/li&gt;
&lt;li&gt;그런 팀/문화 만드는 것은 엄청 힘들다. 리더가 문화를 만들고, 동기부여, 변화를 만들어야한다.&lt;/li&gt;
&lt;li&gt;문화, 동기부여, 지식 전파와 같은 일은 AI 시대에 더욱 중요하다. (대체 될 수 없다)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&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;휴가만 가면 3년간 쓰지 않았던 api가 호출된다.&lt;/li&gt;
&lt;li&gt;&amp;lsquo;나&amp;rsquo; 말고는 대응할 수 있는 사람이 없는 것
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;공유가 이루어지지 않는 것&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&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;장애가 나도 &amp;lsquo;아 이거 다음에 할께요. 천천히 하면 되요&amp;rsquo;가 되는 환경&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;동료 피드백하는 좋은 방법이 있다면?&lt;/b&gt;&amp;nbsp;&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&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;span style=&quot;color: #ee2323;&quot;&gt;일하면서 느낀 감정적 피드백 교류 환경이 필요하다.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;재택으로 온라인상 커멘트로만 피드백이 이루어지니, 감정이 전달되지 않아서 아쉬웠다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;코드 리뷰가 힘들 정도로 규모가 크다면 설계도를 만들고, 대면으로 공유/피드백 한다.&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;tip )Code Rabbit
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다이어그램, 호출 관계 그려줌&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;코드 리뷰에서 부정적인 내용 피드백 하는 방법은?
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&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;/ul&gt;
&lt;/li&gt;
&lt;li&gt;대면 리뷰 - 칭찬으로 시작해서, 다 좋은데 이것만 좀 바꿔볼 수 없을까요?&lt;/li&gt;
&lt;li&gt;많은 개발자가 내가 짠 코드와 나를 일치화 하는 경향이 있다. 그러면 안된다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&quot;널 비난 하는 것은 아니고, 나는 옛날에 이런식으로 해보니까 좋았다.&quot; 같이 존중하는 감정이 전달되야한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;&amp;nbsp;&lt;/h1&gt;
&lt;h1&gt;&lt;b&gt;4. 실전! MSA 트랜잭션 개발 가이드 (김용욱 님 / 삼성 SDS)&lt;/b&gt;&lt;/h1&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&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;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;privot transaction (from SAGA)&lt;/li&gt;
&lt;li&gt;saga transaction&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;트랜잭션 격리성 보완
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Eventual Consistency&lt;/li&gt;
&lt;li&gt;Semantic Lock (업무적인 의미의 중간 상태 값 추가)&lt;/li&gt;
&lt;li&gt;TCC (Try, Confirm, Cancel) 커밋의 단계를 나눠서 try commit, confirm commit, try에 실패하면 cancel&lt;/li&gt;
&lt;li&gt;Offline Lock&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;신뢰할 수 있는 트랜잭션 구현
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;API/Event&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;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;&lt;b&gt;Talk 3 - 기술 Talk (설계)&lt;/b&gt;&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(향로님, 조영호님, 안영회님)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;객체에게 책임을 부여한다는 것은?&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;객체를 지우고 Context 부터 생각해야한다.&lt;/li&gt;
&lt;li&gt;요구사항이 주어지면 연극 시나리오를 작성하는 것 처럼, 필요한 행동, 상호작용을 떠올리고 동적인 관점에서 설계한다.&lt;/li&gt;
&lt;li&gt;행동부터 생각하고 객체를 식별하자.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;JPA Entity vs Domain 나눠야할까?&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모든 경우에 좋은 것은 없다. trade off만 있을 뿐이다.&lt;/li&gt;
&lt;li&gt;JPA Entity는 데이터를 처리하고, Domain은 비즈니스 로직을 처리한다.&lt;/li&gt;
&lt;li&gt;데이터 변경 속도와 도메인 변경 속도가 동일하다면 두개를 나눌 필요가 없다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ex) shared DB가 존재하고 우리팀이 컨트롤 하지 못하는 상황과 같이 데이터 변경 속도와 비즈니스 변경 속도가 다를때 분리하면 좋다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;변경 속도를 알 수 없다면 합쳐서 개발하고, 나중에 나눠도 늦지 않다.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;나누는 것이 초반 결정이 아니었으면 좋겠다. (효율 떨어짐)&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;OOP(객체지향), FP(함수형프로그래밍) Next는 무엇일가요?&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Agentic AI 라고 생각한다. 미국 IT 투자금 절반이 흘러들어가고 있다.&lt;/li&gt;
&lt;li&gt;Agentic AI 또한 modularity 분할하며 합치는 것이 핵심&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;확장성 vs 오버엔지니어링&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사업적으로 10%만 성공한다. 너무 큰 확장성은 좋지 않다.&lt;/li&gt;
&lt;li&gt;문제의 복잡도에서 가장 단순한 전략을 선택한다. (나중에 이해하기 쉽게)&lt;/li&gt;
&lt;li&gt;변경이 진짜 이루어지는지 알수가 없다. 지금 가지고 있는 지식에서 가장 단순한 해결책을 선택한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&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;/ul&gt;
&lt;/li&gt;
&lt;li&gt;설계 철학 vs 조직의 제약
&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;li&gt;남 탓하면 안된다. 당신은 뭐든 할 수 있다. 당신의 코드가 훨씬 많아져서 기존 코드를 잠식하면 된다. (XP)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;설계는 나를 위한 것이 아니다. 다른 사람이 내가 짠 코드를 고칠때, 사전 지식이 없을때 읽기 좋은 코드를 위한 것이다.&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;&amp;nbsp;&lt;/h1&gt;
&lt;h1&gt;&lt;b&gt;레일웨이 지향 프로그래밍과 스프링 (이선협 / 마플코퍼레이션)&lt;/b&gt;&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;레일웨이지향 프로그래밍 2014년 등장&lt;/li&gt;
&lt;li&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;/li&gt;
&lt;li&gt;레일웨이지향의 사고는 소프트웨어를 성공과 실패로 바라보는 것이다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-06-28 오후 7.47.38.png&quot; data-origin-width=&quot;704&quot; data-origin-height=&quot;346&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SAjug/btsOUUEacHu/iLzeO2yT3jzAjcQk2z7tSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SAjug/btsOUUEacHu/iLzeO2yT3jzAjcQk2z7tSK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SAjug/btsOUUEacHu/iLzeO2yT3jzAjcQk2z7tSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSAjug%2FbtsOUUEacHu%2FiLzeO2yT3jzAjcQk2z7tSK%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;704&quot; height=&quot;346&quot; data-filename=&quot;스크린샷 2025-06-28 오후 7.47.38.png&quot; data-origin-width=&quot;704&quot; data-origin-height=&quot;346&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;성공과 실패(예외)에 대한 처리 중심으로 코드를 작성한다.&lt;/li&gt;
&lt;li&gt;기술 : Monad라는 개념과 함수형 프로그래밍을 통해 코드를 작성한다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-06-28 오후 7.47.55.png&quot; data-origin-width=&quot;574&quot; data-origin-height=&quot;448&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/R06Ig/btsOXQzUL2q/ytK7ksAhbek2URE9Nezac1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/R06Ig/btsOXQzUL2q/ytK7ksAhbek2URE9Nezac1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/R06Ig/btsOXQzUL2q/ytK7ksAhbek2URE9Nezac1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FR06Ig%2FbtsOXQzUL2q%2FytK7ksAhbek2URE9Nezac1%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;574&quot; height=&quot;448&quot; data-filename=&quot;스크린샷 2025-06-28 오후 7.47.55.png&quot; data-origin-width=&quot;574&quot; data-origin-height=&quot;448&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-06-28 오후 7.48.42.png&quot; data-origin-width=&quot;764&quot; data-origin-height=&quot;466&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TelJv/btsOVpEceGs/kVuQwoxYoGbkP5kk5BNSd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TelJv/btsOVpEceGs/kVuQwoxYoGbkP5kk5BNSd0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TelJv/btsOVpEceGs/kVuQwoxYoGbkP5kk5BNSd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTelJv%2FbtsOVpEceGs%2FkVuQwoxYoGbkP5kk5BNSd0%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;571&quot; height=&quot;348&quot; data-filename=&quot;스크린샷 2025-06-28 오후 7.48.42.png&quot; data-origin-width=&quot;764&quot; data-origin-height=&quot;466&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;</description>
      <category>세미나 참석</category>
      <category>KSUG</category>
      <category>springcamp 2025</category>
      <category>스프링캠프</category>
      <author>sendkite</author>
      <guid isPermaLink="true">https://yeoon.tistory.com/194</guid>
      <comments>https://yeoon.tistory.com/194#entry194comment</comments>
      <pubDate>Sat, 28 Jun 2025 19:08:08 +0900</pubDate>
    </item>
    <item>
      <title>Spring Data Redis 설정(1) - RedisTemplate 설정</title>
      <link>https://yeoon.tistory.com/193</link>
      <description>&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Redis 설정 관련하여 아키텍처, 직렬화/역직렬화에 대한 기록&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;1. Redis 아키텍처&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설정에 앞서 아키텍처에 따라 Connection 설정 방법에 차이가 있어 아키텍처를 살펴본다.&lt;/li&gt;
&lt;li&gt;Redis를 사용하는 아키텍처는 크게 4가지가 있다. (참고 - &lt;a href=&quot;https://docs.spring.io/spring-data/redis/reference/redis/connection-modes.html&quot;&gt;https://docs.spring.io/spring-data/redis/reference/redis/connection-modes.html&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1) StandAlone&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1대의 Redis 서버&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2) Redis Replication (master/slave 구조)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;master (읽기/쓰기), slave (master 데이터 복사 - 읽기전용)로 구성&lt;/li&gt;
&lt;li&gt;master &amp;rarr; slave 복사시간이 1-2초 소요되는 단점이라 잘 쓰이지 않는 구조이다.&lt;/li&gt;
&lt;li&gt;redis cluster를 잘 운영하지 못할때 사용한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-04-27 오후 4.51.00.png&quot; data-origin-width=&quot;1370&quot; data-origin-height=&quot;726&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/R2XIh/btsNBHkS8Fv/ocfs17FKUSz6on8Z8q80yk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/R2XIh/btsNBHkS8Fv/ocfs17FKUSz6on8Z8q80yk/img.png&quot; data-alt=&quot;master, slave 구조&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/R2XIh/btsNBHkS8Fv/ocfs17FKUSz6on8Z8q80yk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FR2XIh%2FbtsNBHkS8Fv%2Focfs17FKUSz6on8Z8q80yk%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;649&quot; height=&quot;344&quot; data-filename=&quot;스크린샷 2025-04-27 오후 4.51.00.png&quot; data-origin-width=&quot;1370&quot; data-origin-height=&quot;726&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;master, slave 구조&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3) Redis Sentinel&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;master/replica 구조에서 primary 장애 시 자동 장애 조치(auto failover)를 수행 구조&lt;/li&gt;
&lt;li&gt;sentinel 노드 과반 수 이상이 master 장애를 감지하면 slave 하나를 master로 승격
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;지속적으로 모티터링/감시만 하는 node(sentinel)를 따로 관리해줘야한다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;client가 올바른 노드를 찾을 수 있도록 도움&lt;/li&gt;
&lt;li&gt;최소 3개 이상의 노드를 권장&lt;/li&gt;
&lt;li&gt;감시 역할은 Redis와 동일한 노드에 구성해도 되고, 별로로 구성해도 됨&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;일반적으로 단일 master로 구성함,
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;master 하나가 모든 쓰기 작업을 처리해야하는 단점 있음&lt;/li&gt;
&lt;li&gt;대규모 쓰기 작업시 병목 발생&lt;/li&gt;
&lt;li&gt;Slave에 복제되는 Latency 증가&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-04-27 오후 4.51.27.png&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;866&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bF6lq9/btsNC1o6ObZ/8iw2RgbkrP0sKbSoqwoDt1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bF6lq9/btsNC1o6ObZ/8iw2RgbkrP0sKbSoqwoDt1/img.png&quot; data-alt=&quot;Sentinel&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bF6lq9/btsNC1o6ObZ/8iw2RgbkrP0sKbSoqwoDt1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbF6lq9%2FbtsNC1o6ObZ%2F8iw2RgbkrP0sKbSoqwoDt1%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;508&quot; height=&quot;415&quot; data-filename=&quot;스크린샷 2025-04-27 오후 4.51.27.png&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;866&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Sentinel&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4) Redis Cluster&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;최소 3대의 마스터 노드 필요, 각 노드 당 최소 Slave node 필요함&lt;/li&gt;
&lt;li&gt;데이터는 16384개 슬롯으로 나뉘어 특정 Master에 할당&lt;/li&gt;
&lt;li&gt;모든 데이터는 master 단위로 sharding되고, slave 단위로 복제됨 (즉 슬롯으로 sharding함)&lt;/li&gt;
&lt;li&gt;설정과 관리가 매우 복잡하고 특정 작업(ex - 다중키 작업)은 일부 제한이 있을 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-04-27 오후 4.52.12.png&quot; data-origin-width=&quot;1282&quot; data-origin-height=&quot;688&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brb99Y/btsNAWCOXUH/meV0795p8zirUBZ9jPE7L0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brb99Y/btsNAWCOXUH/meV0795p8zirUBZ9jPE7L0/img.png&quot; data-alt=&quot;Cluster 구조&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brb99Y/btsNAWCOXUH/meV0795p8zirUBZ9jPE7L0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbrb99Y%2FbtsNAWCOXUH%2FmeV0795p8zirUBZ9jPE7L0%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;583&quot; height=&quot;313&quot; data-filename=&quot;스크린샷 2025-04-27 오후 4.52.12.png&quot; data-origin-width=&quot;1282&quot; data-origin-height=&quot;688&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Cluster 구조&lt;/figcaption&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;application.yml에서 어떤 Connection mode인지에 따라서 다른 환경 변수를 사용할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-04-27 오후 4.52.49.png&quot; data-origin-width=&quot;1204&quot; data-origin-height=&quot;670&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMNBw0/btsNA0rC0iK/heRKCeXLRnP04W2cef8itK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMNBw0/btsNA0rC0iK/heRKCeXLRnP04W2cef8itK/img.png&quot; data-alt=&quot;Spring Data Redis에서 제공하는 환경변수&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMNBw0/btsNA0rC0iK/heRKCeXLRnP04W2cef8itK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMNBw0%2FbtsNA0rC0iK%2FheRKCeXLRnP04W2cef8itK%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;569&quot; height=&quot;317&quot; data-filename=&quot;스크린샷 2025-04-27 오후 4.52.49.png&quot; data-origin-width=&quot;1204&quot; data-origin-height=&quot;670&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Spring Data Redis에서 제공하는 환경변수&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;3. Redis 설정&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;OMS는 본격적으로 Redis를 활용하는 구조가 아니기 때문에 StandAlone으로 설정을 진행한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Redis 접속 설정&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Lettue, Jedis 선택지가 있으나 Lettue가 성능상 더 좋다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;kotlin&quot;&gt;&lt;code&gt;@Configuration
class RedisConfig {
    @Bean
    fun connectionFactory(): LettuceConnectionFactory {
        val redisConfig = RedisStandaloneConfiguration(&quot;localhost&quot;, 6379)

        val clientConfig =
            LettuceClientConfiguration
                .builder()
                .commandTimeout(Duration.ofSeconds(30)) // 명령 실행 타임아웃
                .clientOptions(
                    ClientOptions
                        .builder()
                        .autoReconnect(true)  // 자동 재연결
                        .socketOptions(
                            SocketOptions
                                .builder()
                                .connectTimeout(Duration.ofSeconds(5)) // 네트워크 연결 타임아웃
                                .build(),
                        ).disconnectedBehavior(ClientOptions.DisconnectedBehavior.REJECT_COMMANDS) // // 연결 끊겼을 때 처리 방식
                        .build(),
                )
                .build()

        return LettuceConnectionFactory(redisConfig, clientConfig)
    }
 }
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;disconnectedBehavior 옵션 다른 선택지
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DEFAULT: 요청을 큐에 쌓았다가 나중에 처리 (❗️주의: 메모리 소비 증가 가능)&lt;/li&gt;
&lt;li&gt;REJECT_COMMANDS: 연결이 없으면 명령을 즉시 거부 (&amp;rarr; 예외 발생)&lt;/li&gt;
&lt;li&gt;ACCEPT_COMMANDS: 연결이 끊겨도 명령을 계속 받아서 큐에 저장&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;RedisTemplate 설정&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Key-Value 구조가 &amp;lt;String, String&amp;gt; 이라면 &lt;b&gt;StringRedisTemplate&lt;/b&gt;를 사용한다.&lt;/li&gt;
&lt;li&gt;라이브러리 자체에서 최적화 설정이 되어 있기 때문이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt; @Bean(&quot;stringRedisTemplate&quot;)
 fun stringRedisTemplate(
     @Qualifier(&quot;connectionFactory&quot;) connectionFactory: LettuceConnectionFactory,
 ): StringRedisTemplate = StringRedisTemplate(connectionFactory)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-04-27 오후 4.53.38.png&quot; data-origin-width=&quot;1088&quot; data-origin-height=&quot;728&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yFAYZ/btsNAUrpAaT/cEakkg4o9GoRs8qKtIcm60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yFAYZ/btsNAUrpAaT/cEakkg4o9GoRs8qKtIcm60/img.png&quot; data-alt=&quot;라이브러리 내부 직렬화 최적화&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yFAYZ/btsNAUrpAaT/cEakkg4o9GoRs8qKtIcm60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyFAYZ%2FbtsNAUrpAaT%2FcEakkg4o9GoRs8qKtIcm60%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;547&quot; height=&quot;366&quot; data-filename=&quot;스크린샷 2025-04-27 오후 4.53.38.png&quot; data-origin-width=&quot;1088&quot; data-origin-height=&quot;728&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;라이브러리 내부 직렬화 최적화&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1) RedisTemplate&amp;lt;String, Object&amp;gt; - 가장 기본적인 사용 방법&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아래와 같이 String은 StringRedisSerializer로, Object는 GenericJackson2JsonRedisSerializer로 객체를 JSON 형태로 직렬화하여 저장한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;   @Bean
   public RedisTemplate&amp;lt;String, Object&amp;gt; redisTemplate() {
       RedisTemplate&amp;lt;String, Object&amp;gt; template = new RedisTemplate&amp;lt;&amp;gt;();
       template.setConnectionFactory(redisConnectionFactory());

       // 직렬화 설정
       template.setKeySerializer(new StringRedisSerializer());
       template.setHashKeySerializer(new StringRedisSerializer());
       template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
       template.setValueSerializer(new GenericJackson2JsonRedisSerializer());

       return template;
   }
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이 방식의 단점
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Json 객체를 그대로 바이트 배열로 변환하여 저장하므로, &lt;b&gt;저장 공간이 많이 사용됨&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;설정에 따라 직렬화 시에 클래스 정보가 포함되어 여러 문제가 생길 수 있음&lt;/li&gt;
&lt;li&gt;ObjectMapper를 사용하여 직렬화를 시도함&lt;/li&gt;
&lt;li&gt;참고 - Spring Redis 직렬화의 한계 / &lt;a href=&quot;https://mangkyu.tistory.com/402&quot;&gt;https://mangkyu.tistory.com/402&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Redis에 저장 데이터가 크다면 직접 직렬화를 구현하여 압축 저장하는 방법도 있다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://mangkyu.tistory.com/411&quot;&gt;https://mangkyu.tistory.com/411&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2) RedisTemplate&amp;lt;String, ByteArray&amp;gt;로 구현하고 ObjectMapper를 커스텀하는 방식&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Redis에 byteArray로 관리하고, ObjectMapper를 직접 구현하여 저장 포멧을 최적화한다. (smile, avro..)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;(참고 &lt;a href=&quot;https://jsonobject.tistory.com/390-&quot;&gt;https://jsonobject.tistory.com/390-&lt;/a&gt; )&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;kotlin&quot;&gt;&lt;code&gt;@Bean(&quot;objectRedisTemplate&quot;)
fun objectRedisTemplate(
    @Qualifier(&quot;connectionFactory&quot;) connectionFactory: LettuceConnectionFactory,
): RedisTemplate&amp;lt;String, ByteArray&amp;gt; {
    val redisTemplate = RedisTemplate&amp;lt;String, ByteArray&amp;gt;().apply {
        keySerializer = StringRedisSerializer()
        hashKeySerializer = StringRedisSerializer()
        setConnectionFactory(connectionFactory)
    }
    return redisTemplate
}

@Bean(&quot;redisObjectMapper&quot;)
fun redisObjectMapper(): ObjectMapper {
    return SmileMapper().registerModules(JavaTimeModule())
        .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, true)
        .configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false)
        .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
        .setSerializationInclusion(JsonInclude.Include.ALWAYS)
        .disable(MapperFeature.USE_ANNOTATIONS)
}
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;smile로 저장함으로 &lt;b&gt;JSON&lt;/b&gt;&amp;nbsp;문자열 대비 2/3 절약된 크기 저장&lt;/li&gt;
&lt;li&gt;전반적인 고성능&lt;/li&gt;
&lt;li&gt;단점으로는 ObjecMapper 커스텀 구현 및 redis 저장소에서 데이터 읽기가 불편할 수 있다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Spring Boot</category>
      <category>redis 설정</category>
      <author>sendkite</author>
      <guid isPermaLink="true">https://yeoon.tistory.com/193</guid>
      <comments>https://yeoon.tistory.com/193#entry193comment</comments>
      <pubDate>Sun, 27 Apr 2025 16:57:14 +0900</pubDate>
    </item>
  </channel>
</rss>