728x90

1.topic 이란?

카프카 구조

 

Topic이란 논리적인 표현이며 메시지 저장소이다.

왼쪽의 producer가 토픽을 발행하면 우측의 consumer가 소비하는 형식이다.

토픽은 데이터베이스의 테이블 혹은 파일시스템의 폴더와 유사한 성질을 갖고 있따. 

또 목적에 따라 각각의 이름을 가질 수 있는데 무슨 데이터를 담는지에 따라 명확하게 명명하는 것을 권장한다. 

 

2. partition이란?

데이터 처리를 효율적으로 하기위한 핵심 요서. 파티션은 큐를 나눠서 병렬처리를 가능하게 하는 기본 단위, kafka의 토픽은 하나 이상의 파티션으로 나눠져 있다. 이를 통해 메시지가 병렬로 처리될 수 있게 된다.

파티션 개수는 지정 가능 하며 0번부터 오름차순으로 생성된다. 또 topic 내의 파티션들은 서로 독립적이다.

 

offset 이란 이벤트 메세지의 위치를 나타내는 값. 

 

이 partition 안에 offset 이 존재하는데 다른 partition 의 offset 과는 다르다.

ex) partion0 offset 1 != partion1 offset 1

 

같은 partion 안에서는  순서가 보장 되며 데이터는 변경이 불가능(immutable) 하다.

 

 

하나의 토픽은 하나이상의 Partition으로 구성

병렬처리(Throughput - 처리율  향상)을 위해서 다수의  Partiotion사용

 

 

 

*CommitLog(추가만 가능하고 변경 불가능한 데이터 스트럭처, 데이터 이벤트는 항상 로그 끝에 추가되고 변경되지 않음)

 

 

3. Segment란?

발행된 메시지 데이터가 저장되는 실제 물리 File 

segment file 은 지정된 크기보다 크거나 지정된 기간보다 오래되면 새 파일이 열리고 메시지는 새파일에 추가된다.

 

파티션당 오직 하나의 Segment가 활성화된다.

 

segment 들은 Rolling 정책을 쓴다.

log.segment.bytes(default 1 GB), log.roll.hours(default 168 hours)

 

 

log 관리하는 방법과 비슷

 

 

 

728x90

'인강 정리 > Kafka 완전 정복' 카테고리의 다른 글

kafka 기본 개념 및 구성(4)  (0) 2024.10.31
kafka 기본 개념 및 구성(3)  (0) 2024.10.30
kafka 기본 개념 및 구성(2)  (0) 2024.10.21
kafka 란?  (0) 2024.10.14
728x90

매일 꾸준히 작업을 하고싶지만 못하는 관계로  개인 프리티어로 사용하기에 비용문제도 있기에 중간은 샐력하고  소스 수동 배포 부분만 따라서 작업해보기로 한다.

 

FrontEnd/ BackEnd  소스 수동 배포

 

1. ec2를 생성 및 key pair 는 이전 생성한 my ec2 key pair  를 활용하여 ec2 생성

 

 

 

2. yum 업데이트 후 nginx 설치

(실습 강의 에서는  nginx 설치를 amazon-linux-extras 하라고 되어 있지만 이는 이제 사용 불가)

sudo yum update -y
sudo yum install nginx -y

 

nginx 설치 확인

rmp -qa | grep nginx

 

 

3.aws 공식문서 참조하여 node js 설치 

https://docs.aws.amazon.com/ko_kr/sdk-for-javascript/v2/developer-guide/setting-up-node-on-ec2-instance.html

 

자습서: Amazon EC2 인스턴스에서 Node.js 설정 - AWS SDK for JavaScript

노드 설치는 현재 Amazon EC2 세션에만 적용됩니다. CLI 세션을 다시 시작하는 경우 nvm을 사용하여 설치된 노드 버전을 활성화해야 합니다. 인스턴스가 종료되면 노드를 다시 설치해야 합니다. 다음

docs.aws.amazon.com

4. 메이븐 설치(메이븐 프로젝트의 경우)

 

yum install java java-devel maven

 

mvn 명령어 로 설치 확인

mvn --version

 

5. mysql 설치 

sudo yum update

wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

sudo yum localinstall mysql57-community-release-el7-8.noarch.rpm

sudo yum install mysql-community-server

sudo yum install mysql

 aws lunx 단순 설치시 안됨

 

 

진행 하는 부분과 다르게  mysql --version 대신 아래 명령어로 확인

rpm -qa | grep mysql

 

6. git 설치 이후 testCode 가져오기

 

git clone https://github.com/janghomoon/frontend-test

 

7. 소스 경로 npm 설치 및 build

npm install
-- 설치 완료 후
npm run build

 

*현재 소스코드 node 버전 문제로 설치된 20 버전이 아닌 16버전으로 다운그레이드 

 

아래 커맨드 참조 

nvm 가져오기 (노드 버전 매니저)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

nvm 설치 확인
command -v nvm
nvm 로드 
source ~/.bashrc

nvm 설치
nvm install <버전>  
 
나는 16 버전

nvm install 16



설치된 버전 확인 및 기존 버전 제거 

# 설치된 버전 목록 확인
nvm list  
# 사용할 버전 선택
nvm use <버전>  
node -v  


nvm uninstall

 

위 버전 다운그레이드 이후 다시 재빌드 

 

 

 

 

8.  실행 

* nohuhb으로 백그라운드에서 실행
nohub npm start &


실행 확인 
netstat -ntlp

이후 curl 연결 확인

curl -v localhost:3000

 

만약 nohup 설치되어 있지만 실행 안될경우

설치여부 확인
which nohup

echo $PATH

export PATH=$PATH:/usr/local/bin  # nohup이 설치된 경로로 변경



영구 저장 필요 시

echo 'export PATH=$PATH:/usr/local/bin' >> ~/.bashrc
source ~/.bashrc

 

아래는 curl 결과

 

 

 

 

9. nginx conf 설정

미리 작성한 conf 파일 이동

cp default.conf /etc/nginx/conf.d/

빌드 파일 복사 이동 
cp -r buid/* /usr/share/nginx/html/

실행
sudo  systemctl start nginx

확인
 systemctl start nginx

 

 

front 접속 결과

 

 

 

728x90

'인강 정리 > DevOps & MSA' 카테고리의 다른 글

소규모시스템 구축(5)  (0) 2024.10.21
소규모시스템 구축(4)  (1) 2024.10.19
소규모시스템구축(2)  (0) 2024.08.01
소규모시스템 구축(1)  (0) 2024.08.01
VPC Peering  (0) 2024.07.30
728x90

저도 많이 쓰고 실무에서 많이쓰 는 kafka를 좀 더 정확하게 알 기위해 정리 하고자 작성한다.

카프카(Kafka)는 파이프라인, 스트리밍 분석, 데이터 통합 및 미션 크리티컬 애플리케이션을 위해 설계된 고성능 분산 이벤트 스트리밍 플랫폼이다.

 

 

kafka 의 탄생은 linked In 에서 탄생

 

 

 

kafka의 특징

 

 

 

kafka 사용 되는 곳

 

 

카프카 이외에도 rabbitMQ, pulsar 등이 있지만 성능 상 카프카가 가장 좋음(사용량이 적다면 rabbitMQ도 고려할만한다)

아래는 벤치마크 표

 

728x90

'인강 정리 > Kafka 완전 정복' 카테고리의 다른 글

kafka 기본 개념 및 구성(4)  (0) 2024.10.31
kafka 기본 개념 및 구성(3)  (0) 2024.10.30
kafka 기본 개념 및 구성(2)  (0) 2024.10.21
kafka 기본 개념 및 구성(1)  (0) 2024.10.18
728x90

EC2/RDS/ ELB 생성

 

1. 사용할 ec2 생성

 

2. RDS 서브넷 그룹 생성

 

RDS DB 생성

 

 

단일 DB

기존에 생성해둔 VPC 와 서브넷 그룹  보안그룹을 선택

 

아래와 같이 생성 완료

 

 

ELB 생성

 

ELB 대상그룹  설정

 

http 80 대상그룹 생성

아래와 같이 고급 상태 검사  재정의로 변경 

 

이후 8080 대상그룹 추가 생성 하여 할당 (spring boot 테스트용)

 

ELB 생성

Application LoadBalancer 생성

아래 요약과 같이  보안그룹과 매핑  및 리스너 정보 추가

 

 

생성 완료

인증서 문제로 https 설정 하지 않는걸로

728x90

'인강 정리 > DevOps & MSA' 카테고리의 다른 글

소규모시스템 구축(4)  (1) 2024.10.19
소규모시스템 구축(3)  (2) 2024.10.18
소규모시스템 구축(1)  (0) 2024.08.01
VPC Peering  (0) 2024.07.30
OpenVPN  (0) 2024.07.30
728x90

구축 목표

 

Route 53 / ACM 생성(비용 문제로  방법만 확인)

AWS Certificate Manager (ACM) 은 웹 사이트와 애플리케이션을 보호하는 공개 및 사설 SSL/TLS X.509 인증서 및 키를 생성, 저장 및 갱신하는 복잡한 작업을 처리합니다. AWS ACM에서 직접 발급하거나 서드 파티 인증서를 ACM 관리 시스템으로 가져오는 방법으로 통합 AWS 서비스에 대한 인증서를 제공할 수 있습니다. ACM 인증서는 단일 도메인 이름, 여러 특정 도메인 이름, 와일드카드 도메인 또는 이러한 도메인의 조합을 보호할 수 있습니다. ACM 와일드카드 인증서는 원하는 만큼의 하위 도메인을 보호할 수 있습니다. 또한 내부 PKI의 어느 곳에서나 사용할 수 있도록 서명한 ACM 인증서를 내보낼 수 있습니다. 

 

 

보안그룹 생성(ALB / EC2 / RDS)

보안그룹 목표

 

위 표를 참조하여 보안그룹 생생

728x90

'인강 정리 > DevOps & MSA' 카테고리의 다른 글

소규모시스템 구축(3)  (2) 2024.10.18
소규모시스템구축(2)  (0) 2024.08.01
VPC Peering  (0) 2024.07.30
OpenVPN  (0) 2024.07.30
bastion host 구성 및 NAT GW  (0) 2024.07.30
728x90

VPC Peering 이란?

VPC Peering이란 서로 다른 VPC간 통신이 가능하도록 연결하는 것을 말한다.

 

대표적으로 서비스 구분이나 관리 목적에 따라 VPC를 구분해놓았는데 부득이하게 각 VPC간 통신이 필요할때

또는 구성해놓은 VPC 에 더 이상 사용할 수 있는 IP가 없을때 사용한다.

단. CIDR  대역이 겹치면 안된다.

 

 

728x90

'인강 정리 > DevOps & MSA' 카테고리의 다른 글

소규모시스템구축(2)  (0) 2024.08.01
소규모시스템 구축(1)  (0) 2024.08.01
OpenVPN  (0) 2024.07.30
bastion host 구성 및 NAT GW  (0) 2024.07.30
VPC  (0) 2024.07.30

+ Recent posts