서비스와 서비스끼리 혹은 DB, Redis 등이 서로 연결되다보면 너무 복잡한 구조가 만들어지고 이는 유지보수하기가 너무 어려운 결과물을 만들어낸다.
이런 문제를 해결하기 위해 링크드인에서 카프카라는 것을 만들어서 오픈소스로 제공하고 있다.
아파치 카프카는 Source Application과 Target Application의 결합을 약하게 만들어준다.
카프카는 토픽이라는 큐같은 개념을 이용하고 프로듀서는 큐에 정보를 적재하고 컨슈머는 토픽에서 정보를 꺼내간다.
또한 카프카는 고가용성을 보장해준다. 컴퓨터가 꺼져도 복구할 수 있음.
카프카는 다양한 데이터를 적재할 수 있는데 토픽이라는 공간에 데이터를 적재한다.
카프카는 토픽 여러개 생성 가능
프로듀서 → 토픽 → 컨슈머 흐름으로 데이터 전송
하나의 토픽은 여러개의 파티션을 가질 수 있다.
하나의 파티션은 데이터를 저장할 수 있는 큐같은 개념인데 프로듀서가 데이터를 넣으면 끝에서부터 하나하나 차곡차곡 쌓이게 된다.
파티션에서 카프카 컨슈머가 하나씩 정보를 읽어간다 → 이 때 데이터가 삭제되지 않는다. 왜 삭제되지않을까?