본문 바로가기

Monew

(10)
개인 개발 리포트 개인 개발 리포트(중급 프로젝트)1. 프로젝트 개요프로젝트명: MONEW - MongoDB 및 PostgreSQL 백업 및 복구 시스템 목적: 여러 뉴스 API를 통합하여 사용자에게 맞춤형 뉴스를 제공하고, 의견을 나눌 수 있는 소셜 기능을 갖춘 서비스 핵심 기능 요약: 사용자 관리, 관심사 관리, 뉴스 기사 관리, 댓글 관리, 활동 내역 관리, 알림 관리2. 담당한 작업맡은 역할: CI/CD 파이프라인 구축, 뉴스 기사 관리 : 백업 및 복구구체적인 기여 내용:AWSIAM 사용자 생성, 정책 수립S3 버킷 구성, .env 파일 추가RDS 구성, EC2 인스턴스 생성ECR 구성, ECS 생성 및 태스크 정의 생성(ecs/taskdef-base.json)CI/CD 파이프라인 구축ci.yml 설계 및 구축c..
CD(지속적 배포) 작성 .github/workflows/cd.yml name: CDrun-name: ${{ github.event.workflow_run.name }} 맨 위의 name은 workflow의 이름임, Actions탭에서 보이는 라벨 이름이 CD로 나옴 run-name은 Github Actions 실행 인스턴스의 이름을 정해줌${{ github.event.workflow_run.name }} 은 GitHub Context의 변수를 사용한 것이다.이 CD Workflow의 트리거인 이전 Workflow를 가져오는데, 그걸 우리가 CI로 지정한다.따라서 이 CD라는 이름의 workflow가 실행되면 이름이 CI에서 정한 CI Workflow같은걸 그대로 가져온다. 일반적으로 CI와 CD는 나뉘어져있다.CI는 코드를 빌..
S3에 백업한 뉴스 기사를 '복구'하는 기능 (S3에 저장된) 백업 데이터와 DB에 저장된 현재 데이터를 비교해 유실된 데이터를 새로 등록합니다. article/backUp/aws/BackupKeyMaker.javapackage com.codeit.monew.article.backUp.aws;import java.time.LocalDate;public class BackupKeyMaker { // S3에 백업파일을 저장할 때 파일 경로(키)를 만들어주는 유틸리티 private BackupKeyMaker() {} public static String keyFor(LocalDate date) { String y = "%04d".formatted(date.getYear()); String m = "%02d".f..
S3 버킷에 데이터를 '백업'하는 로직 - 날짜 단위로 백업하기 - 백업 저장소는 AWS S3를 활용하기 - 백업 작업은 배치로 수행하기 DTOpackage com.codeit.monew.article.backUp;import com.codeit.monew.article.entity.Article;import java.time.LocalDateTime;public record ArticleBackupDto( String source, String sourceUrl, String articleTitle, LocalDateTime articlePublishDate, String articleSummary, long articleCommentCount, long..
CI(지속적 통합) 작성 .github/workflows/ci.yml .github의 workflows를 사용하니까 git actions를 쓰는게 된다 name: CI Workflow 맨 위의 이 name : CI Workflow는 git actions - All workflows의 이름을 의미한다 저걸 명시해주지 않으면.. 아마 저 All Workflows에는 뭐가 적힐지 잘 모르겠지만아무튼 적어주는게 좋다! on: pull_request: branches: [dev, main] # dev, main 브랜치에 pull request 될 때 실행됨 paths-ignore: ["README.md", "**/*.md"] on은 아래의 명령을 트리거로 ci.yml이 실행된다는 의미임on 아래에 pull request가..
build.gradle 이번 프로젝트에서 사용된 의존성 plugins { id 'java' id 'org.springframework.boot' version '3.4.9' id 'io.spring.dependency-management' version '1.1.7' id 'jacoco' // jacoco 추가}group = 'com.codeit'version = '0.0.1-SNAPSHOT'description = 'MoNew'java { toolchain { languageVersion = JavaLanguageVersion.of(17) }}configurations { compileOnly { extendsFrom annotationProcessor }}..
Jacoco를 활용하기 (테스트 커버리지) 코드 커버리지 도구 JacocoJava code coverage toolsJacoco를 활용해서 Pull Request를 할때마다 테스트 커버리지 확인하기 * 코드 커버리지(code coverage) : 소프트웨어의 테스트를 논할 때 얼마나 테스트가 충분한가를 나타내는 지표. 소프트웨어 테스트를 진행했을 때 코드 자체가 얼마나 실행되었는가를 뜻한다 테스트코드를 꼼꼼하게 작성할수록 예외 케이스들을 잘 탐지할 수 있으며, 소프트웨어의 품질을 높이기 위해선 테스트 커버리지가 너무 낮지 않게끔 해야한다. Jacoco 적용build.gradle에 적용시키기# 1단계, jacoco 플러그인 설치plugins { id 'jacoco'}# 2단계, 테스트가 완료된 후 jacocoTestReport가 실행되도록 함te..
커밋 컨벤션 : Git Commit Template 플러그인 설치 IntelliJ 기준 파일 - 설정 - 플러그인 마켓플레이스에서 검색 클릭