/ESC-English_Study_Club

영어 비대면 스터디 사이트

Primary LanguageJava

ESC (English Study Club)

로고

Group 63


PROJECT

프로젝트 진행 과정을 볼 수 있습니다.

  • BACK:
  • FRONT:

1. 프로젝트 개요

영어의 영향력 취업시장에서의 필요성
1b6120e63ede4fa8c512961ace77c03f 34055_22894_2547

2024년 현재 영어는 앞으로 살아감에 있어서 빠질수가 없는, 필수로 익혀야 하는 언어입니다. 취업을 위한 스펙으로 영어 자격증이나 영어 회화능력은 더이상 특별한것이 아닌 기본적인 것으로 자리잡았고, 외국에 나가서 소통을 하거나, 개발공부를 위해 구글링을 할때에도 영어로 되어있는 자료들이 많아 영어의 필요성은 모두 느끼고 있을 것 입니다.

ESC(English Study Club) 프로젝트는 영어의 필요성을 깨닫고, 혼자 영어 공부할 때 집중력을 유지하기 어렵다고 느끼거나 그룹 스터디를 하고싶은 사람들을 위해서 만들어졌습니다. 영어자격증 시험을 목표로 스터디원을 모으고 사용자들이 서로의 시간을 공유하여 함께 공부할 수 있는 최적의 시간을 찾아줌으로써 스터디 시간을 효율적으로 활용할 수 있도록 도와줄 것 입니다.

2. 프로젝트 관리

ESC 프로젝트의 산출 결과물은 다음과 같습니다.

  • 요구사항 명세서 : 프로젝트의 요구사항을 정리하여 기능별로 분류해 둔 문서
  • 데이터베이스 모델링 : 프로젝트에 사용된 DB의 논리/물리 모델링 이미지
  • Context Map : DDD 방식 프로젝트 설계에 사용한 Conetext Map 이미지
  • 시스템 아키텍쳐 : 프로젝트의 전체 시스템 아키텍쳐 이미지
  • Devops 빌드/배포문서 : CICD 구성을 위한 빌드 및 배포 방식을 설명하는 문서
  • API명세서 : Rest API 요청방식과 예상 요청결과를 정리한 문서서
  • 테스트 결과 : 테스트 실행 결과 이미지

추진 계획

구분 조직 주요 역할
주관 HighFives (Team HighFives) CICD 프로젝트
지원기관 한화시스템x엔코아 장비 지원 및 퀄리티 점검

프로젝트 일정 : 2024-04-01 ~ 2024-04-17

작업 공간 : 서울 동작구 보라매로 SFC빌딩, 원격 소통

기술 스택

Vue 3.0 JavaScript Spring Boot Spring Data JPA Docker Kubernetes Jenkins Prometheus Grafana
icons8-봄-로고-48 다운로드__1_-removebg-preview icons8-부두-노동자-96 icons8-쿠버네티스-96 icons8-젠킨스-96 icons8-프로메테우스-앱-96 icons8-그라파나-48

주요기능

  • 스터디 클럽 생성 후 스터디원 모집
  • 채팅을 사용하여 모집하는 스터디에 대해 궁금증 해소 가능
  • 개인 일정 등록과 스터디 일정 등록
  • 스터디 후 개인 스터디로그 작성

새롭게 도입한 기술

  • FullCalendar: 일정 관리 (FullCalendar API)
  • Websocket: 회원 간 채팅 기능 구현 (spring-boot-starter-websocket, Vanilla Javascript Websocket)
  • Crawling: 토익, 오픽 등 실제 시험일정 조회 (JSoup)
  • SMTP(Simple Mail Transfer Protocol): 이메일 인증을 통한 회원관리
  • Jasypt: 설정 파일 및 민감한 정보 암호화 (Jasypt)
  • Monitoring: Prometheus, Grafana를 사용한 백엔드 모니터링

2-1. 요구사항 명세서

스크린샷 2024-04-18 163950

2-2. DB 모델링

논리 모델링 esc_논리 모델링

물리 모델링 esc_물리 모델링

2-3. Context Map

image

2-5. 시스템 아키텍쳐

KakaoTalk_20240417_120445057

  • Jenkins
    테스트 코드 실행, Docker Image 빌드, Dockerhub 업로드

  • Dockerhub
    Jenkins가 생성한 최신화된 Docker image 저장

  • Kubernetes
    Dockerhub의 이미지를 사용, Spring boot & Prometheus의 컨테이너와 파드 관리

  • Prometheus
    Spring boot 서버 Metric 수집, 서버 모니터링

  • Grafana
    Prometheus에서 수집한 Metric과 Log를 시각화하여 제공

2-6. CICD 빌드/배포

  • CICD 프로세스

    image


Dockerfile
  • Spring boot Dockerfile
    • openjdk가 설치된 Dockerhub image 파일명 정의
    • image 빌드에 사용할 jar파일 정의
    • 진입 시 실행 될 명령어 정의
      • jasypt의 secretkey 를 환경 변수로 넣어서 실행

image

  • Jenkins Dockerfile

    • Jenkins가 설치된 Dockerhub image 파일명 정의
    • Jenkins 실행에 필요한 apt 명령어 정의

image

  • Jenkins docker-compose

    • 사용할 Dockerfile 지정
    • Jenkins 컨테이너 이름과 포트 설정
    • volumes 설정으로 로컬에서 jenkins에 올라온 프로젝트 실행할 수 있도록 설정

image

Github
  • Webhook & Deploy key

    • 지정한 브랜치에 변화가 있을 경우 Webhook을 발생, Jenkins 로 Webhook 을 보낸다.
    • Deploy key에는 Jenkins 서버의 public Key 를 사용, Jenkins 서버로 SSH를 통해 변경된 코드를 전송.

github-webhook github-deploykey

Jenkins
  • Credential
    • Github 접속을 허용하기 위해 ssh private key를 가진 Credential 생성
    • Dockerhub 접속을 위해 Dockerhub 계정 정보를 가진 Credential 생성

jenkins-credential1

  • Security
    • Github의 Jenkins 접근을 위하여 ssh private key를 포함한 Secret 정책 생성

image

  • Tools

    • 빌드에 사용할 jdk 버전과 build tool 정의

image

  • Item(Pipeline)

    • Github 와 연동하여 Webhook을 감지할 때 마다 테스트하고 빌드를 진행할 아이템을 정의, 생성

image image image

Kubernetes
  • Springboot Deployment

    • ESC 프로젝트의 컨테이너 명, 컨테이너 생성에 사용할 이미지, 생성될 레플리카의 수, 컨테이너 port 지정

image

  • Springboot Service
    • 외부에서 ESC 컨테이너에 접근하기 위한 워커 노드 포트(30003) 및 service(8008)와 deployment 포트(10001) 정의

image

  • Prometheus Deployment
    • Prometheus 컨테이너 명, 컨테이너 생성에 사용할 이미지, 컨테이너 port, configmap 지정

image

  • Prometheus Service
    • 외부에서 Prometheus 컨테이너에 접근하기 위한 워커 노드 포트(30005) 및 service(9009)와 deployment(9090) 포트 정의

image

CICD Result Image
  • Jenkins Item(pipeline) running

jenkis-stageview

  • Jenkins Image build

jenkins-resultlog1 jenkins-resultlog2

  • Kubernetes image

image

2-7. API 명세서

ESC 프로젝트 - REST-API.pdf

2-8. 테스트 케이스 & 결과

스크린샷 2024-04-18 173556

로그인 기능 테스트 결과

userserviceTest 결과

채팅방 테스트 결과

image

멤버 일정 테스트 결과

image

스터디 일정 테스트 결과

image

스터디클럽 로그 테스트 결과

image

스터디클럽 멤버 테스트 결과

image

회원 테스트 결과

image

모집 테스트 결과

image

image

스터디클럽 테스트 결과

image