2024/06/24 8

[Apache Kafka] 커밋, Offset과 Lag

참고 블로그: https://mycup.tistory.com/435https://ggop-n.tistory.com/90 Offset파티션 내 각 레코드의 위치. 식별자파티션 내에서 유일하고 순사적으로 증가하는 숫자(64비트 정수) 형태중복 메시지 우려.멱등성 유지하는 로직 구현중복 메시지 제거 로직 구현컨슈머 그룹의 컨슈머들은 각각의 파티션에 대해 자신이 가져간 메시지의 위치 정보(오프셋)을 기록하고 있음 커밋각 파티션에 대해 현재 위치(오프셋)를 업데이트하는 동작 Lag만약 Producer가 데이터를 넣는 속도가 Consumer가 데이터를 소비하는 속도보다 빠르다면 컨슈머가 마지막으로 읽은 offset과 Producer가 마지막으로 넣은 offset의 차이가 발생한다. 이 차이를 Consumer Lag..

Solution 2024.06.24

[Apache Kafka] Consumer Group

참고 블로그:https://devlog-wjdrbs96.tistory.com/442https://medium.com/@greg.shiny82/실무-관점에서의-apache-kafka-활용-023d468f9182 하나의 토픽에 여러 컨슈머 그룹이 동시에 메세지를 가져올 수 있다.동일한 컨슈머 그룹 내 컨슈머가 추가되면 위와 같이 파티션 소유권이 바뀌게 되고, 이렇게 소유권이 이동하는 것을 리밸런스 라고 한다.컨슈머 그룹의 리밸런스를 통해 컨슈머 그룹에는 컨슈머를 쉽고 안전하게 추가할 수 있고 제거할 수도 있어 높은 가용성과 확장성을 확보할 수 있다.카프카가 다중 컨슈머(Multiple Consumer) 기능을 지원한다는 것이다. 다중 컨슈머 기능이란 여러 개의 컨슈머 그룹이 서로간의 상호 간섭 없이 각자의 ..

Solution 2024.06.24

[Apache Kafka] Topic / Partition / Record

Topic / Partition / RecordKafka는 여러 개의 Topic을 가질 수 있다.Topic은 여러 개의 Partition을 가질 수 있다. (즉, 파티션이란 Topic을 분할한 것)Partition은 처음 생성 이후 추가만 가능하고 줄일 수 없다. 왜 하나의 Topic을 여러 개의 Partition으로 분산 저장하는가?분산 저장하여 고가용성파티션을 늘렸을 때 메세지는 Round-Robin 방식으로 write하나의 파티션 내에서는 메세지 순서가 보장되지만, 파티션이 여러 개일 경우에는 순서 보장 X   레코드(Record) Partition 내 Producer가 보낸 데이터 내용타임스탬프, 메세지 키, 메세지 값, 오프셋, **헤더**로 구성메시지 키: 메시지를 순서대로 저장 (메시지 키가..

Solution 2024.06.24

[Apache Kafka] Kafka 개념

참고 블로그 ​https://devocean.sk.com/community/detail.do?ID=165483&boardType=DEVOCEAN_STUDY&page=1https://medium.com/@0joon/10%EB%B6%84%EC%95%88%EC%97%90-%EC%95%8C%EC%95%84%EB%B3%B4%EB%8A%94-kafka-bed877e7a3bc  Kafka 개요Kafka는 이벤트 처리 시스템 중 하나인 분산 메세지 큐 (비동기) 방식 이벤트 스트리밍 플랫폼이다. 인기 많은 식당에는 사람들이 많이 줄 서있다. 여기서 사람들 한 명 한 명을 데이터로 취급해보자.대기열(큐)이 없을 경우, 어떤 사람이 먼저 왔는지 구분이 되지 않는다. (질서 X)식당 내 수용 인원은 한정되어있으므로 대기열(..

Solution 2024.06.24

GWLB(Gateway Loadbalancer)

GWLB의 로드밸런싱 프로세스 ① 인터넷 클라이언트가 92.75.20.100으로 FTP 접속한다.② IGW에 유입된 트래픽은 라우팅 테이블의 안내를 Endpoint로 이동한다.③ 엔드포인트에 유입된 트래픽은 Endpoint Service를 통과해 Appliance VPC의 GWLB로 액세스 한다.④ 2개의 어플라이언스 중 하나(13.246.50.101)를 채택한다. GWLB는 클라이언트가 보낸 트래픽을 GENEVE 헤더로 캡슐화해 13.246.50.101로 전달한다. 전송 시 UDP 6081 포트를 사용한다.⑤ 가상 어플라이언스에 도착한 GENEVE 패킷은 역캡슐화를 거쳐 원본 패킷으로 변환된다.통과된 패킷은 다시 GENEVE 헤더로 캡슐화되어 GWLB로 전달된다.⑥ GWLB는 전달된 트래픽의 GENEV..

AWS/Service 2024.06.24

[교육] DevOps Engineering on AWS 3일차

소감3일동안 진행한 교육은 단기간에 많은 지식을 넣으려니 힘들었다.그래도 이해를 위한 교육자료와 경험을 해본 것으로 만족한다..ㅎㅎ이론AWS CodeDeploy ∙ EC2 배포의 경우 AWSCodeDeployRole 정책을 해당 서비스 역할에 부여함∙ ECS 배포의 경우 AWSCodeDeployForECS 정책을 부여함∙ Lambda 배포의 경우 AWSCodeDeployForLambda 정책을 부여함 IAM Access Analyzer∙ IAM에서 제공하는 도구∙ AWS 리소스에 대한 액세스 정책을 분석하고 모니터링하여 잠재적인 과도한 권한 부여나 보안 위험을 식별 AWS Parameter Store∙ AWS Systems Manager의 구성 요소∙ 애플리케이션과 시스템 설정, 비밀, 환경 변수 등 다..

[교육] DevOps Engineering on AWS 2일차

소감실습 환경이 주어지니 직접 서비스를 구축하고 경험할 수 있어서 너무 좋았다! 이론CD ∙ Continuous Delivery / Continuous Deploy  → 둘의 차이는 관리자의 승인 유무 S3∙ 파일시스템이 아니므로, 버킷 내 오브젝트들은 사실은 평면으로 존재하는 파일∙ 폴더를 프리픽스(prefix)라 지칭 암호화∙ SSE-KMS (서버에서 저장할 때 암호화 & AWS KMS에서 키 관리) Chef∙ Ruby 기반 IT 인프라 관리 및 배포 자동화 도구∙ 레시피(Recipes)과 쿡북(Cookbooks)으로 구성 Puppet∙ IT 인프라 관리 및 배포 자동화 도구∙ 매니페스트(Manifests)와 모듈(Modules)으로 구성 AWS CodePipeline3단계 간단한 파이프라인Stage..

[교육] DevOps Engineering on AWS 1일차

소감3일간 진행하는 DevOps Engineering on AWS 교육 1일차 내용 이론과 실습을 정리해보았다.공유받은 자료 속 이론들이 매우 유익했다. (공유 불가능 ㅠ)작성하면서 느낀 점은 전체적으로 너무 내가 알아볼 수 있게끔만 작성한 것 같다.이후에 또 따라할 수 있도록 혹은 누가봐도 실습 내용을 이해할 수 있도록 작성 해야겠다. 이론모노 (mono=하나)ㄹ리식∙ 큰 단일 플랫폼∙ 긴 개발 주기∙ 크기 조정의 복잡성∙ 단일 서버에서 cpu/mem 하나의 컴포넌트 추가하기 힘듦 → 확장성 한계 존재 DevOps 방식으로 운영한다는 것∙ CI/CD, MSA, IaC, Monitoring, Logging, etc. 를 사용한다는 것 모니터링 및 로깅∙ 운영 가시성 및 인사이트∙ 지표 수집∙ 성능 개선 ..