728x90
개요
GlowGrow 프로젝트의 배포 프로세스 중 Matrix Strategy(매트릭스 전략)를 사용했었습니다.
본 글에서는 Matrix Strategy(매트릭스 전략)에 대해서 공부한 지식을 정리하고자 합니다.
Matrix Strategy이란❓
Matrix Strategy(매트릭스 전략)는 GitHub Actions에서 제공하는 기능으로, 여러 개의 작업을 병렬로 실행할 수 있게 해주는 전략입니다.
jobs:
build:
strategy:
matrix:
service: [eureka, auth, gateway, users, notification, payment, post]
steps:
- name: Build with Gradle
run: ./gradlew :${{matrix.service}}:clean :${{matrix.service}}:build
- 7개의 서비스에 대해 병렬로 빌드 작업을 실행
- 각 서비스마다 독립적인 빌드 Job이 생성됨
실제 실행 과정
# 내부적으로 이렇게 7개의 작업이 동시에 실행됨
Job 1: ./gradlew :eureka:clean :eureka:build
Job 2: ./gradlew :auth:clean :auth:build
Job 3: ./gradlew :gateway:clean :gateway:build
Job 4: ./gradlew :users:clean :users:build
Job 5: ./gradlew :notification:clean :notification:build
Job 6: ./gradlew :payment:clean :payment:build
Job 7: ./gradlew :post:clean :post:build
Matrix Strategy 없이 작성한다면
jobs:
build:
steps:
- name: Build Eureka
run: ./gradlew :eureka:clean :eureka:build
- name: Build Auth
run: ./gradlew :auth:clean :auth:build
- name: Build Gateway
run: ./gradlew :gateway:clean :gateway:build
# ... 계속됨
- 순차적으로 실행됨
- 코드가 길어짐
- 유지보수가 어려움
- 전체 빌드 시간이 증가
따라서 matrix Strategy를 사용한다면
- 병렬 실행으로 빌드 시간 단축
- 코드 중복 제거
- 서비스 추가/제거가 용이
- 유지보수성 향상
장점
1. 병렬 처리
- 각 서비스를 동시에 빌드
- 전체 빌드 시간 단축
2. 효율성
# Matrix 없이
steps:
- run: ./gradlew :eureka:build
- run: ./gradlew :auth:build
- run: ./gradlew :gateway:build
# ... 순차적 실행
# Matrix 사용
matrix:
service: [eureka, auth, gateway]
# 동시 실행
3. 유지보수 용이성
- 서비스 추가/제거가 쉬움
- 설정 변경이 간단
'TIL,일일 회고' 카테고리의 다른 글
[TIL, 일일 회고] 2024.11.02 - JWT 인증을 위한 Swagger 설정방법 (0) | 2024.11.02 |
---|---|
[TIL, 일일 회고] 2024.11.01 - springdoc-openapi-ui (0) | 2024.11.01 |
[TIL, 일일 회고] 2024.10.30 - MSA 배포 자동화를 위한 Docker 이미지 태깅 전략 (0) | 2024.10.31 |
[TIL, 일일 회고] 2024.10.29 - GlowGrow 프로젝트 GitHub Actions와 Docker를 활용한 MSA 배포 자동화 (0) | 2024.10.29 |
[TIL, 일일 회고] 2024.10.28 - 안전한 결제를 위한 보안 강화 방안 생각해보기 (0) | 2024.10.28 |