크롤링부터 데이터 플랫폼까지 1.서비스 아키텍쳐

김능준·2022년 5월 23일
0
post-thumbnail

이 글은 Analytics 및 서비스에 필요한 데이터 아키텍쳐와 파이프라인 개발을 위한 A to Z의 첫 번째 글이다. 이번 글의 주제인 아키텍쳐 외에도 전체적인 프로젝트 진행 계획 또한 이 곳에서 설명하고자 한다.


들어가며

이 시리즈는 지인과 함께 구상중인 서비스를 실제 구현하며 알게된 것과 문제를 해결해 나가는 과정을 정리한 글이다.
상세한 비즈니스 내용이나 핵심 기술을 밝히지 않기 위해 일부만을 공유할 예정이지만 그 과정에서 내가 겪은 오류나 생각을 공유해 나갈 예정이다.


개요

현재 개발중인 서비스를 요약하자면 기업 사용자를 위한 정보를 제공하는 대시보드이다. 현재 협업을 제안한 팀장과 2명이서 진행중이며 나는 비즈니스 관련 업무와 분석 모듈을 제외한 IT 인프라 전반을 맡게 되었다.

여기저기 손을 대 폭 넓은 지식을 가지고 있다고 자부하지만
서비스 아키텍트를 구상하고 구현해 본 경험이 없기 때문에 큰 그림을 그리는데에 조심스럽고 신중하게 접근하기로 하였고
이를 위해 필요한 것을 아래와 같이 기능 별로 구분하였다.

1.데이터 수집 모듈(크롤링)
2.데이터 처리 모듈
3.데이터 분석 모듈
4.시각화 & Presentation 모듈

기본 적으로 데이터 플랫폼을 이루는 구성요소들을 고려하여 유사한 방식으로 모듈을 구분하였고 각각의 파트를 MSA 방식으로 구현하려고 계획 중이다.


고려 사항

그림(추후 업데이트)-MSA,Kubernetes,Docker,Kafka,NoSQL,RDBMS,AI관련 무언가...
현재 전형적인 아키텍쳐나 범용성 높은 SW 위주로 조금씩 큰 그림을 그려가고 있다.

이외에 주요하게 주목해야 할 사항들을 정리해보자면,

  • 왜 MSA 방식을 써야하며 어떤 단위로 구분할 것인가?
    - 현재 초기 비즈니스 모델 이후의 확장 방향이 확정되지 않았기 때문에 이후의 서비스 확장에 최대한 대응할 수 있도록 구조를 잡고자 하였고 이를 위해 다소 익숙하지 않은 MSA방식의 구조를 취하고자 하였다. 서버 로직을 별도로 구현하지 않고 Airflow와 스크립트 파일을 통해 필요한 작업을 수행할 예정이다.(추후 변경 가능)
  • 각 모듈 별로 활용 목적에 맞게 어떤 DB를 사용해야 하는가?
    - 현재 뉴스 본문을 크롤링한 데이터를 몽고 DB에 저장하고 있고 장기적으로는 Hive와 BigQuery,Redshift 사용을 고려 중이다.(이에 대한 추가 리서치 필요) MongoDB를 사용한 이유는 장문의 텍스트 저장 및 다양한 형태의 크롤링 결과에 대응할 수 있도록 자유로운 schema를 사용하기 위함이다. 엑셀파일에서도 데이터를 추출 중에 있는데 이는 팀원과 손쉬운 공유를 위해 sqlite3에 저장하고 있다.
  • 어떤 솔루션과 및 툴을 사용해 효율적인 데이터 관리&처리를 수행할 것인가?
    - 빠른 프로토타입 개발과 기술적인 역량 성장을 동반한 개발은 호환이 잘 되지 않는 전략이다. 또한 기술적인 이념을 잘 녹여 상황에 맞게 툴을 적용해야 하는데 개인적인 욕구로 인해 이를 혼동하고 있는지 점검이 필요하다.

진행상황

데이터 1차 수집 완료

  • 크롤링을 통해 20180101부터 20220520까지 약 4년치의 데이터 수집 및 DB 저장 완료
  • xlsx파일 데이터 추출 및 DB 저장 완료



ToDo

  • (시급)뉴스 본문 내 문장구분과 키워드 포함 문장 추출 작업 필요
  • 현재 라이트 하게 구현된 크롤링 스크립트의 모듈화 및 성능개선
  • 현재 Index로 구분&매칭(키워드-뉴스본문s) 중인 data collection 연결(방법에 대해 리서치 필요)
  • 정규 표현식을 사용한 데이터 전처리 스크립트(python X) 작성



참고

회사 내 IT 아키텍트분께 조언을 구하거나 타 기업의 빅데이터 플랫폼 아키텍쳐를 참고하여 구조에 반영중

profile
수제맥주보다 필라이트를 좋아하는 사람

0개의 댓글