Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

version 2.10.2 #225

Merged
merged 2 commits into from
Dec 29, 2024
Merged

version 2.10.2 #225

merged 2 commits into from
Dec 29, 2024

Conversation

rlagkswn00
Copy link
Collaborator

교직원 스크랩 로직 정상화 및 스크랩간 직위 추가

* fix : 교직원 스크랩할 페이지 base url 변경(학과 홈페이지)

* remove : 리빙디자인, 커뮤니케이션 디자인 파서 삭제(미사용)

* fix : 학과 교직원 페이지 파서 수정(부동산 학과 제외)

* fix : 부동산 학과 파싱로직 변경

* feat : 교직원 스크랩시 필요한 정보 변경

* feat : 전체 학과 siteId, siteName 수정

* feat : 교직원 정보 지원 유무 검증을 위한 메서드 추가

* feat : siteId, siteName 필드값 추가로 인한 getter 변경

* remove : 교직원 스크랩 API Client 통합에 따른 미사용 클래스 삭제

* feat : 학과 교직원 스크랩 API Client 로직 변경

* feat : 교직원 스크랩 과정 간 직위정보 추가

* feat : StaffUpdater 스크랩 로직 수정

* feat : 수의예과, 수의학과 중복 교직원 정보 제거를 위한 distinct처리

* feat : test용 html 파일 추가(컴퓨터공학부, 부동산학과) 및 legacy 파일 이동

* test : 학과 교직원 정보 스크랩 로직 테스트코드 작성

* fix : entity position 추가 전 로직으로 수정

* remove : legacy StaffScraperTest 삭제

* remove : 불필요 주석 제거

* test : MockServerSupport 객체 생성

* remove : 불필요 DTO 제거

* test : 신규 StaffScraperTest 추가

* remove : 불필요 import문 삭제

* feat : StaffDTO identifier() 메서드 추가

* feat : 수의과대학 교직원 스크랩시 수의예과만 스크랩 하도록 변경

* feat : 전화번호 유틸 클래스 분리

* feat : 이메일 유틸 클래스 분리

* test : 이메일 유틸 클래스 테스트 추가

* teat : 전화번호 유틸 클래스 테스트 추가

* feat : Staff DB position column 추가

* feat : Staff & StaffDTO position 추가

* feat : StaffDTO position 비교 로직 추가

* feat : 이메일 valid 정책 수정(공백 허용)

* feat : Staff 업데이트시 직위 추가

* feat : 교직원 스크랩 스케쥴링 월 1회 활성화

* feat : EmailSupporter & PhoneNumberSupporter 검증/변환 로직 분리

* feat : EmailSupporter & PhoneNumberSupporter 검증 메서드 테스트 추가

* feat : StaffDTO 객체 생성 간 email, phone 검증, 변환하도록 수정

* refactor : 불필요 import문 제거

* refactor : 테스트 클래스 및 메서드 public 키워드 제거

* refactor : 주석 TODO 키워드 제거 및 replaceAll() -> replace() 변경

* feat : 직위 추가에 따른 StaffUpdate 로직 변경

* refactor : 람다 함수 사용 간 불필요 괄호 제거

* feat : 전화번호 없을 경우 기본 저장 값 변경("-" -> "")

* fix : StaffUpdate 로직 변경에 따른 Staff 도메인 테스트 변경(identifier(), 전화번호)

* test : StaffUpdate 로직 변경에 따른 테스트 코드 변경(identifier(), 전화번호, 직위)

* refactor : 소나큐브 이슈 수정(변수명 컨벤션)

* remove : 불필요 출력문 제거

* feat : 교직원 스크랩 스케쥴링 시간 1분 변경.(테스트 후 30분 되돌릴 예정)
* fix : ddl default 값 변경

* fix : 성공 학과 구분 없이 전체 학과 대상으로 업데이트하도록 수정

* test: 교직원 스크랩코드 변경에 따른 테스트 코드 수정

* remove : 불필요 출력문 제거
@rlagkswn00 rlagkswn00 self-assigned this Dec 27, 2024
@rlagkswn00 rlagkswn00 added the 🚀 Deploy Production deploy production server label Dec 27, 2024
Copy link

Unit Test Results

  48 files  ±0    48 suites  ±0   50s ⏱️ +6s
252 tests  - 5  251 ✔️ +4  1 💤  - 9  0 ±0 
255 runs   - 5  254 ✔️ +4  1 💤  - 9  0 ±0 

Results for commit 595d7d4. ± Comparison against base commit 7ebe9d4.

This pull request removes 16 and adds 11 tests. Note that renamed tests count towards both.
com.kustacks.kuring.staff.domain.StaffTest ‑ [15] phone= , expected=-
com.kustacks.kuring.staff.domain.StaffTest ‑ [16] phone=, expected=-
com.kustacks.kuring.staff.domain.StaffTest ‑ [17] phone=null, expected=-
com.kustacks.kuring.worker.parser.StaffHtmlParserTemplateTest ‑ 리빙 디자인 학과의 교수진 정보를 파싱한다.
com.kustacks.kuring.worker.parser.StaffHtmlParserTemplateTest ‑ 부동 학과의 교수진 정보를 파싱한다.
com.kustacks.kuring.worker.parser.StaffHtmlParserTemplateTest ‑ 커뮤니케이션 디자인 학과의 교수진 정보를 파싱한다.
com.kustacks.kuring.worker.parser.StaffHtmlParserTemplateTest ‑ 컴퓨터공학과의 교수진 정보를 파싱한다.
com.kustacks.kuring.worker.parser.StaffScraperTest$Fail$APIError ‑ EachDept
com.kustacks.kuring.worker.parser.StaffScraperTest$Fail$APIError ‑ Ku
com.kustacks.kuring.worker.parser.StaffScraperTest$Fail$APIError ‑ RealEstate
…
com.kustacks.kuring.common.utils.converter.EmailSupporterTest ‑ 이메일 Null or Blank 테스트
com.kustacks.kuring.common.utils.converter.EmailSupporterTest ‑ 이메일 구조 변경 테스트
com.kustacks.kuring.common.utils.converter.PhoneNumberSupporterTest ‑ 전화번호 Null or Blank 테스트
com.kustacks.kuring.common.utils.converter.PhoneNumberSupporterTest ‑ 전화번호 구조 변경 테스트
com.kustacks.kuring.staff.domain.StaffTest ‑ [15] phone= , expected=
com.kustacks.kuring.staff.domain.StaffTest ‑ [16] phone=, expected=
com.kustacks.kuring.staff.domain.StaffTest ‑ [17] phone=null, expected=
com.kustacks.kuring.worker.parser.StaffHtmlParserTemplateTest ‑ 부동산 학과의 교수진 정보를 파싱한다.
com.kustacks.kuring.worker.parser.StaffHtmlParserTemplateTest ‑ 컴퓨터공학부 홈페이지의 교수진 정보를 파싱한다.
com.kustacks.kuring.worker.scrap.StaffScraperTest ‑ 부동산학과 교직원 정보를 스크랩한다.
…

Copy link
Member

@zbqmgldjfh zbqmgldjfh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

만약 Prod에 배포를 진행하였는데, 앱에 문제가 있거나 정상동작하지 않을 경우
어떤 방식(or 어떤 단계를 거쳐서)으로 RollBack할지 스스로 생각후 comment하나 남겨주세요!
이후 main에 스쿼지 merge하시쥬~

@rlagkswn00
Copy link
Collaborator Author

깃허브와 노션을 슥슥 보며 생각한거라 제 이야기가 이상하다면 말씀해주세욥...👍
코멘트 주시면 머지할게용 🙇

롤백을 하는 방법 이전에 언제 해야하는지를 런타임 이전과 이후로 나눠봤습니다.

1. 런타임 이전(컴파일 및 배포 단계)

  • 이 단계에서는 Github Action과 CodeDeploy가 역할을 수행합니다.
  • 이 과정에서 Github Action이 jar파일을 생성하고 S3에 전송, Code Deploy가 실행합니다.
  • 컴파일 단계(Github Action 실패)에서 문제가 발생한다면 이전 버전의 서버가 정상적으로 구동되고 있으므로 롤백이 아닌 오류 수정 후 Github Action의 job을 재실행해야 합니다.
  • ** 배포 과정에서 문제가 발생한다면 서버가 다운된 채로 유지될 수 있으므로 빠른 롤백이 필요합니다. 이전 서버 중지된 후 새로 시작되지 않는 경우가 대표적인 경우인거 같습니다.**

2. 런타임 이후

  • 이 단계에서는 이미 서버가 정상적으로 로드되었으며 구동중입니다.
  • 하지만, 개발 서버에서 찾지 못한 기능 오류가 발생 할 수 있습니다.
  • 이 경우 오류의 중요도에 따라 롤백여부가 정해질거 같습니다.
  • 중요도에 따라 롤백하거나, HOTFIX하거나, 이후 태스크에 높은 우선순위로 추가할거 같습니다.
  • 롤백해야하는 경우는 이번 패치 내용의 양이 많아도 전체 패치 내용을 철회할만큼 중요한 이슈라면 해야할 것입니다. 예를 들어 크리티컬한 정보가 잘못 저장되거나 수정되는 경우가 있는듯 합니다.
  • HOTFIX는 크리티컬한 오류이나 쉽게 원인이 파악됐고, 쉽게 수정이 가능한 경우라 생각이 드네용.

쿠링에서 롤백해야되는 경우를 생각해보면 현재 가장 메인 기능인 공지사항 스크랩 기능 및 알림 기능이 비정상 동작하는 경우인듯 합니다.

이에 따른 롤백 플랜을 생각해봤습니닷.

1. git revert

  • 가장 먼저 떠올랐습니다 하핳😄
  • Github Action기반으로 배포하고 있기 때문에, git revert해서 이전 버전으로 롤백하는 것이 가장 쉬운 방법이라 생각했습니다.

2. Code Deploy 에서 이전 버전 배포 재시도

  • Code Deploy에 이전 버전이 배포된 기록이 남아있기 때문에 이전 정상 버전으로 재배포하도록� 수동으로 지시합니다.

3. jar파일 수동 백업

  • 현재 S3에 있는 jar파일을 서버에 저장하고 배포하는데, 현재 있는 버전을 백업해두고, 롤백 시 이 파일을 바탕으로 수동으로 커맨드를 입력합니다.
  • 혹은, 스크립트를 짜고 실행할 수 있을거 같습니다.

당장 쉽게 할 수 있는 방법은 이정도라고 생각했고, 만약 롤백해야한다면, 2번의 방법으로 진행하는게 당장 하기 좋은 방법이라 생각합니다. 근데 혹시몰라서 3번의 방법도 해두려고 합니다.

추후에 보완을 해보자면 Code Deploy의 롤백을 활성화하여 배포 단계에서 생긴 문제를 자동으로 복구할 수 있을거 같아요.
런타임 이후의 문제를 해결하기 위해서는 배포 시에 이전 버전의 jar파일을 꼭 백업하도록 스크립트를 수정하고, 백업된 jar파일을 통해 롤백할 수 있도록 스크립트를 짜둘거 같습니닷.

별도로 테스트를 열심히 해서 롤백할 일을 없게 만드는게 가장 좋지 않나... 생각이 들었습니다 😅

@zbqmgldjfh
Copy link
Member

@rlagkswn00
사실 버그는 생각하지 못했던 부분에서도 항상 발생할 수 있기에!!
작성해주신것 처럼, revert하여 바로 이전 커밋으로 돌린후 수정하여 다시 merge하면 될것 같아요!
수고하셨습니다!!

이미 dev에서 squah한 commit들이기 때문에 rebase 또는 merge 그냥 하셔도될것 같아요!
(squah 꼭 안해도 됨, 이전 squah된 commit들만 정상적으로 main branch 위에 추가되면 됩니다!)

@rlagkswn00 rlagkswn00 merged commit 997f1e1 into main Dec 29, 2024
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🚀 Deploy Production deploy production server
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants