Skip to content

자격증 공부를 위한 플랫폼 Cercat 서버입니다.

License

Notifications You must be signed in to change notification settings

COS-project/cos-backend

Repository files navigation

📚 Cercat 핵심 기능

🌟 모의고사

회원님은 다양한 년도와 회차에 걸친 모의고사에 응시할 수 있습니다.
각 시험마다 과목별 정답률과 문제별 머문 시간 등의 상세한 분석을 제공하여, 회원님의 학습 진단 및 개선에 필요한 데이터를 제공합니다.

📈 맞춤형 학습 관리 시스템

목표 설정 기능을 통해 학습 목표를 세우고, 지난 모의고사 성적을 주간/월간/연간 단위로 통계 내어 성장 과정을 한눈에 확인할 수 있습니다.
이를 통해 학습 방향을 조정하고, 목표 달성을 위한 전략을 세울 수 있습니다.

🌐 자격증 커뮤니티

회원님은 각 자격증별 꿀팁, 해설, 자유 게시판을 통해 팁을 공유하고, 다른회원과 소통할 수 있습니다.
다양한 경험과 지식이 모이는 곳에서, 회원님만의 학습 네트워크를 확장해 보세요.

🛎️ 맞춤 알림 서비스

회원님이 설정한 관심 자격증에 대한 시험 신청일 및 마감일 알림은 물론, 좋아요 및 댓글 알림까지
중요한 정보를 놓치지 않고, 커뮤니티 내에서의 소통도 놓치지 않을 수 있도록 알림 서비스를 제공합니다.

화면

기술 스택

  • 백엔드 : Spring Boot, MySQL, Redis, Kafka, ELK
  • 클라우드 : GCP VM, GCS, Docker
  • CI/CD : Git Actions, Docker Compose
  • 협업도구 : Slack

인프라 구성

infra

  • Nginx로 리버스 프록시
  • Docker compose로 서버 scale-out
  • Kafka를 통해 비동기 알림 pub/sub -> Redis Pub/Sub으로 SSE 구독 및 비동기 알림 구현
  • Debezium 커넥터를 통해 MySQL의 데이터변경을 캡쳐하여 Kafka로 발행 -> Elastic Search 동기화
  • Elastic Search의 ngram, nori 분석기등을 통해 검색 최적화
  • Redis를 통해 최근 검색기록 및 모의고사 문제 데이터 캐싱
  • Git Actions의 Cron job을 통해 Batch 서버 실행

CI/CD

ci:cd

  • 블루-그린 배포방식으로 무중단 배포 구현
  • cron-job을 통해 매일 알람 batch 작업

ERD

image

아키텍쳐

image

지속성장가능한 소프트웨어 개발하는 방법

멀티모듈 구조

Cercat 프로젝트는 단일 모듈 구조에서 시작하여, 코드 간의 의존도와 결합도를 줄여보고자 멀티모듈 구조의 프로젝트로 리팩토링을 진행했습니다.

📁 cercat-application # Runnable
📁 cercat-common # 공통
📁 cercat-domain # Business-Layer, Implementation-Layer
📁 cercat-infra # Data-Access-Layer, GCS, Kafka, Redis

패키지 구조

com
 ㄴ cos
    ㄴ cercat
        ㄴ post
        ㄴ user
        ...

About

자격증 공부를 위한 플랫폼 Cercat 서버입니다.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages