Skip to content

✨초보 개발자를 위한 학습 플랫폼, 데브루트. 기술스택 학습을 위한 로드맵 부터 채용공고 데이터를 통한 주요 기술스택 및 기업 정보를 제공합니다.

Notifications You must be signed in to change notification settings

ICT-Dev-Route/Dev-Route-BE

Repository files navigation

LOGO

초보 개발자를 위한 플랫폼, DevRoute📚

초보 개발자를 위한 준비된 공부 로드맵 및 채용 정보를 확인해보세요!


🌟 About the Project

데브루트스크린샷

👾 Tech Stack

Client

Server

Database

DevOps

🎯 Features

🚀개발 로드맵 제공
처음 시작하는 개발자들을 위한 단계별 로드맵 제공, 쉽게 따라할 수 있는 가이드!

💼채용공고 통합
여러 채용공고를 한눈에! 이해하기 쉬운 형태로 정리된 정보 제공.

🔍기술 스택 분석
현재 시장에서 인기 있는 기술 스택을 한눈에 파악, 초보자도 쉽게 이해할 수 있게 구성.

🎓학습 자료 추천
필요한 기술을 학습할 수 있는 유튜브 영상과 온라인 강의 추천.

Team

Front Back Back Back

@heewon1104

@Munhangyeol

@mete0rfish

@maark1106

🖥️ Development Environment

  • Operating Systems: Windows 11, macOS
  • IDEs: IntelliJ, Visual Studio, AWS
  • Frameworks & Libraries: Spring Framework, React
  • Languages: Java, SQL, JavaScript
  • Version Control: GitHub
  • Collaboration Tools: Notion, Discord, Google Meet
  • Server & Database: AWS EC2, RDS, Docker
  • CI/CD Pipeline: GitHub Actions
  • Monitoring Tools: Prometheus, Grafana

🚀 Technologies and Branch Strategy

Technologies

imageimage

[ System Configuration ]

  • 프론트엔드: React 프레임워크로 JavaScript 기반의 반응형 웹 인터페이스를 구축하여, UI/UX를 구현하였습니다.
  • 백엔드: Java를 기반으로 한 Spring FrameworkSpring Boot로 견고하고 확장 가능한 서버 아키텍처를 설계했습니다.
  • 데이터베이스: DB 엔진은 MySQL 8.4.0 버전을 이용합니다.

🔐 JWT Token 인증 및 인가
🗄️ **Hibernate (JPA ORM)**로 MySQL과 연동하여 데이터 저장 및 조회
🌐 OpenAPI(사람인, 유튜브, 유데미)로 정보 획득, Selenium(잡플래닛, 잡코리아, 인프런)으로 크롤링

[ CI/CD ]

  1. GitHub에 Push 후 Merge가 되면 GitHub Actions의 CI/CD 파이프라인 실행
  2. Docker 이미지를 빌드하고 Docker Hub에 Push
  3. EC2 서버에 SSH 접속 후, Docker Hub로부터 이미지를 Pull하여 컨테이너 실행

[ AWS ]

  1. 서버는 EC2에서, 클라이언트는 S3 + CloudFront로 제공
  2. **SSL (ACM)**과 Route 53으로 도메인 연결 및 HTTPS 설정
  3. 로드밸런서를 통해 HTTP 요청 시 HTTPS로 리다이렉트
  4. 클라이언트도 CloudFront 설정을 통해 HTTPS 강제 적용

🌿 Branch Strategy

GitHub Flow 브랜치 전략을 사용하여 깔끔한 개발 프로세스를 유지합니다.

  • 각 기능/수정 사항은 별도의 브랜치에서 개발
  • **Pull Request (PR)**로 메인 브랜치에 병합
  • PR 템플릿으로 변경 사항 명확화 및 효율적 코드 리뷰 진행

🔑 Main Logic

로그인 및 회원가입

메인 페이지

직군별 개발자 설명

개발자 로드맵

기업 정보 검색

채용 공고

개발 관련 추천 영상

문의사항

📂 Directory Structure

Backend

.
└── devroute
    ├── api
    │   ├── suggestion
    │   └── visitorcount
    ├── bookmark
    │   ├── domain
    │   ├── exception
    │   └── json
    ├── company
    │   ├── controller
    │   ├── domain
    │   ├── dto
    │   ├── repository
    │   └── service
    ├── crawling
    │   └── dto
    ├── dataloader
    ├── global
    │   ├── aop
    │   │   ├── crawl
    │   │   └── timetrace
    │   ├── auth
    │   │   ├── filter
    │   │   └── jwt
    │   ├── config
    │   └── exception
    ├── recruitment
    │   ├── controller
    │   ├── domain
    │   ├── dto
    │   ├── enums
    │   ├── repository
    │   ├── service
    │   └── utils
    ├── roadmap
    │   ├── description
    │   ├── domain
    │   ├── dto
    │   ├── enums
    │   └── repository
    ├── user
    │   ├── domain
    │   ├── dto
    │   ├── enums
    │   └── service
    └── video
        ├── Repository
        ├── constans
        ├── domain
        ├── dto
        │   ├── infrean
        │   ├── udemy
        │   └── youtube
        ├── enums
        ├── exception
        ├── fetcher
        └── service

🛠️ Trouble Shooting

Backend

  1. 영상 추천 페이지에서 영상이 보이지 않거나, 개발환경의 더미 데이터가 함께 보이는 문제를 해결.( #117: 영상 추천을 보여주는 페이지의 오류 잡기)

    • 개발 및 운영 환경 분리
      • 기존에는 application.properties에서 수동으로 프로파일을 설정하여 RDS에 데이터가 중복 저장되는 문제가 있었습니다.
      • 이를 해결하기 위해 application-dev.properties와 application-prod.properties 파일로 환경을 분리하여, 각 환경에 맞는 설정이 자동으로 적용되도록 개선했습니다.
  2. CI/CD 시 CPU 사용률 및 메모리 사용 문제를 해결.(#125:CPU사용률 제어)

    • CI/CD 개선을 통한 CPU 부하 완화
      • Docker 빌드 시 캐싱을 적용해 빌드 시간을 단축하고, DockerHub에서 이미지를 Pull한 후 CPU 사용률 제어를 통해 CI/CD 과정에서의 부하를 줄였습니다.
    항목 기존 방식 변경 후 설정
    CI/CD 시간 단축 캐싱 미적용, 긴 빌드 시간 캐싱 도입으로 CI/CD 시간 55.37% 개선
    CPU 사용률 최대 97% 도달 개선 후 약 53.6% 감소
  3. Selenium의 높은 대기 CPU 점유율을 24% 감소. (크롤링 최적화)

    • Prometheus를 통한 모니터링 지표를 통해 크롤링 진행 후 장기적으로 CPU 점유율이 상승하는 것을 발견
    • 초기 설정을 통해 Selenium Driver가 활성화된 상태에서 CPU를 지속적으로 점유
    • Spring AOP을 통해 크롤링이 진행된 로직 수행 후 자동으로 quit()을 수행하도록 설정
    항목 기존 방식 변경 후 설정
    Live Thread Count (현재 실행 중인 모든 스레드의 수) 31 Threads 27 Threads (-4)
    Daemon Thread Count (백그라운드 실행 중인 스레드의 수) 26 Threads 22 Threads (-4)
  4. 데이터베이스 Index를 활용해서 비디오 데이터 조회시 발생하는 성능을 96.49% 개선 (인덱스를 활용한 조회성능 최적화)

    • 홈페이지 화면에서 비디오 조회시의 order by를 수행 후 조회하는 연산시, 기존에는 Table full scan 을 활용해서 조회하므로 느렸음
    • 이를 인덱싱을 활용해서 10000개의 데이터 기준 0.009398sec에서 0.00033sec로 96.49% 성능 개선

Presentation

Google Slids

About

✨초보 개발자를 위한 학습 플랫폼, 데브루트. 기술스택 학습을 위한 로드맵 부터 채용공고 데이터를 통한 주요 기술스택 및 기업 정보를 제공합니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •