티스토리 뷰

프로젝트 기간  

2022.10 ~ 2023.03


소개

채용 정보를 공유할 수 있는 서비스입니다. 채용정보사이트를 이용할 때 채용정보에 댓글을 작성하여 소통하는 기능이 없었고 이에 불편함을 느껴 프로젝트를 선정하게 되었습니다. 로켓펀치 사이트를 크롤링하여 채용정보를 확인할 수 있고, 댓글작성, 북마크, 게시글을 통한 소통이 메인 기능입니다.

 

발표영상

SA

와이어 프레임

API 명세서

DB 설계 


Github


팀빌딩

팀 인원은 백엔드 개발자 4명으로 프로젝트를 진행하였습니다.


서비스 아키텍처

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

기여

<채용 정보사이트 크롤링>

[문제]

  1. Jsoup으로 크롤링 중 위와 같은 현상으로 인해 원하는 데이터를 추출해오지 못하는 이슈 발생
  2. 이는 해당 리스트페이지가 서버와 리스트를 불러오는 과정에서 로딩지연이 있었고 이를 Jsoup은 인지하지 못함

 

[해결]

  1. Selenium으로 렌더링 된 페이지를 크롤링 진행
  2. Jsoup으로 SSR 페이지 크롤링, Selenium으로 CSR 페이지 크롤링 하여 속도향상 

 

코드보기


<페이징 기능 구현 및 QueryDSL 사용>

 

[문제]

  1. 페이지 기능을 구현하는 과정에서 nativeQuery를 사용하여 구현
  2. nativeQuery를 사용하면 JPA를 사용하는 이유가 없어짐

 

[해결]

  1. QueryDSL을 학습하여 적용
  2. 컴파일 시점에서 오류를 발견할 수 있고, 쿼리문법이 아닌 자바문법으로 작성이 가능해짐 

 

코드보기


<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 환경을 구축하는 방법을 배웠습니다.
  • 배포를 통해 실제 클라이언트 피드백을 제공받았고, 이를 통해 오류를 발견하고 수정할 수 있었습니다.

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/10   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함