작성
·
248
·
수정됨
답변 2
1
안녕하십니까,
질문 하신 내용 중 '어떻게 처리한다' 가 너무 포괄적이라 어떻게 답변을 드려야 할 지 모르겠습니다. Kafka를 의미하는 건지, DB에 저장하는 것을 의미하는 건지, 아님 그냥 Storage에 올려서 나중에 Spark 같은 오픈 소스로 보는 것을 의미하시는건지..
좀 더 상세하게 궁금하신 것을 다시 올려주시면 좋겠습니다만, 일단 Rough한 제 답변은
먼저 하루에 10G, 20G가 오늘날 엄청난 양의 데이터 인지는 의견이 갈릴 수 있습니다. 하루에 10G라면 한달에 300G, 1년은 3.6TB(20G 기준으로 7.2TB) 정도 됩니다.
이 정도 Transaction은 Kafka로 처리하는 데 큰 문제가 없습니다. 한개 노드만 사용하여도, 제 예상으로는 4CPU Core, 일반 디스크 Storage 레벨에서 병목없이 처리 가능합니다.
근데 일반적인 온라인 DB(Oracle/PostgreSQL/MySQL등)에서는 상당히 많은 수준의 데이터 입니다. 이 정도 수준의 데이터를 처리하려면 꽤 높은 하드웨어 스펙과 SSD 기반의 Storage가 필요해 보입니다. 따라서 하루에 10G 데이터 전체가 온라인 DB에서 필요한 데이터 인지 검토가 반드시 필요합니다. 로그성 데이터의 경우 Summarization을 한다던가 적절한 필터링으로 온라인 DB에 로딩할 부하를 조절해 주는게 비용 절감이나 관리 차원에서 좋을 것 같습니다.
따라서 보통은 온라인 DB에 바로 올리지 않고 Object Storage에 하루에 10G의 데이터를 저장하고 이를 Spark이나 다른 오픈 소스 빅데이터 솔루션으로 관리하거나 온라인 DB또는 Data warehouse DB에 올릴 경우는 이들 정보를 별도로 가공(ETL등을 통해)해서 정보를 추출하고 저장하는 단계를 거칩니다.
그래서 Kafka와 Object Storage, 온라인DB, 빅데이터 솔루션, DW들의 시스템과 결합되는 일반적인 아키텍처를 말씀드리면
10G 데이터 Kafka 전송 및 Topic 저장 -> Consumer로 Object Storage 저장(또는 Kafka Connect로 연동) -> Spark등으로 전체 file의 정보를 분석하거나 별도의 ETL을 거쳐서 온라인 DB나 DW에 저장하는 방식이 있습니다.
물론 Object Storage를 거치지 않고 그냥 Consumer레벨(또는 Connect레벨)에서 데이터를 필터링해서 온라인 DB등에 저장하는 방식도 있을 수 있으며, 아예 분석 자체를 Kakfa 기반의 ksqlDB에서 수행할 수도 있습니다.
원하시는 답변이 아니면 다시 글 부탁드립니다.
감사합니다.
0
안녕하세요 강사님
우선 상세한 답변 감사드립니다.
이런 큰 용량의 데이터를 기업 입장에서 계속 저장한다면 큰 부담이 될 듯 싶어서 실제로는 저장 및 관리를 어떻게 하는지 궁금해서 여쭤보았습니다.
추가적으로 질문 드리면 보통 기업에서 이렇게 쌓인 데이터를 폐기한다면 보통 얼마 동안의 주기로 폐기를 할까요?
제가 아직 학생이라 현업에서 일어나는 일이 궁금해서 질문드리는데 질문이 서툰점 죄송합니다.
감사합니다.
기업마다 가지고 있는 하드웨어나 스토리지의 용량이 달라서 얼마동안의 주기로 폐기하는 것은 다 다릅니다.
보통 스토리지 관리는 전체 사이즈의 60%까지는 평균적으로 괜찮다고 보는 정도이며, 그 이상이 될 경우 용량 증설이나 아님 기존 데이터 삭제를 고려하기 시작합니다. 회사에 따라서는 80%선을 기준으로 하는 경우도 있습니다.
하지만 법적으로 반드시 특정 기간(예를 들어 10년) 동안 보관해야 하는 데이터들도 있습니다. 그래서 스토리지 용량을 증설하거나 좀 더 가격이 싼 스토리지로 이관하더라도 해당 데이터는 특정 기간동안 보관해야 합니다. 가령 개인의 계좌 거래 내역, 회사의 매출 내역등은 특정 기간 동안 보관해야 합니다.
이와는 반대로 회원이 탈퇴하는 경우 반드시 개인정보를 삭제하거나 익명 처리해야 하는 경우들도 있습니다.