이 페이지는 대학 동료들과 함께 개발한 “취업 스케줄러: 나비(Me-Be)” 의 책임별 서비스 서버 중
"스케줄러 관리 API (Scheduler Management Server)"에 해당
하는 레포지토리 입니다.
- 팀 프로젝트 소개
- 나비 전체 시스템 및 책임 서버별 기능 소개
[스케줄러 관리 API 서버] 시스템 구조 및 흐름도
[스케줄러 관리 API 서버] 설계 과정 및 주요 도전 과제 해결 과정 로그 문서
- 팀 소개 및 협업 방식
진행중
2021.07 - 현재
“무수히 많은 취업 공고나 스팩 관련 일정들 누가 '자동'으로 내 스케줄러에 입력해주면 안되나.."
라는 아이디어에서 출발한 프로젝트 입니다.
기존 스케줄러
에 취업 공고 및 스팩 관련 일정 조회 및 추천 기능
과 해당 일정 구독 시 자동 일정 추가 기능
을 추가한 스케줄러
로, 서비스에서 제공하는 취업 및 스팩 관련 일정 내용을 한번의 터치만으로 내 스케줄러에 자동으로 기록
할 수 있습니다.
드래그 앤 드롭 방식으로 더욱 간편한 일정 CRUD 기능
과 웹과 앱 연동 기능
을 지원합니다.
ML요소 기술을 사용하여 자격증 취득 소요기간 예측 기능, 사용자 기업 취향 분석 등 다양한 서브 기능을 준비중 입니다.
💯 교내 S/W 아이디어 대회에서 금상을 수상하여 대학에 비용 지원을 받아 제작되고 있으며, 2022.09 말 런칭을 앞두고 있습니다.
- 회원 및 인증 관리 , 스케줄러 관리 , 채용 공고 관리 등 책임별
"REST API를 가진 MSA + SPA" 구조
입니다. - MSA 아키텍쳐를 통해 FE ,BE ,ML 팀간 서로 다른 개발 주기로 인한 개발 지연 문제를 해결하였습니다.
- 웹 서비스는 전체적인 트래픽 감소와 렌더링 효율성을 위해 SPA 구조로 개발 되었습니다. (vue.js web server가 API GATEWAY의 역할을 포함하고 있습니다.)
회원 관리 및 인증/인가 API 서버
- JWT 토큰을 이용한 인증/인가
- Oauth2.0 회원가입 기능
- 회원 정보 CRUD 기능
✅전체 담당중
스케줄러 관리 API 서버
- 채용 공고 및 스팩 관련 일정 구독 기능
- 구독시 회원 스케줄러에 자동 CRD 기능
- 개인 스케줄 CRUD기능
- 일정 태그 기능과 알림설정 기능 (예정)
- 로지스틱 회귀 분석 및 클러스터링을 이용한 자격증 취득 소요기간 예측 기능 (예정)
✅일부 담당중
채용 공고 제공 API 서버
- Open API 채용 공고 데이터 수집 및 제공 기능
- 사용자 검색 로그 분석을 통한 공고 추천 기능
대외활동 일정 제공 API 서버
- 크롤링을 통한 대외활동 및 자격증 시험 일정 수집 분류(개발 중)
✅ 활용기술: Spring boot
, Spring Data JPA
, AWS EC2
, AWS RDS
, GIT ACTIONS CI/CD
✅ 개발 과정에 있었던 상세한 도전과제는 다음 챕터
“[스케줄러 관리 API 서버] 설계 및 주요 도전 과제 해결 과정”을 참고해 주시면 감사하겠습니다.
✅링크를 통해 노션에 정리된 문서 전문을 조회하실 수 있습니다.
정확한 개발과 협업
을 위해 도메인 설계 과정과 API명세서
를 작성했습니다.
개발 이론들을 학습하여 프로젝트를 유지보수가 용이하게 개선
하고 주요 도전 과제 해결 과정을 문서화
했습니다.
- ‘전략 패턴과 래퍼 클래스 개념’을 이용한 도메인과 사용자 입력 유효성 검증 로직 ‘최적 분리’
- API 사용성 개선: 사용자 정의 예외를 이용한 API 응답 세분화 및 상세화
- AOP를 이용한 Access-Token 유효성 검증 로직(횡단관심사) 분리
- 민첩한 비즈니스 대응을 위한 GitHub Actions CI/CD 배포 파이프라인 구축
- Github Action Workflow로 Jscrypt 암,복호화 KEY 숨기기
함께 자라기
를 위해 팀에 학습한 내용을 문서화하여 지식공유
했습니다.
- Spring Data JPA를 도입하자!
- REST API 정확하게 설계하기(feat.Self-descriptive messages 와 HATEOAS)
- CORS 이슈 발생! 정의와 동작 원리를 알아보자
ML , 멀티스레딩 등 다양한 요소 기술을 학습
하고 문제 해결에 적용
해 보았습니다.
본 프로젝트를 진행하며 다음을 깨닫고 개선
할 수 있었습니다.
- 개발자의
문서화와 커뮤니케이션 역량을 개선
하고, 명확한 전달을 통한원활한 프로젝트 협업
을 이끌어 냈습니다. - 다양한
기업 기술 블로그 참고
하여 문제 해결인사이트를 얻고
, CS기본기를 응용하여 명확한 최적화
했습니다. - 문서화를 통한
과정 기록과 공유
를 습관화하여함께 자라기를 실천
하고,리펙토링과 클린코드
중심의 개발을 통한생산성 개선
했습니다.
[팀 소개]
대학 동료들과
요구사항 추적, 아키텍처 적절성 판단, 레거시 개선 등 체계적인 프로젝트 개발 역량
과
협업 역량, 문제 해결 페어 리뷰 등 개발 자세
를 기르며, 실제 개발을 통한 배움
을 지향하는 10인 개발 스터디
입니다.
[팀 구성(총 10명)]
- [DESIGN] 3인 - Figma, HTML, CSS, JS
- [FE] 2인 - Vue.js , Flutter
담당중
[BE] 3인 - Java, Spring boot , Spring Date JPA , MSSQL , Docker , AWS , Python , Django담당중
[ML] 2인 - Python , sklean , Flask
[협업 방식]
주기적인 페어 리뷰를 통한 부족한 점을 보완 및 발생 가능한 위험을 초기 대응을 위한 에자일 스크럼
방식을 사용하고 있으며,
데일리 스크럼 , 스프린트 리뷰를 통해 정확한 작업 검토가 가능해져, 프로젝트를 성공적으로 운영하고 있습니다.
- 주 1회 스프린트 회의:
목표설정
,도전 과제 해결 과정 및 지식 공유 문서 페어리뷰
- 매일 20분씩 Daily Scrum:
작업검토 및 전략회의
,도전과제 설계