TIL

[모던리액트 딥다이브] 2024-04-04 DIL

lemonarr🍋 2024. 4. 4. 23:57

모던 리액트 딥다이브 week5

2024-04-04 DIL

주차 DIL 범위 날짜 개인 진도
5주차 9장 2024-04-04 529-570p

개념 채우기

image

SWC(Speedy Web Compiler)란?

  • 자바스크립트 컴파일러지만 웹펙과 같은 자바스크립트 번들러의 기능도 제공하고 있음.
  • Rust 기반의 플랫폼임.
  • 동시에 여러 파일 변환(병렬처리)이 가능하여 빠르다.
  • 기존 Babel(트렌스파일링) 과 Terser(코드 경량화)를 대체함. /각각 17배, 7배 더 빠름.

Babel vs SWC

  • Babel: 트렌스파일러. 싱글스레드 언어인 자바스크립트로 작성됨.
  • SWC: 동시에 여러 파일들이 변환가능함. / Babel 보다 20배 빠름.

SWC가 빠른 이유?

  • 병렬처리를 고려하여 설계된 언어인 Rust를 사용하기 때문!
  • 의존성이 없는 파일들을 동시에 변환할 수 있다.
  • Babel 과 Terser는 자바스크립트 언어로 구현되어 있기 때문에 한번에 한 개의 파일만 변환 가능.
  • 싱글스레드에서 돌려도 속도가 빠르다고 한다..

참고자료
https://fe-developers.kakaoent.com/2022/220217-learn-babel-terser-swc/

image

Github Action이란 무엇인가?

  • 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 지속적{통합(CI) + 배포(CD)} 플랫폼이다.
  • 모든 풀 요청을 빌드/ 테스트하는 워크플로를 생성하거나, Merge 된 풀 요청을 프로덕션에 배포할 수 있다.
  • YAML 구문을 사용하여 워크플로를 정의한다.
  • .github/workflows라는 디렉터리의 코드 repository에 별도의 YAML 파일로 저장됨.

Workflow

  • 기본구성단위.
  • 하나 이상의 작업을 포함할 수 있다.
  • 푸쉬 or 풀 요청과 같은 이벤트에 의해 트리거된다.
  • 가장 최상위 개념으로 yaml으로 작성됨.

Events

  • 워크플로 실행을 트리거하는 특정 활동이나 규칙.
  • ex.) pull request, issue, push, cron, webhook 등의 이벤트가 있음.
  • 특정 요구사항에 따라 워크플로를 트리거하는 사용자 지정 이벤트를 만들 수 있다.

Jobs

  • 워크플로 내에서 실행되는 개별 작업.
  • 'Runners' 라는 가상 머신에서 실행.
  • 하나 이상의 단계(steps)를 포함할 수 있음.
  • 가상 환경의 인스턴스에서 실행됨.
  • 작업은 종속성에 따라 병렬/ 순차적으로 실행될 수 있다. (의존관계 or 독립적)

Steps

  • task들의 집합. 작업 내 가장 작은 단위.
  • 워크플로 파일에 지정된 순서대로 실행되며, 각 단계는 동일한 인스턴스 내에서 실행됨.

Actions

  • 워크플로의 가장 작은 블럭./ Job을 만들기 위해 step들을 연결할 수 있다.
  • 재사용 가능한 컴포넌트.
  • 작업은 일반적으로 별도의 리포지토리에 저장,
  • 해당 리포지토리 이름으로 워크플로 파일에서 참조됨.

Runners

  • 워크플로가 트리거될 때 실행하는 서버.
  • 각 Runner는 1번에 1개의 Job을 실행할 수 있다.
  • 작업이 실행되는 가상 머신(Github-hosted runner) 또는 자체 호스팅 환경(Self-hosted runner)으로 나뉜다.

Environment Variables and Secrets

  • Environment Variables: 워크플로 내의 작업 및 스크립트에서 액세스 할 수 있는 데이터를 저장하는데 사용됨.
  • Secrets: 액세스 토큰 or API 키와 같은 민감한 데이터를 저장하는데 사용되는 암호화된 환경변수.

    민감한 정보 사용할 경우 Gibhub/Settings/secrets에 저장하여 환경변수로 사용할 수 있음.

** 환경변수: 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는, 동적인 값들의 모임.

Artifacts and Caching

  • Artifacts: 빌드 출력 or 테스트 결과와 같이 나중에 저장하고 사용할 수 있는 워크플로에서 생성된 파일.
  • Caching: 워크플로 실행 간에 데이터를 저장하고 검색하는데 사용됨, 이전에 다운로드한 종속성 또는 빌드 출력을 재사용하여 프로세스 속도를 높일 수 있음.
  • 캐시를 생성하면 저장소의 모든 workflow에서 사용할 수 있음.

image

Jenkins란 무엇인가?

  • CI/CD 환경을 구축하기 위한 도구.
  • 참고할 자료가 많다.
  • 파이프라인을 한 곳에서 관리할 수 있다는 것, 처리속도가 빠르다는 것이 장점.
  • Github action 보다 CI/CD 구성이 어렵다.

    환경 설정 시, 버전문제, Webhook 설정, 파이프라인 설정이 쉽지 않다.
    UI에서 관리하기에는 Github action 보다 편하다.

CI/CD를 각기 다른 플랫폼으로 적용할 수 있다.(ex. Jenkins-CD/ Github Action-CI)

  • CI-Github Action: PR 하는 과정에서 테스트코드가 제대로 작동되는지 확인하는 점이 런타임 오류를 줄이는데 도움이 되어
    사용하였다고 한다.
  • CD-Jenkins: public IP를 설정할 경우 Application 서버는 Client에 의해 바이러스나 해킹 등의 보안 이슈가 발생할 수 있기 때문에 사용하였다.
  • 결론: 프로젝트 상황에 따라 툴을 사용해라!

참고 > https://velog.io/@kimseungki94/Jenkins-vs-Github-Action-%EC%96%B4%EB%96%A4%EA%B1%B8-%EC%93%B0%EB%8A%94%EA%B2%8C-%EC%A2%8B%EC%9D%84%EA%B9%8C