Dawn입니다. 사내에서 활용하고 있는 아파치 카프카에 대해서 더욱 알아가고자 공부를 하고 있습니다. 강의를 들으면서 내용을 제 생각과 섞어 정리한 부분이기 때문에 글 내용이 완전한 정답이라고는 할 수 없습니다. 더욱 나은 데이터 엔지니어가 되고자 노력하겠습니다. 감사합니다.
초기의 스타트업
기업이 막 생겨나서 초기 서비스가 시작되었을 때는 대게 이렇게 소스데이터(예를 들어 데이터베이스)가 어떤 서비스 내 타켓 데이터로 흘러가는 형식입니다. 서비스가 막 생겨났기 때문에 시스템 규모가 작아 위와 같은 형식이 문제가 되지는 않습니다. 누군가가 코드를 작성하고 데이터를 받아 추출 후 변환하고 로딩하게 되는겁니다.
기업이 확대
점점 기업이 발전하게 되면 자연스럽게 많은 소스 시스템을 갖게 되는데 이때 동일하게 타깃 시스템도 많아지게 됩니다. 정보를 공유하기 위해서는 소스 시스템이 모든 타깃 시스템에 데이터를 전송해야 하기 때문에 데이터 통합 문제는 위와 같이 복잡한 형태를 이루게 됩니다.
위와 같은 아키텍쳐는 예를 들어 4개의 소스 시스템이과 6개의 타깃 시스템이 있다면 서비스를 운영하기 위해서는 24개의 통합을 코드로 작성해서 소스데이터를 추출하고 변환하고 로딩해야 합니다. 여간 번거로운 일이 아니죠.
또한 모든 소스데이터가 모두 동일한 통신 프로토콜로 전송받는다는 보장도 없습니다. 이제는 TCP, HTTP, REST, FTP, JDBC 등으로 여러 방식으로 데이터가 전송되기 때문입니다.
그리고 이러한 데이터가 모두 같은 형식이라는 것도 보장할 수 없습니다. JSON이 될 수도 있고, CSV, Binary, Parquet 등등 다양한 형식으로 데이터가 구성되기때문입니다.
이러한 문제를 주먹구구식으로 해결한다고 했을 때 관리의 문제와 비용의 증가가 가장 큰 문제점이라고 할 수 있습니다.
지금은 대기업이 된 링크드인 또한 이와 동일한 문제가 있었습니다. 링크드인이 이러한 문제를 어떻게 풀었는지는 해당 링크를 통해 읽어보면 좋을 것 같습니다.
카프카
잠깐 언급했듯이 링크드인은 이러한 문제를 해결하고 이벤트 스트리밍 데이터를 한 곳에 모아서 관리하는 Kafka라는 시스템을 개발하게 됩니다. 카프카는 데이터 중개 플랫폼으로서 소스데이터가 생산(Producer)해내는 데이터를 스트림 형식으로 변환시키고 타깃 시스템이 데이터를 가져가거나 혹은 전달해주는 역할을 합니다. 중간 관리자 역할로 존재하고 분산되어 있던 데이터의 흐름을 연결해서 관리하기 때문에 링크드인은 더욱 확장성있는 이 시스템을 통해 다양한 서비스를 만들게 됩니다.
오늘은 카프카가 무엇인지 왜 필요한지에 대해서 간략하게 설명해 보았습니다. 정리도 하면서 글을 써 내려가니 복잡하고 어렵지만 제 글을 읽으면서 도움이 되셨으면 하는 마음에 마무리 지었던 것 같습니다. 다음에는 더 나은 글로 인사드리겠습니다. 감사합니다.