<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>근육도 객체다.</title>
    <link>https://hmhmchm.tistory.com/</link>
    <description>코드로 찌르고 철봉으로 마무리</description>
    <language>ko</language>
    <pubDate>Sat, 11 Apr 2026 17:10:12 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>hmhmchm</managingEditor>
    <image>
      <title>근육도 객체다.</title>
      <url>https://tistory1.daumcdn.net/tistory/3742013/attach/e510a4f486dd4e908dea2f3d772c23ae</url>
      <link>https://hmhmchm.tistory.com</link>
    </image>
    <item>
      <title>카프카란?</title>
      <link>https://hmhmchm.tistory.com/124</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;1. Pub / Sub 메시징 시스템&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;Pub / Sub 구조로 이루어진 비동기 메세지 전송 방식&lt;/li&gt;
&lt;li&gt;Publisher / Producer 에서 메세지 시스템에 메세지를 보내 저장하면 Subscriber / Consumer 에서 메세지 데이터를 받는다.&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;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-origin-width=&quot;788&quot; data-origin-height=&quot;458&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkmuOX/btrOCPDiBUH/3HkzVmMJy2QIXeGz6PzTG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkmuOX/btrOCPDiBUH/3HkzVmMJy2QIXeGz6PzTG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkmuOX/btrOCPDiBUH/3HkzVmMJy2QIXeGz6PzTG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkmuOX%2FbtrOCPDiBUH%2F3HkzVmMJy2QIXeGz6PzTG0%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;600&quot; height=&quot;349&quot; data-origin-width=&quot;788&quot; data-origin-height=&quot;458&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;N:N 연결로 클라이언트가 많아지면 느려질수 있고 이를 대응하기 위해 확장성이 떨어진다.&lt;/li&gt;
&lt;li&gt;특정 클라이언트가 갑작스럽게 서버가 다운되어 사라지면 메세지를 받지 못하여 메세지가 유실될 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* Pub / Sub 구조의 네트워크 통신&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;942&quot; data-origin-height=&quot;416&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLJqo4/btrOw2iAqAX/WFx63oPePBiaKZWG4ENwJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLJqo4/btrOw2iAqAX/WFx63oPePBiaKZWG4ENwJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLJqo4/btrOw2iAqAX/WFx63oPePBiaKZWG4ENwJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLJqo4%2FbtrOw2iAqAX%2FWFx63oPePBiaKZWG4ENwJK%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;600&quot; height=&quot;265&quot; data-origin-width=&quot;942&quot; data-origin-height=&quot;416&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Publisher 가 Subscriber에게 직접 전달하는 것이 아닌 수신처 ID 를 포함하여 메시지 시스템에 전달한다.&lt;/li&gt;
&lt;li&gt;메세지 교환기가 수신처 ID 값을 통해 Subscriber의 큐에 전달한다.&lt;/li&gt;
&lt;li&gt;Subscriber 는 자신의 큐를 계속 관찰하다가 있으면 메세지를 회수한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;장점&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;수신자가 받을 수 없는 상황이 되어도 메세지가 유실되지 않는다.&lt;/li&gt;
&lt;li&gt;메세지 시스템으로 연결되어 있어 확장성에 용이하다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단점&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;중간에 한번 거치기 때문에 속도 측면에서 느릴 수 있다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 카프카란&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Producer , Broker , Consumer , Zookeeper로 이루어져 있다.&lt;/li&gt;
&lt;li&gt;프로듀서 (Producer) : 메세지를 브로커의 토픽으로 전달.&lt;/li&gt;
&lt;li&gt;브로커 (Broker) : 카프카 어플리케이션에 설치되어있는 서버 또는 노드를 말한다.&lt;/li&gt;
&lt;li&gt;컨슈머 (Consumer) : 브로커에 토픽이름으로 저장된 메세지를 가져가는 서버 또는 어플리케이션.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;주키퍼(ZooKeeper) : &lt;b&gt;분산 애플리케이션을 위한 코디네이션 시스템. &lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;분산 애플리케이션이 안정적인 서비스를 할 수 있도록 분산되어 있는 각 애플리케이션의 정보를 중앙에 집중함. &lt;b&gt;컨슈머와 통신&lt;/b&gt; 혹은 &lt;b&gt;카프카와 직접 통신&lt;/b&gt;하면서 구성 관리, 그룹 관리 네이밍, 동기화 등의 서비스를 제공&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-origin-width=&quot;1476&quot; data-origin-height=&quot;978&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CREWo/btrODfBv8tC/VCzc2V42vYfrabjZfvlEM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CREWo/btrODfBv8tC/VCzc2V42vYfrabjZfvlEM1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CREWo/btrODfBv8tC/VCzc2V42vYfrabjZfvlEM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCREWo%2FbtrODfBv8tC%2FVCzc2V42vYfrabjZfvlEM1%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;650&quot; height=&quot;431&quot; data-origin-width=&quot;1476&quot; data-origin-height=&quot;978&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작동 순서&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;프로듀서는 생성된 메세지를 카프카에 전달&lt;/li&gt;
&lt;li&gt;전달된 메세지는 브로커의 토픽이라는 메세지 구분자에 저장.&lt;/li&gt;
&lt;li&gt;컨슈머가 토픽에 접근해서 메세지를 가져온다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본 메세징 시스템과 다른 점&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위에서 설명했던 기본 메세징 시스템은 큐에 있던 메세지를 컨슈머가 소비하면 큐에서 바로 삭제를 해버린다. 하지만 카프카는 컨슈머가 메세지를 소비하더라도 디스크에 메세지를 일정기간 보관해서 메세지 손실이 없다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 카프카 데이터 모델&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;카프카는 토픽과 파티션이라는 데이터 모델이 존재한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;토픽&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;메세지를 논리적으로 묶은 개념 (DB 테이블이라 생각하면 된다.)&lt;/li&gt;
&lt;li&gt;프로듀서가 메세지를 보내면 토픽에 메세지가 저장된다고 생각하면 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파티션&lt;/p&gt;
&lt;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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&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;&lt;b&gt;파티션은 많을 수록 좋은가?&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 핸들러의 낭비가 존재
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;각 파티션은 브로커의 디렉토리와 매핑되고 저장되는 데이터마다 2개의 파일(인덱스, 실제 파일)이 있기 때문에 너무 많은 파일 핸들이 생길 경우 리소스 낭비가 생김&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;카프카는 리플리케이션(Replication)을 지원하고, 이를 통해 지속적으로 리더 파티션을 팔로워 파티션으로 리플리케이션을 하게됨&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;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오프셋 : 파티션마다 메세지가 저장되는 위치&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리플리케이션&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1476&quot; data-origin-height=&quot;492&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dDdXfb/btrOC477ZN0/lOg6I6nNEYH2woWkKsUvJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dDdXfb/btrOC477ZN0/lOg6I6nNEYH2woWkKsUvJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dDdXfb/btrOC477ZN0/lOg6I6nNEYH2woWkKsUvJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdDdXfb%2FbtrOC477ZN0%2FlOg6I6nNEYH2woWkKsUvJ0%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;600&quot; height=&quot;200&quot; data-origin-width=&quot;1476&quot; data-origin-height=&quot;492&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리플리케이션을 수행하는 이유 : 고가용성 및 데이터 유실을 막기 위해 replication 을 수행&lt;/li&gt;
&lt;li&gt;원본이 리더 파티션이 되고 복제가 팔로우 파티션이 된다.&lt;/li&gt;
&lt;li&gt;리더 파티션 브로커가 다운되면 팔로우파티션이 새로운 리더가 되어 정상적으로 프로듀서의 요청을 처리한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;a href=&quot;https://velog.io/@jaehyeong/Apache-Kafka%EC%95%84%ED%8C%8C%EC%B9%98-%EC%B9%B4%ED%94%84%EC%B9%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;1. https://velog.io/@jaehyeong/Apache-Kafka%EC%95%84%ED%8C%8C%EC%B9%98-%EC%B9%B4%ED%94%84%EC%B9%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1665808702132&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;Apache Kafka(아파치 카프카)란 무엇인가?&quot; data-og-description=&quot;기존 링크드인의 데이터 처리 시스템은 각 파이프라인이 파편화되고 시스템 복잡도가 높아 새로운 시스템을 확장하기 어려운 상황이였음기존 메시징 큐 시스템인 ActiveMQ를 사용했지만, 링크드&quot; data-og-host=&quot;velog.io&quot; data-og-source-url=&quot;https://velog.io/@jaehyeong/Apache-Kafka%EC%95%84%ED%8C%8C%EC%B9%98-%EC%B9%B4%ED%94%84%EC%B9%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80&quot; data-og-url=&quot;https://velog.io/@jaehyeong/Apache-Kafka아파치-카프카란-무엇인가&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/sUUhY/hyQayqNTDg/6s0nVPrrxV8uScMcKhoHNK/img.png?width=700&amp;amp;height=350&amp;amp;face=0_0_700_350,https://scrap.kakaocdn.net/dn/phr5W/hyP9jB1o0e/oyh21PCAceO5eJVla98M30/img.png?width=700&amp;amp;height=350&amp;amp;face=0_0_700_350,https://scrap.kakaocdn.net/dn/bgOiZy/hyP9rmxDlY/arkapxgdkNa6B1MZLu69uk/img.png?width=1999&amp;amp;height=1043&amp;amp;face=0_0_1999_1043&quot;&gt;&lt;a href=&quot;https://velog.io/@jaehyeong/Apache-Kafka%EC%95%84%ED%8C%8C%EC%B9%98-%EC%B9%B4%ED%94%84%EC%B9%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://velog.io/@jaehyeong/Apache-Kafka%EC%95%84%ED%8C%8C%EC%B9%98-%EC%B9%B4%ED%94%84%EC%B9%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/sUUhY/hyQayqNTDg/6s0nVPrrxV8uScMcKhoHNK/img.png?width=700&amp;amp;height=350&amp;amp;face=0_0_700_350,https://scrap.kakaocdn.net/dn/phr5W/hyP9jB1o0e/oyh21PCAceO5eJVla98M30/img.png?width=700&amp;amp;height=350&amp;amp;face=0_0_700_350,https://scrap.kakaocdn.net/dn/bgOiZy/hyP9rmxDlY/arkapxgdkNa6B1MZLu69uk/img.png?width=1999&amp;amp;height=1043&amp;amp;face=0_0_1999_1043');&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;Apache Kafka(아파치 카프카)란 무엇인가?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;기존 링크드인의 데이터 처리 시스템은 각 파이프라인이 파편화되고 시스템 복잡도가 높아 새로운 시스템을 확장하기 어려운 상황이였음기존 메시징 큐 시스템인 ActiveMQ를 사용했지만, 링크드&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;velog.io&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://twofootdog.tistory.com/86&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://twofootdog.tistory.com/86&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1665808722378&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;아파치 카프카(Apache Kafka) 정의 및 특징&quot; data-og-description=&quot;최근에 아파치 카프카(Apache Kafka)에 대한 관심이 생겨서 공부를 하게 되었다. 이 글에서는 아파치 카프카에 대한 정의 및 특징에 대해 정리를 해 볼 것이다. 글의 진행 순서는 다음과 같다. 1. 아&quot; data-og-host=&quot;twofootdog.tistory.com&quot; data-og-source-url=&quot;https://twofootdog.tistory.com/86&quot; data-og-url=&quot;https://twofootdog.tistory.com/86&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/qzrXk/hyP9x1kF4s/QztyOA4dD1dVTHVjgA8qIK/img.png?width=312&amp;amp;height=441&amp;amp;face=0_0_312_441,https://scrap.kakaocdn.net/dn/brHMNw/hyQaAWsMmN/zGKvOjAc775ac1ydN9CTRk/img.png?width=312&amp;amp;height=441&amp;amp;face=0_0_312_441,https://scrap.kakaocdn.net/dn/bM5H79/hyP9vJdUQL/II4Ky9Qrck8OYvKsjWRqB1/img.png?width=1447&amp;amp;height=957&amp;amp;face=0_0_1447_957&quot;&gt;&lt;a href=&quot;https://twofootdog.tistory.com/86&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://twofootdog.tistory.com/86&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/qzrXk/hyP9x1kF4s/QztyOA4dD1dVTHVjgA8qIK/img.png?width=312&amp;amp;height=441&amp;amp;face=0_0_312_441,https://scrap.kakaocdn.net/dn/brHMNw/hyQaAWsMmN/zGKvOjAc775ac1ydN9CTRk/img.png?width=312&amp;amp;height=441&amp;amp;face=0_0_312_441,https://scrap.kakaocdn.net/dn/bM5H79/hyP9vJdUQL/II4Ky9Qrck8OYvKsjWRqB1/img.png?width=1447&amp;amp;height=957&amp;amp;face=0_0_1447_957');&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;아파치 카프카(Apache Kafka) 정의 및 특징&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;최근에 아파치 카프카(Apache Kafka)에 대한 관심이 생겨서 공부를 하게 되었다. 이 글에서는 아파치 카프카에 대한 정의 및 특징에 대해 정리를 해 볼 것이다. 글의 진행 순서는 다음과 같다. 1. 아&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;twofootdog.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://cornswrold.tistory.com/523&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://cornswrold.tistory.com/523&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1665808730040&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;[Kafka] 주키퍼(zookeeper)란 무엇인가?&quot; data-og-description=&quot;유튜브로 카프카 관련 영상을 봤는데, 주키퍼란 아이가 등장하였다. 주키퍼에 대해 간략히 조사해보았다. 일단, 주키퍼를 알아보기 위해 카프카가 어떻게 구성되어 있는지 알아야 한다. 카프카 &quot; data-og-host=&quot;cornswrold.tistory.com&quot; data-og-source-url=&quot;https://cornswrold.tistory.com/523&quot; data-og-url=&quot;https://cornswrold.tistory.com/523&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/6hlR1/hyP9w9ctB5/VTEUK7KvclweCfxUPiXKtk/img.png?width=287&amp;amp;height=176&amp;amp;face=0_0_287_176,https://scrap.kakaocdn.net/dn/bX7PxO/hyP9tSaZdg/3evzkaF3wTDwZWgZhBGkVk/img.png?width=287&amp;amp;height=176&amp;amp;face=0_0_287_176,https://scrap.kakaocdn.net/dn/xigM3/hyQapOago6/lf1A8jn88cVelphoKDmY9K/img.jpg?width=960&amp;amp;height=960&amp;amp;face=0_0_960_960&quot;&gt;&lt;a href=&quot;https://cornswrold.tistory.com/523&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://cornswrold.tistory.com/523&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/6hlR1/hyP9w9ctB5/VTEUK7KvclweCfxUPiXKtk/img.png?width=287&amp;amp;height=176&amp;amp;face=0_0_287_176,https://scrap.kakaocdn.net/dn/bX7PxO/hyP9tSaZdg/3evzkaF3wTDwZWgZhBGkVk/img.png?width=287&amp;amp;height=176&amp;amp;face=0_0_287_176,https://scrap.kakaocdn.net/dn/xigM3/hyQapOago6/lf1A8jn88cVelphoKDmY9K/img.jpg?width=960&amp;amp;height=960&amp;amp;face=0_0_960_960');&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;[Kafka] 주키퍼(zookeeper)란 무엇인가?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;유튜브로 카프카 관련 영상을 봤는데, 주키퍼란 아이가 등장하였다. 주키퍼에 대해 간략히 조사해보았다. 일단, 주키퍼를 알아보기 위해 카프카가 어떻게 구성되어 있는지 알아야 한다. 카프카&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;cornswrold.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>CS/스터디</category>
      <author>hmhmchm</author>
      <guid isPermaLink="true">https://hmhmchm.tistory.com/124</guid>
      <comments>https://hmhmchm.tistory.com/124#entry124comment</comments>
      <pubDate>Sat, 15 Oct 2022 13:39:01 +0900</pubDate>
    </item>
    <item>
      <title>[2022-09-16] TIL - 33일차</title>
      <link>https://hmhmchm.tistory.com/123</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;  Today I Learned&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;스트림 자바8부터 나옴&lt;/li&gt;
&lt;li&gt;자바의 패러다임이 자바 8부터 바뀌기 시작했다.&lt;/li&gt;
&lt;li&gt;메서드 를 사용하는 형태도 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Optional. Null&lt;/li&gt;
&lt;li&gt;Functional Interface&lt;span&gt;&amp;nbsp; &lt;/span&gt;- Consumer. Supplier&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Stream API&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Golfzon tech</category>
      <author>hmhmchm</author>
      <guid isPermaLink="true">https://hmhmchm.tistory.com/123</guid>
      <comments>https://hmhmchm.tistory.com/123#entry123comment</comments>
      <pubDate>Mon, 19 Sep 2022 09:09:16 +0900</pubDate>
    </item>
    <item>
      <title>[2022-09-15] TIL - 32일차</title>
      <link>https://hmhmchm.tistory.com/122</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;  Today I Learned&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;Lambda&lt;/li&gt;
&lt;li&gt;Thread&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Golfzon tech/TIL</category>
      <author>hmhmchm</author>
      <guid isPermaLink="true">https://hmhmchm.tistory.com/122</guid>
      <comments>https://hmhmchm.tistory.com/122#entry122comment</comments>
      <pubDate>Fri, 16 Sep 2022 09:13:56 +0900</pubDate>
    </item>
    <item>
      <title>[2022-09-14] TIL - 31일차</title>
      <link>https://hmhmchm.tistory.com/121</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; &amp;nbsp;Today I Learned&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li style=&quot;list-style-type: none;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Create as&lt;/li&gt;
&lt;li&gt;Rollup Cube&lt;/li&gt;
&lt;li&gt;Rollup은 SUm 을써서 나타낸거를 하나로 묶어서 데이터를 보여준다.&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Cube&lt;/span&gt;는&lt;span&gt; &lt;/span&gt;전체&lt;span&gt; &lt;/span&gt;합계를&lt;span&gt; &lt;/span&gt;따로보여준다&lt;span&gt;.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Golfzon tech/TIL</category>
      <category>골프존 테크 아카데미</category>
      <author>hmhmchm</author>
      <guid isPermaLink="true">https://hmhmchm.tistory.com/121</guid>
      <comments>https://hmhmchm.tistory.com/121#entry121comment</comments>
      <pubDate>Thu, 15 Sep 2022 16:25:21 +0900</pubDate>
    </item>
    <item>
      <title>[2022-09-13] TIL - 30일차</title>
      <link>https://hmhmchm.tistory.com/120</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; &amp;nbsp;Today I Learned&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;circle&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;DDL DML TCL&lt;/li&gt;
&lt;li&gt;Alter add , modify, rename (컬럼명 수정)&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Drop cascade restraint&lt;/li&gt;
&lt;li&gt;프로시저&lt;/li&gt;
&lt;li&gt;Merge into ,&lt;span&gt;&amp;nbsp; &lt;/span&gt;merge 쓸 때 when 도 쓰네 not matched 해가꼬&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;제약조건 constraint , references 가 붙는 순간 fk 가 된다,&lt;/li&gt;
&lt;li&gt;&lt;span&gt;제약조건&lt;/span&gt; check (1,2) &lt;span&gt;이렇게&lt;/span&gt; &lt;span&gt;고르는거도&lt;/span&gt; &lt;span&gt;있다&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Golfzon tech/TIL</category>
      <author>hmhmchm</author>
      <guid isPermaLink="true">https://hmhmchm.tistory.com/120</guid>
      <comments>https://hmhmchm.tistory.com/120#entry120comment</comments>
      <pubDate>Wed, 14 Sep 2022 09:05:14 +0900</pubDate>
    </item>
    <item>
      <title>[2022-09-07] TIL - 29일차</title>
      <link>https://hmhmchm.tistory.com/119</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; &amp;nbsp;Today I Learned&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;JSON 포맷 형태 유지&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Golfzon tech/TIL</category>
      <category>골프존 테크 아카데미</category>
      <author>hmhmchm</author>
      <guid isPermaLink="true">https://hmhmchm.tistory.com/119</guid>
      <comments>https://hmhmchm.tistory.com/119#entry119comment</comments>
      <pubDate>Mon, 12 Sep 2022 14:47:31 +0900</pubDate>
    </item>
    <item>
      <title>[2022-09-06] TIL - 28일차</title>
      <link>https://hmhmchm.tistory.com/118</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; &amp;nbsp;Today I Learned&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;Join&lt;/li&gt;
&lt;li&gt;inner join&lt;/li&gt;
&lt;li&gt;outer join&lt;/li&gt;
&lt;li&gt;oracle jdbc 연동&lt;/li&gt;
&lt;li&gt;VIEW&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Golfzon tech/TIL</category>
      <author>hmhmchm</author>
      <guid isPermaLink="true">https://hmhmchm.tistory.com/118</guid>
      <comments>https://hmhmchm.tistory.com/118#entry118comment</comments>
      <pubDate>Wed, 7 Sep 2022 09:57:25 +0900</pubDate>
    </item>
    <item>
      <title>[2022-09-05] TIL - 27일차</title>
      <link>https://hmhmchm.tistory.com/117</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; &amp;nbsp;Today I Learned&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;오라클 sql문&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Golfzon tech/TIL</category>
      <category>골프존테크아카데미</category>
      <author>hmhmchm</author>
      <guid isPermaLink="true">https://hmhmchm.tistory.com/117</guid>
      <comments>https://hmhmchm.tistory.com/117#entry117comment</comments>
      <pubDate>Tue, 6 Sep 2022 08:59:57 +0900</pubDate>
    </item>
    <item>
      <title>[2022-09-02] TIL - 26일차</title>
      <link>https://hmhmchm.tistory.com/116</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; &amp;nbsp;Today I Learned&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;예비군 이슈&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Golfzon tech/TIL</category>
      <author>hmhmchm</author>
      <guid isPermaLink="true">https://hmhmchm.tistory.com/116</guid>
      <comments>https://hmhmchm.tistory.com/116#entry116comment</comments>
      <pubDate>Mon, 5 Sep 2022 11:10:19 +0900</pubDate>
    </item>
    <item>
      <title>[2022-09-01] TIL - 25일차</title>
      <link>https://hmhmchm.tistory.com/115</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; &amp;nbsp;Today I Learned&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Golfzon tech/TIL</category>
      <category>골프존테크아카데미</category>
      <author>hmhmchm</author>
      <guid isPermaLink="true">https://hmhmchm.tistory.com/115</guid>
      <comments>https://hmhmchm.tistory.com/115#entry115comment</comments>
      <pubDate>Mon, 5 Sep 2022 11:07:27 +0900</pubDate>
    </item>
  </channel>
</rss>