Skip to content

Conversation

@AlbertImKr
Copy link
Owner

No description provided.

- k6 부하 테스트 결과 표 추가 (READ/WRITE/STRESS 테스트)
- 성능 지표 달성률 명시 (READ 290%, WRITE 846% 초과 달성)
- 기술 스택 섹션에 k6 성능 테스트 도구 추가
- 문서 목록에 성능 테스트 가이드 링크 추가
- 성능 테스트 시스템 섹션 추가 및 완료된 항목들(✅) 표시
- k6 성능 테스트 환경 구축, Baseline 측정, 데이터 생성 스크립트 완료 기록
- 테스트 자동화 섹션에 k6 성능 테스트 스크립트 완료 항목 추가
- 성능 테스트 관련 TODO 항목들 상태 업데이트
변경 사항:
- Docker 레지스트리: ECR → OCIR로 변경
- 배포 방식: ECS 서비스 → SSH를 통한 VM 직접 배포로 전환
- 2대의 서버에 순차적 배포 및 헬스체크 추가
- Load Balancer를 통한 최종 배포 검증

주요 특징:
- appleboy/ssh-action을 사용한 안전한 SSH 배포
- 각 서버별 헬스체크 (최대 2분 대기)
- 롤링 업데이트 방식으로 서비스 중단 최소화
- Docker 이미지 prune으로 디스크 공간 최적화
데이터베이스 스키마 변경:
- 데이터 타입: MySQL/Oracle → PostgreSQL 표준 타입으로 변경
  - bigint auto_increment → BIGSERIAL
  - datetime(6) → TIMESTAMP(6)
  - double → DOUBLE PRECISION
  - int → INTEGER
  - bit(1) → BOOLEAN
  - enum → PostgreSQL ENUM 타입으로 정의

- 제약 조건 및 인덱스: 대문자 키워드로 표준화
- 새로운 컬럼 추가: posts.author_image_id, members.post_count
- member_event 테이블 추가: 알림 기능 지원
- ENUM 타입 정의: content_status, member_status, role_type, trust_level

PostgreSQL 특화 변경:
- AUTO_INCREMENT → SERIAL (BIGSERIAL) 시퀀스 사용
- ENUM 타입 별도 정의 및 사용
- BOOLEAN 타입으로 플래그 처리 최적화
- 인덱스 생성 구문 표준화
- -XX:+EnableDynamicAgentLoading 옵션 제거
- 테스트 실행 시 기본 Gradle 설정으로 복귀
- PostgreSQL 전환 후 불필요해진 JVM 옵션 정리
변경 사항:
- 개발 DB 설정: ddl-auto validate → create-drop으로 변경
  - 테스트 시 매번 스키마 재생성하여 데이터 일관성 확보
- CI 워크플로우: --continue 옵션 복원
  - 일부 테스트 실패 시에도 전체 결과 확인 가능

효과:
- 테스트 격리성 확보로 안정성 향상
- CI에서 모든 테스트 결과 확인으로 디버깅 용이성 개선
변경 사항:
- Docker 로그인: 따옴표 통일 (작은따옴표 → 큰따옴표)
- Docker 빌드 조건 제거: 모든 PR/푸시에서 빌드 실행
- 환경변수 추가: 메일 설정 및 APP_BASE_URL을 워크플로우 레벨로 이동

효과:
- 셸 변수 확장 문제 해결
- PR 시에도 Docker 이미지 빌드 테스트 가능
- 환경변수 중앙 관리로 일관성 확보
변경 사항:
- 환경변수 참조 방식 수정:
  - $OCI_AUTH_TOKEN → "$OCI_AUTH_TOKEN"
  - $OCI_REGION.ocir.io → "$OCI_REGION.ocir.io"
  - "$OCI_TENANCY/$OCI_USERNAME" → "${OCI_TENANCY}/${OCI_USERNAME}"

효과:
- 셸 변수 확장 문제 완전 해결
- 모든 환경변수가 올바르게 치환되도록 보장
- Docker 레지스트리 인증 안정성 확보
변경 사항:
- Docker 로그인: here-string 방식 사용 (<<<)으로 안전성 향상
- Docker 푸시:
  - timeout-minutes: 30 추가 (대용량 이미지 대비)
  - --all-tags 옵션 사용으로 태그 일괄 푸시
  - IMAGE_TAG 환경변수 추가로 가독성 개선

효과:
- 민감 정보(OCI_AUTH_TOKEN) 처리 방식 개선
- 타임아웃으로 인한 배포 실패 방지
- Docker 명령어 표준화 및 유지보수성 향상
주요 변경 사항:
- 환경변수 전달 방식: SSH 액션의 env 파라미터 사용
  - 모든 시크릿을 환경변수로 명시적 전달
  - envs 파라미터로 필요한 변수만 선택적 전달
- Docker 명령어: sudo 권한 추가 및 변수 참조 방식 개선
- OCI 인증: oracleidentitycloudservice 경로 추가
- 변수 확장: ${VARIABLE} 형식으로 통일

효과:
- 보안 강화: 시크릿 값 노출 최소화
- 유지보수성 향상: 환경변수 중앙 관리
- 권한 문제 해결: Docker sudo 실행
- 일관성 확보: 변수 참조 방식 표준화
변경 사항:
- Docker 로그인: here-string 방식 (<<<)으로 일관성 확보
- OCI 인증: oracleidentitycloudservice 경로 제거
- 프로덕션 설정: Spring Security 기본 인증 제거
  - hard-coded admin 계정 정보 삭제
  - 보안 강화를 위해 별도 인증 체계 사용

효과:
- Docker 인증 방식 통일로 안정성 향상
- 불필요한 보안 설정 제거로 취약점 감소
- 설정 파일 간소화로 유지보수성 개선
변경 사항:
- DB_URL → SPRING_DATASOURCE_URL
- DB_USERNAME → SPRING_DATASOURCE_USERNAME
- DB_PASSWORD → SPRING_DATASOURCE_PASSWORD

효과:
- Spring Boot 표준 환경변수명과 일치
- 설정 파일과 CI/CD 간 변수명 통일
- 혼동 방지 및 유지보수성 향상
주요 변경 사항:

### OCI Object Storage 통합
- OciObjectStorageConfig, OciPresignedUrlGenerator 신규 추가
- S3Config 프로파일 변경: prod → aws (환경 분리)

### PostgreSQL 스키마 마이그레이션
- V1__init.sql: PostgreSQL 문법으로 완전 재작성
- Flyway 설정 추가:
  - baseline-on-migrate: true
  - validate-on-migrate: true
  - baseline-version: 0

### 의존성 추가
- OCI SDK: commons-logging, oci-java-sdk-objectstorage
- PostgreSQL: postgresql

### 테스트 설정 개선
- devdb/testdb: Flyway 활성화
- ddl-auto: create-drop 유지

효과:
- AWS S3와 OCI Object Storage 동시 지원
- Oracle에서 PostgreSQL로 완전 전환
- 데이터베이스 마이그레이션 안정성 확보
변경 사항:
- 모든 alter table owner to testuser 구문 제거
- 제약 조건 정의를 한 줄로 통합 및 가독성 향상
- 불필요한 줄바꿈 제거로 스크립트 간소화

효과:
- 마이그레이션 스크립트 크기 감소
- 소유자 설정은 Flyway/애플리케이션 레벨에서 처리
- 코드 가독성 및 유지보수성 개선
@sonarqubecloud
Copy link

Quality Gate Failed Quality Gate failed

Failed conditions
6.1% Coverage on New Code (required ≥ 80%)

See analysis details on SonarQube Cloud

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants