EarlyUs 백엔드 레포지토리
https://doumbaeum.careersconnect.net/
https://earlyus-front.vercel.app/
- 도우미 희망자가 활동 가능하다고 선택한 시간에 장애 학생의 수업 시간이 모두 포함되는 경우, 활동 가능한 수업으로 매칭
- 장애학생지원센터에서 제공한 장애 학생 수업 데이터를 이용해 DisabledCourse에 해당 데이터를 입력, 각 수업 별 수업 시간표를 ClassTime과의 ManyToMany 연관관계로 처리
- Java Stream API로 모든 수업 데이터에 대해 도우미 신청자의 시간에 포함되는지 확인
- 기획팀이 제작한 날개 유형 데이터를 저장해 전공 일치 여부와 도우미가 제공하고자 하는 도움 유형에 따라 도우미의 날개 유형을 판단
- DisabledCourse에 도우미와 일치하는 전공의 수업이 존재하는지 여부에 따라 majorMatched에 0 또는 1을 저장
- 날개 유형 중
전공 일치 여부,도움 유형이 일치하는 날개 하나를 찾아서 반환
- 깃허브 디폴트 브랜치에 변경 내용 커밋
- Github workflow가 java 프로젝트를 빌드
- Codedeploy, S3 접근이 가능한 IAM 키를 알고 있는 Github workflow가 S3에 빌드 파일을 업로드하고, Codedeploy로 배포 요청
- Codedeploy가 appspec.yml에 따라 지정한 hook 시점에 scripts/deploy.sh 스크립트를 실행
- deploy.sh는 현재 실행 중인 blue 컨테이너가 있다면 green 컨테이너를 실행시키고, 없다면 blue 컨테이너를 실행 -> 배포 중에도 서비스가 중단되지 않도록 함
- 도메인으로 들어온 요청은 EC2의 로드 밸런서로 라우팅 됨
- AWS ALB는 요청이 HTTP라면 HTTPS로 리다이렉트하고, HTTPS라면 등록된 인증서로 SSL/TLS 처리
- AWS ALB는 모든 요청을 대상 그룹에 등록된 EC2의 80포트로 보냄
- NginX의 리버스 프록시 기능을 이용해 블루 컨테이너가 사용 중인 8081포트와 그린 컨테이너가 사용 중인 8082포트 중 연결 가능한 곳으로 연결함
- Spring Boot, JDK17, Gradle
- Junit5, Jacoco
- AWS(EC2, ALB, S3, RDS/MySQL, Codedeploy, Route53, ACM)
- NginX
- Docker
- Github Actions


