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

chore: 개발 서버를 추가하고, 워크플로우를 개선한다 #126

Merged
merged 8 commits into from
Apr 4, 2024

Conversation

0chil
Copy link
Collaborator

@0chil 0chil commented Apr 3, 2024

고민한 사항 공유

노션 링크입니다.
곧 스낵게임 문서로 복사해 넣겠습니다.

변경 사항

AS-IS

  • 변경 사항을 (거의) 즉시 운영 브랜치/서버에 배포하였다.
    • 이 과정에서 가끔 뒤늦은 장애가 발생하기도 하였다.

TO-BE

  • 완성도 높은 소프트웨어 개발을 위해 개발 브랜치/서버 단계를 추가한다.
    • 절차 추가를 최소화하여 '개발 브랜치' 단계 추가로 인한 불편함, 복잡함(인력 증가)을 완화한다. (Github Actions 사용)
  • 운영서버에 배포할 때는 테스트를 모두 통과해야 한다.
    • bootjar 대신 build task를 사용한다.
      • 당장 실행 가능한 Jar 컴파일하기 vs 테스트를 거쳐 컴파일하기
      • War와 Jar의 차이는?

(개발 서버 및 DB 세팅 완료)

@0chil 0chil added the infra label Apr 3, 2024
@0chil 0chil self-assigned this Apr 3, 2024
0chil added 3 commits April 4, 2024 02:37
@Hwanvely
Copy link
Collaborator

Hwanvely commented Apr 4, 2024

그림 아주 깔끔하고 이해도 잘됩니다 :)

스크린샷 2024-04-04 오전 10 44 00

이 부분 해결하셨으면 저도 공유해주시면 감사하겠습니다!

@Hwanvely
Copy link
Collaborator

Hwanvely commented Apr 4, 2024

스크린샷 2024-04-04 오전 11 22 44

여기서 test 통과가 불필요한 이유 알 수 있을까요?

@0chil
Copy link
Collaborator Author

0chil commented Apr 4, 2024

스크린샷 2024-04-04 오전 11 22 44

여기서 test 통과가 불필요한 이유 알 수 있을까요?

개발 단계에서는 테스트 작성 시기를 자유롭게 가져가기 위함입니다.
후에 '기능 개발에는 유닛 테스트가 동반되어야 한다' 이런식으로 룰을 정할 수 있을 것 같네요!

@0chil
Copy link
Collaborator Author

0chil commented Apr 4, 2024

그림 아주 깔끔하고 이해도 잘됩니다 :)

스크린샷 2024-04-04 오전 10 44 00 이 부분 해결하셨으면 저도 공유해주시면 감사하겠습니다!

이거는 참고하고, 찾아보시라고 남긴 커멘트입니다.

  • Jar와 War의 차이는 War에는 OOO이 없습니다.

@0chil 0chil requested a review from Hwanvely April 4, 2024 05:03
@@ -0,0 +1,126 @@
name: 변경사항을 운영 서버에 배포한다
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

이 스크립트는 dev-deploy.yml과 발동 조건 빼고 동일합니다.

Copy link
Collaborator

Choose a reason for hiding this comment

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

그 발동 조건이 branches: main이고 job runs-on 부분만 다른거 맞죠? 확인차 여쭙니다.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

그 발동 조건이 branches: main이고 job runs-on 부분만 다른거 맞죠? 확인차 여쭙니다.

맞습니다!

@@ -0,0 +1,49 @@
name: 승인된 변경사항을 운영 브랜치에 반영한다
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

이건 아직 정상 동작하는지 모릅니다.. 실제 돌려봐야 알 수 있겠네요 ㅋㅋ

src/main/resources/application-dev.yml Show resolved Hide resolved
@Hwanvely
Copy link
Collaborator

Hwanvely commented Apr 4, 2024

문서 일일이 찾아가며 고생하셨습니다!

Copy link
Collaborator

@Hwanvely Hwanvely left a comment

Choose a reason for hiding this comment

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

고생하셨습니다!

Comment on lines +50 to +56
PORT_A_PID=$(lsof -ti:${{ vars.APPLICATION_PORT_A }})
PORT_B_PID=$(lsof -ti:${{ vars.APPLICATION_PORT_B }})
if [ -n $PORT_A_PID -a -n $PORT_B_PID ]; then
echo "::error title=배포 실패::$PORT_A_PID, $PORT_B_PID 두 포트가 모두 사용중입니다";
exit 1;
fi

Copy link
Collaborator

Choose a reason for hiding this comment

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

포트를 둘다 쓰고 있을 경우가 있나요??

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

오류가 난 적 있었어요. (짧은 시간에 여러번 배포시도한 경우)
스크립트가 서버 잘 실행된줄 알고 계속 접속 시도하더라구요.

Comment on lines 84 to 86
-DPRODUCTION_DB_URL=${{ secrets.DB_URL }} \
-DPRODUCTION_DB_USERNAME=${{ secrets.DB_USERNAME }} \
-DPRODUCTION_DB_PASSWORD=${{ secrets.DB_PASSWORD }} \
Copy link
Collaborator

Choose a reason for hiding this comment

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

DPRODUCTION_ 이라는 이름이 '운영 서버'의 의미로 썼던건가요 아님 다른 의미가 있나요??

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

운영의 의미로 사용했습니다.
이제 환경에 따라 프로파일 및 시크릿이 분리되었기 때문에 PRODUCTION_ 접두사를 유지할 필요가 없어서 제거했습니다.

@@ -0,0 +1,126 @@
name: 변경사항을 운영 서버에 배포한다
Copy link
Collaborator

Choose a reason for hiding this comment

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

그 발동 조건이 branches: main이고 job runs-on 부분만 다른거 맞죠? 확인차 여쭙니다.

src/main/resources/application-dev.yml Show resolved Hide resolved
@0chil 0chil merged commit c2bc926 into main Apr 4, 2024
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants