서론

현대 사회는 끊임없이 변화하고, 그 변화의 속도는 점점 빨라지고 있다. 이런 속도에 따라가기 위해서는 빠르고 정확한 정보의 접근성이 중요하다. 우리의 프로젝트인 "실시간 뉴스 키워드 시각화 서비스: NewsCloud"는 이러한 정보 접근성을 향상시키기 위해 개발되었다. NewsCloud는 Times, BBC, CNN 등의 신뢰할 수 있는 뉴스를 실시간으로 수집하며, 수집된 기사에서의 키워드 분석이 이뤄지고 각각의 키워드를 빈도수에 따라 시각적으로 표현하는 워드 클라우드(Words Cloud)로 제공한다. 워드 클라우드를 제공함으로써 사용자가 하루 동안 전 세계 언론에서 어떤 이슈를 다루고 주목하고 있는지 한 눈에 파악할 수 있기를 목표로 한다.

본론

i) NewsCloud 설계

NewsCloud의 시스템 아키텍처는 데이터 수집, 데이터 분석, 데이터 시각화의 세 가지 핵심 요소를 기반으로 한다. NewCloud를 개발하기 위한 아키텍처로 <이미지 1>과 같이 구성하였다.

                                                                           <이미지 1> 아키텍처

                                                                       <이미지 1> 아키텍처

Spring Server를 사용하여 뉴스 데이터를 15분 주기로 수집하고 데이터 추적과 변경 감지를 위해 Kafka를 사용한다. Kafka를 통해 저장된 데이터에서 각 뉴스에서의 키워드를 추출하고 키워드의 빈도수로 워드 클라우드를 제공한다. 데이터를 수집하는 서버와 데이터가 저장되는 Source DB, Target DB의 사용량과 이상감지를 모니터링하기 위해 Eureka와 Grafana를 사용한다.

데이터 수집을 위해 Spring Server를 사용해 Times, BBC, CNN 등의 뉴스 소스로부터 API 요청을 보내며 15분마다 100개의 새로운 기사를 수집한다. 수집된 데이터는 Spring Cloud Config를 통해 주입받은 DB 정보를 기반으로 MySQL에 저장된다.

                                                <이미지 2> Spring Server를 통해 DB에 데이터 저장

                                            <이미지 2> Spring Server를 통해 DB에 데이터 저장

데이터베이스에 실시간으로 변화가 감지되면 이를 Kafka에 전송해 원본 데이터베이스의 변화를 추적하고 변경된 내용을 Target DB에 동기화한다. 이 과정을 통해 원본 데이터베이스와의 데이터 동기화를 실시간으로 유지할 수 있으며, 실시간 뉴스 분석을 가능하게 해 뉴스 트렌드의 실시간 반영을 가능하게 한다. Kafka의 토픽과 토픽 메시지는 Kafdrop을 통해 확인 및 관리했고, 뉴스 기사의 정보들이 정상적으로 데이터베이스에 생성되는 것을 확인할 수 있다.

                                    <이미지 3> Kafka 토픽 메시지 확인

                                <이미지 3> Kafka 토픽 메시지 확인

                                                                     <이미지 4> 키워드 추출

                                                                 <이미지 4> 키워드 추출

데이터베이스에 저장된 데이터는 뉴스 제목에서 직접적으로 키워드를 추출한다. 키워드 추출 방식은 복잡한 자연어 처리 기술이나 TF-IDF 알고리즘을 사용하지 않고, 뉴스 제목에 나온 단어의 빈도수를 기반으로 한다. 이 방식을 사용한 이유는 서버의 부하가 상대적으로 머신러닝과 타 알고리즘보다 적으며, 뉴스 제목이 이미 주요 이슈를 집약적으로 반영하고 있기 때문에 계속해서 쌓이는 데이터를 처리하고 요청하기 위함이다.

                                                              <이미지 5> 워드 클라우드 결과 화면

                                                          <이미지 5> 워드 클라우드 결과 화면

분석 및 저장된 키워드는 워드 클라우드 형태로 시각화된다. 빈도수가 많은 결과일수록 글자의 크기가 커지며 중앙에 위치하도록 하고 색이 짙어지도록 설정했다. 이렇게 시각화된 데이터는 사용자에게 직관적이고 이해하기 쉬운 정보를 제공하며, 현재 뉴스가 어떤 주제를 가장 많이 다루고 있는지 확인 할 수 있도록 한다.

ii) 모니터링

NewsCloud의 모니터링은 DB와 Spring Server에 대해 별도로 진행된다. DB는 Grafana를 통해, Spring Server는 Eureka를 통해 모니터링되며, 이를 통해 시스템의 안정성과 성능을 지속적으로 관리하고 있다. 15분마다 API 요청을 통해 새로운 데이터가 입력되는 것을 대시보드에서 그래프의 변화를 통해 시각적으로 확인했다.

                                                              <이미지 6> MySQL 모니터링 대시보드

                                                          <이미지 6> MySQL 모니터링 대시보드

Source DB와 Sink DB가 현재 과부하 상태이거나 재부팅 등 서비스에 이상이 감지된 경우 데이터 관제 및 알람 기능을 수행하는 Prometheus와 Alert Manager를 통해 Slack에 알림이 가도록 설정해 현재 어떤 상황이 발생했으며, 해결시 Resolved 메시지가 수신된다. MySQL 인스턴스의 상태를 모니터링하기 위한 6개의 알림 규칙이 설정되어있다. 이 규칙들은 다음과 같다.

  1. MysqlDown: MySQL 인스턴스가 다운되었는지 확인하고 MySQL 인스턴스가 작동하지 않을 경우, 알림을 발생시킨다.