티스토리 뷰
프로젝트 기간
2022.10 ~ 2023.03
소개
채용 정보를 공유할 수 있는 서비스입니다. 채용정보사이트를 이용할 때 채용정보에 댓글을 작성하여 소통하는 기능이 없었고 이에 불편함을 느껴 프로젝트를 선정하게 되었습니다. 로켓펀치 사이트를 크롤링하여 채용정보를 확인할 수 있고, 댓글작성, 북마크, 게시글을 통한 소통이 메인 기능입니다.
DB 설계
Github
더보기
https://github.com/2h5i/final-project
GitHub - 2h5i/final-project: 최종 프로젝트!
최종 프로젝트! Contribute to 2h5i/final-project development by creating an account on GitHub.
github.com
https://github.com/2h5i/final-project-client
GitHub - 2h5i/final-project-client: 최종 프로젝트! 클라이언트
최종 프로젝트! 클라이언트. Contribute to 2h5i/final-project-client development by creating an account on GitHub.
github.com
팀빌딩
팀 인원은 백엔드 개발자 4명으로 프로젝트를 진행하였습니다.

서비스 아키텍처

- Java 11 + Spring Boot 2.7
- S3를 이용하여 프런트 배포
- EC2를 이용하여 서버 및 데이터베이스 배포
- Redis를 활용한 Refresh token 관리
- Github를 이용한 프로젝트 협업
- Github Action을 이용한 CI/CD 구축
- Oauth2를 이용한 카카오 로그인 구현
- Junit을 이용한 테스트 코드 작성
- Jsoup, Selenium을 이용한 채용정보 사이트 크롤링
기여
<채용 정보사이트 크롤링>

[문제]
- Jsoup으로 크롤링 중 위와 같은 현상으로 인해 원하는 데이터를 추출해오지 못하는 이슈 발생
- 이는 해당 리스트페이지가 서버와 리스트를 불러오는 과정에서 로딩지연이 있었고 이를 Jsoup은 인지하지 못함
[해결]
- Selenium으로 렌더링 된 페이지를 크롤링 진행
- Jsoup으로 SSR 페이지 크롤링, Selenium으로 CSR 페이지 크롤링 하여 속도향상
<페이징 기능 구현 및 QueryDSL 사용>

[문제]
- 페이지 기능을 구현하는 과정에서 nativeQuery를 사용하여 구현
- nativeQuery를 사용하면 JPA를 사용하는 이유가 없어짐
[해결]
- QueryDSL을 학습하여 적용
- 컴파일 시점에서 오류를 발견할 수 있고, 쿼리문법이 아닌 자바문법으로 작성이 가능해짐
<Amazon Web Service를 활용한 배포>
- AWS S3를 이용한 프론트를 배포하였고, AWS EC2를 이용하여 서버와 데이터 베이스를 배포하였습니다. 윈도우 cmd를 이용해 EC2 우분투 서버에 프로젝트를 세팅하며 터미널에 대한 경험과 학습을 하였습니다.
- Github Actions를 활용한 CI/CD 구축하였습니다. yml 파일을 base64로 인코딩한 후 secret key로 등록하여 정보 유출을 방지하였습니다.
< XSS 공격에 대한 방어>

[문제]
- <Script>형식으로 댓글을 작성시 위와 같은 현상이 발생했습니다.
- 프론트에 대한 지식이 부족했었기에 XSS공격에 대한 인식을 하지 못했습니다.
- 배포를 통한 유저의 피드백을 받았고 다음과 같은 현상이 발생했습니다.
[해결]
- DB에 저장할때 < , > , ( , ) 와 같은 기호를 필터링하여 저장
- naver에서 제공해주는 lucy-xss-filter를 적용하여 해결
배운 점
- Slack과 Github를 통해 협업하는 방법을 배웠습니다.
- Amazon EC2, S3를 이용한 배포를 경험하였습니다
- CodeDeploy와 Github Action을 활용하여 CI/CD 환경을 구축하는 방법을 배웠습니다.
- 배포를 통해 실제 클라이언트 피드백을 제공받았고, 이를 통해 오류를 발견하고 수정할 수 있었습니다.
'개발 > 프로젝트' 카테고리의 다른 글
| IoT - Spring TCP/IP 소켓 통신 (0) | 2024.01.17 |
|---|---|
| JPA를 활용한 Spring security 게시글 만들기 (0) | 2023.01.09 |
| 자기소개 웹사이트 만들기 (2) | 2022.11.05 |
댓글
