전체 글134 [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. [Kafka] Kafka Connect 란? - 카프카란? https://mystudylab.tistory.com/105 KafkaConnectKafka Connect는 손쉽게 Kafka를 이용하는 pipeline을 구성해주는 도구.생성되는 Data pipeline은 데이터 이동과 변환이 목적이며 , 분산된 환경에서 수행하기에 고가용성과 부하분산을 구현.다양한 source와 target을 지원하며, source 데이터를 target 에 적재합니다. 구성요소1. Connector- Source connector: 데이터 소스에서 데이터를 추출해 카프카에 데이터 적재- Sink connector: Kafka에서 데이터를 목적지로 전송2. Task- 커넥터는 하나 이상의 작업을 가질 수 있음- Task는 실제로 데이터를 이동시키는 단위이며,여러 작업은.. 2024. 6. 5. [Redis] 레디스 데이터 백업 방법 TL;DR- RDB와 AOF 두 가지 백업 방식을 지원한다.- 레디스 복구 시점은 재시작될 때뿐이며, AOF or RDB 존재하면 파일 로드한다. 데이터 영구 저장- 레디스 모든 데이터는 메모리에서 관리된다.- 장애로 인스턴스가 재시작되면 데이터가 손실될 수 있다.- 가용성을 위한 복제 구조이지만 백업과 복제는 목적부터 다르다는 것을 알아야한다.(복제는 가용성, 백업은 장애 상황에서 데이터 복구) - 의도하지 않게 데이터를 삭제하는 커맨드가 실행되는 경우는 데이터를 안전하게 유지할 수 없음 AOF, RDBAppend Only File- 처리한 모든 쓰기 작업을 차례대로 기록- 복원 시에는 파일을 다시 읽어가며 데이터 세트 재구성- RESP 형태로 저장- 파일 크기가 크고 주기적으로 압축 필요하지만 원.. 2024. 6. 2. 이벤트 기반 아키텍처(Event Driven Architecture, EDA) Event Driven Architecture시스템 구성 요소들이 이벤트와 이벤트 핸들러로 서로 소통하는 구조. 관심사를 분리해 전체적인 결합도를 낮추기 위해 사용.유연한 구조, 뛰어난 확장성이 특징추가적인 컨슈머 필요하면 구독만 추가하면 됨.구성 요소 4가지이벤트이벤트 발행자이벤트 리스너버스 (통로)Internal Event vs External EventInternal Event시스템 내 컴포넌트 간 통신목적내부 도메인 로직과 부가적인 정책을 분리하기 위해서long transaction 분리External Event시스템 간 통신카프카와 같은 이벤트 스트리밍 플랫폼, 혹은 메시지 브로커를 이용해서 처리관련 영상우아한형제들 EDA 예시(외부이벤트, 스프링)https://www.youtube.com/wa.. 2024. 5. 29. [연동] Stripe Stripe?온라인 결제 처리 솔루션다양한 결제 방식과 금융 서비스를 통합하여 비즈니스가 더 쉽게 결제를 수락하고 관리할 수 있다. 개념Customer- 고객 Invoice- 청구서- 만료 기한이 있음 Payment- 결제 건- 결제 대기, 환불 등 다양한 상태가 있음 Payment Link- 특정 목적을 가지고 결제 링크를 생성할 수 있음.- 다수가 하나의 링크를 결제 가능 개발 SDKhttps://www.npmjs.com/package/stripe stripeStripe API wrapper. Latest version: 15.8.0, last published: 5 days ago. Start using stripe in your project by running `npm i stripe`. Th.. 2024. 5. 29. 이전 1 2 3 4 5 ··· 14 다음