728x90
메시지큐와 이벤트 스트리밍 플랫폼현대 소프트웨어 아키텍처는 마이크로소프트 방식의 작은 단위들로 구성된다. 그리고 이러한 블록들의 통신을 담당하는 메시지 큐가 존재한다. 대표적으로 아파치 카프카, 아파치 RabbitMA 등이 존재하지만 엄밀히 따지면 아파치 카프카는 이벤트 스트리밍 플랫폼으로 분류된다. 이에 따라 사전에 메시지큐와 이벤트 스트리밍 플랫폼의 차이를 먼저 보면 다음과 같다.상단에 그린 것이 일반적인 메시지 큐다. 하나의 생산자는 메시지를 큐에 보내고, 이 큐로부터 하나의 소비자가 메시지를 처리한다.이와 달리 하단의 이벤트 스트리밍 플랫폼은 하나의 생산자가 메시지를 큐에 보낼 때 다수의 소비자가 각자의 시점에서 데이터를 처리할 수 있다. 메시지큐에 대한 고려사항메시지 큐를 적용할 때 할 수 있는..
사전작업이전 포스팅에서 TrustStore까지 생성시켰다그럼 이제 TrustStore를 배포할 AWS의 특정 경로로 담아주고 SpringBoot에 설정을 진행한다 SpringBoot 설정 작업 진행Application.yml 설정spring: ... kafka: bootstrap-servers: {broker1}:9098, {broker3}:9098, {broker3}:9098 properties: security.protocol: SASL_SSL sasl.mechanism: AWS_MSK_IAM sasl.jaas.config: software.amazon.msk.auth.iam.IAMLoginModule required; sasl.client.callba..
사전 도구- Ubuntu-2004.6-desktop-amd64.iso- VirtualBox.exe 왜 하냐.- Obuntu에 kafka 설치할 예정- Obuntu CLI말고, 개인 PC 로컬로 접근하고자 함- Mtputty를 통해서 주피터, 브로커 1, 2, 3 을 탭별로 편히 관찰하고자 합 1. 우분투 내 패키지 관리 apt-get 업데이트우분투를 포함한 데비안 계열 리눅스 패키지 관리 툴인 apt-get을 업데이트한다sudo apt-get updatesudo apt-get upgradesudo apt install net-toolsifconfig -a // 네트워크 인터페이스 정보 조회 2. VirtualBox에서 고정 IP 설정하기VirtualBox 내의 호스트 네트워크 관리VirtualBox >..
Amazon에서 IAM과 함께 MSK 사용하기IAM 자격 증명 정책아마존 서비스에서 IAM 자격증명 정책을 이용하면 Access / denied 조건을 지정하여 작업할 수 있다.그 지정 대상으로는 특정 행위, 자원, 키 등이 존재한다. 이 지정 작업은 JSON 기반으로 돌아가는데, 가령 예를 들어서 다음과 같이 설정할 수 있는 것이다 ( Amanzon Managed Streaming for Apache Kafka 참조)// ex1"Action": ["kafka:action1", "kafka:action2"]// ex2"Action": "kafka:Describe*"// ex3"Resource": "*" 이제 A라는 IAM역할자에게 특정 권한만 부여하고자 한다면 이 사람에게 리소스 기반 정책을 주면 된다...
원하는 시나리오1. Producer 서버에서 채팅 메시지를 kafka로 전송할 것이다2. Listner를 통해서 kafka에 저장된 메시지를 이중화된 Consumer 서버 중 하나가 받을 것이다3. 이때, 각각의 Consumer 서버는 순서대로 메시지를 처리할 수 있어야 한다 (중복처리, 중복 메시지 발송이 일어나지 않도록) 채팅 메시지가 읽히는 순서를 보장하기 위해서 SpringBoot 서버, kafka 서버 각각을 어떻게 설정해야하는가? Kafka 설정하기파티션(Partition) 설정파티션은 kafka에서 메시지가 병렬 처리될 수 있는 단위이다. 그러나, 메시지 순서를 보장하려면 특정 토픽에 대해서 단일 파티션을 사용해야한다. Kafka가 파티션 내에서만 메시지 순서를 보장하기 때문이다. 따라서,..
채팅에도 여러 종류와 여러 요건이 따른다채팅 요구사항에 대한 체크리스트로 다음과 같은 것들이 있다.채팅의 규모1:1채팅인가(ex. 페이스북)? 그룹채팅인가(ex.디스코드)?그룹채팅이라면 인원의 제한이 따르는가?예상 트래픽, 처리 기준이 얼마나 되는가? (ft.DAU)플랫폼의 종류모바일앱인가 웹앱인가?하나의 계정이 여러 단말기로 접속할 수 있는가?채팅 메시지의 제한텍스트 이외의 파일, 링크 첨부 가능성이 있는가?메시지 개당 길이의 제한이 있는가?암호화의 필요성이 있는가?부가기능읽음 표시가 필요한가?접속 상태를 관리해야하는가? 요구사항을 정립했다면 이 요구사항을 충족시킬 시스템의 아키텍처를 그려보고 싶은데, 그 전에 사전적인 지식을 다시 상기시켜볼 필요가 있다. 채팅은 송신과 수신의 통신 시나리오가 다르..