사용자가 시청한 뉴스에 대한 일련의 사건들을 놓치지 않도록 도와주는 서비스
혹시 궁금했던 뉴스에 대한 후속 뉴스를 보았던 경험이 있나요?
평상시 뉴스에 관심없이 지내다 보면 세상이 어떻게 흘러가는지, 다른 사람이 무엇을 이야기 하는지 모를 때가 종종있습니다.
이러한 정보들을 손쉽게 파악하고자 ”NEWNEWS”를 서비스하게 되었습니다.
- 사용자가 시청한 뉴스기록 저장
- 관련뉴스가 보도될 시 이를 사용자에게 알려줌
- 사용자가 검색한 키워드에 해당하는 뉴스들을 큼지막한 주제를 기준으로 묶어 일대기 형식으로 보여줌
- 시청한 뉴스에 대한 정보를 놓치지 않고 확인 가능
- 하나의 사건에 대해 쉽게 흐름 파악
- 왜곡된 정보흐름 차단
- 실시간 validation check
- 수정 필요한 입력에 대한 시각적인 표시 제공
- 사용자가 시청한 뉴스와 연관된 뉴스를 모아서 보여줌
- 뉴스를 최신순으로 보여줌
- 원하는 카테고리를 선택하여 추천받을 수 있음
- 북마크를 눌러 저장하고 북마크탭에서 저장한 뉴스 확인 가능
- 검색한 키워드를 기반으로 키워드와 관련된 사건의 흐름을 파악할 수 있음
- 봤던 뉴스의 카테고리 기반으로 성향 분석해줌
- 형상관리 : Gitlab
- 이슈관리 : Jira
- 커뮤니케이션 : Mattermost, Notion
- 디자인 : Figma
- Postman
- Termius
📦newnews
┣ 📂node_modules
┣ 📂public
┃ ┣ 📜favicon.png
┃ ┗ 📜vite.svg
┣ 📂src
┃ ┣ 📂assets
┃ ┣ 📂components
┃ ┃ ┣ 📂bell
┃ ┃ ┣ 📂login
┃ ┃ ┣ 📂mainpage
┃ ┃ ┣ 📂membership
┃ ┃ ┣ 📂searchpage
┃ ┃ ┣ 📜AlertIcon.tsx
┃ ┃ ┣ 📜ArticleCard.tsx
┃ ┃ ┣ 📜Button.tsx
┃ ┃ ┣ 📜Footer.tsx
┃ ┃ ┣ 📜Header.tsx
┃ ┃ ┗ 📜test.ts
┃ ┣ 📂hooks
┃ ┃ ┣ 📂bell
┃ ┃ ┣ 📂bookmark
┃ ┃ ┣ 📂main
┃ ┃ ┣ 📂mypage
┃ ┃ ┣ 📂search
┃ ┃ ┣ 📜MobileChk.ts
┃ ┃ ┗ 📜test.ts
┃ ┣ 📂models
┃ ┣ 📂pages
┃ ┃ ┣ 📂bell
┃ ┃ ┣ 📂bookmark
┃ ┃ ┣ 📂Login
┃ ┃ ┣ 📂main
┃ ┃ ┣ 📂membership
┃ ┃ ┣ 📂mypage
┃ ┃ ┣ 📂search
┃ ┃ ┣ 📜DefaultPages.tsx
┃ ┃ ┗ 📜test.ts
┃ ┣ 📂states
┃ ┣ 📂stores
┃ ┣ 📂styles
┃ ┃ ┣ 📂bell
┃ ┃ ┣ 📂bookmark
┃ ┃ ┣ 📂login
┃ ┃ ┣ 📂main
┃ ┃ ┣ 📂membership
┃ ┃ ┣ 📂mypage
┃ ┃ ┣ 📂search
┃ ┃ ┣ 📜ArticleCard.module.scss
┃ ┃ ┣ 📜Button.module.scss
┃ ┃ ┣ 📜FooterBar.scss
┃ ┃ ┣ 📜Header.module.scss
┃ ┃ ┗ 📜Modal.module.scss
┃ ┣ 📂utils
┃ ┣ 📜index.scss
┃ ┣ 📜main.tsx
┃ ┣ 📜reset.scss
┃ ┗ 📜vite-env.d.ts
┣ 📜.env.production
┣ 📜.eslintignore
┣ 📜.eslintrc.cjs
┣ 📜.gitignore
┣ 📜.prettierignore
┣ 📜Dockerfile
┣ 📜index.html
┣ 📜nginx.conf
┣ 📜package-lock.json
┣ 📜package.json
┣ 📜prettier.config.cjs
┣ 📜tsconfig.json
┣ 📜tsconfig.node.json
┗ 📜vite.config.ts
- IDE : Visual Studio Code
1.75.1
- language
- Typescript
4.9.5
- node js
18.13.0
- Typescript
- Framework
- react
18.2.0
- react toolkit
1.9.1
- react
- Http : Axios
1.3.4
- sass : sass
1.59.3
- build tool : vite
4.2.0
- formatter
- eslint
8.36.0
- prettier
2.8.4
- eslint
- router : react-router-dom
6.9.0
- state management tool
- recoil:
0.7.7
- recoil-persist:
4.2.0
- recoil:
- Library
- react-corekit/sleep:
1.1.0
- react-query4.27.0
- animate.css4.1.1
- react-icons4.8.0
- react-intersection-observer9.4.3
- recharts:2.5.0
- babel/preset-typescript7.21.4
- react-corekit/sleep:
- IDE : Intellij IDEA
2020.3
- language : Java openjdk
11.0.15 2022-04-19 LTS
- Springboot
2.7.9
- devtools
- Spring Data JPA
- Lombok
- Spring Security
- Spring Web
- Gradle
7.6.1
- Mysql
8.0.32-0ubuntu0.20.04.2
- https
TLS 1.0
- Ubuntu
20.0.4
- Nginx
1.18.0
- Docker
20.10.23
- Jenkins
Jenkinsci/blueocean
(Image tag name)
- Java
open-jdk-11
- Hadoop
3.3.5
- Spark
3.3.2
- python
3.8.0
- python
- Zookeeper
3.7.1
- Kafka
3.4.0
- scala
2.12
- scala
- 뉴스 크롤링 데이터를 Kafka topic - [news]에 메시지 전송
- SparkStreaming을 통해 실시간 뉴스 데이터를 처리하고, foreachBatch를 이용해 데이터를 배치처리하여 HDFS와 DB에 적재
- Spark에서 TF-IDF, DBSCAN를 사용하여 다양한 뉴스 사이의 군집을 파악하여 검색어와 관련된 뉴스의 흐름을 편리하게 제공합니다.
- Spark에서 실시간으로 크롤링되는 데이터와 사용자가 읽은 뉴스 데이터 간 Cosine 유사도를 통해 연관 뉴스를 파악하여 제공합니다.
- Mysql에 저장한 뉴스들은 최대 3달까지 저장 후 삭제하여 최적화 하였습니다.
- Spring Security를 도입하여 비인증 사용자의 요청을 체계적으로 처리했습니다.
박진성 | 이기용 | 이성복 | 왕현석 | 박종호 | 곽승엽 |
---|---|---|---|---|---|
Leader & FrontEnd | Frontend | Backend & Crawling | Backend | Data Engineer & Infra | Data Engineer & Infra |