본문 바로가기

분류 전체보기148

[Kafka] Log Compaction, Message Compression TL;DR- 모두 저장 공간 효율을 위해 사용될 수 있는 기능이다.- Log Compaction은 같은 record key를 갖는 가장 최신 로그만 남기고 삭제하는 것을 말한다.- Message Compression은 메시지 자체를 압축해서 전달하는 것을 말한다. 1. Message Compression (메시지 압축)- Message Compression은 메시지의 크기를 줄이는 기술- 메시지 크기를 줄임으로써 네트워크 대역폭을 절약하고 저장 공간을 효율적으로 사용하며, 더 빠른 전송 및 처리 속도를 제공- 주로 사용되는 압축 알고리즘에는 Gzip, Snappy, LZ4 등이 있음- 프로듀서 레벨 압축이 있고, 브로커 레벨 압축이 있음- 프로듀서 레벨 압축은 전송되는 데이터 양을 줄이기 위해 데이터가 .. 2024. 7. 30.
4Ls (Liked, Learned, Lacked, Longed For) 4Ls는 팀의 활동에 대한 네 가지 측면을 반영하여 회고하는 방법입니다. 4Ls는 팀의 활동에 대한 네 가지 측면을 반영하여 회고하는 방법입니다.Liked (좋았던 점): 팀이 특히 좋았다고 느낀 점을 공유합니다.예시: "새로운 도구 도입 덕분에 생산성이 향상되었다."Learned (배운 점): 팀이 배운 것들, 새로운 통찰이나 지식을 공유합니다.예시: "효과적인 팀 커뮤니케이션이 프로젝트 성공에 얼마나 중요한지 깨달았다."Lacked (부족했던 점): 팀이 필요했지만 충분하지 않았던 것들을 논의합니다.예시: "설계 단계에서의 명확한 가이드라인이 부족했다."Longed For (바랐던 점): 팀이 원했지만 이루지 못한 것들, 다음에 시도하고 싶은 것들을 이야기합니다.예시: "더 많은 시간적 여유를 가지고.. 2024. 7. 27.
KPT 회고 (Keep, Problem, Try) KPT는 팀이 무엇을 유지하고, 문제를 해결하며, 새로운 시도를 할 것인지를 논의하기 위한 프레임워크입니다.  Keep (유지): 잘 된 점 또는 효과적이었던 것을 계속해서 유지하기 위해 기록합니다.예시: "매일의 스탠드업 미팅이 팀의 협력을 증진시켰다."Problem (문제): 문제가 있었던 점이나 개선이 필요한 부분을 논의합니다.예시: "테스트 과정에서 커뮤니케이션 오류로 인해 시간 지연이 발생했다."Try (시도): 다음 스프린트에서 시도해 보고 싶은 새로운 아이디어나 개선 방안을 제안합니다.예시: "다음 스프린트에서는 테스트 계획을 더욱 상세히 작성하고 팀 내 모든 구성원과 공유하자." 예시: 웹 애플리케이션 개발 프로젝트KPT 예시Keep: "주기적인 코드 리뷰가 코드 품질 향상에 도움이 되었다.. 2024. 7. 27.
5F 회고 (Fact, Feelings, Findings, Future Action, Feedback) 5F는 의사결정 또는 분석 과정을 지원하는 다섯 가지 요소를 의미하며, 특정 분야나 상황에 따라 다르게 정의될 수 있습니다. 일반적으로는 다음과 같은 다섯 가지 요소를 포함합니다:Fact (사실): 객관적이고 검증 가능한 데이터나 정보. 예를 들어, 회사의 매출액, 시장 점유율, 고객 만족도 조사 결과 등이 있습니다.Feeling (감정): 개인이나 조직의 주관적인 감정이나 의견. 예를 들어, 직원들이 새로운 프로젝트에 대해 느끼는 기대감이나 우려 등이 포함될 수 있습니다.Finding (발견): 분석을 통해 도출된 통찰이나 새로운 사실. 예를 들어, 특정 제품이 특정 연령대에서 인기가 있다는 사실을 발견한 경우가 이에 해당됩니다.Forecast (예측): 미래에 대한 예측이나 전망. 예를 들어, 시장 .. 2024. 7. 27.
[Kafka] 트랜잭션, exactly-once Kafka Transaction?스트림 처리 애플리케이션을 위해 도입된 기능이다. exactly-once 을 보장해준다.동작트랜잭션 프로듀서를 사용할 경우, 트랜잭션 코디네이터가 트랜잭션를 관리하게 된다.출력 토픽에 레코드 저장, 오프셋 증가 2가지 작업이 동시에 커밋되는 것을 보장한다. (Atomic multipartition write)트랜잭션이 해결할 수 있는 문제들1. 앱 크래시로 인한 중복 메시지 문제앱이 토픽에 메시지를 쌓았는데 커밋은 못한 경우 중복 메시지가 쌓일 수 있음.Atomic multi partition write 보장으로 해결2. 브로커 응답 문제로 인한 인한 중복 메시지 문제브로커가 커밋은 성공했는데 성공 응답에 실패한 경우, 프로듀서는 재요청을 보내며 중복 메시지가 쌓일 수 있.. 2024. 6. 24.
[Security] SQL 인젝션 사이드 프로젝트로 만든 서비스에 에러 로그가 올라와 확인했는데 누군가 취약점을 파악하기 위한  악의적인 시도를 한 것으로 확인되었다.SQL 인젝션 공격을 시도했는데 다행히 대응이 되어 있어서 문제는 없었다. 보안 관련 이슈가 직접적으로 발생한 것은 처음이라 기록한다.악의적인 요청SQL 인젝션?웹 애플리케이션의 데이터베이스와 상호 작용하는 SQL 쿼리를 조작하여 악의적인 SQL 명령을 삽입하고 실행할 수 있도록 하는 보안 취약점입니다. SQL 인젝션 공격은 데이터 유출, 데이터베이스 조작, 관리자 권한 탈취  /api/v1/products/-1%20OR%202+106-106-1=0+0+0+1이 공격은 -1 OR 2 + 106 - 106 - 1 = 0이라는 조건을 만들어, 논리적으로 참인 구문을 삽입하여 .. 2024. 6. 8.
[ITSM] SLA(Service Level Agreement), SLO(Service Level Objectives), SLI(Service Level Indicators) SLA(Service Level Agreement)- 서비스 수준 계약은 가동 시간, 대응 및 책임과 같은 측정 가능한 메트릭에 대한 공급자와 고객 간의 계약이며, 약속을 이행하지 못했을 때의 결과를 나타낸다.- 재정적 불이익, 크레딧 혹은 라이센스 연장이 포함된다. SLO(Service Level Objective)- 서비스 수준 목표는 가동 시간 또는 대응 시간과 같은 특정 메트릭에 대한 SLA 내 계약- SLA가 공식적인 계약이라면, SLO는 고객에게 하는 개별적인 약속- SLO는 고객의 기대치를 설정하고 IT 팀에게 어떤 목표를 달성하고 측정해야 하는지 알려줌 SLI(Service Level Indicators)- 서비스 수준 지표는 서비스 성능을 측정하는 지표로, SLO가 잘 지켜지고 있는지 판.. 2024. 6. 6.
[Kafka] KSQL KSQL?Apache Kafka를 위한 SQL 엔진, SQL과 비슷한 문법으로 복잡한 스트리밍 데이터를 쉽게 처리하고, 실시간 대시보드, 모니터링 시스템 및 기타 실시간 애플리케이션을 구축할 수 있음. Stream, TableStream Object연속적인 record의 흐름, 집계보다 데이터 자체를 담는 경우가 많음 Table Object최신상태를 보여주는 데이터를 넣는경우가 많음.재고, 계좌 잔액 등을 생각하면 좋을 듯, key-value형식으로 구성되어 있음  사용 모습Stream 생성 쿼리 2024. 6. 5.
[Kafka] Kafka Stream Stream?- 컴퓨터 과학에서 스트림이란 연속적인 데이터의 흐름, 일정한 데이터 조각의 연속을 의미한다- 일반적으로 Stream 은 업데이트하지 않고, 지우지 않고 쌓기만 한다. 끝이 정해지지 않고 계속되는 불규칙한 데이터를 연속으로 반복 처리할 때 이 또한 스트림 처리라고 부른다.- Data가 순차적으로 도착하여 특정한 컨텐츠를 구성하거나 그 자체가 컨텐츠가 되는 데이터의 흐름 흔히 음악, 영상 등이 실시간으로 송출되어 컨텐츠를 구성할 때 Streaming Service 라고한다. Kafka Streams?  - Kafka Stream은 데이터를 연속적인 레코드로 취급하고, Kafka에 저장된 토픽에서 데이터를 읽어 들여 처리하며, 처리 결과를 다시 Kafka 토픽에 출력해주는 Library, Fra.. 2024. 6. 5.
[Kafka] MirrorMaker2 MirrorMaker2?Kafka를 MultiCluster 로 이용할 때, Cluster간 데이터 이동이 필요할 때 사용하는 도구 패턴1. Solid Cluster 대응- Solid Cluster: 데이터베이스 및 분산 시스템 분야에서 고가용성, 확장성, 일관성을 보장하는 클러스터링 기술, Active-Active or Active-Standby) 2. Cluster 마이그레이션- 마이그레이션 후 Routing 만 변경하여 운영 중단 없도록 하는 것이 목적- 마이그레이션 완료 전까지 Old Cluster 데이터를 New Cluster 로 동기화 3. 사용용도의 구분과 부하분산, 안전성 추가 확보- 같은 데이터를 적재하지만, 클러스터마다 사용용도가 다른 경우 2024. 6. 5.