백엔드 개발 포트폴리오 | 채용 정보 공유 서비스

내일배움캠프 4기 웹 개발 과정 Spring 트랙 수료생 최종 프로젝트 ‘Grasp’을 소개합니다.
Aug 17, 2023
백엔드 개발 포트폴리오 | 채용 정보 공유 서비스

 

🛠️ 아키텍처

notion image
 

🔧 기술적 의사결정

사용 기술
기술 설명
PostgreSQL
표준 SQL을 따르고 있고, 가볍게 돌아가며, 대량 데이터 처리에 용이하다. 또한 라이센스에 대한 비용 문제 없다.
Querydsl
동적인 쿼리 작성이 편리하고 문자가 아닌 코드로 쿼리를 작성함으로써, 컴파일 시점에 문법 오류에 쉽게 확인 할 수 있어서 사용을 했다.
redis
데이터 액세스 지연 시간을 줄일 수 있고 메모리를 저장하고 조회하는 것이 빠르다.
Jsoup
HTML 정적 크롤링을` 하기 위해 오픈소스 JAVA 라이브러리를 사용하고 셀리니움보다 비교적 속도가 빠르다.
Selenium
Jsoup으로는 불가능한 HTML 동적 크롤링을 하기 위해 사용하고 Jsoup으로 가능한 크롤링은 Jsoup으로 진행하여 처리 속도 향상을 시킨다.

📌 트러블슈팅

✔️ 크롤링 라이브러리 선택

요구사항
채용 정보 사이트를 크롤링하기 위해 라이브러리를 선택해야함.
선택지
1안) Selenium을 통한 동적+ 정적 크롤링
2안) Jsoup + Selenium을 통한 동적+ 정적 크롤링
의견 조율
1) Selenium만 사용해서 불필요한 의존성 주입을 없앤다.
2) Spring에서 제공하는 jsoup으로 정적 크롤링을 속도를 향상시킨다.
의견 결정
서비스 특성상 크롤링에 많은 비중을 차지하기 때문에 동적 크롤링은 Selenium, 정적 크롤링은 Jsoup을 이용해서 크롤링 속도를 향상시키기로 하였습니다.

✔️ CI/CD 적용

요구사항
협업시 코드 배포를 해야하는 상황이 빈번히 발생하며, 배포에 많은 시간이 소요됨
선택지
1안) Jenkins
2안) Github Actions (CI/CD)
의견 조율
  1. Jenkins 사용하기 위해 서버 설치가 필요하며, 환경 호환성을 위해 Docker 환경에서 실행하는 것이 좋지만, 현 프로젝트에서는 Docker를 사용하지 않았다.
  1. Github Actions 의 경우, 클라우드가 있으므로 별도 설치가 필요 없고, 깃허브를 통해 복잡한 절차없이 사용가능
의견 결정 작은 규모에 더 적합하고, 상대적으로 설정하기 간단한 Github Action을 사용하기로 함.
 

🔎 주요기능

✅ 채용 게시판
notion image
notion image
  • 채용공고 제목 및 내용 검색을 통한 자신이 원하는 공고 확인가능
  • 북마크 기능을 통한 자신의 관심 공고 확인가능
✅ 자유 게시판
notion image
notion image
  • 게시물 작성/조회/수정
  • 관리자 페이지에서 게시물 삭제 가능
  • 게시물에 좋아요/댓글 기능
 
Share article
Subscribe to our newsletter
RSSPowered by inblog