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

[FEAT] 새로운 AWS 계정에서 Prod 환경 CI/CD 구축 #418

Merged
merged 10 commits into from
Nov 28, 2024

Conversation

leegwichan
Copy link
Contributor

@leegwichan leegwichan commented Nov 27, 2024

Issue Number

#415

As-Is

  • AWS 계정 이관을 위해 Prod 환경 CI/CD 구축 필요
  • CI는 문제 없음 확인 링크
  • CD는 전반적인 구조 변경으로 스크립트가 변경 되어야 함

To-Be

  • EC2 1대를 대상으로 Blue/Green 배포 진행

Check List

  • 테스트가 전부 통과되었나요?
  • 모든 commit이 push 되었나요?
  • merge할 branch를 확인했나요?
  • Assignee를 지정했나요?
  • Label을 지정했나요?

Test Screenshot

https://github.com/woowacourse-teams/2024-ddangkong/actions/runs/12048033899
정상적으로 Blue/Green 배포가 완료되는 것을 확인

(Optional) Additional Description

@leegwichan leegwichan added 🚨 hotfix 핫픽스 🗺 infra 인프라 관련 🍃 BE back end labels Nov 27, 2024
@leegwichan leegwichan self-assigned this Nov 27, 2024
@leegwichan
Copy link
Contributor Author

leegwichan commented Nov 27, 2024

현재 상황

  • 내일까지 이관을 모두 마쳐야 함 (특히 Prod 환경은 ...)
  • 적은 리소스(1~2일)로 안정적인 CD를 구축해야 함
    • (미리 했으면 되지 않냐고요? 미안합니다... 다들 바빴잖아요...)
  • 앞으로의 배포 횟수가 많지 않을 것으로 기대 됨

작업 방향

  • 기존의 구조를 최대한 이용하여 CD 구축
  • 최적화 할 수 있지만, 일단 구축하고 추후에 리팩터링 하는 것을 목표로 함
  • Replication 관련 코드는 과감하게 삭제 (나중에 필요하면 PR을 뒤져보도록 하자)

CD 추후 개선 방향

  • EC2에 Self-Hosted Runner가 설치되어 있는데, EC2의 리소스를 잡아먹으므로, Github Runner에서 ssh로 EC2에 접속하도록 수정해야 한다
  • 현재 한 EC2에 여러 번 접속하는데, 이를 한번만 접속하도록 수정해야 한다

@leegwichan leegwichan added 🔥 Emergency 긴급 처리(2명 리뷰 머지 PR) and removed 🚨 hotfix 핫픽스 labels Nov 27, 2024
Copy link
Member

@jhon3242 jhon3242 left a comment

Choose a reason for hiding this comment

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

LGTM~

@@ -3,15 +3,15 @@
GREEN_PORT=$1

health_check_process() {
# 헬스 체크를 최대 5번 시도 (3초 간격)
# 헬스 체크를 최대 5번 시도 (5초 간격)
Copy link
Member

Choose a reason for hiding this comment

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

질문) 3초에서 5초로 바뀐 이유가 무엇인가요??

Copy link
Contributor Author

Choose a reason for hiding this comment

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

EC2 환경이 너프되면서, 더 긴 시간이 필요하다고 느꼈습니다. 그래서 5초로 늘렸습니다.

근데, 10초로 하든, 5초로 하든 두 번째 헬스 체크에서 통과하더라구요;;
그래서 3초로 해도 크게 문제 없을 것 같긴 합니다. 타칸은 다른 의견 있으신가요?

Copy link
Member

@PgmJun PgmJun left a comment

Choose a reason for hiding this comment

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

빠른 처리 굿굿 의견 남겼는데 확인부탁해요~!

needs: [ build ]
uses: ./.github/workflows/blue-green.yml
with:
self_hosted_runner: prod-a
self_hosted_runner: prod
Copy link
Member

Choose a reason for hiding this comment

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

사소한 의견) Linux랑 X64까지 표기해줬으면 좋겠어요~
환경까지 구분 명확히 해주면 좋을 것 같아서요~ 저는 dev, X64, Linux 로 해뒀어용

Copy link
Contributor Author

Choose a reason for hiding this comment

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

./.github/workflows/blue-green.yml에 값을 넘겨 주어 사용하는 것이다 보니, 환경까지 넘겨주기에는 최적화 되어있지 않네요;;

@@ -3,15 +3,15 @@
GREEN_PORT=$1
Copy link
Member

Choose a reason for hiding this comment

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

의견) scripts 패키지 dev, prod 패키지로 한 번 더 구분하면 어떨까요? dev도 여기서 관리하고 싶은데
헷갈릴까봐 지금은 dev ec2 안에서 script 관리하고 있어요!
Dev도 굳이 인프라 안들어가고 여기서 관리하고 싶음요

Copy link
Contributor Author

Choose a reason for hiding this comment

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

넵 그래서 스크립트를 scripts/prod/ 폴더로 옮겼습니다~

Copy link
Member

Choose a reason for hiding this comment

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

넵 굿굿

Comment on lines +5 to +8
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://${secret.datasource.host}:${secret.datasource.port}/${secret.datasource.database}?useUnicode=true&characterEncoding=utf8&allowPublicKeyRetrieval=true&autoReconnect=true&serverTimezone=Asia/Seoul&useLegacyDatetimeCode=false
username: ${secret.datasource.username}
password: ${secret.datasource.password}
Copy link
Member

Choose a reason for hiding this comment

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

내 소중한 작업이ㅠㅠㅠ

@@ -20,7 +14,7 @@ spring:
jpa:
database-platform: org.hibernate.dialect.MySQLDialect
hibernate:
ddl-auto: none
ddl-auto: validate
Copy link
Member

Choose a reason for hiding this comment

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

👍🏻

@leegwichan leegwichan merged commit b998bdd into develop Nov 28, 2024
11 checks passed
@leegwichan leegwichan deleted the feat/#415 branch December 9, 2024 06:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🍃 BE back end 🔥 Emergency 긴급 처리(2명 리뷰 머지 PR) 🗺 infra 인프라 관련
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants