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

[IDLE-518] bastion서버를 통해 production 서버로 접근 후, 배포하도록 설정 #252

Merged
merged 1 commit into from
Jan 16, 2025

Conversation

mjj111
Copy link
Member

@mjj111 mjj111 commented Jan 16, 2025

1. 📄 Summary

Bastion 서버를 통해 VPC private subnet에 속한 서버로 접근하여 배포하는 구조로 수정

2. ✏️ Documentation

  • 기존 workflow YAML 파일에서 수정한 내용을 최소화하면서 배포 구조를 변경
  • Bastion 서버를 경유하여 private subnet에 위치한 서버에 접근 및 배포 가능하도록 설정

3. 🤔 고민했던 점

  • 기존 설정을 최대한 유지하며 변경 사항을 최소화하고자 했습니다.
  • 배포 과정에서 CD 설정 누락으로 인한 이슈를 사전에 방지할 필요가 있었습니다.

4. 💡 알게된 점, 궁금한 점

  • MySQL, Redis, EC2 서버들의 경우 내부에서 주로 사용되지만, 외부로 호출되는 경우가 많아 보안 관리가 어려웠던 점이 있었습니다.
  • Bastion 서버를 통해 접근 구조를 변경함으로써 보안성이 향상되었으나, CD 과정에서 수정이 필요하다는 점을 간과했습니다.
  • 이번 작업은 Bastion 서버를 활용한 배포 구조 구축 경험이 처음이라 새로운 학습이 많았습니다.

Summary by CodeRabbit

  • 배포
    • 프로덕션 서버 배포 워크플로우 최적화
    • Docker 및 Docker Compose 설치 프로세스 간소화
    • SSH 기반 배포 방식으로 변경
    • 베스천 호스트를 통한 서버 접근 방식 개선

@mjj111 mjj111 added the 🌍인프라 인프라 환경 이슈 label Jan 16, 2025
@mjj111 mjj111 self-assigned this Jan 16, 2025
Copy link

coderabbitai bot commented Jan 16, 2025

워크스루

GitHub Actions 워크플로우 파일인 prod-server-deployer.yaml의 배포 단계가 크게 수정되었습니다. Docker 및 Docker Compose 설치 과정이 단일 SSH 명령으로 통합되었으며, 베스천 호스트를 통해 프로덕션 서버에 접속하는 방식으로 변경되었습니다. 배포 스크립트는 이제 더욱 간소화된 접근 방식을 채택하여 여러 명령을 단일 SSH 세션에서 실행합니다.

변경 사항

파일 변경 요약
.github/workflows/prod-server-deployer.yaml - Docker 및 Docker Compose 설치 단계 통합
- 베스천 호스트를 통한 SSH 배포 프로세스 수정
- 환경 변수 구성 및 배포 명령 단일화

관련 가능성이 있는 PR


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR. (Beta)
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (1)
.github/workflows/prod-server-deployer.yaml (1)

95-95: YAML 파일 포맷 수정이 필요합니다.

파일 끝에 개행 문자가 없습니다. YAML 표준에 따라 파일 끝에 개행 문자를 추가해 주세요.

  --cidr ${{ steps.publicip.outputs.ip }}/32
+ 
🧰 Tools
🪛 yamllint (1.35.1)

[error] 95-95: no new line character at the end of file

(new-line-at-end-of-file)

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 274eb8f and de249a6.

📒 Files selected for processing (1)
  • .github/workflows/prod-server-deployer.yaml (1 hunks)
🧰 Additional context used
🪛 yamllint (1.35.1)
.github/workflows/prod-server-deployer.yaml

[error] 95-95: no new line character at the end of file

(new-line-at-end-of-file)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Build and analyze

Comment on lines +70 to +87
- name: SSH to Bastion and deploy to Production server
uses: appleboy/ssh-action@master
with:
host: ${{ vars.INSTANCE_HOST }}
username: ${{ vars.INSTANCE_USERNAME }}
host: ${{ vars.BASTION_HOST }}
username: ${{ vars.BASTION_USERNAME }}
key: ${{ secrets.INSTANCE_PEM_KEY }}
script: |
ssh -o "ProxyJump=${{ vars.BASTION_HOST }}" -i ${{ secrets.INSTANCE_PEM_KEY }} ${{ vars.INSTANCE_USERNAME }}@${{ vars.INSTANCE_HOST }} << 'EOF'
sudo docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
sudo docker pull public.ecr.aws/f5q3r6m5/idle-prod-ecr:$IMAGE_TAG
if [ $(sudo docker ps -q -f name=caremeet_server_prod) ]; then
sudo docker stop caremeet_server_prod
sudo docker rm caremeet_server_prod
sudo docker stop caremeet_server_prod
sudo docker rm caremeet_server_prod
fi
sudo docker run --name caremeet_server_prod --env-file ./app/docker/.env \
-e SPRING_PROFILES_ACTIVE=prod \
-d -p 8080:8080 public.ecr.aws/f5q3r6m5/idle-prod-ecr:$IMAGE_TAG
EOF
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

배포 프로세스의 안정성 향상이 필요합니다.

현재 배포 스크립트에서 다음과 같은 개선이 필요합니다:

  1. $IMAGE_TAG 변수가 정의되지 않았습니다.
  2. 배포 후 컨테이너 상태 확인이 없습니다.
  3. 이전 컨테이너의 백업 프로세스가 없습니다.
  4. 컨테이너 이름과 포트가 하드코딩되어 있습니다.

다음과 같이 수정하는 것을 제안드립니다:

  ssh -o "ProxyJump=${{ vars.BASTION_HOST }}" -i ${{ secrets.INSTANCE_PEM_KEY }} ${{ vars.INSTANCE_USERNAME }}@${{ vars.INSTANCE_HOST }} << 'EOF'
+   set -e  # 오류 발생 시 스크립트 중단
+   
+   # 환경 변수 설정
+   CONTAINER_NAME="caremeet_server_prod"
+   IMAGE_TAG="${{ github.sha }}"  # 또는 적절한 태그 설정
+   
    sudo docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
    sudo docker pull public.ecr.aws/f5q3r6m5/idle-prod-ecr:$IMAGE_TAG
-   if [ $(sudo docker ps -q -f name=caremeet_server_prod) ]; then
+   
+   # 기존 컨테이너 백업
+   if [ $(sudo docker ps -q -f name=$CONTAINER_NAME) ]; then
+     echo "Backing up existing container..."
+     BACKUP_NAME="${CONTAINER_NAME}_backup_$(date +%Y%m%d_%H%M%S)"
+     sudo docker rename $CONTAINER_NAME $BACKUP_NAME
      sudo docker stop caremeet_server_prod
      sudo docker rm caremeet_server_prod
    fi
+   
+   # 새 컨테이너 실행
    sudo docker run --name caremeet_server_prod --env-file ./app/docker/.env \
    -e SPRING_PROFILES_ACTIVE=prod \
    -d -p 8080:8080 public.ecr.aws/f5q3r6m5/idle-prod-ecr:$IMAGE_TAG
+   
+   # 컨테이너 상태 확인
+   echo "Waiting for container to be healthy..."
+   sleep 10
+   if ! sudo docker ps | grep -q $CONTAINER_NAME; then
+     echo "Deployment failed. Rolling back..."
+     sudo docker start $BACKUP_NAME
+     exit 1
+   fi
+   
+   # 백업 컨테이너 정리
+   if [ -n "$BACKUP_NAME" ]; then
+     sudo docker rm $BACKUP_NAME
+   fi
  EOF

Committable suggestion skipped: line range outside the PR's diff.

Comment on lines +46 to +68
- name: SSH to Bastion and Install Docker if not present on Production server
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ vars.INSTANCE_HOST }}
username: ${{ vars.INSTANCE_USERNAME }}
host: ${{ vars.BASTION_HOST }}
username: ${{ vars.BASTION_USERNAME }}
key: ${{ secrets.INSTANCE_PEM_KEY }}
script: |
if ! command -v docker >/dev/null 2>&1; then
echo "Installing Docker..."
sudo apt-get update
sudo apt-get install -y docker.io
else
echo "Docker already installed."
fi
if ! command -v docker-compose >/dev/null 2>&1; then
echo "Installing Docker Compose..."
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
else
echo "Docker Compose already installed."
fi

- name: Configuration Env file
uses: appleboy/ssh-action@master
env:
VARS_CONTEXT: ${{ toJson(vars) }}
SECRETS_CONTEXT: ${{ toJson(secrets) }}
with:
host: ${{ vars.INSTANCE_HOST }}
username: ${{ vars.INSTANCE_USERNAME }}
key: ${{ secrets.INSTANCE_PEM_KEY }}
envs: VARS_CONTEXT,SECRETS_CONTEXT
script: |
cd ~/app/docker
jq -s '.[0] * .[1] | del(.INSTANCE_PEM_KEY)' <(echo "$VARS_CONTEXT") <(echo "$SECRETS_CONTEXT") \
| jq -r 'to_entries | map("\(.key)=\(.value)") | .[]' > .env
ssh -o "ProxyJump=${{ vars.BASTION_HOST }}" -i ${{ secrets.INSTANCE_PEM_KEY }} ${{ vars.INSTANCE_USERNAME }}@${{ vars.INSTANCE_HOST }} << 'EOF'
if ! command -v docker >/dev/null 2>&1; then
echo "Installing Docker..."
sudo apt-get update
sudo apt-get install -y docker.io
else
echo "Docker already installed."
fi
if ! command -v docker-compose >/dev/null 2>&1; then
echo "Installing Docker Compose..."
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
else
echo "Docker Compose already installed."
fi
EOF
Copy link

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Docker 설치 프로세스 개선이 필요합니다.

다음 사항들을 고려해 주시기 바랍니다:

  1. Docker Compose 버전(1.29.2)이 오래되었습니다. 최신 안정 버전을 사용하는 것이 좋습니다.
  2. 설치 실패 시 에러 처리가 없습니다.
  3. 설치 후 버전 확인이 필요합니다.

다음과 같이 수정하는 것을 제안드립니다:

  ssh -o "ProxyJump=${{ vars.BASTION_HOST }}" -i ${{ secrets.INSTANCE_PEM_KEY }} ${{ vars.INSTANCE_USERNAME }}@${{ vars.INSTANCE_HOST }} << 'EOF'
+   set -e  # 오류 발생 시 스크립트 중단
    if ! command -v docker >/dev/null 2>&1; then
      echo "Installing Docker..."
      sudo apt-get update
      sudo apt-get install -y docker.io
+     # 설치 확인
+     sudo docker --version || exit 1
    else
      echo "Docker already installed."
    fi
    if ! command -v docker-compose >/dev/null 2>&1; then
      echo "Installing Docker Compose..."
-     sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
+     COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep 'tag_name' | cut -d'"' -f4)
+     sudo curl -L "https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
      sudo chmod +x /usr/local/bin/docker-compose
+     # 설치 확인
+     sudo docker-compose --version || exit 1
    else
      echo "Docker Compose already installed."
    fi
  EOF
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: SSH to Bastion and Install Docker if not present on Production server
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ vars.INSTANCE_HOST }}
username: ${{ vars.INSTANCE_USERNAME }}
host: ${{ vars.BASTION_HOST }}
username: ${{ vars.BASTION_USERNAME }}
key: ${{ secrets.INSTANCE_PEM_KEY }}
script: |
if ! command -v docker >/dev/null 2>&1; then
echo "Installing Docker..."
sudo apt-get update
sudo apt-get install -y docker.io
else
echo "Docker already installed."
fi
if ! command -v docker-compose >/dev/null 2>&1; then
echo "Installing Docker Compose..."
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
else
echo "Docker Compose already installed."
fi
- name: Configuration Env file
uses: appleboy/ssh-action@master
env:
VARS_CONTEXT: ${{ toJson(vars) }}
SECRETS_CONTEXT: ${{ toJson(secrets) }}
with:
host: ${{ vars.INSTANCE_HOST }}
username: ${{ vars.INSTANCE_USERNAME }}
key: ${{ secrets.INSTANCE_PEM_KEY }}
envs: VARS_CONTEXT,SECRETS_CONTEXT
script: |
cd ~/app/docker
jq -s '.[0] * .[1] | del(.INSTANCE_PEM_KEY)' <(echo "$VARS_CONTEXT") <(echo "$SECRETS_CONTEXT") \
| jq -r 'to_entries | map("\(.key)=\(.value)") | .[]' > .env
ssh -o "ProxyJump=${{ vars.BASTION_HOST }}" -i ${{ secrets.INSTANCE_PEM_KEY }} ${{ vars.INSTANCE_USERNAME }}@${{ vars.INSTANCE_HOST }} << 'EOF'
if ! command -v docker >/dev/null 2>&1; then
echo "Installing Docker..."
sudo apt-get update
sudo apt-get install -y docker.io
else
echo "Docker already installed."
fi
if ! command -v docker-compose >/dev/null 2>&1; then
echo "Installing Docker Compose..."
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
else
echo "Docker Compose already installed."
fi
EOF
- name: SSH to Bastion and Install Docker if not present on Production server
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ vars.BASTION_HOST }}
username: ${{ vars.BASTION_USERNAME }}
key: ${{ secrets.INSTANCE_PEM_KEY }}
script: |
ssh -o "ProxyJump=${{ vars.BASTION_HOST }}" -i ${{ secrets.INSTANCE_PEM_KEY }} ${{ vars.INSTANCE_USERNAME }}@${{ vars.INSTANCE_HOST }} << 'EOF'
set -e # 오류 발생 시 스크립트 중단
if ! command -v docker >/dev/null 2>&1; then
echo "Installing Docker..."
sudo apt-get update
sudo apt-get install -y docker.io
# 설치 확인
sudo docker --version || exit 1
else
echo "Docker already installed."
fi
if ! command -v docker-compose >/dev/null 2>&1; then
echo "Installing Docker Compose..."
COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep 'tag_name' | cut -d'"' -f4)
sudo curl -L "https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# 설치 확인
sudo docker-compose --version || exit 1
else
echo "Docker Compose already installed."
fi
EOF

@github-advanced-security
Copy link

This pull request sets up GitHub code scanning for this repository. Once the scans have completed and the checks have passed, the analysis results for this pull request branch will appear on this overview. Once you merge this pull request, the 'Security' tab will show more code scanning analysis results (for example, for the default branch). Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results. For more information about GitHub code scanning, check out the documentation.

@mjj111 mjj111 merged commit 63bda35 into develop Jan 16, 2025
5 checks passed
@mjj111 mjj111 deleted the chore/IDLE-518 branch January 16, 2025 14:45
mjj111 added a commit that referenced this pull request Jan 19, 2025
* [IDLE-000] Production CI 스크립트 작성

* [IDLE-000] 센터 공고 수정 API 내 접수 방법 null 비허용

* [IDLE-000] 공고 지원자 조회 시, 삭제된 유저는 조회되지 않도록 수정

* [IDLE-363] 센터 관리자 전화 인증 요청 API

* [IDLE-363] 개발 환경 ddl-auto 옵션 임시로 create 옵션으로 변경

* [IDLE-365] 공고 크롤러 selenium 로직 수정 및 로컬 동작 확인

* [IDLE-365] 테스트를 위한 스케줄러 기준 시각 변경

* [IDLE-365] batch job enable 옵션 비활성화

* [IDLE-365] ddl-auto update로 변경

* [IDLE-365] 크롤링 공고 필드 null 비허용

* [IDLE-365] 스케줄러 시간 02시로 설정

* [IDLE-366] spring batch selenium 크롤링을 위한 빌드 스크립트 수정

* [IDLE-366] worknet 사이트가 고용 24 사이트로 통합됨에 따라, 크롤링 스크립트 수정

* [IDLE-366] 크롤러 동작 스케줄링 시간 변경

* [IDLE-366] 스프링 초기 실행 시, spring batch 자동 실행 방지 옵션 추가

* [IDLE-366] spring batch 5 버전에서 업데이트 된 변경사항 적용 및 별도의 JobLauncher 구현

* [IDLE-366] 불필요 의존성 및 옵션 제거

* [IDLE-366] 크롤링 조회 API 내 entity status 필드 추가 및 쿼리 수정

* [IDLE-358] 운영 환경 CD 구축 및 운영 환경 profile 설정 추가

* [IDLE-358] 운영 환경 docker run 실행 시 예외 처리

* [IDLE-000] 크롤링 전체 조회 DTO 생성자 추가

* [IDLE-000] 공고 전체 조회 fetchJoin() 중복 이슈 해결을 위한 subquery 분리

* [IDLE-000] AI 코드리뷰 coderabbit 도입

* [IDLE-000] 크롤링 공고 반경범위 조회 필터를 위한 where절 추가

* [IDLE-000] TimeZone 설정이 적용되지 않는 문제 해결

* [IDLE-000] TimeZone 지정 및 @EnableScheduling 설정

* [IDLE-000] TimeZone 설정 제거

* [IDLE-000] 공고 전체 조회 쿼리 롤백

* [IDLE-000] 기존 공고 내 location을 기반으로 위.경도 값을 decoding하도록 변경

* [IDLE-000] 배포 전 최종 QA

* [IDLE-000] 크롤링 공고 생성일자 필드 type 변경(timestamp -> date)

* [IDLE-000] Redis 비밀번호 설정 추가 (#171)

* [IDLE-000] Redis 비밀번호 설정 추가

* [IDLE-000] yaml 파일에 password 필드 추가

* [IDLE-000] redis local default password 설정

* [IDLE-000] compose 파일 내, 비밀번호 지정 command 설정

* [IDLE-000] Redis 볼륨 설정

* [IDLE-000] ci triggering branch 임시 변경

* [IDLE-000] ci triggering branch 롤백

* [IDLE-000] 테스트 심사 통과를 위한 전화번호 검증 로직 추가

* [IDLE-000] 테스트 심사 통과를 위한 전화번호 검증 로직 추가

* [IDLE-389] 센터 인증 요청 이벤트 발생 시, 디스코드 웹훅 알림을 전송하는 로직 작성

* [IDLE-389] 사업자 등록번호 client properties 클래스명 변경

* [IDLE-389] 코드 리뷰 반영

* [IDLE-000] 트랜잭션 전파 레벨 변경(REQUIRED -> REQUIRES_NEW)

* [IDLE-396] FCM 모듈 추가 및 firebase 의존성 설정

* readme 제목 수정

* readme 제목 수정

* [IDLE-399] FCM Device Token 관리 API

* [IDLE-399] 알림 도메인 설계

* [IDLE-000] fcm service 설정값 주입을 위한 디렉토리 구조 변경

* [IDLE-000] fcm service 설정값 주입을 위한 디렉토리 구조 변경

* [IDLE-400] 채용 공고 지원자 발생 시, 센터 관리자에게 알림을 발송한다.

* [IDLE-400] fcm 모듈 설정 추가

* [IDLE-400] 공고 지원자 발생 시, 모든 센터 관리자들에게 다중 알림을 발송한다.

* [IDLE-415] 알림 조회 처리 API

* [IDLE-417] 읽지 않은 알림 수 집계 API

* [IDLE-418] 알림 목록 조회 API

* [IDLE-418] 피드백 반영

* [IDLE-423] soft-delete가 적용된 즐겨찾기 entity에서, 즐겨찾기 해제 후 다시 설정하는 경우 발생하는 버그를 해결한다.

* [IDLE-424] 요양 보호사 공고 전체 조회 시, 삭제된 공고가 함께 보이는 문제 해결

* [IDLE-400] 채용 공고 지원자 발생 시, 센터 관리자에게 알림을 발송한다. (#183)

* [IDLE-400] 채용 공고 지원자 발생 시, 센터 관리자에게 알림을 발송한다.

* [IDLE-400] fcm 모듈 설정 추가

* [IDLE-400] 공고 지원자 발생 시, 모든 센터 관리자들에게 다중 알림을 발송한다.

* [IDLE-400] 채용 공고 지원자 발생 시, 센터 관리자에게 알림을 발송한다.

* [IDLE-400] fcm 모듈 설정 추가

* [IDLE-400] 공고 지원자 발생 시, 모든 센터 관리자들에게 다중 알림을 발송한다.

* [IDLE-415] 알림 조회 처리 API

* [IDLE-417] 읽지 않은 알림 수 집계 API

* [IDLE-418] 알림 목록 조회 API

* [IDLE-418] 피드백 반영

* [IDLE-423] soft-delete가 적용된 즐겨찾기 entity에서, 즐겨찾기 해제 후 다시 설정하는 경우 발생하는 버그를 해결한다.

* [IDLE-424] 요양 보호사 공고 전체 조회 시, 삭제된 공고가 함께 보이는 문제 해결

* [IDLE-400] 알림 명세 변경

* [IDLE-400] fcm 설정 파일 디렉토리 path 변경

* [IDLE-400] ddl 옵션 변경

* [IDLE-400] ci/cd 옵션 변경

* [IDLE-000] ci triggering branch 복구

* [IDLE-000] develop 환경에서 fcm service 설정 파일 path 수정

* [IDLE-000] fcm service json 파일명 변경

* [IDLE-000] firebase service key 설정 경로 체크를 위해, cd 스크립트를 수정합니다.

* Update README.md

* [IDLE-000] fcm service key 경로를 class path 경로로 수정 시도

* [IDLE-000] ci triggering branch 임시 변경

* [IDLE-000] firebaseApp 초기화 임시 비활성화

* [IDLE-000] firebaseApp 초기화 임시 비활성화

* [IDLE-000] firebaseApp 초기화 임시 비활성화

* [IDLE-000] file path 앞에 ./ 제외

* [IDLE-000] 절대 경로로 변경 시도

* [IDLE-000] fcm service key 생성 path 수정

* [IDLE-000] fcm service key json file 생성 스크립트 작성

* [IDLE-000] ci triggering branch develop으로 롤백

* [IDLE-000] 불필요 스크립트 제거

* [IDLE-000] firebase config의 현재 경로를 출력하도록 print문 추가 (#197)

* [IDLE-000] firebase config의 현재 경로를 출력하도록 print문 추가

* [IDLE-000] ci triggering branch 수정

* [IDLE-000] ci triggering branch 수정

* [IDLE-000] firebase app 초기화 로직 주석 처리

* [IDLE-000] firebase app 초기화 로직 주석 처리

* [IDLE-000] firebase app 초기화 로직 주석 처리

* [IDLE-000] file 대신 string으로 주입받아 초기화하는 방식으로 전환

* [IDLE-000] 일반 string 대신 base64 인코딩 된 문자열을 주입하도록 처리

* [IDLE-000] 일반 string 주입으로 rollback

* [IDLE-000] json string log 추가

* [IDLE-000] base64 문자열로 재 변경

* [IDLE-000] firebase config의 현재 경로를 출력하도록 print문 추가

* [IDLE-429] DB 형상관리를 위한 Flyway 적용

* [IDLE-429] Flyway latest version으로 설정

* [IDLE-429] 피드백 반영

* [IDLE-000] firebase config의 현재 경로를 출력하도록 print문 추가

* [IDLE-000] 알림 조회 처리 로직에 @transactional 추가

* [IDLE-000] 알림 조회 시, 생성 시각 기준이 아닌 uuid v7 id 기준으로 내림차순 정렬하도록 변경

* [IDLE-000] CI 트리거 브랜치 복구

* [IDLE-454] 테스트를 위한 크롤링 수행 시각 변경 및 로깅 추가

* [IDLE-000] 공고 범위 검색 내 중복 데이터 발생 방지

* [IDLE-000] ci 트리거 브랜치 변경

* [IDLE-000] ci 트리거 브랜치 롤백

* [IDLE-000] monitoring 모듈 추가 및 actuator, prometheus 의존성 추가

* [IDLE-456] monitoring.yml 작성

* [IDLE-456] monitoring profile 추가

* [IDLE-456] actuator dependency group name 수정

* [IDLE-000] 크롤링 주기 하루 2회로 변경

* [IDLE-000] 불필요 로그 제거

* [IDLE-000] 인증번호 SMS 내용 수정

* [IDLE-000] classPath 하위 yaml 파일 확장자 모두 .yml로 통일

* [IDLE-000] 즐겨찾기 facade service에 트랜잭션 추가 (#206)

* [IDLE-000] firebase config의 현재 경로를 출력하도록 print문 추가

* [IDLE-000] facade service에 transaction 추가

* [IDLE-461] 유저가 다중 디바이스에서 알림을 받을 수 있도록 개선한다. (#207)

* [IDLE-000] firebase config의 현재 경로를 출력하도록 print문 추가

* [IDLE-461] 한 유저가 다중 디바이스 설정이 가능하도록 한다.

* [IDLE-000] firebase config의 현재 경로를 출력하도록 print문 추가

* [IDLE-000] presentation module의 gradle 파일에 monitoring 모듈 dependency 추가

* [IDLE-000] deviceToken 서비스에서 트랜잭션 어노테이션 추가

* [IDLE-000] batch 테스트를 위해 30분마다 동작하도록 변경

* [IDLE-475] 채팅, 채팅방 도메인 설계

* [IDLE-475] 채팅 메세지 최소, 최대 길이 제한 설정

* [IDLE-000] Batch 메타데이터 테이블 스크립트 변경 및 크롤링 수행 주기 설정

* [IDLE-000] 운영 환경 CD 스크립트에서 불필요한 step 제거

* [IDLE-000] 도텐브 파일 공백 제거 스크립트 작성, 크롤링 대상일자 전날 등록된 공고로 변경

* [IDLE-000] 크롤링 기준 시각 15시로 임시 변경

* [IDLE-000] cd env 파일 생성 스크립트 변경

* [IDLE-492] 동일 유저가 여러 개의 디바이스를 사용 시, 알림이 중복해서 누적되는 현상

* [IDLE-493] flyway 스크립트 오탈자 수정

* [IDLE-493] flyway 스크립트 오탈자 수정

* [IDLE-494] 요양 보호사 및 센터 프로필에서 긴 텍스트를 입력 가능한 항목을 TEXT 컬럼으로 지정한다.

* [IDLE-495] 요양 보호사는 마감된 공고에 지원이 불가능하다.

* [IDLE-495] 공고 마감 처리 메서드명 변경 complete -> completed

* [IDLE-496] 스프링 프로파일 지정을 위한 환경변수 주입

* [IDLE-496] 로그 일부 수정

* [IDLE-000] 안드로이드 app link를 위한 asset 추가

* [IDLE-190] 센터 관리자 인증 요청 목록 조회 API

* [IDLE-000] 크롤링 주기 변경 및 테스트용 에러 로그 추가

* [IDLE-000] 크롤링 대상 사이트에 알림창(alert)이 뜨는 케이스에 대한 처리

* [IDLE-509] 크롤링 전체 조회 시, 공고가 중복 노출되는 현상 해결

* [IDLE-509] 피드백 반영

* [IDLE-509] 사용하지 않는 하위 서비스 의존성 제거

* [IDLE-000] 크롤링 진행 시각 저녁 11시로 변경

* [IDLE-000] 크롤링 공고 즐겨찾기 조회 로직 버그 수정

* [IDLE-000] 요양 보호사 및 센터 관리자 전화번호 컬럼에 unique index 추가

* [IDLE-512] 센터 관리자 인증 요청 event 변경 및 NotificationInfo 인터페이스 패키지 이동

* [IDLE-512] 센터 관리자 인증 요청 event 변경 및 NotificationInfo 인터페이스 패키지 이동

* [IDLE-513] 요양 보호사 location 필드 추가 및 기존 데이터 마이그레이션

* [IDLE-513] 센터 관리자 공고 등록 시, 주변 요양보호사에게 FCM 알림을 일괄 전송한다.

* [IDLE-513] 센터 관리자 공고 등록 시, 주변 요양보호사에게 FCM 알림을 일괄 전송한다.

* [IDLE-000] notification type enum 속성 추가

* [IDLE-000] 센터 공고 등록 알림 제목 및 프로필 url null로 수정

* [IDLE-000] Readme 업데이트

* [IDLE-504] 센터 관리자 인증 승인 및 거절 API

* [IDLE-456] prometheus, grafana 설정을 위한 monitoring.yml 설정

* [IDLE-476] 웹소켓, Redis pub/sub을 이용한 채팅 전송 기능 (#217)

* [IDLE-476] 웹소켓 dependency 추가

* [IDLE-476] 웹소켓, Redis pub/sub을 이용한 채팅 전송 기능

* [IDLE-476] 불필요 클래스 제거

* [IDLE-476] 채팅 메세지 생성 책임을 하위 도메인에서 생성하도록 수정

* [IDLE-476] hash 역직렬화 시 필요한 처리를 Serializer 설정 추가

* [IDLE-476] json 역직렬화 시, 특수문자 허용

* [IDLE-476] websocket stomp 엔드포인트 노출 설정 변경

* [IDLE-476] 채팅 메세지 길이 정책 적용

* [IDLE-518] bastion서버를 통해 production 서버로 접근 후, 배포하도록 설정 (#252)

* [IDLE-518] ECR 레파지토리 변경 (#254)

* [IDLE-518] bastion서버를 통해 production 서버로 접근 후, 배포하도록 설정

* [IDLE-518] ECR 레파지토리 변경

* [IDLE-518] docker-compose 파일 위치 변경 (#256)

* [IDLE-518] bastion서버를 통해 production 서버로 접근 후, 배포하도록 설정

* [IDLE-518] ECR 레파지토리 변경

* [IDLE-518] docker-compose 파일 경로 변경

* [IDLE-518] 소스파일 경로 변경

* [IDLE-518] target 경로 변경

* [IDLE-518] 소스파일 경로 변경

* [IDLE-518] 타겟파일 경로 원상복구

* [IDLE-518] 타겟파일 경로 수정

* [IDLE-518] compose 파일 실행 경로 수정

* [IDLE-518] 하드코딩된 변수를 secrets로 변경

* [IDLE-518] 하드코딩된 변수를 secrets로 변경

* [IDLE-518] 하드코딩된 변수를 secrets로 변경

* [IDLE-518] Configuration Env file 스탭 추가

* [IDLE-518] secrets로 변경

* [IDLE-518] CI/CD재가동 전, 수동 실행으로 변경 (#257)

* [IDLE-518] bastion서버를 통해 production 서버로 접근 후, 배포하도록 설정

* [IDLE-518] ECR 레파지토리 변경

* [IDLE-518] docker-compose 파일 경로 변경

* [IDLE-518] 소스파일 경로 변경

* [IDLE-518] target 경로 변경

* [IDLE-518] 소스파일 경로 변경

* [IDLE-518] 타겟파일 경로 원상복구

* [IDLE-518] 타겟파일 경로 수정

* [IDLE-518] compose 파일 실행 경로 수정

* [IDLE-518] 하드코딩된 변수를 secrets로 변경

* [IDLE-518] 하드코딩된 변수를 secrets로 변경

* [IDLE-518] 하드코딩된 변수를 secrets로 변경

* [IDLE-518] Configuration Env file 스탭 추가

* [IDLE-518] secrets로 변경

* [IDLE-518] CI/CD 재가동 전 수동으로 수정

* [IDLE-518] CI/CD 재가동 전 수동으로 수정

* [IDLE-518] ECR 레파지토리 작성

* [IDLE-518] 서버 재구축 및 CI/CD 재가동 (#258)

* [IDLE-518] bastion서버를 통해 production 서버로 접근 후, 배포하도록 설정

* [IDLE-518] ECR 레파지토리 변경

* [IDLE-518] docker-compose 파일 경로 변경

* [IDLE-518] 소스파일 경로 변경

* [IDLE-518] target 경로 변경

* [IDLE-518] 소스파일 경로 변경

* [IDLE-518] 타겟파일 경로 원상복구

* [IDLE-518] 타겟파일 경로 수정

* [IDLE-518] compose 파일 실행 경로 수정

* [IDLE-518] 하드코딩된 변수를 secrets로 변경

* [IDLE-518] 하드코딩된 변수를 secrets로 변경

* [IDLE-518] 하드코딩된 변수를 secrets로 변경

* [IDLE-518] Configuration Env file 스탭 추가

* [IDLE-518] secrets로 변경

* [IDLE-518] CI/CD 재가동 전 수동으로 수정

* [IDLE-518] CI/CD 재가동 전 수동으로 수정

* [IDLE-518] ECR 레파지토리 작성

* [IDLE-518] .env 파일 경로 변경

* [IDLE-518] 레지스트리 내용 변경

* [IDLE-518] DB 이름을 caremeet으로 변경

* [IDLE-518] 서비스 간 통신을 위한 컨테이너간 네트워크 설정 추가

* [IDLE-518] ddl create 적용

* [IDLE-518] private_key.pem 파일을 통해 접근하도록 수정

* [IDLE-518] 호스트키 체크 우회 수정

* [IDLE-518] SSH 세션에 터미널을 할당하도록 옵션 추가

* [IDLE-518] 터널링 방법을 수정

* [IDLE-518] Private Subnet에 존재하는 서버의 22번 포트를 로컬 2222 포트로 연결

* [IDLE-518] .env파일 생성하는 명령어 수정

* [IDLE-518] 들여쓰기 수정

* [IDLE-518] INPUT_으로 시작하는 항목, .env 파일에 제외

* [IDLE-518] null 값을 제외하는 처리를 추가

* [IDLE-518] 병합 전에 null 값을 제외하는 처리를 추가

* [IDLE-518] context 출력문 추가

* [IDLE-518] JSON 형식으로 변환한 후, SSH 스크립트 내부에서 이를 파일로 저장

* [IDLE-518] .env 파일에 INSTANCE_PEM_KEY가 들어가지 않도록 수정

* [IDLE-518] ddl을 validate으로 수정

* [IDLE-518] 브랜치 push시에 동작하도록 수정

---------

Co-authored-by: wonjunYou <youwjune@gmail.com>
Co-authored-by: Wonjun You <59856002+wonjunYou@users.noreply.github.com>
mjj111 added a commit that referenced this pull request Jan 30, 2025
* [IDLE-000] Production CI 스크립트 작성

* [IDLE-000] 센터 공고 수정 API 내 접수 방법 null 비허용

* [IDLE-000] 공고 지원자 조회 시, 삭제된 유저는 조회되지 않도록 수정

* [IDLE-363] 센터 관리자 전화 인증 요청 API

* [IDLE-363] 개발 환경 ddl-auto 옵션 임시로 create 옵션으로 변경

* [IDLE-365] 공고 크롤러 selenium 로직 수정 및 로컬 동작 확인

* [IDLE-365] 테스트를 위한 스케줄러 기준 시각 변경

* [IDLE-365] batch job enable 옵션 비활성화

* [IDLE-365] ddl-auto update로 변경

* [IDLE-365] 크롤링 공고 필드 null 비허용

* [IDLE-365] 스케줄러 시간 02시로 설정

* [IDLE-366] spring batch selenium 크롤링을 위한 빌드 스크립트 수정

* [IDLE-366] worknet 사이트가 고용 24 사이트로 통합됨에 따라, 크롤링 스크립트 수정

* [IDLE-366] 크롤러 동작 스케줄링 시간 변경

* [IDLE-366] 스프링 초기 실행 시, spring batch 자동 실행 방지 옵션 추가

* [IDLE-366] spring batch 5 버전에서 업데이트 된 변경사항 적용 및 별도의 JobLauncher 구현

* [IDLE-366] 불필요 의존성 및 옵션 제거

* [IDLE-366] 크롤링 조회 API 내 entity status 필드 추가 및 쿼리 수정

* [IDLE-358] 운영 환경 CD 구축 및 운영 환경 profile 설정 추가

* [IDLE-358] 운영 환경 docker run 실행 시 예외 처리

* [IDLE-000] 크롤링 전체 조회 DTO 생성자 추가

* [IDLE-000] 공고 전체 조회 fetchJoin() 중복 이슈 해결을 위한 subquery 분리

* [IDLE-000] AI 코드리뷰 coderabbit 도입

* [IDLE-000] 크롤링 공고 반경범위 조회 필터를 위한 where절 추가

* [IDLE-000] TimeZone 설정이 적용되지 않는 문제 해결

* [IDLE-000] TimeZone 지정 및 @EnableScheduling 설정

* [IDLE-000] TimeZone 설정 제거

* [IDLE-000] 공고 전체 조회 쿼리 롤백

* [IDLE-000] 기존 공고 내 location을 기반으로 위.경도 값을 decoding하도록 변경

* [IDLE-000] 배포 전 최종 QA

* [IDLE-000] 크롤링 공고 생성일자 필드 type 변경(timestamp -> date)

* [IDLE-000] Redis 비밀번호 설정 추가 (#171)

* [IDLE-000] Redis 비밀번호 설정 추가

* [IDLE-000] yaml 파일에 password 필드 추가

* [IDLE-000] redis local default password 설정

* [IDLE-000] compose 파일 내, 비밀번호 지정 command 설정

* [IDLE-000] Redis 볼륨 설정

* [IDLE-000] ci triggering branch 임시 변경

* [IDLE-000] ci triggering branch 롤백

* [IDLE-000] 테스트 심사 통과를 위한 전화번호 검증 로직 추가

* [IDLE-000] 테스트 심사 통과를 위한 전화번호 검증 로직 추가

* [IDLE-389] 센터 인증 요청 이벤트 발생 시, 디스코드 웹훅 알림을 전송하는 로직 작성

* [IDLE-389] 사업자 등록번호 client properties 클래스명 변경

* [IDLE-389] 코드 리뷰 반영

* [IDLE-000] 트랜잭션 전파 레벨 변경(REQUIRED -> REQUIRES_NEW)

* [IDLE-396] FCM 모듈 추가 및 firebase 의존성 설정

* readme 제목 수정

* readme 제목 수정

* [IDLE-399] FCM Device Token 관리 API

* [IDLE-399] 알림 도메인 설계

* [IDLE-000] fcm service 설정값 주입을 위한 디렉토리 구조 변경

* [IDLE-000] fcm service 설정값 주입을 위한 디렉토리 구조 변경

* [IDLE-400] 채용 공고 지원자 발생 시, 센터 관리자에게 알림을 발송한다.

* [IDLE-400] fcm 모듈 설정 추가

* [IDLE-400] 공고 지원자 발생 시, 모든 센터 관리자들에게 다중 알림을 발송한다.

* [IDLE-415] 알림 조회 처리 API

* [IDLE-417] 읽지 않은 알림 수 집계 API

* [IDLE-418] 알림 목록 조회 API

* [IDLE-418] 피드백 반영

* [IDLE-423] soft-delete가 적용된 즐겨찾기 entity에서, 즐겨찾기 해제 후 다시 설정하는 경우 발생하는 버그를 해결한다.

* [IDLE-424] 요양 보호사 공고 전체 조회 시, 삭제된 공고가 함께 보이는 문제 해결

* [IDLE-400] 채용 공고 지원자 발생 시, 센터 관리자에게 알림을 발송한다. (#183)

* [IDLE-400] 채용 공고 지원자 발생 시, 센터 관리자에게 알림을 발송한다.

* [IDLE-400] fcm 모듈 설정 추가

* [IDLE-400] 공고 지원자 발생 시, 모든 센터 관리자들에게 다중 알림을 발송한다.

* [IDLE-400] 채용 공고 지원자 발생 시, 센터 관리자에게 알림을 발송한다.

* [IDLE-400] fcm 모듈 설정 추가

* [IDLE-400] 공고 지원자 발생 시, 모든 센터 관리자들에게 다중 알림을 발송한다.

* [IDLE-415] 알림 조회 처리 API

* [IDLE-417] 읽지 않은 알림 수 집계 API

* [IDLE-418] 알림 목록 조회 API

* [IDLE-418] 피드백 반영

* [IDLE-423] soft-delete가 적용된 즐겨찾기 entity에서, 즐겨찾기 해제 후 다시 설정하는 경우 발생하는 버그를 해결한다.

* [IDLE-424] 요양 보호사 공고 전체 조회 시, 삭제된 공고가 함께 보이는 문제 해결

* [IDLE-400] 알림 명세 변경

* [IDLE-400] fcm 설정 파일 디렉토리 path 변경

* [IDLE-400] ddl 옵션 변경

* [IDLE-400] ci/cd 옵션 변경

* [IDLE-000] ci triggering branch 복구

* [IDLE-000] develop 환경에서 fcm service 설정 파일 path 수정

* [IDLE-000] fcm service json 파일명 변경

* [IDLE-000] firebase service key 설정 경로 체크를 위해, cd 스크립트를 수정합니다.

* Update README.md

* [IDLE-000] fcm service key 경로를 class path 경로로 수정 시도

* [IDLE-000] ci triggering branch 임시 변경

* [IDLE-000] firebaseApp 초기화 임시 비활성화

* [IDLE-000] firebaseApp 초기화 임시 비활성화

* [IDLE-000] firebaseApp 초기화 임시 비활성화

* [IDLE-000] file path 앞에 ./ 제외

* [IDLE-000] 절대 경로로 변경 시도

* [IDLE-000] fcm service key 생성 path 수정

* [IDLE-000] fcm service key json file 생성 스크립트 작성

* [IDLE-000] ci triggering branch develop으로 롤백

* [IDLE-000] 불필요 스크립트 제거

* [IDLE-000] firebase config의 현재 경로를 출력하도록 print문 추가 (#197)

* [IDLE-000] firebase config의 현재 경로를 출력하도록 print문 추가

* [IDLE-000] ci triggering branch 수정

* [IDLE-000] ci triggering branch 수정

* [IDLE-000] firebase app 초기화 로직 주석 처리

* [IDLE-000] firebase app 초기화 로직 주석 처리

* [IDLE-000] firebase app 초기화 로직 주석 처리

* [IDLE-000] file 대신 string으로 주입받아 초기화하는 방식으로 전환

* [IDLE-000] 일반 string 대신 base64 인코딩 된 문자열을 주입하도록 처리

* [IDLE-000] 일반 string 주입으로 rollback

* [IDLE-000] json string log 추가

* [IDLE-000] base64 문자열로 재 변경

* [IDLE-000] firebase config의 현재 경로를 출력하도록 print문 추가

* [IDLE-429] DB 형상관리를 위한 Flyway 적용

* [IDLE-429] Flyway latest version으로 설정

* [IDLE-429] 피드백 반영

* [IDLE-000] firebase config의 현재 경로를 출력하도록 print문 추가

* [IDLE-000] 알림 조회 처리 로직에 @transactional 추가

* [IDLE-000] 알림 조회 시, 생성 시각 기준이 아닌 uuid v7 id 기준으로 내림차순 정렬하도록 변경

* [IDLE-000] CI 트리거 브랜치 복구

* [IDLE-454] 테스트를 위한 크롤링 수행 시각 변경 및 로깅 추가

* [IDLE-000] 공고 범위 검색 내 중복 데이터 발생 방지

* [IDLE-000] ci 트리거 브랜치 변경

* [IDLE-000] ci 트리거 브랜치 롤백

* [IDLE-000] monitoring 모듈 추가 및 actuator, prometheus 의존성 추가

* [IDLE-456] monitoring.yml 작성

* [IDLE-456] monitoring profile 추가

* [IDLE-456] actuator dependency group name 수정

* [IDLE-000] 크롤링 주기 하루 2회로 변경

* [IDLE-000] 불필요 로그 제거

* [IDLE-000] 인증번호 SMS 내용 수정

* [IDLE-000] classPath 하위 yaml 파일 확장자 모두 .yml로 통일

* [IDLE-000] 즐겨찾기 facade service에 트랜잭션 추가 (#206)

* [IDLE-000] firebase config의 현재 경로를 출력하도록 print문 추가

* [IDLE-000] facade service에 transaction 추가

* [IDLE-461] 유저가 다중 디바이스에서 알림을 받을 수 있도록 개선한다. (#207)

* [IDLE-000] firebase config의 현재 경로를 출력하도록 print문 추가

* [IDLE-461] 한 유저가 다중 디바이스 설정이 가능하도록 한다.

* [IDLE-000] firebase config의 현재 경로를 출력하도록 print문 추가

* [IDLE-000] presentation module의 gradle 파일에 monitoring 모듈 dependency 추가

* [IDLE-000] deviceToken 서비스에서 트랜잭션 어노테이션 추가

* [IDLE-000] batch 테스트를 위해 30분마다 동작하도록 변경

* [IDLE-475] 채팅, 채팅방 도메인 설계

* [IDLE-475] 채팅 메세지 최소, 최대 길이 제한 설정

* [IDLE-000] Batch 메타데이터 테이블 스크립트 변경 및 크롤링 수행 주기 설정

* [IDLE-000] 운영 환경 CD 스크립트에서 불필요한 step 제거

* [IDLE-000] 도텐브 파일 공백 제거 스크립트 작성, 크롤링 대상일자 전날 등록된 공고로 변경

* [IDLE-000] 크롤링 기준 시각 15시로 임시 변경

* [IDLE-000] cd env 파일 생성 스크립트 변경

* [IDLE-492] 동일 유저가 여러 개의 디바이스를 사용 시, 알림이 중복해서 누적되는 현상

* [IDLE-493] flyway 스크립트 오탈자 수정

* [IDLE-493] flyway 스크립트 오탈자 수정

* [IDLE-494] 요양 보호사 및 센터 프로필에서 긴 텍스트를 입력 가능한 항목을 TEXT 컬럼으로 지정한다.

* [IDLE-495] 요양 보호사는 마감된 공고에 지원이 불가능하다.

* [IDLE-495] 공고 마감 처리 메서드명 변경 complete -> completed

* [IDLE-496] 스프링 프로파일 지정을 위한 환경변수 주입

* [IDLE-496] 로그 일부 수정

* [IDLE-000] 안드로이드 app link를 위한 asset 추가

* [IDLE-190] 센터 관리자 인증 요청 목록 조회 API

* [IDLE-000] 크롤링 주기 변경 및 테스트용 에러 로그 추가

* [IDLE-000] 크롤링 대상 사이트에 알림창(alert)이 뜨는 케이스에 대한 처리

* [IDLE-509] 크롤링 전체 조회 시, 공고가 중복 노출되는 현상 해결

* [IDLE-509] 피드백 반영

* [IDLE-509] 사용하지 않는 하위 서비스 의존성 제거

* [IDLE-000] 크롤링 진행 시각 저녁 11시로 변경

* [IDLE-000] 크롤링 공고 즐겨찾기 조회 로직 버그 수정

* [IDLE-000] 요양 보호사 및 센터 관리자 전화번호 컬럼에 unique index 추가

* [IDLE-512] 센터 관리자 인증 요청 event 변경 및 NotificationInfo 인터페이스 패키지 이동

* [IDLE-512] 센터 관리자 인증 요청 event 변경 및 NotificationInfo 인터페이스 패키지 이동

* [IDLE-513] 요양 보호사 location 필드 추가 및 기존 데이터 마이그레이션

* [IDLE-513] 센터 관리자 공고 등록 시, 주변 요양보호사에게 FCM 알림을 일괄 전송한다.

* [IDLE-513] 센터 관리자 공고 등록 시, 주변 요양보호사에게 FCM 알림을 일괄 전송한다.

* [IDLE-000] notification type enum 속성 추가

* [IDLE-000] 센터 공고 등록 알림 제목 및 프로필 url null로 수정

* [IDLE-000] Readme 업데이트

* [IDLE-504] 센터 관리자 인증 승인 및 거절 API

* [IDLE-456] prometheus, grafana 설정을 위한 monitoring.yml 설정

* [IDLE-476] 웹소켓, Redis pub/sub을 이용한 채팅 전송 기능 (#217)

* [IDLE-476] 웹소켓 dependency 추가

* [IDLE-476] 웹소켓, Redis pub/sub을 이용한 채팅 전송 기능

* [IDLE-476] 불필요 클래스 제거

* [IDLE-476] 채팅 메세지 생성 책임을 하위 도메인에서 생성하도록 수정

* [IDLE-476] hash 역직렬화 시 필요한 처리를 Serializer 설정 추가

* [IDLE-476] json 역직렬화 시, 특수문자 허용

* [IDLE-476] websocket stomp 엔드포인트 노출 설정 변경

* [IDLE-476] 채팅 메세지 길이 정책 적용

* [IDLE-518] bastion서버를 통해 production 서버로 접근 후, 배포하도록 설정 (#252)

* [IDLE-518] ECR 레파지토리 변경 (#254)

* [IDLE-518] bastion서버를 통해 production 서버로 접근 후, 배포하도록 설정

* [IDLE-518] ECR 레파지토리 변경

* [IDLE-518] docker-compose 파일 위치 변경 (#256)

* [IDLE-518] bastion서버를 통해 production 서버로 접근 후, 배포하도록 설정

* [IDLE-518] ECR 레파지토리 변경

* [IDLE-518] docker-compose 파일 경로 변경

* [IDLE-518] 소스파일 경로 변경

* [IDLE-518] target 경로 변경

* [IDLE-518] 소스파일 경로 변경

* [IDLE-518] 타겟파일 경로 원상복구

* [IDLE-518] 타겟파일 경로 수정

* [IDLE-518] compose 파일 실행 경로 수정

* [IDLE-518] 하드코딩된 변수를 secrets로 변경

* [IDLE-518] 하드코딩된 변수를 secrets로 변경

* [IDLE-518] 하드코딩된 변수를 secrets로 변경

* [IDLE-518] Configuration Env file 스탭 추가

* [IDLE-518] secrets로 변경

* [IDLE-518] CI/CD재가동 전, 수동 실행으로 변경 (#257)

* [IDLE-518] bastion서버를 통해 production 서버로 접근 후, 배포하도록 설정

* [IDLE-518] ECR 레파지토리 변경

* [IDLE-518] docker-compose 파일 경로 변경

* [IDLE-518] 소스파일 경로 변경

* [IDLE-518] target 경로 변경

* [IDLE-518] 소스파일 경로 변경

* [IDLE-518] 타겟파일 경로 원상복구

* [IDLE-518] 타겟파일 경로 수정

* [IDLE-518] compose 파일 실행 경로 수정

* [IDLE-518] 하드코딩된 변수를 secrets로 변경

* [IDLE-518] 하드코딩된 변수를 secrets로 변경

* [IDLE-518] 하드코딩된 변수를 secrets로 변경

* [IDLE-518] Configuration Env file 스탭 추가

* [IDLE-518] secrets로 변경

* [IDLE-518] CI/CD 재가동 전 수동으로 수정

* [IDLE-518] CI/CD 재가동 전 수동으로 수정

* [IDLE-518] ECR 레파지토리 작성

* [IDLE-518] 서버 재구축 및 CI/CD 재가동 (#258)

* [IDLE-518] bastion서버를 통해 production 서버로 접근 후, 배포하도록 설정

* [IDLE-518] ECR 레파지토리 변경

* [IDLE-518] docker-compose 파일 경로 변경

* [IDLE-518] 소스파일 경로 변경

* [IDLE-518] target 경로 변경

* [IDLE-518] 소스파일 경로 변경

* [IDLE-518] 타겟파일 경로 원상복구

* [IDLE-518] 타겟파일 경로 수정

* [IDLE-518] compose 파일 실행 경로 수정

* [IDLE-518] 하드코딩된 변수를 secrets로 변경

* [IDLE-518] 하드코딩된 변수를 secrets로 변경

* [IDLE-518] 하드코딩된 변수를 secrets로 변경

* [IDLE-518] Configuration Env file 스탭 추가

* [IDLE-518] secrets로 변경

* [IDLE-518] CI/CD 재가동 전 수동으로 수정

* [IDLE-518] CI/CD 재가동 전 수동으로 수정

* [IDLE-518] ECR 레파지토리 작성

* [IDLE-518] .env 파일 경로 변경

* [IDLE-518] 레지스트리 내용 변경

* [IDLE-518] DB 이름을 caremeet으로 변경

* [IDLE-518] 서비스 간 통신을 위한 컨테이너간 네트워크 설정 추가

* [IDLE-518] ddl create 적용

* [IDLE-518] private_key.pem 파일을 통해 접근하도록 수정

* [IDLE-518] 호스트키 체크 우회 수정

* [IDLE-518] SSH 세션에 터미널을 할당하도록 옵션 추가

* [IDLE-518] 터널링 방법을 수정

* [IDLE-518] Private Subnet에 존재하는 서버의 22번 포트를 로컬 2222 포트로 연결

* [IDLE-518] .env파일 생성하는 명령어 수정

* [IDLE-518] 들여쓰기 수정

* [IDLE-518] INPUT_으로 시작하는 항목, .env 파일에 제외

* [IDLE-518] null 값을 제외하는 처리를 추가

* [IDLE-518] 병합 전에 null 값을 제외하는 처리를 추가

* [IDLE-518] context 출력문 추가

* [IDLE-518] JSON 형식으로 변환한 후, SSH 스크립트 내부에서 이를 파일로 저장

* [IDLE-518] .env 파일에 INSTANCE_PEM_KEY가 들어가지 않도록 수정

* [IDLE-518] ddl을 validate으로 수정

* [IDLE-518] 브랜치 push시에 동작하도록 수정

* [IDLE-531] 배치 작업 정상화 (#260)

* [IDLE-534] Flayway 재설정 및 배치 메타데이터 테이블 생성

* [IDLE-548] Tasklet을 Chunk로 변경

* [IDLE-549] 배치 실행 API 추가

* [IDLE-533] GeoCodeService 전환 메서드 static으로 전환

* [IDLE-533] 책임별 클래스 분리

* [IDLE-547] 멀티스레드 적용 및 공유자원 분리

* [IDLE-531] 크롤링 기준 날짜 변경

---------

Co-authored-by: wonjunYou <youwjune@gmail.com>
Co-authored-by: Wonjun You <59856002+wonjunYou@users.noreply.github.com>
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.

1 participant