CI/CD 와 CDN

WONNY_LOG·2023년 9월 18일
0

CI/CD(Continuous Integration/Continuous Delivery)?

애플리케이션 개발 단계부터 배포까지 자동화하여 애플리케이션을 더욱 짧은 주기로 고객에게 제공하는 방법


CI

빌드/테스트 자동화 과정, "지속적인 통합"을 의미

  • 애플리케이션의 버그 수정이나 새로운 코드 변경이 정기적으로 빌드 및 테스트되면서 공유되는 레파지토리에 통합되는 것을 의미한다.
  • 모든 사람에게 동일 작업 기반을 제공한다
  • 커밋할때마다 빌드와 일련의 자동 테스트가 이루어져 동작을 확인하고 변경으로 인해 문제가 생기는 부분이 없도록 보장한다
  1. 코드 변경사항을 주기적으로 빈번하게 merge한다
  • 가능한 작은 단위로 나누어 주기적으로 빈번히 개발하고 계속해서 통합해 나가는 것이 중요
  1. 통합 단계의 자동화
  • 매번 코드치고, 형상관리 시스템(github)에 코드 올리고 빌드하고 테스트하고 귀찮은 일.
    이 일을 자동화 할 수 있다

장점

  • 코드의 검증에 들어가는 시간이 줄어든다
  • 개발 편의성이 증가한다
  • 항상 테스트 코드를 통과한 코드만이 레포지토리에 올라가기 때문에, 좋은 코드 퀄리티를 유지할 수 있다.

CD

배포 자동화 과정, 지속적인 서비스 제공 및 지속적인 배포

  • 코드변경이 파이프라인의 이전단계를 모두 성공적으로 통화하면 수동 개입 없이 해당 변경 사항이 프로덕션에 자동으로 배포된다.
  • 지속적 배포를 채택하면 품질저하없이 새로운 기능을 사용자에게 빨리 제공할 수 있다.

CD적용 흐름

CI를 적용하여 코드 검증 > 배포 환경과 비슷한 곳에서 검증 진행 > 검증된 소프트웨어를 실제 프로덕션 환경으로 배포

장점

  • 개발자가 배포보다는 개발에 더욱 신경 쓸 수 있도록 도와준다.
  • 개발자가 원클릭으로 수작업 없이 빌드,테스트,배포까지의 자동화를 할 수 있다.

CI/CD 종류

  • Jenkins
  • CircleCI
  • TravisCI
  • Github Actions
  • etc

CI/CD를 적용 후의 과정

  1. 개발자들이 개발하여 feature브랜치에 코드를 push한다.
  2. git push를 통해 Trigger되어 CI서버에서 알아서 Build, Test, Lint를 실행하고 결과를 전송한다.
  3. 개발자들은 결과를 전송받고 에러가 난 부분이 있다면 에러부분을 수정하고 코드를 master 브랜치에 merge한다.
  4. master 브랜치에 코드를 merge하고 Build, Test가 정상적으로 수행이 되었다면 CI서버에서 알아서 Deploy 과정을 수행한다.

CDN (Content Delivery Network)?

지리적으로 분산된 서버들을 연결한 네트워크

  • 웹 컨텐츠의 복사본을 사용자에 가까운 곳에 두거나 동적 컨텐츠의 전달을 활성화하여 웹 성능 및 속도를 향상할 수 있게한다.

CDN이 중요한 이유

  • CDN의 주 목적은 대기시간을 줄이거나 네트워크 설계로 인해 발생하는 통신 지연을 줄이는것이다.
  • 서버와 사용자 간의 통신 트래픽은 아무 먼 물리적인 이동을해야하는데, CND은 클라이언트 - 웹 사이트 서버 중간에 서버를 두어 효율성을 높인다.
  • 웹서버에 대한 트래픽을 줄이고, 대역폭 소비를줄여 애플리케이션의 사용자 환경을 개선한다.

CDN사용시 이점

  1. 페이지 로드 시간 단축
    가까운 CDN 서버에서 콘텐츠를 전송해주기 때문에 페이지 로드 시간을 단축 할 수 있다.
  2. 대역폭 비용 절감
    CDN은 캐싱 및 기타 최적화를 통해 Origin 서버가 제공해야하는 데이터의 양을 줄여 웹 사이트 소유자의 호스팅 비용을 절감할 수 있다.
  3. 콘텐츠 가용성 제고
    CDN 서비스는 대용량 트래픽을 처리하고 웹 서버의 부하를 줄일 수 있다.
  4. 웹 사이트 보안강화
    DDoS 공격과 같은 가짜 트래픽을 여러 중간 서버 간에 분산하여 Origin 서버에 미치는 영향을 줄일 수 있다.

동작방식

  • 여러 지리적 위치에 접속 지점(POP) 또는 CDN 엣지 서버 그룹을 설정하는 방식으로 작동한다
  • 지리적으로 분산된 네트워크는 캐싱, 동적 가속 및 엣지 계산의 원리를 기반으로 작동한다

캐싱

  • 더 빠른 데이터 접근을 위해 동일한 데이터의 여러 복사본을 저장하는 프로세스
  • 네트워크의 여러 서버에 정적 웹사이트 콘텐츠를 저장하는 프로세를 의미

캐싱 동작 과정

  1. 지리적으로 멀리 떨어진 웹사이트 방문자가 사이트에 정적 웹 콘텐츠 요청
  2. 요청이 웹 애플리케이션 서버 또는 origin 서버에 도달
  3. origin 서버는 원격 방문자에게 응답을 보낸다.또한 해당 방문자와 지리적으로 가까운 CDN POP에 응답 복사본을 보낸다
  4. CDN POP 서버는 복사본을 캐싱된 파일로 저장한다
  5. 다음에 해당 방문자 또는 해당 위치에 있는 다른 방문자가 동일한 요청을 하면, origin 서버가 아닌 캐싱 서버가 응답을 보냄

동적 가속

  • 웹 애플리캐이션과 클라이언트 사이의 중개 CDN서버로 인해 발생하는 동적 웹 콘텐츠 요청에 대한 서버 응답 시간을 단축하는 것.
  • 사용자가 요청이 있을 때마다 콘텐츠가 변경될 수 있기 떄문에 동적 웹 콘텐츠에서는 캐싱이 제대로 동작하지 않는다.
  • CDN 서버는 모든 동적 요청에 대해 origin 서버와 다시 연결해야 하지만 자신과 origin 서버 간의 연결을 최적화하여 프로세스를 가속화 한다.

엣지 로직 계산

  • 클라이언트와 서버간의 통신을 단순화하는 논리적 계산을 수행하도록 CDN 엣지 서버를 프로그래밍할 수 있다.
- 사용자 요청을 검사하고 캐싱 동작을 수정한다.
- 잘못된 사용자 요청을 확인하고 처리한다
- 응답하기 전에 콘텐츠를 수정하거나 최적화한다

0개의 댓글